のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

ufo point pen

def read(ufo_path):
    ufo = UFOReader(ufo_path)
    lib = ufo.readLib()
    glyph_order = lib['public.glyphOrder']
    glyph_set = ufo.getGlyphSet()
    for glyph_name in glyph_order:
        glifBytes = glyph_set.getGLIF(glyph_name)
        g = glyph_set[glyph_name]
        pen = RecordingPointPen()
        g.drawPoints(pen)
        print(g.__dict__)
        # print(pointPen.value)
        pprint(pen.value)
def read(ufo_path):
    ufo = UFOReader(ufo_path)
    lib = ufo.readLib()
    glyph_order = lib['public.glyphOrder']
    glyph_set = ufo.getGlyphSet()
    for glyph_name in glyph_order:
        glifBytes = glyph_set.getGLIF(glyph_name)
        # glyph = Glyph(glyph_name, glyph_set)
        # rg = glyph_set.readGlyph(glyph_name, glyph)
        # glyph_set.readGlyph(glyph_name, glyph, glyph)
        # glyph_set.readGlyphFromString()

        g = glyph_set[glyph_name]
        # pointPen = fontTools.pens.pointPen.SegmentToPointPen()
        # pointPen = fontTools.pens.basePen.BasePen(g)
        # pointPen= fontTools.pens.pointPen.AbstractPointPen()
        # pointPen = fontTools.pens.pointPen.BasePointToSegmentPen()
        # pointPen = fontTools.pens.pointPen.PointToSegmentPen()
        pointPen = RecordingPointPen()
        # pointPen = GLIFPointPen()
        g.drawPoints(pointPen)
        print(g.__dict__)
        print(pointPen.__dict__)

spot 使い方

% spot -n ./font.ttf
--- names[glyphId]=<name>
[0]=<.notdef@0> [1]=<gname@1>
% spot -nc ./font.ttf
--- names[glyphId]=<name>
[0]=<.notdef@0> 
[1]=<gname00001@1> 
[2]=<gname00002@2> 
[3]=<gname00003@3> 
% spot -T font.ttf                             
### [sfnt] (00000000)
--- offset subtable
version      =1.0  [TrueType]
numTables    =16
searchRange  =256
entrySelector=4
rangeShift   =0
--- table directory[index]={tag,checksum,offset,length}
[ 0]={'BASE',xxxxxxxx,xxxxxxxx,xxxxxxxx}
[ 1]={'GPOS',xxxxxxxx,xxxxxxxx,xxxxxxxx}
略
[15]={'vmtx',xxxxxxxx,xxxxxxxx,xxxxxxxx}
% spot -F font.ttf
GPOS Features:
Script 'DFLT'
	Default language system
		[ 0]='halt' LookupListIndex: 0 
		[ 1]='palt' LookupListIndex: 1 
		[ 2]='vhal' LookupListIndex: 2 
		[ 3]='vpal' LookupListIndex: 3 
GSUB Features:
Script 'DFLT'
	Default language system
略