倒置字形:位图> SVG via autotrace>通过fontforge的字形

时间:2012-10-03 17:10:42

标签: python fonts svg invert fontforge

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

  • 拍摄位图图片
  • 使用autotrace创建SVG(在Linux上)
  • 使用python-fontforge(glyph.importOutlines(svgfile))将大纲导入为字形

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

源位图: source bitmap

Autotraced SVG: enter image description here

结果字体: enter image description here

4 个答案:

答案 0 :(得分:13)

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

enter image description here

答案 1 :(得分:1)

您可以尝试反转路径,不确定fontforge中是否有选项允许您这样做,但您可以使用inkscape(路径&gt;反向)执行此操作。

答案 2 :(得分:0)

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

但我感谢your solution,因为它使用免费或开源工具,你几乎可以完全控制一切(例如间距)。而potrace和fontforge最好的东西就是你可以即时完成或者创建一个在线字体创建服务! Potrace移植到AS3(它可以工作,我测试过),现在也移植到JS(https://github.com/antimatter15/js-potracehttps://github.com/dunvi/potrace-js),因此它也应该可以创建一个实时预览窗口,当potrace参数改变时,矢量化结果如何变化。

答案 3 :(得分:0)

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