6

我正在尝试通过以下方式创建字体/字形:

  • 拍摄位图图像
  • 使用自动跟踪创建 SVG(在 Linux 上)
  • 使用 python-fontforge (glyph.importOutlines(svgfile) ) 将大纲作为字形导入

这工作正常,除了生成的字形反转(参见图像)。知道如何防止这种情况,如何反转 SVG 或字形,或类似的东西吗?

源位图: 源位图

自动跟踪 SVG: 在此处输入图像描述

结果字体: 在此处输入图像描述

4

4 回答 4

14

只需使用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>

在此处输入图像描述

于 2012-10-07T11:12:40.190 回答
1

您可以尝试反转路径,不确定 fontforge 中是否有让您这样做的选项,但您可以使用 inkscape(路径 > 反转)来实现。

于 2012-10-05T14:28:15.103 回答
0

看来您的字形是手绘的。如果您想制作具有数十或数百个字形的完整 TTF 字体,那么您可以考虑例如。我用来生成手绘字体的Scanahand 。它使用一个模板,您可以在该模板上绘制(或粘贴)字母,以便它们位于正确的垂直位置。至少在 [A-Za-z] 中自动计算水平位置(和间距)(将来可能还有其他字母)。

但我很欣赏您的解决方案,因为它使用免费或开源工具,并且您几乎可以完全控制所有内容(例如间距)。potrace 和 fontforge 最棒的地方在于,您可以即时完成或提供在线字体创建服务!Potrace 移植到AS3(它可以工作,我测试过),现在也移植到 JS(https://github.com/antimatter15/js-potracehttps://github.com/dunvi/potrace-js),所以它应该还可以制作一个实时预览窗口,显示当potrace参数变化时矢量化结果如何变化。

于 2012-10-20T01:22:37.233 回答
0

如果有人对使用 Autotrace 执行此操作感到好奇,那是因为具有白色背景的图像的自动跟踪 SVG 的第一个孩子是定义白色背景的路径。我通过编写一个小程序解决了这个问题,该程序在导入之前删除了 SVG 的第一个子项,但您也可以通过编辑字形删除 FontForge 中的矩形。

于 2020-05-24T00:18:02.957 回答