我怎样才能得到一个有洞的字形(Python)?

How can I get a glyph with holes(Python)?

这些是我使用的框架:

from pdf2image import convert_from_path
from PIL import Image, ImageChops
import cv2
import numpy as np
from shapely.geometry import Polygon
import svgwrite
import json
from defcon import Font
import ufo2ft
from fontTools import svgLib

我有一个 svg 文件,看起来像这句话下面的图像(图像是颠倒的)。

SVG file

我加载此文件并像这样添加到 Defcon.Font:

glyph = font.newGlyph(name=korean_unicode_list[int(key)])
glyph.unicode = int(korean_unicode_list[int(key)], 16)
pen = glyph.getPen()
svg = svgLib.SVGPath("svg_files/" + str(key) + ".svg")
svg.draw(pen)

但是我用ufo2ft导出这个Font对象后,字形的洞就消失了:(

ttf = ufo2ft.compileTTF(font)
ttf.save('myFont.ttf')

After Export

我不知道如何在字形上打洞。我猜 pen 对象及其方法有一个解决方案,但没有关于带孔字形的示例。如何获得带孔的字形?

我自己找到了解决方案:)

我使用 Adob​​e Illustrator 进行了测试。我制作了“0”形对象并保存在 svg 文件中。当我用svg文件导出字体文件时,有一个洞。

所以我在 PyCharm 打开了 svg 文件,有一个选项名称 'xml:space'。如果它的选项设置为“保留”,svgPath 可以绘制一条带孔的路径。

希望本文对您有所帮助。