如何将 .svg 文件转换为字体?是否有任何 API 或可编程方法?
3 回答
我在 Stack Overflow 上找到了两个相关的答案:
不幸的是,这两者都不是真正的编码答案,这正是我真正希望的(用于脚本转换的命令行实用程序,或者可能是某人可以编写此类东西的 API)。
尽管如此,通过结合这两个答案,我得到了我想要的东西。
清理 SVG
(此步骤可能是可选的。)在免费软件程序InkScape 中打开您的 SVG。复制现有的 SVG 并从 FontForge Glyph 模板创建一个新项目。粘贴到该模板中,标准化外观、大小和位置,然后保存为 PLAIN SVG,每个字符一个文件(“字形”)。
将 SVG 转换为字体
然后,要么直接使用免费软件程序FontForge(如第一个答案中的指示,使用矢量软件创建图标字体),要么使用免费的IcoMoon在线服务(如第二个答案中的指示,将 svg 转换为 ttf 的工具)。我做了后者。
使用图标月亮
IcoMoon 是一个相当简单的工具。单击页面顶部的紫色导入图标按钮以导入每个自定义 SVG 字形。然后单击集合首选项上的“获取信息”,以便您可以命名集合并为其提供一些元数据。使用“编辑”工具(铅笔图标)并单击每个字形以获得恰到好处的大小和间距。
完成后,选择字体中所需的所有字形,然后按页面底部的“生成字体”按钮。在结果屏幕上,您可以将每个字形映射到一个 Unicode 字符。在右侧,您可以键入或粘贴一个字符,或者在左侧,您可以输入其十六进制代码。GNOME Character Map(适用于 Linux)或Windows Character Map或Mac OS Character Palette之类的程序可以帮助您找到适合您的字形的代码。
现在按屏幕顶部的“首选项”按钮(或右下角的齿轮)并确定新字体的名称和元数据,然后按右下角的“下载”。您将获得一个 Fontname.zip 文件,其中包含一堆使用建议以及字体文件本身。
迭代
我发现尺寸和间距真的很难正确(我在写字母)。我一直在 IcoMoon 上进行迭代,安装字体,并将我的字母与类似字体的字母进行比较(使用文字处理器)。调整大小很容易,但间距不是那么容易(而且我什至没有搞乱连字或字距调整!)。不要忘记某些系统在安装新字体后需要刷新字体缓存(在 Linux 上,fc-cache
来自Fontconfig)
验证字体
您可能还想验证您的字体。 Font Squirrel是一项在线服务,可让您执行此操作,提供更正和使用提示。我认为 IcoMoon 已经这样做了,所以也许这仅对 FontForge 创作有用。
有多种在线工具可让您上传 SVG 文件并将其用作创建图标字体的图标。就个人而言,我更喜欢Icomoon App。
Icomoon 应用程序允许您执行以下各项操作:
- 从几种流行的图标字体中获取一个或多个图标
- 上传其他字体,可以是图标字体,也可以是常规字体
- 上传 SVG 文件以用作图标
- 从任意数量的可用字体中组合任意数量的图标
- 为您需要的任何字符设置 UNICODE 十六进制值
- 导出和/或保存您创建的字体集
正如其他人所写,可以将 svg 形状导入 fontforge,一些字体设计师就是这样工作的。
然而,形状(轮廓)只是现代智能字体的一部分,因此这本身是不够的。您还需要处理元数据、字距调整、提示等。这是很多绝对不好玩、困难但必要的东西,而潜在的字体设计师通常梦想着自我奖励的艺术绘画,而不是其他。
这就是 svg 字体从未成为一种格式的原因之一,它们缺少太多对渲染文本有用的部分。