#!/usr/bin/env python3 mfdir = '/usr/share/texlive/texmf-dist/fonts/source/public/amsfonts/symbols' import re import subprocess def expand(fn): result = '' if fn.endswith(';'): fn = fn[:-1] with open(f'{mfdir}/{fn}.mf') as f: for line in f: if line[-1:] == '\n': line = line[:-1] line = line.split('%')[0] x = line.split() if len(x) == 2 and x[0] in ('generate','input'): result += expand(x[1]) continue if x == ['wpix(1.90u)','(linethickness);']: line = 'wpix(3.40u) (linethickness);' r = re.match(r'^(.*)beginchar\(([^,]*),(.*)$',line) if r: line = r.group(1)+'beginchar('+r.group(2)+',21/20*'+r.group(3) result += line + '\n' return result with open('bfbb.mf','w') as mf: mf.write(expand('msbm10')) subprocess.run(['mf',r'\mode:=lexmarks; mag:=2.5; nonstopmode; input bfbb'],check=True) subprocess.run(['mftrace','--format','ttf','--magnification','415.1100041511','bfbb'],check=True)