21

有谁知道可以将 TTF 和 OTF 字体转换为 SVG 字体的命令行工具?

4

3 回答 3

25

您可以使用 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
于 2012-10-26T14:37:02.470 回答
15

@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")'
于 2018-04-19T15:26:46.123 回答
1

该答案的蜡染部分也已过时,因为蜡染使用已弃用的字形元素为您提供了 svg 输出。

例如,如果您在 nasa.ttf 上运行最新版本的 batik

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" />

....后面是更多的代码,代表字体中的每个字形

处理这个问题的方法在在 HTML 中使用 SVG 字形标记的答案中表示- 将字形转换为符号并翻转它们。

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

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

于 2019-01-25T12:20:45.173 回答