Извлечение глиф кернинг информации C ++ - PullRequest
2 голосов
/ 10 августа 2009

После того, как я задал мой предыдущий вопрос о Uniscribe kerning глифа , но еще не получил ответа, а также продолжил чтение в Google и т. Д., Похоже, Uniscribe может не поддерживать извлечение информации о кернинге глифа из шрифта.

Поэтому у меня простой вопрос для продолжения - есть ли хорошие примеры (желательно с некоторым кодом C ++) для извлечения информации о кернинге глифов для указанной строки из шрифта?

В разных местах упоминается, что Pango, QT или ICU способны сделать это, но документация немного тонкая на местах, и я изо всех сил пытаюсь узнать, с чего начать.

С благодарностью получена любая помощь, указывающая мне правильное направление. У меня уже есть код для рендеринга глифов желаемым способом, я просто получаю расширенную информацию о кернинге, поэтому могу расположить глифы немного лучше.

Спасибо

1 Ответ

2 голосов
/ 14 августа 2009

У шрифтов OpenType есть два разных способа указания информации о кернинге, оба из которых являются необязательными:

  1. Таблица керн, унаследованная от TrueType. Эта таблица предоставляет информацию о парах кернинга (то есть, сколько вы должны горизонтально сместить конкретную пару символов). Microsoft предоставляет спецификации для этой таблицы , а также предоставляет некоторые функции Windows API, такие как GetKerningPair() и GetFontData(), которые могут помочь вам извлечь значения.

  2. Таблица GPOS, таблица OpenType, которая, очевидно, обрабатывает все мыслимые формы позиционирования глифа. У Microsoft также есть некоторые спецификации для этой таблицы, но, честно говоря, я даже не знаю, с чего вы начнете ... Возможно, вы захотите посмотреть, как ICU справляется с подобными вещами.

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

...