public override real MeasureString(string s) { real Result = 0; int[] b = new int[s.Length]; bool[] ignore = new bool[s.Length]; for (int i = 0; i < b.Length; i++) { TPdfFont f = Fallback(s[i], 0); if (f != this && f != null) { Result += f.MeasureString(new String(s[i], 1)); ignore[i] = true; b[i] = 0; } else { b[i] = FTrueTypeData.Glyph(s[i], true); } } return(Result + FTrueTypeData.MeasureString(b, ignore)); }
public override real MeasureString(string s) { real Result = 0; //Here we don't have chars > 255, so there are no unicode surrogates. int[] bi = new int[s.Length]; bool[] ignore = new bool[s.Length]; for (int i = 0; i < s.Length; i++) { TPdfFont f = Fallback(s[i], 0); if (f != this && f != null) { Result += f.MeasureString(new String(s[i], 1)); ignore[i] = true; bi[i] = 0; } else { bi[i] = FTrueTypeData.Glyph(s[i], true); //This returns the Glyph for an unicode character, so s[i] is ok. (s is unicode) } } return(Result + FTrueTypeData.MeasureString(bi, ignore)); }