From: Ben Harris Date: Fri, 11 Aug 2017 23:04:22 +0000 (+0100) Subject: Beginnings of a script to stroke fonts. X-Git-Tag: bedstead-002.000~70 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=2c5fc3b5bc2908ebebf7f11a5d20d55c53487871;p=bedstead.git 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. --- 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]) +