Инструмент командной строки для преобразования шрифтов 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')"
Другие вопросы по тегам