58

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

4

3 回答 3

44

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

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

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

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

清理 SVG

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

将 SVG 转换为字体

然后,要么直接使用免费软件程序FontForge(如第一个答案中的指示,使用矢量软件创建图标字体),要么使用免费的IcoMoon在线服务(如第二个答案中的指示,将 svg 转换为 ttf 的工具)。我做了后者。

使用图标月亮

IcoMoon 是一个相当简单的工具。单击页面顶部的紫色导入图标按钮以导入每个自定义 SVG 字形。然后单击集合首选项上的“获取信息”,以便您可以命名集合并为其提供一些元数据。使用“编辑”工具(铅笔图标)并单击每个字形以获得恰到好处的大小和间距。

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

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

迭代

我发现尺寸和间距真的很难正确(我在写字母)。我一直在 IcoMoon 上进行迭代,安装字体,并将我的字母与类似字体的字母进行比较(使用文字处理器)。调整大小很容易,但间距不是那么容易(而且我什至没有搞乱连字字距调整!)。不要忘记某些系统在安装新字体后需要刷新字体缓存(在 Linux 上,fc-cache来自Fontconfig

验证字体

您可能还想验证您的字体。 Font Squirrel是一项在线服务,可让您执行此操作,提供更正和使用提示。我认为 IcoMoon 已经这样做了,所以也许这仅对 FontForge 创作有用。

于 2016-01-29T18:56:25.203 回答
21

有多种在线工具可让您上传 SVG 文件并将其用作创建图标字体的图标。就个人而言,我更喜欢Icomoon App

Icomoon 应用程序允许您执行以下各项操作:

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

爱可梦

于 2017-10-26T16:56:27.187 回答
4

正如其他人所写,可以将 svg 形状导入 fontforge,一些字体设计师就是这样工作的。

然而,形状(轮廓)只是现代智能字体的一部分,因此这本身是不够的。您还需要处理元数据、字距调整、提示等。这是很多绝对不好玩、困难但必要的东西,而潜在的字体设计师通常梦想着自我奖励的艺术绘画,而不是其他。

这就是 svg 字体从未成为一种格式的原因之一,它们缺少太多对渲染文本有用的部分。

于 2016-02-22T16:40:24.387 回答