From 2c5fc3b5bc2908ebebf7f11a5d20d55c53487871 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sat, 12 Aug 2017 00:04:22 +0100 Subject: [PATCH] Beginnings of a script to stroke fonts. 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 | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 strokefont.py diff --git a/strokefont.py b/strokefont.py new file mode 100644 index 0000000..1a81c9e --- /dev/null +++ b/strokefont.py @@ -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]) + -- 2.30.2