Skip to content

Instantly share code, notes, and snippets.

@AmitAronovitch
Created May 1, 2019 09:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AmitAronovitch/806f730b048cf8e5ec8827a7a8b6984a to your computer and use it in GitHub Desktop.
Save AmitAronovitch/806f730b048cf8e5ec8827a7a8b6984a to your computer and use it in GitHub Desktop.
playing with ttf fonts
from fontTools.ttLib import TTFont
class Tracer:
def __init__(self, name):
# print('initializing {}'.format(name))
self.name = name
def __call__(self, *args):
# print('call {}(*{}, **{})'.format(self.name, args, kwargs))
print('{}{}'.format(self.name, args))
class MockPen:
def __getattr__(self, attr):
return Tracer(attr)
def char_range(first, last):
for i in range(ord(first), ord(last)+1):
yield chr(i)
def main():
font = TTFont('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf')
gs = font.getGlyphSet()
for letter in char_range('A', 'D'):
print('drawing letter: ', letter)
gs[letter].draw(MockPen())
print()
main()
@AmitAronovitch
Copy link
Author

requirements: pip install fonttools

output:

drawing letter:  A
moveTo((700, 1294),)
lineTo((426, 551),)
lineTo((975, 551),)
lineTo((700, 1294),)
closePath()
moveTo((586, 1493),)
lineTo((815, 1493),)
lineTo((1384, 0),)
lineTo((1174, 0),)
lineTo((1038, 383),)
lineTo((365, 383),)
lineTo((229, 0),)
lineTo((16, 0),)
lineTo((586, 1493),)
closePath()

drawing letter:  B
moveTo((403, 713),)
lineTo((403, 166),)
lineTo((727, 166),)
qCurveTo((890, 166), (1047, 301), (1047, 440))
qCurveTo((1047, 580), (890, 713), (727, 713))
lineTo((403, 713),)
closePath()
moveTo((403, 1327),)
lineTo((403, 877),)
lineTo((702, 877),)
qCurveTo((850, 877), (995, 988), (995, 1102))
qCurveTo((995, 1215), (850, 1327), (702, 1327))
lineTo((403, 1327),)
closePath()
moveTo((201, 1493),)
lineTo((717, 1493),)
qCurveTo((948, 1493), (1198, 1301), (1198, 1124))
qCurveTo((1198, 987), (1070, 825), (946, 805))
qCurveTo((1095, 773), (1260, 570), (1260, 418))
qCurveTo((1260, 218), (988, 0), (737, 0))
lineTo((201, 0),)
lineTo((201, 1493),)
closePath()

drawing letter:  C
moveTo((1319, 1378),)
lineTo((1319, 1165),)
qCurveTo((1217, 1260), (986, 1354), (856, 1354))
qCurveTo((600, 1354), (328, 1041), (328, 745))
qCurveTo((328, 450), (600, 137), (856, 137))
qCurveTo((986, 137), (1217, 231), (1319, 326))
lineTo((1319, 115),)
qCurveTo((1213, 43), (976, -29), (844, -29))
qCurveTo((505, -29), (115, 386), (115, 745))
qCurveTo((115, 1105), (505, 1520), (844, 1520))
qCurveTo((978, 1520), (1215, 1449), (1319, 1378))
closePath()

drawing letter:  D
moveTo((403, 1327),)
lineTo((403, 166),)
lineTo((647, 166),)
qCurveTo((956, 166), (1243, 446), (1243, 748))
qCurveTo((1243, 1048), (956, 1327), (647, 1327))
lineTo((403, 1327),)
closePath()
moveTo((201, 1493),)
lineTo((616, 1493),)
qCurveTo((1050, 1493), (1456, 1132), (1456, 748))
qCurveTo((1456, 362), (1048, 0), (616, 0))
lineTo((201, 0),)
lineTo((201, 1493),)
closePath()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment