Преобразовать шрифты истинного типа (.ttf) в векторные шрифты Херши (живая демонстрация)
Шрифты Херши - это коллекция векторных шрифтов, разработанных c. 1967 г. Доктор Аллен Винсент Херши в лаборатории военно -морского оружия, первоначально предназначенная для того, чтобы быть отображаемым с использованием векторов на ранних дисплеях катодных лучей. Шрифты публично доступны и имеют мало ограничений на использование. Векторные шрифты легко масштабируются и повернуты в два или три измерения; Следовательно, шрифты Херши широко использовались в компьютерной графике, компьютерных программах проектирования, а в последнее время также в компьютерных производственных приложениях, таких как лазерная гравюра. (Википедия)
Этот инструмент преобразует общие файлы шрифта True Type (.ttf) в формат шрифта Hershey. Несколько предварительно преобразованных образцов можно найти в папке ./hershey .

Сначала cd в каталог, затем
python ttf2hershey.py path/to/font.ttf > path/to/output.hf.txt
Сделанный! Вы можете найти сгенерированный шрифт Hershey в path/to/output.hf.txt .
from ttf2hershey import *
output_str = tohershey ( "ABCDEFG0123" , font_path = "font.ttf" , kern = 2 )
print output_strfont_path : это путь к вашему файлу TTF, который будет преобразованkern : Это количество дополнительного расстояния слева и справа от персонажа. В kern=0 все персонажи сжимаются вместе. Однако, чем больше вы ставите, тем менее точны вершины, поскольку существует только 95 возможных значений для координаты в шрифте Херши.Оригинальные шрифты Херши индексируются не так, как Unicode, поэтому есть таблицы для сопоставления персонажей с специальным индексом шрифта Hershey. Однако в этой реализации индекс точно такой же, как и точка входа Unicode, поэтому отображение не требуется.
Пример Hershey Font Parser & Renderer в JavaScript и P5.JS можно найти в Lingdong-/P5-Hershey-JS, который используется для управления этой живой демонстрацией.
cmap (который отображает символы Unicode с индексами глифа) в файле TTF. Реализуется только анализ наиболее распространенного (PlatformId = 0, format = 4).