summaryrefslogtreecommitdiffstats
path: root/font/devps/generate
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
commitd318611dd6f23fcfedd50e9b9e24620b102ba96a (patch)
tree8b9eef82ca40fdd5a8deeabf07572074c236095d /font/devps/generate
parentInitial commit. (diff)
downloadgroff-upstream.tar.xz
groff-upstream.zip
Adding upstream version 1.23.0.upstream/1.23.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--font/devps/generate/Makefile314
-rwxr-xr-xfont/devps/generate/afmname44
-rw-r--r--font/devps/generate/dingbats-reversed.map4
-rw-r--r--font/devps/generate/dingbats.map5
-rw-r--r--font/devps/generate/freeeuro.sfd623
-rwxr-xr-xfont/devps/generate/make-zapfdr89
-rw-r--r--font/devps/generate/sfdtopfa.pe9
-rw-r--r--font/devps/generate/slanted-symbol.map31
-rw-r--r--font/devps/generate/symbol.map449
-rw-r--r--font/devps/generate/symbol.sed32
-rw-r--r--font/devps/generate/symbolchars13
-rw-r--r--font/devps/generate/symbolsl.awk19
-rw-r--r--font/devps/generate/text.map434
-rw-r--r--font/devps/generate/zapfdr.sed2
14 files changed, 2068 insertions, 0 deletions
diff --git a/font/devps/generate/Makefile b/font/devps/generate/Makefile
new file mode 100644
index 0000000..0eba6b1
--- /dev/null
+++ b/font/devps/generate/Makefile
@@ -0,0 +1,314 @@
+# Copyright (C) 1989-2022 Free Software Foundation, Inc.
+# Written by James Clark (jjc@jclark.com)
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This is set up so you can do
+# make -f generate/Makefile
+# in the parent directory of this directory.
+
+# The following line is required for DOS/Windows systems, since
+# this Makefile needs a Unixy shell to run.
+SHELL = /bin/sh
+
+# Directory containing AFM files. Must not be current directory.
+# Either long names (e.g., Times-Roman.afm) or short names (e.g.,
+# timesr.afm) may be used. See the afmname script.
+afmdir=/usr/local/lib/afm
+
+# Write font descriptions to this directory.
+outdir=$(srcdir)/..
+
+# The symbol font which fits to 'Symbol.afm'. For the creation of
+# 'symbolsl.afm' we need the 'printafm' script from ghostscript.
+symbolfont=/usr/local/lib/fonts/Symbol.pfb
+
+PRINTAFM=printafm
+
+srcdir=generate
+
+SPECIALFONTS=S
+DINGBATSFONTS=ZD ZDR
+GREEKFONTS=SS
+TEXTFONTS=AB ABI AI AR \
+ BMB BMBI BMI BMR \
+ CB CBI CI CR \
+ HB HBI HI HR \
+ HNB HNBI HNI HNR \
+ NB NBI NI NR \
+ PB PBI PI PR \
+ TB TBI TI TR \
+ ZCMI
+
+FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS) EURO
+
+DESC=$(srcdir)/../DESC
+AFMTODIT=afmtodit -c -d$(DESC)
+IFLAG=-i 50
+RFLAG=-i 0 -m
+NOLIGFLAG=-n
+TEXTENC=$(srcdir)/../text.enc
+EFLAG=-e $(TEXTENC)
+TEXTMAP=$(srcdir)/text.map
+AFMNAME=$(srcdir)/afmname
+
+RM=rm -f
+
+all: $(FONTS)
+
+TR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-Roman.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+TB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+TI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \
+ `$(AFMNAME) $(afmdir)/Times-Italic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+TBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-BoldItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Oblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-BoldOblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+CR:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+CB:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+CI:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-Oblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+CBI:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-BoldOblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+PR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Roman.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+PB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+PI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Italic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+PBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-BoldItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+NR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Roman.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+NB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+NI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Italic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+NBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-BoldItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+BMR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-Light.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+BMB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-Demi.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+BMI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-LightItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+BMBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-DemiItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+AR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-Book.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+AB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-Demi.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+AI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-BookOblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+ABI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-DemiOblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HNR:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HNB:
+ $(AFMTODIT) $(EFLAG) $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Bold.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HNI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Oblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+HNBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-BoldOblique.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+ZCMI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/ZapfChancery-MediumItalic.afm` \
+ $(TEXTMAP) $(OUTDIR)/$@
+
+ZD:
+ $(AFMTODIT) -s $(RFLAG) \
+ `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` \
+ $(srcdir)/dingbats.map $(OUTDIR)/$@
+
+SS: $(OUTDIR)/symbolsl.afm
+ $(AFMTODIT) -s -x $(IFLAG) \
+ $(OUTDIR)/symbolsl.afm $(srcdir)/slanted-symbol.map \
+ $(OUTDIR)/$@
+
+S: symbol.afm
+ $(AFMTODIT) -s $(RFLAG) \
+ symbol.afm $(srcdir)/symbol.map $(OUTDIR)/$@
+
+ZDR: $(OUTDIR)/zapfdr.afm
+ $(AFMTODIT) -s $(RFLAG) \
+ $(OUTDIR)/zapfdr.afm $(srcdir)/dingbats-reversed.map \
+ $(OUTDIR)/$@
+
+# the map is just a dummy
+EURO: freeeuro.afm
+ $(AFMTODIT) $(RFLAG) \
+ freeeuro.afm $(srcdir)/symbol.map $(OUTDIR)/$@
+
+freeeuro.afm freeeuro.pfa: $(srcdir)/freeeuro.sfd
+ fontforge -script $(srcdir)/sfdtopfa.pe $(srcdir)/freeeuro.sfd \
+ && mv freeeuro.afm freeeuro.pfa $(OUTDIR)
+
+symbol.afm: $(srcdir)/symbol.sed
+ sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/Symbol.afm` \
+ >$(OUTDIR)/$@
+
+symbolsl.afm: $(srcdir)/symbolsl.awk $(srcdir)/../symbolsl.ps
+ $(RM) Fontmap \
+ && echo "/Symbol-Slanted ($(srcdir)/../symbolsl.ps) ;" \
+ > Fontmap \
+ && echo "/Symbol ($(symbolfont)) ;" >> Fontmap \
+ && $(PRINTAFM) Symbol-Slanted > tmp.afm \
+ && awk -f $(srcdir)/symbolsl.awk -v SYMAFM=`$(AFMNAME) \
+ $(afmdir)/Symbol.afm` tmp.afm >$(OUTDIR)/$@ \
+ && $(RM) Fontmap tmp.afm
+
+zapfdr.afm: $(srcdir)/apfdr.sed
+ sed -f $(srcdir)/zapfdr.sed \
+ `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` >$(OUTDIR)/$@
+
+ZD: $(srcdir)/dingbats.map
+ZDR: $(srcdir)/dingbats-reversed.map
+$(TEXTFONTS): $(TEXTMAP) $(TEXTENC)
+$(SPECIALFONTS): $(srcdir)/symbol.map
+$(GREEKFONTS): $(srcdir)/slanted-symbol.map
+$(FONTS): $(DESC)
+
+$(srcdir)/symbol.map: $(TEXTMAP) $(srcdir)/symbolchars
+ printf \
+ '#\n# This is a list of all predefined groff symbols.\n#\n' \
+ > $(OUTDIR)/$@ \
+ && cat $(TEXTMAP) $(srcdir)/symbolchars >>$@
+
+clean:
+ cd $(OUTDIR) \
+ && $(RM) freeeuro.afm freeeuro.pfa symbol.afm \
+ $(srcdir)/symbol.map symbolsl.afm zapfdr.afm
+
+realclean: clean
+ cd $(OUTDIR) \
+ && $(RM) $(FONTS)
+
+extraclean: realclean
+ $(RM) core *~ "#*"
+
+.PHONY: all clean realclean extraclean
+
+# Local Variables:
+# mode: makefile
+# fill-column: 72
+# End:
+# vim: set textwidth=72:
diff --git a/font/devps/generate/afmname b/font/devps/generate/afmname
new file mode 100755
index 0000000..7d19349
--- /dev/null
+++ b/font/devps/generate/afmname
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Fix the path name of an AFM file.
+if test -f "$1"
+then
+ echo "$1"
+else
+ echo `dirname $1`/`basename $1 .afm | awk '
+/^AvantGarde-Book$/ { print "avangbk" }
+/^AvantGarde-BookOblique$/ { print "avangbko" }
+/^AvantGarde-Demi$/ { print "avangd" }
+/^AvantGarde-DemiOblique$/ { print "avangdo" }
+/^Bookman-Demi$/ { print "bookmd" }
+/^Bookman-DemiItalic$/ { print "bookmdi" }
+/^Bookman-Light$/ { print "bookml" }
+/^Bookman-LightItalic$/ { print "bookmli" }
+/^Courier$/ { print "couri" }
+/^Courier-Bold$/ { print "courib" }
+/^Courier-BoldOblique$/ { print "couribo" }
+/^Courier-Oblique$/ { print "courio" }
+/^Helvetica$/ { print "helve" }
+/^Helvetica-Bold$/ { print "helveb" }
+/^Helvetica-BoldOblique$/ { print "helvebo" }
+/^Helvetica-Narrow$/ { print "helven" }
+/^Helvetica-Narrow-Bold$/ { print "helvenb" }
+/^Helvetica-Narrow-BoldOblique$/ { print "helvenbo" }
+/^Helvetica-Narrow-Oblique$/ { print "helveno" }
+/^Helvetica-Oblique$/ { print "helveo" }
+/^NewCenturySchlbk-Bold$/ { print "newcsb" }
+/^NewCenturySchlbk-BoldItalic$/ { print "newcsbi" }
+/^NewCenturySchlbk-Italic$/ { print "newcsi" }
+/^NewCenturySchlbk-Roman$/ { print "newcsr" }
+/^Palatino-Bold$/ { print "palatb" }
+/^Palatino-BoldItalic$/ { print "palatbi" }
+/^Palatino-Italic$/ { print "palati" }
+/^Palatino-Roman$/ { print "palatr" }
+/^Symbol$/ { print "symbol" }
+/^Times-Bold$/ { print "timesb" }
+/^Times-BoldItalic$/ { print "timesbi" }
+/^Times-Italic$/ { print "timesi" }
+/^Times-Roman$/ { print "timesr" }
+/^ZapfChancery-MediumItalic$/ { print "zapfcmi" }
+/^ZapfDingbats$/ { print "zapfd" }
+' `.afm
+fi
diff --git a/font/devps/generate/dingbats-reversed.map b/font/devps/generate/dingbats-reversed.map
new file mode 100644
index 0000000..2c69968
--- /dev/null
+++ b/font/devps/generate/dingbats-reversed.map
@@ -0,0 +1,4 @@
+#
+# Predefined groff symbols for the reversed dingbats font.
+#
+a12 lh
diff --git a/font/devps/generate/dingbats.map b/font/devps/generate/dingbats.map
new file mode 100644
index 0000000..c5459ce
--- /dev/null
+++ b/font/devps/generate/dingbats.map
@@ -0,0 +1,5 @@
+#
+# Predefined groff symbols for the dingbats font.
+#
+a19 OK
+a12 rh
diff --git a/font/devps/generate/freeeuro.sfd b/font/devps/generate/freeeuro.sfd
new file mode 100644
index 0000000..882d5db
--- /dev/null
+++ b/font/devps/generate/freeeuro.sfd
@@ -0,0 +1,623 @@
+SplineFontDB: 1.0
+FontName: FreeEuro
+FullName: FreeEuro
+FamilyName: FreeEuro
+Weight: Medium
+Copyright: Created by Werner Lemberg with PfaEdit 1.0 (http://pfaedit.sf.net); the serif shapes are based on the Omega fonts created by Yannis Haralambous.
+Version: 001.001
+ItalicAngle: 0
+UnderlinePosition: -100
+UnderlineWidth: 50
+Ascent: 800
+Descent: 200
+NeedsXUIDChange: 1
+FSType: 12
+PfmFamily: 65
+TTFWeight: 500
+TTFWidth: 5
+LineGap: 90
+VLineGap: 0
+Panose: 3 0 6 3 0 0 0 0 0 0
+OS2TypoAscent: 0
+OS2TypoAOffset: 1
+OS2TypoDescent: 0
+OS2TypoDOffset: 1
+OS2TypoLinegap: 0
+OS2WinAscent: 0
+OS2WinAOffset: 1
+OS2WinDescent: 0
+OS2WinDOffset: 1
+HheadAscent: 0
+HheadAOffset: 1
+HheadDescent: 0
+HheadDOffset: 1
+OS2Vendor: 'PfEd'
+Encoding: Custom
+UnicodeInterp: none
+DisplaySize: -96
+AntiAlias: 1
+FitToEm: 1
+WinInfo: 0 8 2
+BeginChars: 256 16
+StartChar: Euro.symbol
+Encoding: 0 8364 0
+Width: 750
+Flags: W
+HStem: -12 58<398.5 519.5> 250 57<56 134 183 580> 366 57<56 134 183 628> 627 58<383.5 543.5>
+VStem: 124 58<332 341.5>
+Fore
+134 250 m 9
+ 32 250 l 17
+ 56 307 l 1
+ 125 307 l 1
+ 124 317 124 327 124 337 c 0
+ 124 346 124 356 125 366 c 1
+ 32 366 l 1
+ 56 423 l 1
+ 134 423 l 17
+ 165 555 294 685 473 685 c 0
+ 614 685 701 601 718 582 c 9
+ 694 523 l 17
+ 644 581 567 627 472 627 c 1
+ 334 627 230 534 195 423 c 1
+ 652 423 l 9
+ 628 366 l 25
+ 183 366 l 273
+ 182 356 182 346 182 337 c 0
+ 182 327 182 317 183 307 c 1
+ 604 307 l 9
+ 580 250 l 25
+ 195 250 l 17
+ 234 124 350 46 471 46 c 1
+ 568 46 641 90 694 150 c 9
+ 694 68 l 17
+ 639 23 562 -12 472 -12 c 1
+ 325 -12 177 83 134 250 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.symbol.bold
+Encoding: 1 8364 1
+Width: 750
+Flags: W
+HStem: -12 87<406 533> 220 87<60 160 230 578> 366 87<60 142 254 634> 598 87<404 542>
+VStem: 140 88<329.5 341.5>
+Fore
+254 220 m 9
+ 578 220 l 25
+ 612 307 l 17
+ 230 307 l 1
+ 228 316 228 325 228 334 c 256
+ 228 345 228 356 230 366 c 9
+ 634 366 l 25
+ 670 453 l 17
+ 254 453 l 1
+ 304 552 402 598 488 598 c 0
+ 596 598 662 535 688 504 c 9
+ 724 594 l 17
+ 640 668 552 685 488 685 c 0
+ 320 685 198 566 160 453 c 9
+ 60 453 l 25
+ 26 366 l 1
+ 142 366 l 1
+ 142 356 140 346 140 337 c 0
+ 140 327 142 317 142 307 c 1
+ 60 307 l 1
+ 26 220 l 1
+ 160 220 l 17
+ 206 100 316 -12 496 -12 c 1
+ 564 -12 640 17 688 52 c 9
+ 688 169 l 17
+ 642 116 576 75 490 75 c 0
+ 414 75 312 110 254 220 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.symbol.slanted
+Encoding: 2 8364 2
+Width: 750
+Flags: W
+HStem: -12 58<395.5 529.5> 250 57<121 190 248 633> 366 57<146 224 261 706> 627 58<529.5 689.5>
+Fore
+187 250 m 9
+ 85 250 l 17
+ 121 307 l 1
+ 190 307 l 1
+ 193 327 198 346 203 366 c 1
+ 110 366 l 1
+ 146 423 l 5
+ 224 423 l 17
+ 283 555 440 685 619 685 c 0
+ 760 685 829 601 842 582 c 9
+ 805 523 l 17
+ 767 581 700 627 605 627 c 1
+ 467 627 344 534 285 423 c 1
+ 742 423 l 9
+ 706 366 l 25
+ 261 366 l 17
+ 256 346 251 328 248 307 c 1
+ 669 307 l 9
+ 633 250 l 25
+ 248 250 l 17
+ 260 124 360 46 481 46 c 1
+ 578 46 660 90 726 150 c 9
+ 708 68 l 17
+ 644 23 559 -12 469 -12 c 1
+ 322 -12 195 83 187 250 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.symbol.bold.slanted
+Encoding: 3 8364 3
+Width: 750
+Flags: W
+HStem: -12 87<404 548.5> 220 87<126 207 295 625> 366 87<157 219 351 712> 598 87<550 670>
+Fore
+301 220 m 9
+ 625 220 l 25
+ 678 307 l 17
+ 295 307 l 1
+ 296 329 301 349 307 366 c 9
+ 712 366 l 25
+ 766 453 l 17
+ 351 453 l 1
+ 422 552 529 598 616 598 c 0
+ 724 598 776 535 796 504 c 9
+ 850 594 l 17
+ 782 668 698 685 634 685 c 0
+ 466 685 319 566 257 453 c 9
+ 157 453 l 25
+ 104 366 l 1
+ 219 366 l 1
+ 214 346 210 328 207 307 c 1
+ 126 307 l 1
+ 73 220 l 1
+ 207 220 l 17
+ 227 100 314 -12 494 -12 c 1
+ 561 -12 644 17 700 52 c 9
+ 724 169 l 17
+ 667 116 592 75 505 75 c 0
+ 430 75 335 110 301 220 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.serif
+Encoding: 4 8364 4
+Width: 741
+Flags: W
+HStem: -14 44<346.5 509> 253 46<54 109 219 568> 369 46<54 111 219 618> 636 40<357 497>
+Fore
+224 253 m 1
+ 245 130 319 30 463 30 c 0
+ 555 30 625 68 689 131 c 1
+ 707 113 l 1
+ 651 30 532 -14 436 -14 c 0
+ 257 -14 138 91 109 253 c 1
+ 34 253 l 1
+ 54 299 l 1
+ 103 299 l 1
+ 102 308 102 319 102 331 c 0
+ 102 344 103 357 104 369 c 1
+ 34 369 l 1
+ 54 415 l 1
+ 111 415 l 1
+ 145 569 272 676 442 676 c 0
+ 537 676 653 631 707 549 c 1
+ 689 531 l 1
+ 624 594 543 636 451 636 c 0
+ 394 636 342 613 301 575 c 0
+ 256 534 234 476 224 415 c 1
+ 638 415 l 1
+ 618 369 l 1
+ 219 369 l 257
+ 218 356 218 342 218 329 c 0
+ 218 319 218 309 219 299 c 1
+ 588 299 l 1
+ 568 253 l 1
+ 224 253 l 1
+EndSplineSet
+EndChar
+StartChar: Euro.serif.bold
+Encoding: 5 8364 5
+Width: 800
+Flags: W
+HStem: -19 48<394 552> 231 69<73 142 307 612> 368 69<73 143 307 669> 649 42<396.5 547>
+Fore
+142 231 m 1
+ 45 231 l 1
+ 73 300 l 1
+ 130 300 l 1
+ 129 310 129 321 129 332 c 0
+ 129 344 130 356 131 368 c 1
+ 45 368 l 1
+ 73 437 l 1
+ 143 437 l 1
+ 183 586 310 691 483 691 c 0
+ 611 691 689 628 762 545 c 1
+ 732 520 l 1
+ 649 613 572 649 494 649 c 0
+ 377 649 328 560 312 437 c 1
+ 697 437 l 1
+ 669 368 l 1
+ 307 368 l 257
+ 306 359 306 348 306 336 c 0
+ 306 325 306 312 307 300 c 1
+ 640 300 l 1
+ 612 231 l 1
+ 313 231 l 1
+ 319 190 330 149 349 116 c 0
+ 391 44 470 29 501 29 c 0
+ 579 29 654 59 737 152 c 1
+ 767 127 l 1
+ 694 44 616 -19 488 -19 c 0
+ 300 -19 181 89 142 231 c 1
+EndSplineSet
+EndChar
+StartChar: Euro.serif.italic
+Encoding: 6 8364 6
+Width: 734
+Flags: W
+HStem: -18 45<344 482.5> 253 46<86 143 252 565> 369 46<118 179 272 636> 630 36<463 620>
+VStem: 140 112<152.5 253>
+Fore
+143 299 m 1
+ 147 322 152 346 161 369 c 1
+ 98 369 l 1
+ 118 415 l 1
+ 179 415 l 1
+ 243 551 380 666 546 666 c 0
+ 694 666 734 560 745 516 c 1
+ 720 502 l 1
+ 700 549 668 630 554 630 c 0
+ 425 630 336 528 289 415 c 1
+ 656 415 l 1
+ 636 369 l 1
+ 272 369 l 1
+ 266 347 261 323 257 299 c 1
+ 585 299 l 1
+ 565 253 l 1
+ 252 253 l 1
+ 248 118 301 27 426 27 c 0
+ 539 27 609 98 657 145 c 1
+ 674 131 l 1
+ 637 87 548 -18 402 -18 c 0
+ 286 -18 140 52 140 253 c 1
+ 66 253 l 1
+ 86 299 l 1
+ 143 299 l 1
+EndSplineSet
+EndChar
+StartChar: Euro.serif.bold.italic
+Encoding: 7 8364 7
+Width: 800
+Flags: W
+HStem: -19 48<307 465> 231 69<61 118 285 584> 368 69<93 163 311 673> 649 42<476.5 627>
+Fore
+114 231 m 1
+ 17 231 l 1
+ 61 300 l 1
+ 118 300 l 1
+ 121 324 128 347 135 368 c 1
+ 49 368 l 1
+ 93 437 l 1
+ 163 437 l 1
+ 239 586 390 691 563 691 c 0
+ 691 691 754 628 808 545 c 1
+ 772 520 l 1
+ 711 613 642 649 564 649 c 0
+ 447 649 377 560 332 437 c 1
+ 717 437 l 1
+ 673 368 l 1
+ 311 368 l 1
+ 305 349 299 323 295 300 c 1
+ 628 300 l 1
+ 584 231 l 1
+ 285 231 l 1
+ 281 190 282 149 293 116 c 0
+ 318 44 394 29 425 29 c 0
+ 503 29 585 59 690 152 c 1
+ 714 127 l 1
+ 621 44 529 -19 401 -19 c 0
+ 213 -19 119 89 114 231 c 1
+EndSplineSet
+EndChar
+StartChar: Euro.sansserif
+Encoding: 8 8364 8
+Width: 756
+Flags: W
+HStem: -23 79<405 536.5> 225 84<69 171 246 585> 378 84<69 157 264 643> 630 79<395 543>
+VStem: 156 89<338 355>
+Fore
+263 225 m 9
+ 585 225 l 25
+ 617 309 l 17
+ 246 309 l 257
+ 245 320 245 332 245 344 c 0
+ 245 356 245 369 246 378 c 9
+ 643 378 l 25
+ 675 462 l 17
+ 264 462 l 1
+ 299 565 386 630 488 630 c 0
+ 598 630 659 578 696 520 c 9
+ 731 614 l 17
+ 655 692 560 709 494 709 c 0
+ 296 709 199 573 172 462 c 9
+ 69 462 l 25
+ 38 378 l 1
+ 157 378 l 1
+ 156 371 156 360 156 350 c 0
+ 156 335 156 321 157 309 c 1
+ 69 309 l 1
+ 38 225 l 1
+ 171 225 l 17
+ 207 90 318 -23 492 -23 c 1
+ 560 -23 631 -12 697 33 c 9
+ 697 136 l 17
+ 620 72 579 56 494 56 c 0
+ 389 56 300 118 263 225 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.sansserif.bold
+Encoding: 9 8364 9
+Width: 796
+Flags: W
+HStem: -22 123<436 594.5> 218 100<68 161 284 619> 372 98<69 161 284 669> 587 123<413.5 587>
+Fore
+724 540 m 1
+ 665 577 617 587 537 587 c 0
+ 489 587 364 571 310 470 c 1
+ 701 470 l 9
+ 669 372 l 25
+ 284 372 l 273
+ 284 362 283 354 283 345 c 0
+ 283 337 284 329 284 318 c 1
+ 651 318 l 9
+ 619 218 l 25
+ 310 218 l 17
+ 336 168 422 101 543 101 c 0
+ 646 101 686 125 716 144 c 9
+ 716 6 l 17
+ 682 -7 623 -22 540 -22 c 1
+ 332 -22 206 86 161 218 c 9
+ 36 218 l 1
+ 68 318 l 1
+ 141 318 l 1
+ 140 329 139 338 139 348 c 0
+ 139 355 140 363 141 372 c 1
+ 36 372 l 1
+ 69 470 l 25
+ 161 470 l 17
+ 192 555 283 710 544 710 c 0
+ 630 710 703 692 763 660 c 0
+ 724 540 l 1
+EndSplineSet
+EndChar
+StartChar: Euro.sansserif.slanted
+Encoding: 10 8364 10
+Width: 756
+Flags: W
+HStem: -23 79<400 548.5> 225 84<135 219 312 633> 378 84<167 237 362 723> 630 79<546 678>
+Fore
+311 225 m 9
+ 633 225 l 25
+ 683 309 l 17
+ 312 309 l 1
+ 315 331 321 359 326 378 c 13
+ 723 378 l 25
+ 773 462 l 17
+ 362 462 l 1
+ 419 565 520 630 622 630 c 0
+ 732 630 782 578 807 520 c 9
+ 862 614 l 17
+ 802 692 711 709 645 709 c 0
+ 447 709 321 573 270 462 c 9
+ 167 462 l 25
+ 118 378 l 1
+ 237 378 l 1
+ 233 360 225 329 223 309 c 1
+ 135 309 l 1
+ 86 225 l 1
+ 219 225 l 17
+ 226 90 313 -23 487 -23 c 1
+ 555 -23 628 -12 704 33 c 9
+ 726 136 l 17
+ 635 72 591 56 506 56 c 0
+ 401 56 325 118 311 225 c 9
+EndSplineSet
+EndChar
+StartChar: Euro.sansserif.bold.slanted
+Encoding: 11 8364 11
+Width: 796
+Flags: W
+HStem: -22 123<431 615.5> 218 100<136 209 352 665> 372 98<169 261 363 748> 587 123<564.5 738>
+Fore
+839 540 m 1
+ 788 577 742 587 662 587 c 0
+ 614 587 485 571 410 470 c 1
+ 801 470 l 9
+ 748 372 l 25
+ 363 372 l 17
+ 358 353 355 341 352 318 c 1
+ 719 318 l 9
+ 665 218 l 25
+ 356 218 l 17
+ 372 168 443 101 564 101 c 0
+ 667 101 713 125 747 144 c 9
+ 717 6 l 17
+ 681 -7 618 -22 535 -22 c 1
+ 327 -22 224 86 207 218 c 9
+ 82 218 l 1
+ 136 318 l 1
+ 209 318 l 1
+ 211 339 213 354 220 372 c 1
+ 115 372 l 1
+ 169 470 l 25
+ 261 470 l 17
+ 310 555 434 710 695 710 c 0
+ 781 710 850 692 903 660 c 0
+ 839 540 l 1
+EndSplineSet
+EndChar
+StartChar: Euro.mono
+Encoding: 12 8364 12
+Width: 600
+Flags: W
+HStem: -16 41<259 356.5> 217 37<33 65 104 383> 314 37<24.5 65 104 436> 535 41<259 356.5>
+VStem: 63 41<254 314>
+Fore
+322 576 m 0
+ 196 576 80 480 65 351 c 1
+ 33 351 l 258
+ 16 351 11 346 11 333 c 0
+ 11 319 17 314 33 314 c 258
+ 63 314 l 257
+ 63 254 l 257
+ 33 254 l 258
+ 17 254 11 249 11 236 c 0
+ 11 222 17 217 33 217 c 258
+ 65 217 l 1
+ 80 89 196 -16 322 -16 c 0
+ 386 -16 446 9 496 55 c 0
+ 522 79 534 96 534 106 c 0
+ 534 117 526 125 514 125 c 0
+ 507 125 503 123 496 115 c 0
+ 442 51 391 25 322 25 c 0
+ 216 25 124 107 106 217 c 1
+ 383 217 l 258
+ 398 217 404 222 404 236 c 0
+ 404 249 399 254 383 254 c 258
+ 104 254 l 257
+ 104 314 l 257
+ 428 314 l 258
+ 444 314 450 319 450 333 c 0
+ 450 346 444 351 428 351 c 258
+ 106 351 l 1
+ 124 460 216 535 322 535 c 0
+ 391 535 442 509 496 445 c 0
+ 503 437 507 435 514 435 c 0
+ 526 435 534 443 534 454 c 0
+ 534 464 522 481 496 505 c 0
+ 446 551 386 576 322 576 c 0
+EndSplineSet
+EndChar
+StartChar: Euro.mono.bold
+Encoding: 13 8364 13
+Width: 600
+Flags: W
+HStem: -14 100<256 357> 205 56<22 62 169 395> 303 56<31 62 169 424> 497 100<256 361.5>
+Fore
+173 359 m 1
+ 424 359 l 2
+ 442 359 452 349 452 331 c 0
+ 452 313 442 303 424 303 c 2
+ 169 303 l 1
+ 169 261 l 1
+ 386 261 l 2
+ 404 261 414 251 414 233 c 0
+ 414 215 404 205 386 205 c 2
+ 174 205 l 1
+ 190 130 247 86 329 86 c 0
+ 382 86 429 98 461 143 c 0
+ 469 154 481 159 492 159 c 0
+ 517 159 538 136 538 109 c 0
+ 538 86 521 60 490 36 c 0
+ 451 5 389 -14 325 -14 c 0
+ 187 -14 84 72 62 205 c 1
+ 31 205 l 2
+ 14 205 4 215 4 233 c 0
+ 4 251 13 261 31 261 c 2
+ 59 261 l 1
+ 59 303 l 1
+ 31 303 l 2
+ 14 303 4 313 4 331 c 0
+ 4 349 13 359 31 359 c 2
+ 62 359 l 1
+ 78 498 187 597 325 597 c 0
+ 389 597 451 582 490 551 c 1
+ 521 527 539 505 539 478 c 0
+ 539 455 517 426 492 426 c 1
+ 481 426 469 431 461 442 c 0
+ 431 482 394 497 329 497 c 0
+ 247 497 188 444 173 359 c 1
+EndSplineSet
+EndChar
+StartChar: Euro.mono.slanted
+Encoding: 14 8364 14
+Width: 600
+Flags: W
+HStem: -16 41<258.5 362.5> 217 37<72.5 117 153 444> 314 37<92.5 140 171 511> 535 41<382 477>
+Fore
+541 125 m 0
+ 534 125 530 123 521 115 c 0
+ 453 51 397 25 328 25 c 0
+ 210 25 148 121 153 217 c 1
+ 430 217 l 2
+ 445 217 455 225 455 241 c 0
+ 455 250 451 254 437 254 c 2
+ 158 254 l 1
+ 171 314 l 257
+ 496 314 l 2
+ 520 314 522 333 522 339 c 0
+ 522 348 518 351 504 351 c 2
+ 181 351 l 1
+ 222 460 330 535 436 535 c 0
+ 505 535 551 509 591 445 c 0
+ 596 437 600 435 607 435 c 0
+ 619 435 631 443 631 457 c 0
+ 631 467 623 483 604 505 c 0
+ 564 551 509 576 445 576 c 0
+ 319 576 183 480 140 351 c 1
+ 108 351 l 2
+ 84 351 81 335 81 329 c 0
+ 81 317 85 314 100 314 c 2
+ 130 314 l 1
+ 117 254 l 1
+ 87 254 l 2
+ 63 254 61 238 61 232 c 0
+ 61 220 65 217 80 217 c 2
+ 112 217 l 1
+ 99 84 198 -16 319 -16 c 0
+ 383 -16 448 9 508 55 c 0
+ 538 78 557 96 557 108 c 0
+ 557 123 547 125 541 125 c 0
+EndSplineSet
+EndChar
+StartChar: Euro.mono.bold.slanted
+Encoding: 15 8364 15
+Width: 600
+Flags: W
+HStem: -14 100<249.5 375.5> 205 56<76 116 219 443> 303 56<96 139 234 501> 497 100<384 485>
+Fore
+250 359 m 1
+ 501 359 l 2
+ 516 359 524 352 524 339 c 0
+ 524 317 509 303 489 303 c 2
+ 234 303 l 1
+ 226 261 l 1
+ 443 261 l 2
+ 458 261 465 254 465 242 c 0
+ 465 219 450 205 431 205 c 2
+ 219 205 l 1
+ 219 130 266 86 348 86 c 0
+ 403 86 457 103 492 143 c 0
+ 501 153 516 159 527 159 c 0
+ 548 159 563 142 563 120 c 0
+ 563 89 536 61 499 36 c 0
+ 453 5 387 -14 323 -14 c 0
+ 176 -14 100 80 107 205 c 1
+ 76 205 l 2
+ 62 205 54 212 54 225 c 0
+ 54 247 68 261 88 261 c 2
+ 116 261 l 1
+ 124 303 l 1
+ 96 303 l 2
+ 82 303 74 310 74 323 c 0
+ 74 346 89 359 108 359 c 2
+ 139 359 l 1
+ 185 498 315 597 453 597 c 0
+ 517 597 576 582 608 551 c 1
+ 630 530 643 511 643 489 c 0
+ 643 459 612 426 584 426 c 1
+ 573 426 560 433 556 442 c 0
+ 535 484 497 497 436 497 c 0
+ 354 497 283 444 250 359 c 1
+EndSplineSet
+EndChar
+EndChars
+EndSplineFont
diff --git a/font/devps/generate/make-zapfdr b/font/devps/generate/make-zapfdr
new file mode 100755
index 0000000..ee80bf0
--- /dev/null
+++ b/font/devps/generate/make-zapfdr
@@ -0,0 +1,89 @@
+#! /bin/sh
+#
+# make-zapfdr -- script for creating the file zapfdr.ps
+#
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# usage:
+#
+# make-zapfdr < ZapfDingbats.afm > zapfdr.ps
+#
+
+
+# Write preamble.
+cat <<END
+%!PS-Adobe-3.0 Resource-Font
+%%DocumentNeededResources: font ZapfDingbats
+%%EndComments
+%%IncludeResource: font ZapfDingbats
+
+/ZapfDingbats findfont [-1 0 0 1 0 0] makefont
+
+dup length 1 add dict begin
+{
+ exch dup dup /FID ne exch /UniqueID ne and {
+ exch def
+ } {
+ pop pop
+ } ifelse
+} forall
+
+/FontName /ZapfDingbats-Reverse def
+END
+
+
+# Emit reverse metrics.
+sed '
+ /^StartCharMetrics/ {
+ s|StartCharMetrics \([0-9]*\)|/Metrics \1 dict dup begin|
+ H
+ d
+ }
+
+ /^C / {
+ s|^.*$|&@|
+ s|^.* N \([^ ]*\) ;.*$|&/\1 [|
+ s|^.* B [0-9-]* [0-9-]* \([0-9]*\) [0-9-]* ;.*$|&-\1 |
+ s|^.* B [0-9-]* [0-9-]* -\([0-9]*\) [0-9-]* ;.*$|&\1 |
+ s|^.* WX \([0-9]*\) ;.*$|&-\1] def|
+ s|^.* WX -\([0-9]*\) ;.*$|&\1] def|
+ s|^.*@| |
+ H
+ d
+ }
+
+ $ {
+ g
+ p
+ }
+
+ d
+'
+
+
+# Write postamble.
+cat <<END
+
+end def
+
+/ZapfDingbats-Reverse currentdict end definefont pop
+END
+
+# EOF
diff --git a/font/devps/generate/sfdtopfa.pe b/font/devps/generate/sfdtopfa.pe
new file mode 100644
index 0000000..b495458
--- /dev/null
+++ b/font/devps/generate/sfdtopfa.pe
@@ -0,0 +1,9 @@
+# sfdtopfa.pe
+#
+# This script generates a PFA file from the master SFD using pfaedit.
+#
+# The argument is the name of the SFD without extension;
+# the PFA file is created in the current directory.
+
+Open($1:r + ".sfd");
+Generate(($1:t):r + ".pfa");
diff --git a/font/devps/generate/slanted-symbol.map b/font/devps/generate/slanted-symbol.map
new file mode 100644
index 0000000..f8eda6a
--- /dev/null
+++ b/font/devps/generate/slanted-symbol.map
@@ -0,0 +1,31 @@
+#
+# This is the list of greek symbols for the SS special font.
+#
+alpha *a
+beta *b
+chi *x
+delta *d
+epsilon *e
+eta *y
+gamma *g
+iota *i
+kappa *k
+lambda *l
+mu *m
+nu *n
+omega *w
+omega1 +p
+omicron *o
+phi *f
+phi1 +f
+pi *p
+psi *q
+rho *r
+sigma *s
+tau *t
+theta *h
+theta1 +h
+upsilon *u
+xi *c
+zeta *z
+sigma1 ts
diff --git a/font/devps/generate/symbol.map b/font/devps/generate/symbol.map
new file mode 100644
index 0000000..8f1d2f1
--- /dev/null
+++ b/font/devps/generate/symbol.map
@@ -0,0 +1,449 @@
+#
+# This is a list of all predefined groff symbols.
+#
+#
+# Predefined groff symbols for textual fonts.
+#
+a14 rh
+a a
+A A
+aacute 'a
+Aacute 'A
+acircumflex ^a
+Acircumflex ^A
+acute aa
+adieresis :a
+Adieresis :A
+ae ae
+AE AE
+agrave `a
+Agrave `A
+aleph Ah
+alpha *a
+Alpha *A
+ampersand &
+angle /_
+angleleft la
+angleright ra
+approxequal ~~
+approxequal ~=
+aring oa
+Aring oA
+arrowboth <>
+arrowdblboth hA
+arrowdbldown dA
+arrowdblleft lA
+arrowdblright rA
+arrowdblup uA
+arrowdown da
+arrowhorizex an
+arrowleft <-
+arrowright ->
+arrowupdn va
+arrowup ua
+arrowvertex arrowvertex
+asciicircum ha
+asciitilde ti
+asterisk *
+asteriskmath **
+at @
+at at
+atilde ~a
+Atilde ~A
+backslash \
+backslash rs
+bar |
+bar ba
+b b
+B B
+beta *b
+Beta *B
+braceex barex
+braceex braceex
+braceex braceleftex
+braceex bracerightex
+braceex bv
+braceleft {
+braceleftbt braceleftbt
+braceleftbt lb
+braceleft lC
+braceleftmid braceleftmid
+braceleftmid lk
+bracelefttp bracelefttp
+bracelefttp lt
+braceright }
+bracerightbt bracerightbt
+bracerightbt rb
+bracerightmid bracerightmid
+bracerightmid rk
+braceright rC
+bracerighttp bracerighttp
+bracerighttp rt
+bracketleft [
+bracketleftbt bracketleftbt
+bracketleftbt lf
+bracketleftex bracketleftex
+bracketleft lB
+bracketlefttp bracketlefttp
+bracketlefttp lc
+bracketright ]
+bracketrightbt bracketrightbt
+bracketrightbt rf
+bracketrightex bracketrightex
+bracketright rB
+bracketrighttp bracketrighttp
+bracketrighttp rc
+breve ab
+brokenbar bb
+bullet bu
+cacute 'c
+Cacute 'C
+caron ah
+carriagereturn CR
+c c
+C C
+ccedilla ,c
+Ccedilla ,C
+cedilla ac
+cent ct
+checkmark OK
+chi *x
+Chi *X
+circle ci
+circlemultiply c*
+circleplus c+
+circumflex ^
+circumflex a^
+club CL
+colon :
+comma ,
+congruent =~
+copyright co
+currency Cs
+daggerdbl dd
+dagger dg
+d d
+D D
+degree de
+delta *d
+Delta *D
+diamond DI
+dieresis ad
+divide tdi
+dollar $
+dollar Do
+dotaccent a.
+dotlessi .i
+dotlessj .j
+dotmath md
+eacute 'e
+Eacute 'E
+ecircumflex ^e
+Ecircumflex ^E
+edieresis :e
+Edieresis :E
+e e
+E E
+egrave `e
+Egrave `E
+eight 8
+element mo
+emdash em
+emptyset es
+endash en
+epsilon *e
+Epsilon *E
+equal =
+equivalence ==
+eta *y
+Eta *Y
+Eth -D
+eth Sd
+Euro Eu
+exclam !
+exclamdown r!
+existential te
+f f
+F F
+ff ff
+ffi Fi
+ffl Fl
+fi fi
+five 5
+fiveeighths 58
+fl fl
+florin Fn
+four 4
+fraction f/
+gamma *g
+Gamma *G
+germandbls ss
+g g
+G G
+gradient gr
+grave ga
+greater >
+greaterequal >=
+guillemotleft Fo
+guillemotright Fc
+guilsinglleft fo
+guilsinglright fc
+heart HE
+h h
+H H
+hungarumlaut a"
+hyphen -
+hyphen hy
+iacute 'i
+Iacute 'I
+icircumflex ^i
+Icircumflex ^I
+idieresis :i
+Idieresis :I
+Ifraktur Im
+igrave `i
+Igrave `I
+i i
+I I
+ij ij
+IJ IJ
+infinity if
+# the next line overrides the (old) PUA value of the AGL
+integralex u23AE
+integral integral
+integral is
+intersection ca
+iota *i
+Iota *I
+j j
+J J
+kappa *k
+Kappa *K
+k k
+K K
+lambda *l
+Lambda *L
+less <
+lessequal <=
+l l
+L L
+logicaland AN
+logicalnot tno
+logicalor OR
+lozenge lz
+lslash /l
+Lslash /L
+macron a-
+minus \-
+minute fm
+m m
+M M
+mu1 mc
+multiply tmu
+mu *m
+Mu *M
+# if there is "mu1" glyph in the font - comment out the following line
+mu mc
+nine 9
+n n
+N N
+notelement nm
+notequal !=
+notsubset nb
+ntilde ~n
+Ntilde ~N
+numbersign #
+numbersign sh
+nu *n
+Nu *N
+oacute 'o
+Oacute 'O
+ocircumflex ^o
+Ocircumflex ^O
+odieresis :o
+Odieresis :O
+oe oe
+OE OE
+ogonek ho
+ograve `o
+Ograve `O
+omega1 +p
+omega *w
+Omega *W
+omicron *o
+Omicron *O
+one 1
+oneeighth 18
+onehalf 12
+onequarter 14
+onesuperior S1
+o o
+O O
+ordfeminine Of
+ordmasculine Om
+oslash /o
+Oslash /O
+otilde ~o
+Otilde ~O
+overline rn
+paragraph ps
+parenleft (
+parenleftbt parenleftbt
+parenleftex parenleftex
+parenlefttp parenlefttp
+parenright )
+parenrightbt parenrightbt
+parenrightex parenrightex
+parenrighttp parenrighttp
+partialdiff pd
+percent %
+period .
+periodcentered pc
+perpendicular pp
+perthousand %0
+phi1 +f
+phi *f
+Phi *F
+pi *p
+Pi *P
+plus +
+plusminus t+-
+p p
+P P
+product product
+propersubset sb
+propersuperset sp
+proportional pt
+psi *q
+Psi *Q
+q q
+Q Q
+question ?
+questiondown r?
+quotedbl "
+quotedblbase Bq
+quotedbl dq
+quotedblleft lq
+quotedblright rq
+quoteleft `
+quoteleft oq
+quoteright '
+quoteright cq
+quotesinglbase bq
+quotesingle aq
+radicalex radicalex
+radical sqrt
+radical sr
+reflexsubset ib
+reflexsuperset ip
+registered rg
+Rfraktur Re
+rho *r
+Rho *R
+ring ao
+r r
+R R
+scaron vs
+Scaron vS
+second sd
+section sc
+semicolon ;
+seven 7
+seveneighths 78
+SF110000 br
+sigma1 ts
+sigma *s
+Sigma *S
+similar ap
+six 6
+slash /
+slash sl
+spade SP
+s s
+S S
+sterling Po
+suchthat st
+summation sum
+tau *t
+Tau *T
+therefore 3d
+therefore tf
+theta1 +h
+theta *h
+Theta *H
+thorn Tp
+Thorn TP
+three 3
+threeeighths 38
+threequarters 34
+threesuperior S3
+tilde ~
+tilde a~
+trademark tm
+t t
+T T
+two 2
+twosuperior S2
+uacute 'u
+Uacute 'U
+ucircumflex ^u
+Ucircumflex ^U
+udieresis :u
+Udieresis :U
+ugrave `u
+Ugrave `U
+underscore _
+uni03F5 +e
+uni210F -h
+uni210F hbar
+uni21D5 vA
+uni2210 coproduct
+uni2213 -+
+uni2243 |=
+uni2262 ne
+uni226A >>
+uni226B <<
+uni2285 nc
+uni25A1 sq
+uni261C lh
+union cu
+universal fa
+upsilon *u
+u u
+U U
+v v
+V V
+weierstrass wp
+w w
+W W
+xi *c
+Xi *C
+x x
+X X
+yacute 'y
+Yacute 'Y
+ydieresis :y
+Ydieresis :Y
+yen Ye
+y y
+Y Y
+zcaron vz
+Zcaron vZ
+zero 0
+zeta *z
+Zeta *Z
+z z
+Z Z
+#
+# Additional predefined groff symbols for special fonts.
+#
+arrowdown arrowvertbt
+arrowup arrowverttp
+divide di
+equal eq
+logicalnot no
+minus mi
+multiply mu
+plusminus +-
+plus pl
+Upsilon1 *U
diff --git a/font/devps/generate/symbol.sed b/font/devps/generate/symbol.sed
new file mode 100644
index 0000000..0bc4fb9
--- /dev/null
+++ b/font/devps/generate/symbol.sed
@@ -0,0 +1,32 @@
+# Set up uniform vertical dimensions for extensible glyphs (needed by eqn).
+/^C .*[ ;]N bracketlefttp[ ;]/bx
+/^C .*[ ;]N bracketleftex[ ;]/bx
+/^C .*[ ;]N bracketleftbt[ ;]/bx
+/^C .*[ ;]N bracketrighttp[ ;]/bx
+/^C .*[ ;]N bracketrightex[ ;]/bx
+/^C .*[ ;]N bracketrightbt[ ;]/bx
+/^C .*[ ;]N bracelefttp[ ;]/bx
+/^C .*[ ;]N braceleftmid[ ;]/bx
+/^C .*[ ;]N braceleftbt[ ;]/bx
+/^C .*[ ;]N bracerighttp[ ;]/bx
+/^C .*[ ;]N bracerightmid[ ;]/bx
+/^C .*[ ;]N bracerightbt[ ;]/bx
+/^C .*[ ;]N braceex[ ;]/bx
+/^C .*[ ;]N parenleftex[ ;]/by
+/^C .*[ ;]N parenrightex[ ;]/by
+/^C .*[ ;]N parenleftbt[ ;]/bz
+/^C .*[ ;]N parenrightbt[ ;]/bz
+/^EndCharMetrics/a\
+italicCorrection integral 67\
+leftItalicCorrection integral 52\
+subscriptCorrection integral -10
+b
+:x
+s/B \([-0-9][0-9]*\) [-0-9][0-9]* \([-0-9][0-9]*\) [-0-9][0-9]*/B \1 -75 \2 925/
+b
+:y
+s/B \([-0-9][0-9]*\) [-0-9][0-9]* \([-0-9][0-9]*\) [-0-9][0-9]*/B \1 -80 \2 920/
+b
+:z
+s/B \([-0-9][0-9]*\) \([-0-9][0-9]*\) \([-0-9][0-9]*\) [-0-9][0-9]*/B \1 \2 \3 920/
+b
diff --git a/font/devps/generate/symbolchars b/font/devps/generate/symbolchars
new file mode 100644
index 0000000..015c534
--- /dev/null
+++ b/font/devps/generate/symbolchars
@@ -0,0 +1,13 @@
+#
+# Additional predefined groff symbols for special fonts.
+#
+arrowdown arrowvertbt
+arrowup arrowverttp
+divide di
+equal eq
+logicalnot no
+minus mi
+multiply mu
+plusminus +-
+plus pl
+Upsilon1 *U
diff --git a/font/devps/generate/symbolsl.awk b/font/devps/generate/symbolsl.awk
new file mode 100644
index 0000000..ad36995
--- /dev/null
+++ b/font/devps/generate/symbolsl.awk
@@ -0,0 +1,19 @@
+/^StartFontMetrics / {
+ print
+ while ((getline < SYMAFM) > 0) {
+ if (/^CharacterSet / || /^EncodingScheme / || /^Comment /) { print }
+ }
+ next
+}
+/^ItalicAngle 0$/ {
+ print "ItalicAngle -15.5"
+ next
+}
+/^FullName / {
+ print $0 " Slanted"
+ next
+}
+/^FSType / {
+ next
+}
+{ print }
diff --git a/font/devps/generate/text.map b/font/devps/generate/text.map
new file mode 100644
index 0000000..84182a3
--- /dev/null
+++ b/font/devps/generate/text.map
@@ -0,0 +1,434 @@
+#
+# Predefined groff symbols for textual fonts.
+#
+a14 rh
+a a
+A A
+aacute 'a
+Aacute 'A
+acircumflex ^a
+Acircumflex ^A
+acute aa
+adieresis :a
+Adieresis :A
+ae ae
+AE AE
+agrave `a
+Agrave `A
+aleph Ah
+alpha *a
+Alpha *A
+ampersand &
+angle /_
+angleleft la
+angleright ra
+approxequal ~~
+approxequal ~=
+aring oa
+Aring oA
+arrowboth <>
+arrowdblboth hA
+arrowdbldown dA
+arrowdblleft lA
+arrowdblright rA
+arrowdblup uA
+arrowdown da
+arrowhorizex an
+arrowleft <-
+arrowright ->
+arrowupdn va
+arrowup ua
+arrowvertex arrowvertex
+asciicircum ha
+asciitilde ti
+asterisk *
+asteriskmath **
+at @
+at at
+atilde ~a
+Atilde ~A
+backslash \
+backslash rs
+bar |
+bar ba
+b b
+B B
+beta *b
+Beta *B
+braceex barex
+braceex braceex
+braceex braceleftex
+braceex bracerightex
+braceex bv
+braceleft {
+braceleftbt braceleftbt
+braceleftbt lb
+braceleft lC
+braceleftmid braceleftmid
+braceleftmid lk
+bracelefttp bracelefttp
+bracelefttp lt
+braceright }
+bracerightbt bracerightbt
+bracerightbt rb
+bracerightmid bracerightmid
+bracerightmid rk
+braceright rC
+bracerighttp bracerighttp
+bracerighttp rt
+bracketleft [
+bracketleftbt bracketleftbt
+bracketleftbt lf
+bracketleftex bracketleftex
+bracketleft lB
+bracketlefttp bracketlefttp
+bracketlefttp lc
+bracketright ]
+bracketrightbt bracketrightbt
+bracketrightbt rf
+bracketrightex bracketrightex
+bracketright rB
+bracketrighttp bracketrighttp
+bracketrighttp rc
+breve ab
+brokenbar bb
+bullet bu
+cacute 'c
+Cacute 'C
+caron ah
+carriagereturn CR
+c c
+C C
+ccedilla ,c
+Ccedilla ,C
+cedilla ac
+cent ct
+checkmark OK
+chi *x
+Chi *X
+circle ci
+circlemultiply c*
+circleplus c+
+circumflex ^
+circumflex a^
+club CL
+colon :
+comma ,
+congruent =~
+copyright co
+currency Cs
+daggerdbl dd
+dagger dg
+d d
+D D
+degree de
+delta *d
+Delta *D
+diamond DI
+dieresis ad
+divide tdi
+dollar $
+dollar Do
+dotaccent a.
+dotlessi .i
+dotlessj .j
+dotmath md
+eacute 'e
+Eacute 'E
+ecircumflex ^e
+Ecircumflex ^E
+edieresis :e
+Edieresis :E
+e e
+E E
+egrave `e
+Egrave `E
+eight 8
+element mo
+emdash em
+emptyset es
+endash en
+epsilon *e
+Epsilon *E
+equal =
+equivalence ==
+eta *y
+Eta *Y
+Eth -D
+eth Sd
+Euro Eu
+exclam !
+exclamdown r!
+existential te
+f f
+F F
+ff ff
+ffi Fi
+ffl Fl
+fi fi
+five 5
+fiveeighths 58
+fl fl
+florin Fn
+four 4
+fraction f/
+gamma *g
+Gamma *G
+germandbls ss
+g g
+G G
+gradient gr
+grave ga
+greater >
+greaterequal >=
+guillemotleft Fo
+guillemotright Fc
+guilsinglleft fo
+guilsinglright fc
+heart HE
+h h
+H H
+hungarumlaut a"
+hyphen -
+hyphen hy
+iacute 'i
+Iacute 'I
+icircumflex ^i
+Icircumflex ^I
+idieresis :i
+Idieresis :I
+Ifraktur Im
+igrave `i
+Igrave `I
+i i
+I I
+ij ij
+IJ IJ
+infinity if
+# the next line overrides the (old) PUA value of the AGL
+integralex u23AE
+integral integral
+integral is
+intersection ca
+iota *i
+Iota *I
+j j
+J J
+kappa *k
+Kappa *K
+k k
+K K
+lambda *l
+Lambda *L
+less <
+lessequal <=
+l l
+L L
+logicaland AN
+logicalnot tno
+logicalor OR
+lozenge lz
+lslash /l
+Lslash /L
+macron a-
+minus \-
+minute fm
+m m
+M M
+mu1 mc
+multiply tmu
+mu *m
+Mu *M
+# if there is "mu1" glyph in the font - comment out the following line
+mu mc
+nine 9
+n n
+N N
+notelement nm
+notequal !=
+notsubset nb
+ntilde ~n
+Ntilde ~N
+numbersign #
+numbersign sh
+nu *n
+Nu *N
+oacute 'o
+Oacute 'O
+ocircumflex ^o
+Ocircumflex ^O
+odieresis :o
+Odieresis :O
+oe oe
+OE OE
+ogonek ho
+ograve `o
+Ograve `O
+omega1 +p
+omega *w
+Omega *W
+omicron *o
+Omicron *O
+one 1
+oneeighth 18
+onehalf 12
+onequarter 14
+onesuperior S1
+o o
+O O
+ordfeminine Of
+ordmasculine Om
+oslash /o
+Oslash /O
+otilde ~o
+Otilde ~O
+overline rn
+paragraph ps
+parenleft (
+parenleftbt parenleftbt
+parenleftex parenleftex
+parenlefttp parenlefttp
+parenright )
+parenrightbt parenrightbt
+parenrightex parenrightex
+parenrighttp parenrighttp
+partialdiff pd
+percent %
+period .
+periodcentered pc
+perpendicular pp
+perthousand %0
+phi1 +f
+phi *f
+Phi *F
+pi *p
+Pi *P
+plus +
+plusminus t+-
+p p
+P P
+product product
+propersubset sb
+propersuperset sp
+proportional pt
+psi *q
+Psi *Q
+q q
+Q Q
+question ?
+questiondown r?
+quotedbl "
+quotedblbase Bq
+quotedbl dq
+quotedblleft lq
+quotedblright rq
+quoteleft `
+quoteleft oq
+quoteright '
+quoteright cq
+quotesinglbase bq
+quotesingle aq
+radicalex radicalex
+radical sqrt
+radical sr
+reflexsubset ib
+reflexsuperset ip
+registered rg
+Rfraktur Re
+rho *r
+Rho *R
+ring ao
+r r
+R R
+scaron vs
+Scaron vS
+second sd
+section sc
+semicolon ;
+seven 7
+seveneighths 78
+SF110000 br
+sigma1 ts
+sigma *s
+Sigma *S
+similar ap
+six 6
+slash /
+slash sl
+spade SP
+s s
+S S
+sterling Po
+suchthat st
+summation sum
+tau *t
+Tau *T
+therefore 3d
+therefore tf
+theta1 +h
+theta *h
+Theta *H
+thorn Tp
+Thorn TP
+three 3
+threeeighths 38
+threequarters 34
+threesuperior S3
+tilde ~
+tilde a~
+trademark tm
+t t
+T T
+two 2
+twosuperior S2
+uacute 'u
+Uacute 'U
+ucircumflex ^u
+Ucircumflex ^U
+udieresis :u
+Udieresis :U
+ugrave `u
+Ugrave `U
+underscore _
+uni03F5 +e
+uni210F -h
+uni210F hbar
+uni21D5 vA
+uni2210 coproduct
+uni2213 -+
+uni2243 |=
+uni2262 ne
+uni226A >>
+uni226B <<
+uni2285 nc
+uni25A1 sq
+uni261C lh
+union cu
+universal fa
+upsilon *u
+Upsilon *U
+u u
+U U
+v v
+V V
+weierstrass wp
+w w
+W W
+xi *c
+Xi *C
+x x
+X X
+yacute 'y
+Yacute 'Y
+ydieresis :y
+Ydieresis :Y
+yen Ye
+y y
+Y Y
+zcaron vz
+Zcaron vZ
+zero 0
+zeta *z
+Zeta *Z
+z z
+Z Z
diff --git a/font/devps/generate/zapfdr.sed b/font/devps/generate/zapfdr.sed
new file mode 100644
index 0000000..157ddff
--- /dev/null
+++ b/font/devps/generate/zapfdr.sed
@@ -0,0 +1,2 @@
+/^FontName /s/$/-Reverse/
+/^FullName /s/$/ Reverse/