Шрифты и текстовые метрики
В этом разделе рассматриваются шрифты структуры, предоставляемые Windows, значения метрик шрифтов, которые могут меняться между версиями Windows, и рекомендации по использованию метрик шрифтов в классических приложениях.
- Сведения, относящиеся к метрикам шрифта в DirectWrite, см. в текстовых метрик.
- Дополнительные сведения об управлении текстом в приложениях с помощью GDI см. в разделах Шрифты и текст.
Дополнительные сведения об использовании шрифтов и спецификациях типов см. на веб-сайте microsoft typeography.
Доступные шрифты
Шрифты структуры, предоставляемые Windows, предоставляются как шрифты OpenType с контурами TrueType (Windows также поддерживает шрифты OpenType в формате CFF). Список всех шрифтов, предоставляемых Windows, см. в типографии Майкрософт: шрифты по продуктам или семейству. Все шрифты структуры Windows соответствуют последней версии спецификации OpenType OpenType.
Список всех текущих и устаревших шрифтов пользовательского интерфейса см. в разделе Метрики заблокированных шрифтов ниже.
Изменения шрифта
Чтобы обеспечить обратную совместимость, шрифты редко удаляются из Windows. Однако шрифты часто изменяются. Изменения могут включать добавление символов, перерисовку существующих символов, изменение подсказок или добавление или изменение поддержки расширенных функций OpenType и сложного формирования скриптов.
Заблокированные метрики шрифта
Обратите внимание, что некоторые значения, связанные с шрифтами пользовательского интерфейса и шрифтами по умолчанию, используемыми в приложениях Майкрософт, блокируются. Шрифты пользовательского интерфейса используются для отображения элементов пользовательского интерфейса, таких как субтитры, диалоги и меню. Очень мало изменений вносятся в эти шрифты, учитывая их высокую видимость и частое использование. Однако, поскольку сообщаемые значения, связанные с этими шрифтами, блокируются, могут возникнуть несоответствия между указанными и фактическими значениями шрифтов.
Указанные ниже значения блокируются для шрифтов пользовательского интерфейса и по умолчанию и могут быть неточными:
- Эти значения из таблицыOS/2 шрифта:
- xAvgCharWidth
- sTypoLineGap
- sTypoAscender
- sTypoDescender
- usWinAscent
- usWinDescent
- Значение единицPerEm в заголовке шрифта
- Значения из таблицы метрик вертикальных устройств (VDMX)
- Ширина заранее для отдельных глифов
Ниже приведен список шрифтов пользовательского интерфейса, поставляемых с Windows 8.1 (затронутые заблокированными значениями):
Имя скрипта | Шрифт пользовательского интерфейса |
---|---|
Арабский | Пользовательский интерфейс Segoe |
Армянский | Пользовательский интерфейс Segoe |
Бангла | Пользовательский интерфейс Nirmala |
Bopomofo | Пользовательский интерфейс Microsoft JhengHei |
Брайль | Символ пользовательского интерфейса Segoe |
Бугийский | Пользовательский интерфейс Leelawadee |
Канадские аборигены Syllabics | Gadugi |
Чероки | Gadugi |
Коптский | Символ пользовательского интерфейса Segoe |
Китайский (упрощенное письмо) | Пользовательский интерфейс Microsoft YaHei |
Китайский (традиционное) | Пользовательский интерфейс Microsoft JhengHei |
Кириллический | Пользовательский интерфейс Segoe |
Деванагари | Пользовательский интерфейс Nirmala |
Десерет | Символ пользовательского интерфейса Segoe |
Ethiopic | Эббрима |
Грузинский | Пользовательский интерфейс Segoe |
Glagolitic | Символ пользовательского интерфейса Segoe |
Готический | Символ пользовательского интерфейса Segoe |
Греческий | Пользовательский интерфейс Segoe |
Гуджарати | Пользовательский интерфейс Nirmala |
Гурмухи | Пользовательский интерфейс Nirmala |
Иврит | Пользовательский интерфейс Segoe |
Старый курсив | Символ пользовательского интерфейса Segoe |
Яванский | Текст Javanese |
Японский | Пользовательский интерфейс Meiryo |
Каннада | Пользовательский интерфейс Mirmala |
Кхмерский | Пользовательский интерфейс Leelawadee |
Корейский | Малгун Готика |
Лаосский | Пользовательский интерфейс Leelawadee |
Латинский | Пользовательский интерфейс Segoe |
Малаялам | Пользовательский интерфейс Nirmala |
Монгольский | Монгольский Бейти |
Мьянма | Текст Мьянмы |
Н'Ко | Эббрима |
Огам | Символ пользовательского интерфейса Segoe |
Ол Чики | Пользовательский интерфейс Nirmala |
Старый туркский | Символ пользовательского интерфейса Segoe |
Одия | Пользовательский интерфейс Nirmala |
Османя | Эббрима |
Phags-pa | Microsoft PhagsPa |
Рунический | Символ пользовательского интерфейса Segoe |
Сора Sompeng | Пользовательский интерфейс Nirmala |
Синхала | Пользовательский интерфейс Nirmala |
Сирийский | Estrangelo Эдесса |
Тай Ле | Microsoft Tai Le |
Новый Тай Лу | Microsoft New Tai Lue |
Тамильский | Пользовательский интерфейс Nirmala |
Телугу | Пользовательский интерфейс Nirmala |
Тифинаг | Эббрима |
Таана | MV Boli |
Тайский | Пользовательский интерфейс Leelawadee |
Тибетский | Microsoft Хималайя |
Ваи | Эббрима |
Yi | Microsoft Yi Baiti |
Ниже приведен список устаревших шрифтов пользовательского интерфейса, которые также влияют на заблокированные значения:
Имя скрипта (устаревшая версия) | Шрифт пользовательского интерфейса (устаревшая версия) |
---|---|
Бангла | Вринда |
Канадские аборигены Syllabics | Эвфемия |
Чероки | Plantagenet |
Китайский (упрощенное письмо) | Microsoft YaHei и SimSun |
Китайский (традиционное) | MingLiU и Microsoft JhengHei |
Деванагари | Мангал |
Европейские языки | Тахома |
Гуджарати | Шрути |
Гурмухи | Раави |
Японский | Мейрио и Готический пользовательский интерфейс MS |
Каннада | Тунга |
Кхмерский | Кхмерский |
Корейский | Gulim |
Лаосский | Лаосский пользовательский интерфейс |
Малаялам | Kartika |
Языки Ближнего Востока | Тахома |
Одия | Калинга |
Сингальский | Искоола Пота |
Тамильский | Латха и Vijaya |
Телугу | Гаутами |
Тайский | Лилаваде и Тахома |
Эти шрифты используются в качестве значений по умолчанию в приложениях Майкрософт, а также влияют на заблокированные значения:
- Arial
- Calibri
- Уэльс
- Consolas
- Курьер New
- MS Mincho
- Times New Roman
- Вердана
Метрики динамических шрифтов
Кроме заблокированных метрик, перечисленных выше, значения шрифта точно сообщаются. Если шрифт изменен в новой версии Windows, динамические значения шрифта будут отличаться между новым и старым. Например, если глиф добавляется к шрифту, значения в заголовке шрифта могут измениться. Вырезка может привести к тому, что эти значения (включая xMin, xMax, yMin и yMax, а также сообщить о минимальном и максимальном ограничивающем поле для глифов в шрифте) были заблокированы и не сообщали истинные значения.
Важный
Если в приложении используются динамические значения шрифтов (например, в TEXTMETRIC), эти значения изменятся, если шрифты изменяются в будущих версиях Windows. Не используйте эти фактические значения в ситуациях, когда текст должен оставаться статическим.
Рекомендации по использованию метрик шрифта
- Метрики экрана вычислений и метрики шрифта (например, средняя ширина) при запуске приложения и используйте эти значения для размещения приложения. Это обеспечит согласованную точную отрисовку, и макет будет реагировать на изменения шрифтов или разместить резервный вариант шрифта. Общие сведения о резервных вариантах шрифтов и связывании шрифтов см. в разделе Глобализация по шагу: шрифты. Дополнительные сведения см. в статье использование резервных шрифта.
- Чтобы вычислить базовую метрику, отрисуйте репрезентативный текст для предполагаемого языка или скрипта.
- Для элементов управления, содержащих только одну строку распакованного текста, выложите их в соответствии с полной шириной неисправного текста.
- Для элементов управления с несколькими строками получите общую длину, разделите на длину символа, и у вас есть сплошная ширина для работы. Обратите внимание, что это сложнее для сложных сценариев, где один символ для читателя может быть несколькими точками кода.
- Используйте sTypoAscender, sTypoDescender и unitsPerEm (из таблицы OS/2) для вычисления вертикального интервала. STypoAscender используется для определения оптимального смещения от верхней части текстового кадра до первого базового плана и sTypoDescender определяет оптимальное смещение от нижней части текстового кадра до последней базовой.
- Если вы используете DirectWrite, создайте макет с помощью IDWriteTextLayout. IDWriteTextLayout предоставляет по возрастанию + по убыванию + lineGap в естественном макете. Доступ к этим конкретным значениям можно получить с помощью DWRITE_FONT_METRICS. Сведения об этом интерфейсе см. в форматировании текста и макете.
- Если вы используете GDI, отрисовывать экран вне экрана, проверьте макет (например, длину строки или символы на строку) и пересчитывайте окончательные параметры макета, используемые в фактической отрисовке.
- Не создавайте макеты статически на основе определенных значений для определенных версий шрифтов. Фактические значения могут меняться с выпуска на выпуск.
Связанные разделы
-
Справочник
-
таблица OS/2
-
концептуальные