如何将.svg文件转换为字体?

70

我如何将 .svg 文件转换为字体?是否有任何 API 或可编程的方法?


你有什么类型的SVG文件?你有包含SVG字体(使用<font>,<glyph>等标签)的SVG文件吗? - Thomas W
你可能可以使用脚本编写FontForge来完成这个任务,但这取决于你的输入文件是否足够简单,能够被表示为字体。 - Erik Dahlström
2
如果你正在寻找一个 API,你可以检查一下这个来自 Mashape 的 API:https://www.mashape.com/warting/online-font-converter - user3800324
这与软件或硬件有什么关系?我不偏袒任何一方,但这个关闭的原因似乎完全没有道理。如果有什么问题应该是由于模糊性而关闭。字体应该是(TTF、ETF、OTF、WOFF 或 WOFF2)规范。 - JΛYDΞV
3个回答

53

我在Stack Overflow上找到了两个相关的答案:

  1. 使用矢量软件(如inkscape)和fontforge创建图标字体?
  2. 将SVG转换为TTF的工具[关闭] (从这个已删除的SO问题中归档)

不幸的是,这两个答案都不是真正的编码答案,这正是我所希望的(一个用于脚本转换的命令行实用程序或者可以编写这样东西的API)。

尽管如此,通过结合这两个答案,我还是得到了我想要的结果。

清理SVG

(这一步可能是可选的。) 在免费的软件InkScape中打开您的SVG。 复制现有的SVG并从FontForge Glyph模板创建一个新项目。 粘贴到该模板中,标准化外观,大小和位置,并将其保存为纯SVG,每个字符(“glyph”)一个文件。

将SVG转换为字体

随后,可以直接使用免费软件FontForge(如第一个答案中所述,创建图标字体),或者使用免费在线服务IcoMoon(如第二个答案中所述,将SVG转换为TTF的工具)。 我选择了后者。

使用IcoMoon

IcoMoon是一款相当直观的工具。点击页面顶部的紫色导入图标按钮,导入每个自定义SVG字形。然后在集合的首选项上点击“获取信息”,这样就可以为集合命名并添加一些元数据。使用“编辑”工具(铅笔图标),单击每个字形以使其大小和间距完美无瑕。

完成后,选择要包含在字体中的所有字形,然后按页面底部的“生成字体”按钮。在生成的屏幕上,您可以将每个字形映射到Unicode字符。在右侧,您可以键入或粘贴字符;或者在左侧,您可以输入其十六进制代码。像GNOME Character Map(适用于Linux)或Windows Character MapMac OS Character Palette这样的程序可能会帮助您找到适当的代码。

现在点击屏幕顶部的“首选项”按钮(或右下角的齿轮),最终确定新字体的名称和元数据,然后按下右下角的“下载”按钮。您将获得一个Fontname.zip文件,其中包含一堆使用建议以及字体文件本身。

迭代

我发现字体大小和间距真的很难调整(我在制作字母)。我一直在使用IcoMoon进行迭代,安装字体,并将我的字母与类似字体中的字母进行比较(使用文字处理器)。大小容易调整,但间距不那么容易(我甚至没有涉及连字或者字距!)。请记住,有些系统需要在安装新字体后刷新字体缓存(在Linux上,可以使用来自Fontconfigfc-cache命令)。

验证字体

您可能还希望验证您的字体。 Font Squirrel 是一个在线服务,可以让您进行验证,提供更正以及使用技巧。我想IcoMoon已经完成了这项工作,因此这只对FontForge创建的字体有用。


1
作为一个编程解决方案,我建议使用 gulp-iconfont。我需要设置选项 fontHeight=1024(> 1000),否则字体看起来会损坏,但最终我得到了与 icomoon 相同的结果。 - sergej
stackoverflow上将文件转换为tff的链接是一个失效的链接... 我从没想过SO会成为自己链接失效的受害者。 - Douglas Gaskell
1
@DouglasGaskell - 好主意。如果您拥有10,000+的声望,您将拥有管理员访问权限以查看SO上已删除的内容。我认为那个Q&A不值得恢复,所以我用存档副本更新了链接。 - Adam Katz

27

有多个在线工具可供使用,允许您上传SVG文件并将其用作创建图标字体的图标。就我而言,我更喜欢Icomoon应用程序

Icomoon应用程序允许您执行以下每个操作:

  • 从几种流行的图标字体中获取一个或多个图标
  • 上传其他字体,可能是图标字体,也可以是常规字体
  • 上传SVG文件以用作图标
  • 组合来自任意数量可用字体的任意数量图标
  • 设置所需字符的UNICODE十六进制值
  • 导出和/或保存您创建的字体集

Icomoon


6
正如其他人所写的,可以将svg形状导入到FontForge中,一些字体设计师也是这样工作的。然而,形状(轮廓)只是现代智能字体的一部分,因此仅有这些是不够的。你还需要处理元数据、字距、提示等等。那是很多绝对不好玩,但必要的东西,想成为字体设计师的人通常梦想的是具有自我奖励性的艺术绘画。这也是svg字体从未成为流行格式的原因之一,它们缺少了太多部分,无法用于渲染文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接