
Преобразовать китайские иероглифы в однострочные шрифты с помощью компьютерного зрения
Однострочные шрифты, такие как шрифты Херши, очень полезны для создания прохладной процедурной графики и для гравюры. Их также, возможно, легче выучить для нейронных сетей.
Этот инструмент автоматически генерирует китайские однострочные шрифты с учетом регулярного файла шрифта True Type (TTF/TTC). Он может вывести либо классический формат Hershey, либо файл JSON, содержащий все полилинии.
Алгоритм сканирует растровый рендеринг персонажа под разными углами, чтобы найти сегменты линий, которые, скорее всего, являются частью инсульта. Затем он оценивает удары, соединяя, объединяя и очищая сегменты линий.

pip install pillow ) Ниже приведены типы файлов, которые это программное обеспечение может создать для кодирования однострочных шрифтов.
Файл JSON с одним объектом. Ключи объекта являются индексы символов Unicode. Каждый ключ отображает на массив полилиний. Полилина - это массив точек. Точка-это 2-элементный массив, содержащий координаты x и y. Координата-это поплавок от 0,0 до 1,0, а (0,0)-верхний левый угрей. Например:
{
"U+4E00" :[[[ 0.0 , 0.55 ], [ 1.0 , 0.55 ]]],
"U+4E01" :[[[ 0.02 , 0.02 ], [ 0.99 , 0.02 ]], [[ 0.51 , 0.02 ], [ 0.53 , 0.925 ], [ 0.31 , 1.0 ]]]
}Приведенное выше кодирование содержит первые два китайских иероглифы в Unicode, «一» и «丁».
Шрифты Херши - это коллекция векторных шрифтов, разработанных c. 1967 г. Доктор Аллен Винсент Херши в лаборатории военно -морского оружия, первоначально предназначенная для того, чтобы быть отображаемым с использованием векторов на ранних дисплеях катодных лучей. Шрифты публично доступны и имеют мало ограничений на использование. Векторные шрифты легко масштабируются и повернуты в два или три измерения; Следовательно, шрифты Херши широко использовались в компьютерной графике, компьютерных программах проектирования, а в последнее время также в компьютерных производственных приложениях, таких как лазерная гравюра. (Википедия)
Эта ссылка дает обзор того, как проанализировать шрифты Херши. Вы также можете найти мою собственную реализацию в Lingdong-/P5-Hershey-JS.
По сравнению с файлами инсульта шрифты Hershey во много раз более компактны, но также имеют менее точные координаты.
Если вы заинтересованы только в использовании предварительно генерируемых однострочных шрифтов, вы можете захватить их в следующих местах:
Примечание:
Heiti.hf.txt и Kaiti.hf.txt первоначально были основаны на проприетарных шрифтах системы MacOS STHeiti и STKaiti . Теперь они заменены альтернативами с открытым исходным кодом.
Если вы хотите сгенерировать новые однострочные шрифты из пользовательских файлов TTF/TTC, сначала используйте следующую команду для генерации инсульта, кодируемого JSON.
python char2stroke.py build path/to/font.ttf
Необязательные аргументы:
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width и height определяют измерение растровых изображений символов, которые будут отсканированы. Чем больше эти цифры, тем более подробными и медленными. По умолчанию 100 для обоих.strw - это приблизительная ширина хода (в пикселях, при заданной width и height ). Это используется при слиянии ударов. По умолчанию 10 .first и last определяет диапазон символов Unicode, чтобы включить. Значения по умолчанию - 0x4e00 и 0x9fef , который содержит все глифы «CJK -идеограф».ngradient - это количество различных градиентов, используемых для сканирования изображения. При ngradient = 1 , только удары при 0 °, 45 ° и 90 ° отсканируются, в то время как при 2 , 3 и 4 также включены наклоны atan(1/2) , atan(1/3) и atan(1/4) . По умолчанию 2 .output : путь к написанию выходного файла. Когда это не указано, программа пишет в stdout и > (info) и | (Информация) может использоваться для перенаправления вывода.Прежде чем генерировать большие файлы, полезно провести несколько быстрых тестов на небольших наборах символов, сравнить, как получаются разные шрифты, и настроить параметры. Следующая команда облегчает этот процесс с бок по бок визуализации результатов компьютерного зрения.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
Необязательные аргументы:
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : строка для тестирования. По умолчанию текст тысячи персонажей классики.nsample : количество символов, которые можно случайным образом выбрать из корпуса. По умолчанию 8 .build .Следующая команда генерирует шрифт Hershey из файла инсульта, созданного на предыдущем шаге.
python tohershey.py path/to/input.json > path/to/output.hf.txt
