Как использовать pyftsubset из Fonttools внутри среды python, а не из командной строки - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно поместить очень много файлов шрифтов, и мне нужно сделать это из среды Python. Тем не менее, Fonttools очень плохо документирован, и я не могу найти модуль и правильный синтаксис функции для выполнения поднабора на основе юникода из Python, а не как инструмент командной строки (pyftsubset). Некоторые из моих файлов содержат различные ошибки при чтении Fonttools, и я не могу перехватить исключения, используя !command внутри jupyter.

1 Ответ

4 голосов
/ 07 марта 2019

pyftsubset сам по себе является скриптом Python, который вызывает fontTools.subset.main, который, в свою очередь, анализирует sys.argv (аргументы командной строки) для выполнения поднабора. Вы можете довольно легко сделать то же самое в своем собственном скрипте, например:

import sys
from fontTools.subset import main as ss

sys.argv = [None, '/path/to/font/file.ttf', '--unicodes=U+0020-002F']
ss()  # this is what actually does the subsetting and writes the output file

Очевидно, вы захотите использовать свои собственные значения для --unicodes плюс многочисленные другие опции pyftsubset, но в целом эта схема должна работать. Возможное предостережение, если у вас есть другие части вашей программы, которые используют / полагаются на sys.argv; если это так, вы можете захотеть записать начальные значения в другую переменную перед изменением sys.argv и вызовом подсистемы, а затем заново установить для нее начальные значения.

...