Как получить все символы Юникода, поддерживаемые шрифтами? - PullRequest
0 голосов
/ 03 мая 2020

Я имею в виду, как получить ВСЕ ПОДДЕРЖИВАЕМЫЕ СИМВОЛЫ по шрифту (класс Font)?
Это первый вопрос.
Я нашел решение:

        var families = Fonts.GetFontFamilies(@"C:\WINDOWS\Fonts\Arial.TTF");
        foreach (var family in families)
        {
            var typefaces = family.GetTypefaces();
            foreach (Typeface typeface in typefaces)
            {
                GlyphTypeface glyph;
                typeface.TryGetGlyphTypeface(out glyph);
                IDictionary<int, ushort> characterMap = glyph.CharacterToGlyphMap;

                foreach (KeyValuePair<int, ushort> kvp in characterMap)
                {
                    Console.WriteLine(String.Format("{0}:{1}", kvp.Key, kvp.Value));
                }

            }
        }

НО, что такое charaterMap (этот IDictionary) содержит?
Это второй вопрос.
Спасибо.

1 Ответ

0 голосов
/ 04 мая 2020

GlyphTypeface.CharacterToGlyphMap возвращает словарь со всеми записями из таблицы шрифтов cmap. Именно эта таблица определяет, какие символы Unicode поддерживаются шрифтом. Каждая запись имеет кодовую точку Unicode в качестве ключа и идентификатор глифа по умолчанию для этого символа в качестве значения.

...