还报错啊AttributeError: 'Glyph' object has no attribute '_glyph'
时间: 2023-08-05 09:07:25 浏览: 326
解决运行出现dict object has no attribute has_key问题
5星 · 资源好评率100%
非常抱歉,我之前的代码有误。确实,'Glyph'对象没有'_glyph'属性。请使用以下更新后的代码:
```pythonfrom fontTools.ttLib import TTFontimport svgwritedef convert_glyphs_to_svg(ttf_file):
font = TTFont(ttf_file)
glyphs = font.getGlyphSet()
glyf_table = font['glyf']
for glyph_name in glyphs.keys():
if glyph_name.startswith("glyph"):
glyph = glyphs[glyph_name]
unicode_value = glyph.getUnicode()
if unicode_value:
svg_file_name = f"{unicode_value}.svg"
svg_document = svgwrite.Drawing(svg_file_name)
glyph.draw(svg_document, glyf_table)
svg_document.save()
# 示例调用convert_glyphs_to_svg("path/to/your.ttf")
```
在上述代码中,我们使用`TTFont`加载ttf文件,并通过`getGlyphSet()`方法获取字体的所有字形。然后遍历每个字形,判断是否以"glyph"开头,并获取对应的Unicode值。
如果字形的Unicode值存在,我们将其作为svg文件的名称,并使用`svgwrite.Drawing()`创建一个新的svg文档。然后使用`draw()`方法将字形绘制到svg文档中,传入`glyf_table`作为参数。最后使用`save()`方法保存svg文件。
请确保将代码中的`"path/to/your.ttf"`替换为你想要转换的ttf文件的实际路径,然后运行代码即可。它将在当前目录下生成多个以Unicode值命名的svg文件,每个文件对应一个字形的svg表示。
阅读全文