TrueType расстояние между шрифтами? - PullRequest
0 голосов
/ 19 апреля 2011

Я нахожусь в процессе векторизации шрифтов истинного типа, чтобы отобразить их как примитивы Direct3D. До сих пор мне удалось извлечь глифы с помощью GetGlyphOutline и отобразить их как примитивы списка строк. Во всяком случае, на расстояние ...

Как узнать расстояние между символами или как / где оно определяется? Ясно, что пробелы изменяются с немонокальными шрифтами.

Есть ли GDI + или другой вызов функции Windows для определения расстояния?

Ответы [ 2 ]

1 голос
/ 26 октября 2012

Вы имеете в виду ширину продвижения глифов (хранится в таблице шрифтов hmtx или vmtx для вертикального текста).Через GDI, который, как вам кажется, вы используете вместо DirectWrite, вы можете использовать:

  1. GetCharABCWidthsI, если у вас уже есть массив идентификаторов глифов.Этот подход может поддерживать любой символ в Unicode, включая расширенный CJK и более новые дополнения, такие как египетские иероглифы, не только нижнюю базовую многоязычную плоскость.
  2. GetCharWidth32 для ширины символов - ограничена базовой плоскостью, но простой вариант.
  3. Вызовите GetGlyphOutline с GGO_METRICS и используйте gmCellIncX.Это возвращает больше полей, чем вы, вероятно, интересуете.

Кернинг - это дополнительная необязательная корректировка номинального продвижения, например, в слове "AVATAR", где "A" и "V" будутбыть ближе в эстетических целях.

0 голосов
/ 19 апреля 2011

Я ничего не знаю о direct3d, но если вы сразу после метрик, они хранятся в таблице кернинга гарнитур; GetKerningPairs сообщит вам правильное размещение для наборов пар символов.

...