Exemple #1
0
def ttDump(input, output, options):
    log.info('Dumping "%s" to "%s"...', input, output)
    if options.unicodedata:
        setUnicodeData(options.unicodedata)
    ttf = TTFont(input,
                 0,
                 allowVID=options.allowVID,
                 ignoreDecompileErrors=options.ignoreDecompileErrors,
                 fontNumber=options.fontNumber)
    ttf.saveXML(output,
                tables=options.onlyTables,
                skipTables=options.skipTables,
                splitTables=options.splitTables,
                splitGlyphs=options.splitGlyphs,
                disassembleInstructions=options.disassembleInstructions,
                bitmapGlyphDataFormat=options.bitmapGlyphDataFormat,
                newlinestr=options.newlinestr)
    ttf.close()
Exemple #2
0
def ttList(input, output, options):
    ttf = TTFont(input, fontNumber=options.fontNumber, lazy=True)
    reader = ttf.reader
    tags = sorted(reader.keys())
    print('Listing table info for "%s":' % input)
    format = "    %4s  %10s  %8s  %8s"
    print(format % ("tag ", "  checksum", "  length", "  offset"))
    print(format % ("----", "----------", "--------", "--------"))
    for tag in tags:
        entry = reader.tables[tag]
        if ttf.flavor == "woff2":
            # WOFF2 doesn't store table checksums, so they must be calculated
            from fontemon_blender_addon.fontTools.ttLib.sfnt import calcChecksum
            data = entry.loadData(reader.transformBuffer)
            checkSum = calcChecksum(data)
        else:
            checkSum = int(entry.checkSum)
        if checkSum < 0:
            checkSum = checkSum + 0x100000000
        checksum = "0x%08X" % checkSum
        print(format % (tag, checksum, entry.length, entry.offset))
    print()
    ttf.close()