我正在尝试通过以下方式创建字体/字形:
- 拍摄位图图像
- 使用自动跟踪创建 SVG(在 Linux 上)
- 使用 python-fontforge (glyph.importOutlines(svgfile) ) 将大纲作为字形导入
这工作正常,除了生成的字形反转(参见图像)。知道如何防止这种情况,如何反转 SVG 或字形,或类似的东西吗?
源位图:
自动跟踪 SVG:
结果字体:
只需使用potrace而不是 autotrace 即可解决此问题。
供参考,这些是步骤:
将位图转换为 svg(linux 命令行):
potrace -s sourceimg.bmp
使用 svg 作为字形(python):
import fontforge
font = fontforge.open('blank.sfd')
glyph = font.createMappedChar('A')
glyph.importOutlines('sourceimg.svg')
font.generate('testfont.ttf')
就是这样,下面的结果可以在网站上使用:
CSS:
@font-face
{
font-family: testfont;
src: url('testfont.ttf');
}
html:
<span style="font-family:testfont; font-weight:normal; color:green;">A</span>
<span style="font-family:testfont; font-weight:bold; color:green;">A</span>
您可以尝试反转路径,不确定 fontforge 中是否有让您这样做的选项,但您可以使用 inkscape(路径 > 反转)来实现。
看来您的字形是手绘的。如果您想制作具有数十或数百个字形的完整 TTF 字体,那么您可以考虑例如。我用来生成手绘字体的Scanahand 。它使用一个模板,您可以在该模板上绘制(或粘贴)字母,以便它们位于正确的垂直位置。至少在 [A-Za-z] 中自动计算水平位置(和间距)(将来可能还有其他字母)。
但我很欣赏您的解决方案,因为它使用免费或开源工具,并且您几乎可以完全控制所有内容(例如间距)。potrace 和 fontforge 最棒的地方在于,您可以即时完成或提供在线字体创建服务!Potrace 移植到AS3(它可以工作,我测试过),现在也移植到 JS(https://github.com/antimatter15/js-potrace或https://github.com/dunvi/potrace-js),所以它应该还可以制作一个实时预览窗口,显示当potrace参数变化时矢量化结果如何变化。
如果有人对使用 Autotrace 执行此操作感到好奇,那是因为具有白色背景的图像的自动跟踪 SVG 的第一个孩子是定义白色背景的路径。我通过编写一个小程序解决了这个问题,该程序在导入之前删除了 SVG 的第一个子项,但您也可以通过编辑字形删除 FontForge 中的矩形。