from fontTools.ttLib import TTFont
from fontTools.pens.svgPathPen import SVGPathPen
from fontTools.pens.transformPen import TransformPen
import json, sys

def text_path(fontfile, text, size, tracking=0.0, x0=0.0, y0=0.0):
    f = TTFont(fontfile)
    gs = f.getGlyphSet(); cmap = f.getBestCmap(); upm = f['head'].unitsPerEm
    scale = size / upm
    pen = SVGPathPen(gs)
    x = x0
    hmtx = f['hmtx']
    for ch in text:
        g = cmap[ord(ch)]
        tp = TransformPen(pen, (scale, 0, 0, -scale, x, y0))
        gs[g].draw(tp)
        x += hmtx[g][0] * scale + tracking * size
    return pen.getCommands(), x - x0 - tracking * size

F = '/home/user/infotics/platform/resources/fonts/'
out = {}
out['word'] = text_path(F+'Sora-800.ttf', 'INFOTICS', 100, 0.01)
out['sub'] = text_path(F+'Sora-600.ttf', 'ACADEMY', 100, 0.34)
out['tag'] = text_path(F+'Sora-600.ttf', 'IT TRAINING · CERTIFICATION · CAREERS', 100, 0.12)
json.dump({k: {'d': v[0], 'w': v[1]} for k, v in out.items()}, open('glyphs.json', 'w'))
print({k: round(v[1], 1) for k, v in out.items()})
