/// <summary>
        /// Try to append a special element on the line
        /// </summary>
        /// <param name='o'>
        /// o : the special character
        /// </param>
        public void AppendSpecialChar(PseudoCharacter o)
        {
            char [] escapechar = System.Text.ASCIIEncoding.ASCII.GetChars(new byte [] { 0x1b });
            int     l0         = linetext.Length;

            linetext += escapechar[0];

            SetCharStyle(l0, l0 + 1, tm.currentStyleIdx);
            charadvances [l0] = o.width * tm.CurrentTextStyle.Size;
            charheights [l0]  = o.height * tm.CurrentTextStyle.Size;
            // maybe be better for incremental  layout ??
            //charmetadata [l0] = System.Text.ASCIIEncoding.ASCII.GetString(TTFTextInternal.SerializeObject(o));
            charmetadata [l0] = o;
            if (float.IsNaN(XmaxN) || float.IsInfinity(XmaxN))
            {
                XmaxN = 0;
            }
            if (float.IsNaN(Xmin0) || float.IsInfinity(Xmin0))
            {
                Xmin0 = 0;
            }
        }
        /// <summary>
        /// Try to append a special element on the line
        /// </summary>
        /// <param name='o'>
        /// o : the special character
        /// </param>
        public void AppendSpecialChar(PseudoCharacter o)
        {
            char [] escapechar =System.Text.ASCIIEncoding.ASCII.GetChars(new byte [] { 0x1b});
            int l0 = linetext.Length;
            linetext += escapechar[0];

            SetCharStyle (l0, l0+1, tm.currentStyleIdx);
            charadvances [l0] = o.width*tm.CurrentTextStyle.Size;
            charheights [l0 ] = o.height*tm.CurrentTextStyle.Size;
            // maybe be better for incremental  layout ??
            //charmetadata [l0] = System.Text.ASCIIEncoding.ASCII.GetString(TTFTextInternal.SerializeObject(o));
            charmetadata [l0] = o;
            if (float.IsNaN (XmaxN) || float.IsInfinity (XmaxN)) {
                XmaxN = 0;
            }
            if (float.IsNaN (Xmin0) || float.IsInfinity (Xmin0)) {
                Xmin0 = 0;
            }
        }