我正在尝试重新编译一个ttf字形字体,基于它的源svg文件。
我正在使用Python和FontForge,并且正在努力将SVG形状转换为FontForge的SplineSet格式。例如,this SVG file。
我希望创建一个函数,该函数接收SVG并输出SplineSet。
到目前为止,我尝试了以下方法(一种低效、天真的方法来生成临时字体,然后提取SplineSet数据。与真实字体相比,这种方法非常不准确)。
任何关于如何做到这一点的参考资料?
我正在使用Python和FontForge,并且正在努力将SVG形状转换为FontForge的SplineSet格式。例如,this SVG file。
用FontForge生成的字体以SplineSet
格式表示
SplineSet
85 235 m 1,0,-1
85 85 l 1,1,-1
235 85 l 1,2,-1
235 43 l 1,3,-1
85 43 l 2,4,5
68 43 68 43 55.5 55.5 c 128,-1,6
43 68 43 68 43 85 c 2,7,-1
43 235 l 1,8,-1
85 235 l 1,0,-1
427 85 m 1,9,-1
427 235 l 1,10,-1
469 235 l 1,11,-1
469 85 l 2,12,13
469 68 469 68 456.5 55.5 c 128,-1,14
444 43 444 43 427 43 c 2,15,-1
277 43 l 1,16,-1
277 85 l 1,17,-1
427 85 l 1,9,-1
427 469 m 2,18,19
444 469 444 469 456.5 456.5 c 128,-1,20
469 444 469 444 469 427 c 2,21,-1
469 277 l 1,22,-1
427 277 l 1,23,-1
427 427 l 1,24,-1
277 427 l 1,25,-1
277 469 l 1,26,-1
427 469 l 2,18,19
363 331 m 128,-1,28
363 318 363 318 353.5 308.5 c 128,-1,29
344 299 344 299 331 299 c 128,-1,30
318 299 318 299 308.5 308.5 c 128,-1,31
299 318 299 318 299 331 c 128,-1,32
299 344 299 344 308.5 353.5 c 128,-1,33
318 363 318 363 331 363 c 128,-1,34
344 363 344 363 353.5 353.5 c 128,-1,27
363 344 363 344 363 331 c 128,-1,28
213 235 m 1,35,-1
277 156 l 1,36,-1
320 213 l 1,37,-1
384 128 l 1,38,-1
128 128 l 1,39,-1
213 235 l 1,35,-1
85 427 m 1,40,-1
85 277 l 1,41,-1
43 277 l 1,42,-1
43 427 l 2,43,44
43 444 43 444 55.5 456.5 c 128,-1,45
68 469 68 469 85 469 c 2,46,-1
235 469 l 1,47,-1
235 427 l 1,48,-1
85 427 l 1,40,-1
EndSplineSet
我希望创建一个函数,该函数接收SVG并输出SplineSet。
到目前为止,我尝试了以下方法(一种低效、天真的方法来生成临时字体,然后提取SplineSet数据。与真实字体相比,这种方法非常不准确)。
import fontforge
def main():
font = fontforge.font()
unicode_id = 57865
unicode_name = 'uni' + hex(unicode_id).upper()[2:]
char = font.createChar(unicode_id, unicode_name)
glyph = char.importOutlines('file.svg')
font.save('result.sfd')
任何关于如何做到这一点的参考资料?