Вопрос

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

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

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

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

Спасибо,

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top