chiark / gitweb /
Beginnings of a script to stroke fonts.
authorBen Harris <bjh21@bjh21.me.uk>
Fri, 11 Aug 2017 23:04:22 +0000 (00:04 +0100)
committerBen Harris <bjh21@bjh21.me.uk>
Fri, 11 Aug 2017 23:04:22 +0000 (00:04 +0100)
The plan is that bedstead.c will produce a single-path font and then
this script will stroke it in various ways, adapting the font metadata
appropriately.

strokefont.py [new file with mode: 0644]

diff --git a/strokefont.py b/strokefont.py
new file mode 100644 (file)
index 0000000..1a81c9e
--- /dev/null
@@ -0,0 +1,57 @@
+from __future__ import print_function
+
+import fontforge
+from math import radians
+from psMat import translate
+from sys import argv
+
+chisel = fontforge.contour()
+chisel.moveTo(-50, 0)
+chisel.lineTo(28, 45)
+chisel.lineTo(50, 0)
+chisel.lineTo(-28, -45)
+chisel.closed = True
+
+modes = {
+    'plotter-thin': {
+        'nib': ['circular', 10, 'round', 'round'],
+        'vshift': 5,
+        'fontname': "BedsteadPlotter-Thin",
+        },
+    'plotter-light': {
+        'nib': ['circular', 50, 'round', 'round'],
+        'vshift': 25,
+        'fontname': "BedsteadPlotter-Light",
+        },
+    'plotter-medium': {
+        'nib': ['circular', 100, 'round', 'round'],
+        'vshift': 50,
+        'fontname': "BedsteadPlotter-Medium",
+        },
+    'plotter-bold': {
+        'nib': ['circular', 150, 'round', 'round'],
+        'vshift': 75,
+        'fontname': "BedsteadPlotter-Bold",
+        },
+    'chiseltip': {
+        'nib': ['polygonal', chisel],
+        'vshift': 45,
+        'fontname': "BedsteadChiseltip",
+        },
+}
+
+mode = modes[argv[1]]
+
+f = fontforge.open(argv[2])
+
+f.strokedfont = False
+
+for g in f.glyphs():
+    g.stroke(*mode['nib'])
+    g.removeOverlap()
+    g.addExtrema()
+    g.transform(translate(0, mode['vshift']))
+
+f.fontname = mode['fontname']
+f.save(argv[3])
+