Инструмент командной строки для преобразования шрифтов TTF/OTF в SVG
Кто-нибудь знает инструмент командной строки, который преобразует шрифты TTF и OTF в шрифты SVG?
4 ответа
Вы можете использовать fontforge или batik, чтобы сделать это из командной строки.
С помощью fontforge (см. Документацию по сценариям):
#!/usr/bin/fontforge
Open($1)
Generate($1:r + ".svg")
Сохранить выше, чтобы convert2svgfont.pe
файл, а затем вызвать как:
convert2svgfont.pe myfont.ttf
Для батика см. Эту документацию, установите и затем вызовите как:
java -jar batik-ttf2svg.jar myfont.ttf -o myfont.svg
Рецепт fontforge, данный ранее @Erik, больше не работает - fontforge переключился на скрипты Python.
Вот как я преобразовал шрифт из PFA в SVG в командной строке - это также будет хорошо работать для TTF и т.д.:
fontforge -c 'import fontforge;fontforge.open("/usr/share/fonts/X11/Type1/NachlieliCLM-Bold.pfa").generate("NachlieliCLM-Bold.svg")'
Часть этого ответа, связанная с батиком, также устарела, потому что батик дает вывод svg с использованием устаревшего элемента глифа.
Если вы запустите последнюю версию батика на nasa.ttf, например,
java -jar batik-ttf2svg-1.10.jar nasa.ttf -o myfont.svg
вы получите вывод, который выглядит примерно так
<font horiz-adv-x="1045" ><font-face
font-family="Nasa"
units-per-em="2048"
panose-1="2 11 5 0 0 0 0 0 0 0"
ascent="1507"
descent="-393"
alphabetic="0" />
.... сопровождается гораздо большим количеством кода, представляющего каждый глиф в шрифте
способ решения этой проблемы представлен в ответе в разделе Использование тега глифа SVG в HTML - превращайте глифы в символы и переворачивайте их.
Относительно того, почему шрифты перевернуты по оси X, см. Замененную часть спецификации https://www.w3.org/TR/SVG11/fonts.html.
В отличие от стандартной графики в SVG, где исходная система координат имеет ось Y, указывающую вниз (см. Исходная система координат), сетка дизайна для SVG-шрифтов вместе с исходной системой координат для глифов имеет ось Y, направленную вверх для соответствия принятой в отрасли практике для многих популярных форматов шрифтов.
@Jay (я не смог прокомментировать), в Window это работает:
"C:\Program Files (x86)\FontForgeBuilds\fontforge.bat" -lang py -c "import fontforge; fontforge.open('C:/Temp/myFont.ttf').generate('C:/Temp/myFont.svg')"