Для удаления неиспользуемых глифов из TTF или OTF можно воспользоваться консольной или GUI-утилитой FontForge или консольной утилитой FontTools. Оба инструмента открыты и кроссплатформенные.
Для чистки огромного 16Мб файла OTF я воспользовался утилитой FontTools. Для этого с помощью cat собрал все локализации в один файл:
$ cat localization*.xml > unique.txt
После чего разобрал все на отдельные символы, отсортировал и удалил дубли в VIM:
:%s/(.)/\1\r/g ggVG :sort u
Или можно сделать это из bash:
cat localization*.xml | grep -o . | sort -u > unique.txt
Полученный файл сохранил в отдельный файл и скормил его утилите из набора FontTools:
$ pyftsubset BigSource.otf --output-file=OutStripped.otf --text-file=unique.txt
В итоге из 16Мб я получил файл размером менее 400Кб, содержащий все нужные для игры глифы.
В наборе FontTools есть разные утилиты, в том числе и утилита, объединяющая несколько фонтов в один. Сам ею не пользовался, т.к. мой движок поддерживает альясы, наборы и приоритеты, выбирая тот фонт, который необходим для рендеринга нужного глифа.
- FontTools – https://github.com/fonttools/fonttools
- FontForge – https://fontforge.org