用于将TTF / OTF字体转换为SVG的命令行工具

时间:2012-10-26 13:29:50

标签: command-line fonts svg file-conversion

是否有人知道将TTF和OTF字体转换为SVG字体的命令行工具?

3 个答案:

答案 0 :(得分:22)

您可以使用fontforge或batik从命令行执行此操作。

使用fontforge(参见scripting documentation):

#!/usr/bin/fontforge
Open($1)
Generate($1:r + ".svg")

将上述内容保存到convert2svgfont.pe文件,然后调用为:

convert2svgfont.pe myfont.ttf

对于蜡染,请参阅this documentation,安装然后调用:

java -jar batik-ttf2svg.jar myfont.ttf -o myfont.svg

答案 1 :(得分:7)

@Erik先前给出的fontforge配方不再有效 - fontforge已切换到Python脚本。

以下是我在命令行上将字体从PFA转换为SVG的方式 - 这对TTF等也适用:

fontforge -c 'import fontforge;fontforge.open("/usr/share/fonts/X11/Type1/NachlieliCLM-Bold.pfa").generate("NachlieliCLM-Bold.svg")'

答案 2 :(得分:1)

此答案的蜡染部分也已过时,因为蜡染使用不推荐使用的字形元素为您提供了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" />

....接着是代表字体中每个字形的更多代码

处理此问题的方法在Use SVG glyph tag in HTML的答案中表示-将字形转换为符号并将其翻转。

关于字体为什么在其X轴上翻转的原因,请参见规范的取代部分 https://www.w3.org/TR/SVG11/fonts.html#SVGFontsOverview

  

与SVG中的标准图形不同,在SVG中,初始坐标系的y轴指向下(请参见初始坐标系),SVG字体的设计网格以及字形的初始坐标系具有y-轴指向上方,以与许多流行字体格式的公认行业惯例保持一致。