/** Gets the glyph index and metrics for a character.
         * @param c the character
         * @return an <CODE>int</CODE> array with {glyph index, width}
         */
        public override int[] GetMetricsTT(int c)
        {
            int[] ret;
            if (cmapExt != null)
            {
                cmapExt.TryGetValue(c, out ret);
                return(ret);
            }
            Dictionary <int, int[]> map = null;

            if (fontSpecific)
            {
                map = cmap10;
            }
            else
            {
                map = cmap31;
            }
            if (map == null)
            {
                return(null);
            }
            if (fontSpecific)
            {
                if ((c & 0xffffff00) == 0 || (c & 0xffffff00) == 0xf000)
                {
                    map.TryGetValue(c & 0xff, out ret);
                    return(ret);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                if (!map.TryGetValue(c, out ret))
                {
                    char ch;
                    if (ArabicLigaturizer.TryGetReverseMapping((char)c, out ch))
                    {
                        map.TryGetValue(ch, out ret);
                    }
                }
                return(ret);
            }
        }