Шрифты и текстовые метрики — Win32 apps
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
В этом разделе рассматриваются шрифты структуры, предоставляемые Windows, значения метрик шрифта, которые могут меняться между версиями Windows, и рекомендации по использованию метрик шрифтов в классических приложениях.
- Сведения, относящиеся к метрикам шрифта в DirectWrite, см. в разделе «Текстовые метрики».
- Дополнительные сведения об управлении текстом в приложениях с помощью GDI см. в разделах, посвященных шрифтам и тексту.
Дополнительные сведения об использовании шрифтов и спецификациях типов см. на сайте шрифта Майкрософт.
Доступные шрифты
Шрифты структуры, предоставляемые Windows, доставляются как шрифты OpenType с контурами TrueType (Windows также поддерживают шрифты OpenType в формате CFF). Списки всех шрифтов, предоставляемых Windows, см. в разделе «Шрифты Майкрософт» по продуктам или семействам. Все Windows шрифты структуры соответствуют последней версии спецификации OpenType.
Список всех текущих и устаревших шрифтов пользовательского интерфейса см. в разделе «Заблокированные метрики шрифтов » ниже.
Изменения шрифта
Чтобы обеспечить обратную совместимость, шрифты редко удаляются из Windows. Однако шрифты часто изменяются. Изменения могут включать добавление символов, перерисовку существующих символов, изменение подсказок или добавление или изменение поддержки расширенных функций OpenType и создание сложных форм скриптов.
Метрики заблокированных шрифтов
Обратите внимание, что некоторые значения, связанные с шрифтами пользовательского интерфейса и шрифтами по умолчанию, используемыми в приложениях Майкрософт, блокируются. Шрифты пользовательского интерфейса используются для отображения таких элементов пользовательского интерфейса, как субтитры, диалоговые окна и меню. Очень мало изменений вносятся в эти шрифты, учитывая их высокую видимость и частое использование. Однако, так как сообщаемые значения, связанные с этими шрифтами, блокируются, могут возникнуть расхождения между указанными и фактическими значениями шрифтов.
Следующие сообщаемые значения блокируются для пользовательского интерфейса и шрифтов по умолчанию и могут быть неточными.
- Эти значения из таблицы OS/2 шрифта:
- xAvgCharWidth
- sTypoLineGap
- sTypoAscender
- sTypoDescender
- usWinAscent
- usWinDescent
- Значение unitsPerEm , заданное в заголовке шрифта
- Значения из таблицы метрик «Вертикальное устройство» (VDMX)
- Расширенные ширины для отдельных глифов
Ниже приведен список шрифтов пользовательского интерфейса, поставляемых с Windows 8. 1 (на которые влияют заблокированные значения):
Имя сценария | Шрифт пользовательского интерфейса |
---|---|
Арабский | Segoe UI |
Армянский | Segoe UI |
Бангала (ранее Бенгали) | Nirmala UI |
Бопомофо | Microsoft JhengHei UI |
Брайля | Segoe UI Symbol |
Бугийский | Leelawadee UI |
Канадские аборигены syllabics | Gadugi |
Чероки | Gadugi |
Коптский | Segoe UI Symbol |
Китайский (упрощенное письмо) | Microsoft YaHei UI |
Китайский (традиционное письмо) | Microsoft JhengHei UI |
Кириллица | Segoe UI |
Девангари | Nirmala UI |
Deseret | Segoe UI Symbol |
Ethiopic | Ebrima |
Грузинский | Segoe UI |
Глаголитическое | Segoe UI Symbol |
Готический | Segoe UI Symbol |
Греческий | Segoe UI |
Гуджарати | Nirmala UI |
Гурмукхи | Nirmala UI |
Иврит | Segoe UI |
Старый курсив | Segoe UI Symbol |
Яванская письменность | Текст Javanese |
Японский | Пользовательский интерфейс Meiryo |
Каннада | Пользовательский интерфейс Mirmala |
Кхмерский | Leelawadee UI |
Корейский | Malgun Gothic |
Лаосский | Leelawadee UI |
Латиница | Segoe UI |
Малаялам | Nirmala UI |
Монгольский | Mongolian Baiti |
Мьянма | Myanmar Text |
Н’Ко | Ebrima |
Огхэм | Segoe UI Symbol |
Письменность ол-чики | Nirmala UI |
Старый туркский | Segoe UI Symbol |
Одия (ранее Ория) | Nirmala UI |
Османя | Ebrima |
Phags-pa | Microsoft PhagsPa |
Рунический | Segoe UI Symbol |
Сора Сомпенг | Nirmala UI |
Сингальский | Nirmala UI |
Сирийский | Estrangelo Эдесса |
Тай Ле | Microsoft Tai Le |
Новая письменность тай-лю | Microsoft New Tai Lue |
Тамильский | Nirmala UI |
Телугу | Nirmala UI |
Тифинаг | Ebrima |
мальдивский | MV Boli |
Тайский | Leelawadee UI |
Тибетский | Microsoft Himalaya |
Ваи | Ebrima |
Носу | Microsoft Yi Baiti |
Ниже приведен список устаревших шрифтов пользовательского интерфейса, на которые также влияют заблокированные значения:
Имя скрипта (устаревшая версия) | Шрифт пользовательского интерфейса (устаревшая версия) |
---|---|
Бангала (ранее Бенгали) | Вринда |
Канадские аборигены syllabics | Эвфемия |
Чероки | Plantagenet |
Китайский (упрощенное письмо) | Microsoft YaHei и SimSun |
Китайский (традиционное письмо) | MingLiU и Microsoft JhengHei |
Девангари | Мангал |
Европейские языки | Tahoma |
Гуджарати | Шрути |
Гурмукхи | Раави |
Японский | Мейрио и Пользовательский интерфейс MS Gothic |
Каннада | Tunga |
Кхмерский | Кхмерский |
Корейский | Gulim |
Лаосский | Лаосский пользовательский интерфейс |
Малаялам | |
Языки Ближнего Востока | Tahoma |
Одия (ранее Ория) | Калинга |
Синхальский | Искоола Пота |
Тамильский | Латха и Виджайя |
Телугу | Gautami |
Тайский | Лилаваде и Тахома |
Эти шрифты используются в качестве значений по умолчанию в приложениях Майкрософт и также влияют на заблокированные значения:
- Arial
- Calibri
- Cambria
- Consolas
- Courier New
- MS Mincho
- Times New Roman
- Verdana
Динамические метрики шрифтов
Кроме заблокированных метрик, перечисленных выше, значения шрифтов точно сообщаются. Если шрифт изменен в новой версии Windows, динамические значения шрифтов будут отличаться между новым и старым. Например, при добавлении глифа в шрифт значения в заголовке шрифта могут измениться. Вырезка может привести к тому, что эти значения (включая xMin, xMax, yMin и yMax, а также сообщить о минимальном и максимальном ограничивающем прямоугольнике для глифов в шрифте) были заблокированы и не сообщали истинные значения.
Важно!
Если в приложении используются динамические значения шрифтов (например, в TEXTMETRIC), эти значения изменятся, если шрифты изменяются в будущих версиях Windows. Не используйте эти фактические значения в ситуациях, когда текст должен оставаться статическим.
Рекомендации по использованию метрик шрифта
- Метрики экрана вычислений и метрики шрифта (например, средняя ширина) при запуске приложения и используйте эти значения для размещения приложения. Это обеспечит согласованно точную отрисовку, и макет будет реагировать на изменения шрифтов или вместить резервный шрифт. Общие сведения о резервном и связывании шрифтов см. в разделе «Пошаговые инструкции по глобализации: шрифты». Сведения об использовании резервных шрифтов см. в разделе «Использование резервных шрифтов » для сведений, относящихся к юникционным подписям.
- Чтобы вычислить базовую метрику, отрисуйте репрезентативный текст для предполагаемого языка или скрипта.
- Для элементов управления, содержащих только одну строку нескрытого текста, разместите их в соответствии с полной шириной неисправного текста.
- Для элементов управления с несколькими строками получите общую длину, разделите на длину символа, и у вас есть сплошная ширина для работы. Обратите внимание, что это сложнее для сложных скриптов, где один символ для средства чтения может быть несколькими кодовой точками.
- Используйте sTypoAscender, sTypoDescender и unitsPerEm (из таблицы OS/2) для вычисления вертикального интервала. STypoAscender используется для определения оптимального смещения от верхней части текстового кадра до первого базового плана, а sTypoDescender определяет оптимальное смещение от нижней части текстового кадра до последней базовой.
- Если вы используете DirectWrite, создайте макет с помощью IDWriteTextLayout. IDWriteTextLayout предоставляет ascenderdescenderlineGap + + в естественном макете. Доступ к этим конкретным значениям можно получить с помощью DWRITE_FONT_METRICS. Сведения об этом интерфейсе см. в разделе «Форматирование текста» и «Макет».
- Если вы используете GDI, отрисовка вне экрана, проверьте макет (например, длину строки или символы на строку) и пересчитывайте окончательные параметры макета, используемые при фактической отрисовке.
- Не создавайте макеты статически на основе определенных значений для определенных версий шрифтов. Фактические значения могут меняться с выпуска на выпуск.
Reference
IDWriteTextLayout
DWRITE_FONT_METRICS
TEXTMETRIC
unitsPerEm
Таблица ОС/2
Таблица метрик вертикального устройства (VDMX)
Типография Майкрософт: шрифты по продукту или семейству
Основные понятия
Текстовые метрики (DirectWrite)
Шрифты и текст (GDI)
Шрифтовое оформление Майкрософт
Шрифт для метрики — Вопросы по шрифтам
#1 OFFLINE Sid V.
Отправлено 13 Март 2017 — 16:22
Ребят, помогите пожалуйста. Взялся сделать друзьям метрику, не могу подобрать шрифт для цифр. Чтобы «ноль» был похож на «ноль». Подскажите кто каким пользуется, или как называются те, что на фото. Перелопатил 1500 шрифтов, ничего подобного не подобрал.
Прикрепленные изображения
- Наверх
#2 OFFLINE kolokop
Отправлено 13 Март 2017 — 16:52
Вы пока всё это писали, из круга растянув или сжав получили бы такой ноль как Вам нравится.
На втором фото ровный круг.
Во многих языках буква О очень схожа с нолём.
- Наверх
#3 OFFLINE HAMM
Отправлено 13 Март 2017 — 17:08
Поиском, трафаретные шрифты. На вскидку: DS Army Cyr, Glasten.
- Наверх
#4 OFFLINE 3D-BiG
Отправлено 13 Март 2017 — 18:45
Куча трафаретных шрифтов (так и искать)…. Или вертикальной полоской рассечь ноль в любом шрифте — дело пяти секунд…
- Наверх
#5 OFFLINE Sid V.
Отправлено 13 Март 2017 — 19:09
Последний комментарий очень понравился. Это мне в голову не пришло. Все оказывается очень просто.)) Спасибо всем ответившим. Оперативно отреагировали. Вечером буду пробовать.
- Наверх
#6 OFFLINE Seyv
Отправлено 14 Март 2017 — 00:19
Вертикальной не креативно Не армейскую весчь делаете и не на склад. Проявите фантазию, ну хотя бы наискосок линией рассеките
»Прежде чем решать задачу, полезно ознакомиться с ее условиями.» Математик Дьердь Пойа
- Наверх
#7 OFFLINE 3D-BiG
Отправлено 14 Март 2017 — 09:48
Проявите фантазию, ну хотя бы наискосок линией рассеките
Ну да — по диагонали зафердипюлить….
Есть еще вариант: сделать заказ разработчикам шрифтов на свой дизайнерский шрифт…. Так я поступал, когда занимался газетами сканвордов, то заказывал специальные шрифты для набивания ответов сканвордов в текстовом режиме, а получал, в зависимости от типа шрифта, готовую таблицу с ответами или для сканвордов или для сотовых сканвордов, что резко увеличило производительность при подготовке макета газет — за 4 часа успевал сверстать 3 газеты и подготовить выдачу на фотовывод. … И это на «Пне-2» с 128метрами памяти, ибо давно этим занимался — лет 15 назад…. Но это была НЕ единственная фича, позволявшая делать работу быстро и качественно — специально нарабатывал фичи для скоростной работы….
Сообщение отредактировал 3D-BiG: 14 Март 2017 — 11:13
- Наверх
#8 OFFLINE Nikodim-09
Отправлено 14 Март 2017 — 11:11
Последний комментарий очень понравился. Это мне в голову не пришло. Все оказывается очень просто.)) Спасибо всем ответившим. Оперативно отреагировали. Вечером буду пробовать.
Что получилось в итоге? Фото если есть.
- Наверх
#9 OFFLINE Sid V.
Отправлено 14 Март 2017 — 12:25
Фотки нет, на домашнем компе осталось. Пишу с рабочего. Взял обычный трафаретный шрифт с интернета, все равно все фердиплюшки на меленьких цифрах не видно будет, немного пораздвигал цифры «0», «6», «9», чтобы фрезой 2 мм можно было пройти, меньше не нашлось. Сегодня буду пробовать резать. Что получится, завтра сброшу.
- Наверх
#10 OFFLINE Sid V.
Отправлено 16 Март 2017 — 14:35
Вот что получилось. Откровенно говоря не могу оценить, пригодно ли «это» для подарка. С цифрами какая-то проблема. Прошу выдать экспертное заключение.
Прикрепленные изображения
- Наверх
#11 OFFLINE vv92
Отправлено 16 Март 2017 — 19:30
Красота небесная. У меня, правда со вкусом беда.
Знаю технику безопасности как свои три пальца.Эксперт — это существо, которое перестало мыслить, ибо оно знает!В мире еще много граблей, на которые не ступала нога человека.
Пожалуйста! Исправляйте мои глупые ошибки (но оставьте мои умные ошибки)!
- Наверх
#12 OFFLINE Seyv
Отправлено 16 Март 2017 — 20:10
Да, беда
»Прежде чем решать задачу, полезно ознакомиться с ее условиями.» Математик Дьердь Пойа
- Наверх
#13 OFFLINE Sid V.
Отправлено 17 Март 2017 — 11:39
У меня со вкусом та же история. Может у кого есть конкретные замечания? С радостью послушал бы.
- Наверх
#14 OFFLINE yaso73
Отправлено 17 Март 2017 — 11:58
Пойдёт.
- Наверх
#15 OFFLINE Seyv
Отправлено 17 Март 2017 — 14:12
Повторюсь. Получился армейско-складской вариант. Для детей надо что-то детское, для сердца — сердечное
А то сердечко с серийным номером получилось, типа вот тебе — ты у меня 2016 цатая
»Прежде чем решать задачу, полезно ознакомиться с ее условиями.» Математик Дьердь Пойа
- Наверх
#16 OFFLINE 3D-BiG
Отправлено 17 Март 2017 — 15:09
Есть ряд шрифтов типа рукописных, но с незамкнутыми кругами, а еще проще взять любой понравившийся и порезать так, что-бы нормально смотрелось, поэтому, когда мне надо было выполнять подобного типа надписи, я не замудрялся, ибо достаточно владею Корелом, дабы нарезать буквы и подправить резку бокрасивей. .. А то поиски шрифта (особенно правильно выполненного шрифтовиком, так что-бы и петель в буквах не было и кернинг в шрифте верно был настроен) в ворохах хлама ламмерских помазушек, тратишь времени больше, чем самому внести изменения, сделав из понравившегося трафаретный… А то до анекдота доходит: в винде родной для нее шрифт Георгия в начертании Италики для кириллических букв — полный гиморрой, ибо весь в петлях, а про кернинг — даже не слышали, ибо в нем хвостики букв постоянно накладываются друг на друга…
Сообщение отредактировал 3D-BiG: 17 Март 2017 — 15:13
- Наверх
#17 OFFLINE konkop
Отправлено 17 Март 2017 — 16:34
Беда не в том, что это некрасиво и безвкусно. А в том, что это не оригинально, ширпотреб. Каждый второй «счастливый папаша» встречает свое расширившееся семейство с таким набором литер, сделанных за тридцать копеек чужими руками из отходов в цехе за углом. Поэтому переживать о тонкостях шрифта здесь вовсе избыточно.
- Наверх
#18 OFFLINE vv92
Отправлено 17 Март 2017 — 16:40
Вы меня обижаете. А шарики тоже внучке не покупать?
Знаю технику безопасности как свои три пальца.Эксперт — это существо, которое перестало мыслить, ибо оно знает!В мире еще много граблей, на которые не ступала нога человека.
Пожалуйста! Исправляйте мои глупые ошибки (но оставьте мои умные ошибки)!
- Наверх
#19 OFFLINE konkop
Отправлено 17 Март 2017 — 16:45
А шарики тоже внучке не покупать?
Внучке можно. Жене не советую )
- Наверх
#20 OFFLINE vv92
Отправлено 17 Март 2017 — 16:47
Камешек в колечке или бритву для ног?
Знаю технику безопасности как свои три пальца.Эксперт — это существо, которое перестало мыслить, ибо оно знает!В мире еще много граблей, на которые не ступала нога человека.
Пожалуйста! Исправляйте мои глупые ошибки (но оставьте мои умные ошибки)!
- Наверх
Шрифты и текстовые метрики — приложения Win32
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
В этом разделе обсуждаются контурные шрифты, предоставляемые Windows, значения метрик шрифтов, которые могут различаться в разных версиях Windows, а также рекомендации по использованию метрик шрифтов в настольных приложениях.
- Сведения о метриках шрифтов в DirectWrite см. в разделе Текстовые метрики.
- Дополнительные сведения об управлении текстом в приложениях с помощью GDI см. в разделах Шрифты и текст.
Более подробную информацию об использовании шрифтов и спецификациях типов см. на сайте типографики Microsoft.
Доступные шрифты
Контурные шрифты, поставляемые с Windows, поставляются как шрифты OpenType с контурами TrueType (Windows также поддерживает шрифты OpenType в формате CFF). Списки всех шрифтов, поставляемых Windows, см. в разделе Типографика Microsoft: шрифты по продуктам или семействам. Все контурные шрифты Windows соответствуют последней версии спецификации OpenType.
Список всех текущих и устаревших шрифтов пользовательского интерфейса см. в разделе Показатели заблокированных шрифтов ниже.
Модификации шрифтов
Для обеспечения обратной совместимости шрифты редко удаляются из Windows. Однако шрифты часто модифицируются. Модификации могут включать добавление символов, перерисовку существующих символов, изменение подсказок или добавление или изменение поддержки расширенных функций OpenType и формирование сложных сценариев.
Метрики заблокированных шрифтов
Обратите внимание, что некоторые значения, связанные со шрифтами пользовательского интерфейса и шрифтами по умолчанию, используемыми в приложениях Microsoft, заблокированы. Шрифты пользовательского интерфейса используются для отображения таких элементов пользовательского интерфейса, как заголовки, диалоговые окна и меню. В эти шрифты внесено очень мало изменений, учитывая их высокую заметность и частое использование. Однако, поскольку сообщаемые значения, связанные с этими шрифтами, заблокированы, могут быть расхождения между сообщаемыми и фактическими значениями шрифта.
Следующие сообщаемые значения заблокированы для пользовательского интерфейса и шрифтов по умолчанию и могут указываться неточно:
- Эти значения из таблицы шрифтов OS/2:
- xAvgCharWidth
- ТипоЛайнГэп
- стипоАсцендер
- sTypoDescender
- usWinAscent
- usWinDescent
- Значение unitPerEm, установленное в заголовке шрифта
- Значения из таблицы показателей вертикального устройства (VDMX)
- Расширение ширины отдельных глифов
Вот список шрифтов пользовательского интерфейса, поставляемых с Windows 8.1 (затронутых заблокированными значениями):
Имя сценария | Шрифт пользовательского интерфейса |
---|---|
Арабский | Сегоу UI |
Армянский | Сегоу UI |
Бангла (ранее бенгальский) | Нирмала УИ |
Бопомофо | Пользовательский интерфейс Microsoft JhengHei |
Шрифт Брайля | Символ пользовательского интерфейса Segoe |
Бугийский | Лилавади UI |
Слоговое письмо канадских аборигенов | Гадуги |
Чероки | Гадуги |
Коптский | Символ пользовательского интерфейса Segoe |
Китайский (упрощенный) | Пользовательский интерфейс Microsoft YaHei |
Китайский (традиционный) | Пользовательский интерфейс Microsoft JhengHei |
Кириллица | Сего УИ |
Деванагари | Нирмала УИ |
Дезерет | Символ пользовательского интерфейса Segoe |
Эфиопский | Эбрима |
Грузинский | Сегоу UI |
Глаголица | Символ пользовательского интерфейса Segoe |
Готика | Символ пользовательского интерфейса Segoe |
Греческий | Сегоу UI |
Гуджарати | Нирмала UI |
Гурмухи | Нирмала УИ |
Иврит | Сегоу UI |
Старый курсив | Символ пользовательского интерфейса Segoe |
Яванский | Яванский текст |
Японский | Мейрио УИ |
Каннада | Мирмала УИ |
Кхмерский | Лилавади UI |
Корейский | Мальгун Готика |
Лаос | Лилавади UI |
Латинский | Сегоу UI |
малаялам | Нирмала УИ |
Монгольский | Монгольский Байти |
Мьянма | Мьянма Текст |
Н’Ко | Эбрима |
Огам | Символ пользовательского интерфейса Segoe |
Ол Чики | Нирмала УИ |
Древнетюркский | Символ пользовательского интерфейса Segoe |
Одиа (ранее Ория) | Нирмала УИ |
Османья | Эбрима |
Фагс-па | Microsoft PhagsPa |
Рунический | Символ пользовательского интерфейса Segoe |
Сора Сомпенг | Нирмала УИ |
Сингальский | Нирмала УИ |
Сирийский | Эстранжело Эдесса |
Тай Ле | Майкрософт Тай Ле |
Новый Тай Лю | Майкрософт Нью Тай Лю |
Тамильский | Нирмала УИ |
Телугу | Нирмала УИ |
Тифинах | Эбрима |
Таана | МВ Боли |
Тайский | Лилавади UI |
Тибетский | Майкрософт Гималаи |
Вай | Эбрима |
Йи | Майкрософт Йи Байти |
Вот список устаревших шрифтов пользовательского интерфейса, на которые также влияют заблокированные значения:
Имя сценария (устаревшее) | Шрифт пользовательского интерфейса (устаревший) |
---|---|
Бангла (ранее Бенгальский) | Вринда |
Слоговое письмо канадских аборигенов | Евфимия |
Чероки | Плантагенет |
Китайский (упрощенный) | Microsoft YaHei и SimSun |
Китайский (традиционный) | MingLiU и Microsoft JhengHei |
Деванагари | Мангал |
Европейские языки | Тахома |
Гуджарати | Шрути |
Гурмухи | Раави |
Японский | Meiryo и MS Gothic UI |
Каннада | Тунга |
Кхмерский | Кхмерский |
Корейский | Гулим |
Лаос | Лаосский UI |
малаялам | Картика |
Ближневосточные языки | Тахома |
Одиа (ранее Ория) | Калинга |
сингальский | Искула Пота |
Тамильский | Латха и Виджая |
Телугу | Гаутами |
Тайский | Лилавади и Тахома |
Эти шрифты используются по умолчанию в приложениях Microsoft, и на них также влияют заблокированные значения:
- Arial
- Калибри
- Камбрия
- Консолас
- Курьер Новый
- МС Минчо
- Таймс Нью Роман
- Вердана
Показатели динамического шрифта
Помимо заблокированных показателей, перечисленных выше, значения шрифта сообщаются точно. Если шрифт изменен в новой версии Windows, динамические значения шрифта будут различаться между новым и старым шрифтом. Например, когда к шрифту добавляется глиф, значения в заголовке шрифта могут измениться. Отсечение может произойти, если эти значения (включая xMin, xMax, yMin и yMax, а также минимальную и максимальную ограничивающую рамку для глифов в шрифте) были заблокированы и не отображали истинные значения.
Важно
Если вы используете динамические значения шрифта в своем приложении (например, в TEXTMETRIC ), эти значения изменятся, если шрифты будут изменены в будущих версиях Windows. Не используйте эти фактические значения в ситуациях, когда текст должен оставаться статичным.
Рекомендации по использованию метрик шрифта
- Вычисляйте метрики экрана и метрики шрифта (например, среднюю ширину) при запуске приложения и используйте эти значения для компоновки приложения. Это обеспечит неизменно точную визуализацию, и ваш макет будет реагировать на изменения в шрифтах или приспосабливаться к резервному шрифту. Обзор резервных шрифтов и связывания шрифтов см. в разделе Globalization Step by Step: Fonts. См. раздел «Использование резервного шрифта» для получения информации, относящейся к Uniscribe.
- Чтобы вычислить базовую метрику, отобразите репрезентативный текст для предполагаемого языка/сценарии.
- Для элементов управления, которые содержат только одну строку развернутого текста, расположите их так, чтобы они соответствовали полной ширине необрезанного текста.
- Для элементов управления с несколькими строками получите общую длину, разделите ее на длину символа, и вы получите твердую ширину для работы. Обратите внимание, что это сложнее для сложных скриптов, где один «символ» для читателя может быть несколькими кодовыми точками.
- Используйте sTypoAscender, sTypoDescender и unitPerEm (из таблицы OS/2) для расчета интервала по вертикали. sTypoAscender используется для определения оптимального смещения от верхней части текстового фрейма до первой базовой линии, а sTypoDescender определяет оптимальное смещение от нижней части текстового фрейма до последней базовой линии.
- Если вы используете DirectWrite, создайте макет с помощью IDWriteTextLayout . IDWriteTextLayout обеспечивает надстрочных элементов + нисходящих элементов + lineGap в натуральной раскладке. Вы можете получить доступ к этим конкретным значениям с помощью DWRITE_FONT_METRICS . Сведения об этом интерфейсе см. в разделе Форматирование и макет текста.
- Если вы используете GDI, выполните рендеринг вне экрана, затем проверьте макет (например, длину строки или количество символов в строке) и пересчитайте окончательные параметры макета, используемые при фактическом рендеринге.
- Не создавайте макеты статически на основе определенных значений для определенных версий шрифтов. Фактические значения могут меняться от версии к версии.
Артикул
IDWriteTextLayout
DWRITE_FONT_METRICS
ТЕКСТМЕТРИЧЕСКИЙ
единицPerEm
Таблица OS/2
Таблица показателей вертикального устройства (VDMX)
Типографика Microsoft: шрифты по продуктам или семействам
Концептуальный
Текстовые метрики (DirectWrite)
Шрифты и текст (GDI)
Типографика Майкрософт
Таблица показателей шрифтов
— Справочное руководство TrueType
- Оцифровка буквенных форм
- Механизм шрифтов
- Инструктирующие шрифты
- Состояние графики
- Набор инструкций
- Таблицы шрифтов
- Об ААТ
- Специальные столы
-
'акнт'
-
"анкр"
-
аварский
-
'бдат'
-
"бэд"
-
'блок'
-
'бслн'
-
'кмэп'
-
'квар'
-
вариатор
-
'EBSC'
-
"ФДСК"
-
'подвиг'
-
'FMTX'
-
"фонд"
-
'фпгм'
-
'фвар'
-
"вздох"
-
'гцид'
-
'глиф'
-
'гвар'
-
'HDMX'
-
"голова"
-
'ххеа'
-
'hmtx'
-
"просто"
-
"керн"
-
керкс
-
"лкар"
-
"лока"
-
лтег
-
'максп'
-
«мета»
-
"морт"
-
"моркс"
-
'имя'
-
'опбд'
-
«ОС/2»
-
'почта'
-
"подготовка"
-
"опора"
-
'сбикс'
-
"трак"
-
'вхеа'
-
'ВМТХ'
-
'внешняя ссылка'
-
"Цапф"
- Сводка набора инструкций
- Сопоставление глифов
- Преобразование контуров
- Реестр шрифтов
Введение
Таблица метрик шрифта (тег: 'fmtx'
) определяет глиф, точки которого представляют различные метрики всего шрифта: восхождение, спуск, угол вставки, смещение вставки. Если эта таблица присутствует, эти точки переопределяют соответствующие значения в таблицах 'hhea'
и 'vhea'
. Представление этих показателей в виде точек, а не значений, дает несколько преимуществ.
- В Quickdraw Text глифы не должны превышать подъем и спуск шрифта. Из-за этого многие шрифты искусственно завышают значения восхождения и спуска в
'hhea'
таблица для размещения исключительно высоких или низких глифов.'fmtx'
используется только в ATSUI, позволяя одному и тому же шрифту указывать «реальные» значения для подъема и спуска без изменения поведения в Quickdraw Text. - Поскольку метрики
'fmtx'
представлены в виде точек, они могут изменяться для различных настроек вариации, позволяя шрифту изменять межстрочный интервал и/или угол вставки при изменении веса или оптического размера точки. -
'FMTX' 9Также можно указать 0701 метрических пункта, что позволяет шрифту настраивать межстрочный интервал при небольших размерах для улучшения читаемости.
- ПРИМЕЧАНИЕ . Материал в этой главе относится только к шрифтам TrueType.
Формат таблицы метрик шрифта
Формат таблицы метрик шрифта следующий:
Тип | Имя | Значение |
---|---|---|
фиксированный32 | версия | Версия (устанавливается на 0x00020000). |
uint32 | индекс глифа | Глиф, точки которого представляют метрики. |
uint8 | горизонтальныйДо | Номер точки горизонтального подъема. |
uint8 | горизонтальныйПосле | Номер точки горизонтального спуска. |
uint8 | горизонтальныйCaretHead | Номер точки для горизонтальной головки каретки. |
uint8 | горизонтальныйCaretBase | Номер точки для горизонтального основания каретки. |
uint8 | вертикальныйДо | Номер точки вертикального подъема. |
uint8 | вертикальныйПосле | Номер точки вертикального спуска. |
uint8 | вертикальныйCaretHead | Номер точки для вертикальной каретки. |
uint8 | вертикальныйCaretBase | Номер точки для вертикального основания каретки. |
Межстрочный интервал с использованием таблицы 'fmtx'
вычисляется путем измерения расстояния от метрической точки шрифта «До» до метрической точки «После». «До» — это точка, определяющая расстояние от базовой линии (или осевой линии по вертикали) до «после» предыдущей строки. В горизонтальном тексте это соответствует подъему шрифта. «После» — это точка, определяющая расстояние от базовой линии (осевой линии) до «До» следующей строки. В горизонтальном тексте это соответствует наклону шрифта.
Угол каретки с использованием таблицы 'fmtx'
вычисляется с использованием угла между метрической точкой шрифта «Наконечник каретки» и метрической точкой «База каретки». «Наконечник каретки» — это точка, определяющая угол каретки относительно точки «База каретки». «Основание каретки» — это точка, указывающая место, где каретка должна пересекать базовую линию (осевую линию). Для горизонтального текста координата y «Основы каретки» должна быть равна 0. Для вертикального текста координата X «Основания каретки» должна быть равна 0,9.0003
Если имеется таблица 'fmtx'
, в ней должны быть указаны номера точек для всех восьми метрических точек. Даже если шрифт предназначен только для горизонтального письма, он должен определять точки и для вертикальных метрик.