【问题标题】:Command-line tool for converting TTF/OTF fonts to SVG用于将 TTF/OTF 字体转换为 SVG 的命令行工具
【发布时间】:2012-10-16 18:38:33
【问题描述】:

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

【问题讨论】:

    标签: command-line fonts svg file-conversion


    【解决方案1】:

    您可以使用 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
    

    【讨论】:

    • batik-ttf2svg 是否按照提问者的要求转换 otf(基于 CFF 的 OpenType)和 ttf?
    • @djangodude 嗯,我不是 100% 确定。
    • 感谢@ErikDahlström,这是可行的,但是 SVG 中的字符是镜像/翻转的。为了避免这种反转,我应该添加更多函数调用吗?
    • 不@Yashua,我不能。但我在 CSS 中有一个解决方法来翻转 SVG。
    • 我遇到了使用 css/transforms 翻转 svg 的问题(导致所有变换都处理翻转),因此我在 Fontographer 中加载了字体,全选,单击旋转 180 并生成一个倒置成功的 TTF 文件。
    【解决方案2】:

    @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")'
    

    【讨论】:

    • 出于好奇,考虑到它是no longer part of the spec 和浏览器支持一直是dropped by all the major browsers,是否有理由让您和其他许多人仍然需要SVG 字体?您在什么情况下使用它们?
    • 就我自己而言,我想在 Inkscape 中打开和编辑字体中的某些字形。字体不仅用于网站。
    • 初始脚本仍然有效,但您必须将语言指定为 fontforge (ff) 而不是 python (py)。 fontforge -lang ff -c 'Open($1); Generate($2)' wingdings.ttf wingdings.otfdocs
    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 2012-02-19
      • 1970-01-01
      • 2014-04-27
      • 2012-03-08
      • 2011-07-15
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多