Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }