summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BUG-REPORT10
-rw-r--r--CHANGES155
-rw-r--r--COPYING339
-rw-r--r--ChangeLog1013
-rw-r--r--INSTALL309
-rw-r--r--LICENSE249
-rw-r--r--Makefile438
-rw-r--r--Makefile.bd119
-rw-r--r--Makefile.ccpg19
-rw-r--r--Makefile.comm203
-rw-r--r--Makefile.cpg19
-rw-r--r--Makefile.dev2
-rw-r--r--Makefile.in360
-rw-r--r--Makefile.init25
-rw-r--r--Makefile.lib14
-rw-r--r--Makefile.man3
-rw-r--r--Makefile.sub7
-rw-r--r--PROBLEMS68
-rw-r--r--README24
-rw-r--r--README.bd15
-rw-r--r--TODO7
-rw-r--r--VERSION2
-rw-r--r--acgroff.m4325
-rw-r--r--addftinfo/Makefile.dep3
-rw-r--r--addftinfo/Makefile.sub6
-rw-r--r--addftinfo/addftinfo.cc (renamed from etc/addftinfo.c)8
-rw-r--r--addftinfo/addftinfo.man (renamed from man/addftinfo.man)2
-rw-r--r--addftinfo/guess.cc (renamed from etc/guess.c)8
-rw-r--r--addftinfo/guess.h (renamed from etc/guess.h)8
-rw-r--r--afmtodit/Makefile.sub18
-rw-r--r--afmtodit/afmtodit.man (renamed from man/afmtodit.man)28
-rw-r--r--[-rwxr-xr-x]afmtodit/afmtodit.pl (renamed from ps/devps/afmtodit)59
-rw-r--r--c++test.c13
-rw-r--r--c++test.ref2
-rwxr-xr-xconfigure891
-rw-r--r--configure.in43
-rw-r--r--devascii/DESC.proto (renamed from tty/devascii/DESC.proto)1
-rw-r--r--devascii/Makefile.sub31
-rw-r--r--devascii/R.proto (renamed from tty/devascii/R.proto)34
-rw-r--r--devdvi/B (renamed from dvi/devdvi/B)0
-rw-r--r--devdvi/BI (renamed from dvi/devdvi/BI)9
-rw-r--r--devdvi/CW (renamed from dvi/devdvi/CW)1
-rw-r--r--devdvi/DESC.in (renamed from dvi/devdvi/DESC)3
-rw-r--r--devdvi/EX (renamed from dvi/devdvi/EX)0
-rw-r--r--devdvi/H (renamed from dvi/devdvi/H)0
-rw-r--r--devdvi/HB (renamed from dvi/devdvi/HB)0
-rw-r--r--devdvi/HI (renamed from dvi/devdvi/HI)0
-rw-r--r--devdvi/I (renamed from dvi/devdvi/I)9
-rw-r--r--devdvi/MI (renamed from dvi/devdvi/MI)6
-rw-r--r--devdvi/Makefile.sub11
-rw-r--r--devdvi/R (renamed from dvi/devdvi/R)0
-rw-r--r--devdvi/S (renamed from dvi/devdvi/S)0
-rw-r--r--devdvi/SA (renamed from dvi/devdvi/SA)3
-rw-r--r--devdvi/SB (renamed from dvi/devdvi/SB)0
-rwxr-xr-xdevdvi/generate/CompileFonts (renamed from dvi/devdvi/CompileFonts)0
-rw-r--r--devdvi/generate/Makefile93
-rw-r--r--devdvi/generate/msam.map (renamed from dvi/devdvi/msam.map)2
-rw-r--r--devdvi/generate/msbm.map (renamed from dvi/devdvi/msbm.map)0
-rw-r--r--devdvi/generate/texb.map (renamed from dvi/devdvi/texb.map)0
-rw-r--r--devdvi/generate/texex.map (renamed from dvi/devdvi/texex.map)0
-rw-r--r--devdvi/generate/texi.map (renamed from dvi/devdvi/texi.map)2
-rw-r--r--devdvi/generate/texmi.map (renamed from dvi/devdvi/texmi.map)3
-rw-r--r--devdvi/generate/texr.map (renamed from dvi/devdvi/texr.map)0
-rw-r--r--devdvi/generate/texsy.map (renamed from dvi/devdvi/texsy.map)0
-rw-r--r--devdvi/generate/textt.map (renamed from dvi/devdvi/textt.map)2
-rw-r--r--devlatin1/DESC.proto (renamed from tty/devlatin1/DESC.proto)1
-rw-r--r--devlatin1/Makefile.sub32
-rw-r--r--devlatin1/R.proto (renamed from tty/devlatin1/R.proto)41
-rw-r--r--devps/AB559
-rw-r--r--devps/ABI560
-rw-r--r--devps/AI559
-rw-r--r--devps/AR558
-rw-r--r--devps/BMB (renamed from ps/devps/BMB)88
-rw-r--r--devps/BMBI (renamed from ps/devps/BMBI)94
-rw-r--r--devps/BMI (renamed from ps/devps/BMI)129
-rw-r--r--devps/BMR (renamed from ps/devps/BMR)118
-rw-r--r--devps/CB336
-rw-r--r--devps/CBI337
-rw-r--r--devps/CI337
-rw-r--r--devps/CR336
-rw-r--r--devps/DESC.in (renamed from ps/devps/DESC-A4)4
-rw-r--r--devps/HB546
-rw-r--r--devps/HBI547
-rw-r--r--devps/HI617
-rw-r--r--devps/HNB546
-rw-r--r--devps/HNBI547
-rw-r--r--devps/HNI617
-rw-r--r--devps/HNR616
-rw-r--r--devps/HR616
-rw-r--r--devps/Makefile.sub26
-rw-r--r--devps/NB (renamed from ps/devps/NB)130
-rw-r--r--devps/NBI (renamed from ps/devps/NBI)97
-rw-r--r--devps/NI (renamed from ps/devps/NI)104
-rw-r--r--devps/NR (renamed from ps/devps/NR)121
-rw-r--r--devps/PB449
-rw-r--r--devps/PBI451
-rw-r--r--devps/PI453
-rw-r--r--devps/PR456
-rw-r--r--devps/S227
-rw-r--r--devps/SS194
-rw-r--r--devps/TB533
-rw-r--r--devps/TBI515
-rw-r--r--devps/TI528
-rw-r--r--devps/TR519
-rw-r--r--devps/ZCMI477
-rw-r--r--devps/ZD193
-rw-r--r--devps/ZDR193
-rw-r--r--devps/download (renamed from ps/devps/download)0
-rw-r--r--devps/generate/Makefile224
-rwxr-xr-xdevps/generate/afmname44
-rw-r--r--devps/generate/dingbatsmap (renamed from ps/devps/dingbatsmap)0
-rw-r--r--devps/generate/dingbatsrmap (renamed from ps/devps/dingbatsrmap)0
-rw-r--r--devps/generate/lgreekmap (renamed from ps/devps/lgreekmap)3
-rw-r--r--devps/generate/symbol.sed33
-rw-r--r--devps/generate/symbolchars60
-rw-r--r--devps/generate/symbolsl.afm (renamed from ps/devps/symbolsl.afm)0
-rw-r--r--devps/generate/textmap449
-rw-r--r--devps/prologue (renamed from ps/devps/prologue)9
-rw-r--r--devps/symbol.afm215
-rw-r--r--devps/symbolmap (renamed from ps/devps/textmap)118
-rw-r--r--devps/symbolsl.ps (renamed from ps/devps/symbolsl.ps)0
-rw-r--r--devps/text.enc (renamed from ps/devps/text.enc)1
-rw-r--r--devps/zapfdr.afm222
-rw-r--r--devps/zapfdr.ps (renamed from ps/devps/zapfdr.ps)0
-rw-r--r--doc/Makefile30
-rw-r--r--doc/meintro.me2
-rw-r--r--doc/meref.me14
-rw-r--r--driver/Makefile54
-rw-r--r--dvi/Makefile81
-rw-r--r--dvi/devdvi/FontMakefile80
-rw-r--r--dvi/devdvi/Makefile39
-rw-r--r--dvi/tmac.dvi38
-rw-r--r--eqn/Makefile89
-rw-r--r--eqn/Makefile.dep31
-rw-r--r--eqn/Makefile.sub12
-rw-r--r--eqn/NOTES25
-rw-r--r--eqn/TODO2
-rw-r--r--eqn/box.cc (renamed from eqn/box.c)42
-rw-r--r--eqn/box.h8
-rw-r--r--eqn/delim.cc (renamed from eqn/delim.c)31
-rw-r--r--eqn/eqn.cc (renamed from eqn/eqn.tab.c)105
-rw-r--r--eqn/eqn.h8
-rw-r--r--eqn/eqn.man (renamed from man/geqn.man)176
-rw-r--r--eqn/eqn.y8
-rw-r--r--eqn/lex.cc (renamed from eqn/lex.c)17
-rw-r--r--eqn/limit.cc (renamed from eqn/limit.c)8
-rw-r--r--eqn/list.cc (renamed from eqn/list.c)8
-rw-r--r--eqn/main.cc (renamed from eqn/main.c)68
-rw-r--r--eqn/mark.cc (renamed from eqn/mark.c)8
-rw-r--r--eqn/other.cc (renamed from eqn/other.c)8
-rw-r--r--eqn/over.cc (renamed from eqn/over.c)8
-rw-r--r--eqn/pbox.h9
-rw-r--r--eqn/pile.cc (renamed from eqn/pile.c)14
-rw-r--r--eqn/script.cc (renamed from eqn/script.c)8
-rw-r--r--eqn/special.cc (renamed from eqn/special.c)8
-rw-r--r--eqn/sqrt.cc (renamed from eqn/sqrt.c)8
-rw-r--r--eqn/text.cc (renamed from eqn/text.c)8
-rw-r--r--eqn/y.output3225
-rw-r--r--etc/Makefile74
-rw-r--r--gcc.patch19
-rw-r--r--gendef.sh (renamed from gendef)0
-rw-r--r--grodvi/Makefile.dep2
-rw-r--r--grodvi/Makefile.sub6
-rw-r--r--grodvi/dvi.cc (renamed from dvi/dvi.c)45
-rw-r--r--grodvi/grodvi.man (renamed from man/grodvi.man)22
-rw-r--r--groff.c800
-rw-r--r--groff.sh354
-rw-r--r--groff/Makefile.dep4
-rw-r--r--groff/Makefile.sub8
-rw-r--r--groff/groff.cc579
-rw-r--r--groff/groff.man (renamed from man/groff.man)131
-rw-r--r--groff/pipeline.c240
-rw-r--r--groff/pipeline.h30
-rw-r--r--grog/Makefile.sub18
-rw-r--r--grog/grog.man (renamed from man/grog.man)10
-rw-r--r--grog/grog.pl (renamed from etc/grog.pl)13
-rw-r--r--grog/grog.sh (renamed from etc/grog.sh)6
-rw-r--r--grops/Makefile.dep6
-rw-r--r--grops/Makefile.sub7
-rw-r--r--grops/TODO (renamed from ps/TODO)4
-rw-r--r--grops/grops.man (renamed from man/grops.man)59
-rw-r--r--grops/ps.cc (renamed from ps/ps.c)113
-rw-r--r--grops/ps.h (renamed from ps/ps.h)10
-rw-r--r--grops/psrm.cc (renamed from ps/psrm.c)8
-rw-r--r--grotty/Makefile.dep2
-rw-r--r--grotty/Makefile.sub6
-rw-r--r--grotty/TODO3
-rw-r--r--grotty/grotty.man (renamed from man/grotty.man)23
-rw-r--r--grotty/tty.cc (renamed from tty/tty.c)8
-rw-r--r--include/Makefile.sub20
-rw-r--r--include/assert.h (renamed from lib/assert.h)8
-rw-r--r--include/cmap.h (renamed from lib/cmap.h)8
-rw-r--r--include/cset.h (renamed from lib/cset.h)12
-rw-r--r--include/device.h21
-rw-r--r--include/driver.h (renamed from driver/driver.h)10
-rw-r--r--include/errarg.h (renamed from lib/errarg.h)8
-rw-r--r--include/error.h (renamed from lib/error.h)8
-rw-r--r--include/font.h (renamed from lib/font.h)23
-rw-r--r--include/index.h (renamed from refer/index.h)10
-rw-r--r--include/lib.h (renamed from lib/lib.h)39
-rw-r--r--include/macropath.h21
-rw-r--r--include/posix.h49
-rw-r--r--include/printer.h (renamed from driver/printer.h)8
-rw-r--r--include/ptable.h (renamed from lib/ptable.h)21
-rw-r--r--include/refid.h (renamed from refer/refid.h)8
-rw-r--r--include/search.h (renamed from refer/search.h)8
-rw-r--r--include/searchpath.h29
-rw-r--r--include/stringclass.h (renamed from lib/stringclass.h)8
-rw-r--r--include/unix.h0
-rw-r--r--indxbib/Makefile.dep4
-rw-r--r--indxbib/Makefile.sub21
-rw-r--r--indxbib/dirnamemax.c (renamed from refer/dirnamemax.c)28
-rw-r--r--indxbib/eign (renamed from refer/eign)0
-rw-r--r--indxbib/indxbib.cc (renamed from refer/indxbib.c)26
-rw-r--r--indxbib/indxbib.man (renamed from man/gindxbib.man)26
-rw-r--r--lib/Makefile104
-rw-r--r--lib/fontfile.c131
-rw-r--r--lib/getpagesize.h25
-rw-r--r--lib/malloc.c893
-rw-r--r--libbib/Makefile.dep12
-rw-r--r--libbib/Makefile.sub4
-rw-r--r--libbib/common.cc (renamed from refer/common.c)8
-rw-r--r--libbib/index.cc (renamed from refer/index.c)78
-rw-r--r--libbib/linear.cc (renamed from refer/linear.c)12
-rw-r--r--libbib/map.c75
-rw-r--r--libbib/search.cc (renamed from refer/search.c)12
-rw-r--r--libdriver/Makefile.dep6
-rw-r--r--libdriver/Makefile.sub3
-rw-r--r--libdriver/input.cc (renamed from driver/input.c)16
-rw-r--r--libdriver/printer.cc (renamed from driver/printer.c)9
-rw-r--r--libgroff/Makefile.dep38
-rw-r--r--libgroff/Makefile.sub15
-rw-r--r--libgroff/assert.cc (renamed from lib/assert.c)8
-rw-r--r--libgroff/change_lf.cc (renamed from lib/change_lf.c)8
-rw-r--r--libgroff/cmap.cc (renamed from lib/cmap.c)8
-rw-r--r--libgroff/cset.cc (renamed from lib/cset.c)8
-rw-r--r--libgroff/device.cc36
-rw-r--r--libgroff/errarg.cc (renamed from lib/errarg.c)10
-rw-r--r--libgroff/error.cc (renamed from lib/error.c)8
-rw-r--r--libgroff/fatal.cc (renamed from lib/fatal.c)8
-rw-r--r--libgroff/filename.cc (renamed from lib/filename.c)0
-rw-r--r--libgroff/fmod.c (renamed from lib/fmod.c)8
-rw-r--r--libgroff/font.cc (renamed from lib/font.c)59
-rw-r--r--libgroff/fontfile.cc64
-rw-r--r--libgroff/getcwd.c (renamed from lib/getcwd.c)3
-rw-r--r--libgroff/iftoa.c (renamed from lib/iftoa.c)12
-rw-r--r--libgroff/illegal.cc22
-rw-r--r--libgroff/itoa.c (renamed from lib/itoa.c)12
-rw-r--r--libgroff/lf.cc (renamed from lib/lf.c)8
-rw-r--r--libgroff/lineno.cc (renamed from lib/lineno.c)0
-rw-r--r--libgroff/macropath.cc28
-rw-r--r--libgroff/matherr.c (renamed from lib/matherr.c)8
-rw-r--r--libgroff/nametoindex.cc (renamed from lib/nametoindex.c)8
-rw-r--r--libgroff/new.cc (renamed from lib/new.c)33
-rw-r--r--libgroff/prime.cc (renamed from lib/prime.c)0
-rw-r--r--libgroff/progname.cc (renamed from lib/progname.c)0
-rw-r--r--libgroff/ptable.cc (renamed from lib/ptable.c)8
-rw-r--r--libgroff/searchpath.cc117
-rw-r--r--libgroff/strerror.c (renamed from lib/strerror.c)12
-rw-r--r--libgroff/string.cc (renamed from lib/string.c)8
-rw-r--r--libgroff/strsave.cc (renamed from lib/strsave.c)8
-rw-r--r--libgroff/strtol.c (renamed from lib/strtol.c)21
-rw-r--r--libgroff/tmpfile.cc (renamed from lib/tmpfile.c)11
-rw-r--r--lkbib/Makefile.dep2
-rw-r--r--lkbib/Makefile.sub6
-rw-r--r--lkbib/lkbib.cc (renamed from refer/lkbib.c)19
-rw-r--r--lkbib/lkbib.man (renamed from man/lkbib.man)26
-rw-r--r--lookbib/Makefile.dep2
-rw-r--r--lookbib/Makefile.sub7
-rw-r--r--lookbib/lookbib.cc (renamed from refer/lookbib.c)8
-rw-r--r--lookbib/lookbib.man (renamed from man/glookbib.man)18
-rw-r--r--macros/Makefile54
-rw-r--r--man/Makefile122
-rw-r--r--man/Makefile.sub2
-rw-r--r--man/groff_char.man (renamed from doc/chars.tr)176
-rw-r--r--man/groff_font.man19
-rw-r--r--man/groff_out.man24
-rwxr-xr-xmdate.sh (renamed from man/mdate.sh)5
-rw-r--r--mm/ChangeLog31
-rw-r--r--mm/Makefile88
-rw-r--r--mm/Makefile.sub26
-rw-r--r--mm/groff_mm.man16
-rw-r--r--mm/groff_mmse.man10
-rw-r--r--mm/mm/ms.cov2
-rw-r--r--mm/tmac.m158
-rw-r--r--mm/tmac.mse5
-rw-r--r--nroff/Makefile.sub6
-rw-r--r--nroff/nroff.man58
-rwxr-xr-xnroff/nroff.sh51
-rw-r--r--pfbtops/Makefile.dep1
-rw-r--r--pfbtops/Makefile.sub5
-rw-r--r--pfbtops/pfbtops.c (renamed from ps/pfbtops.c)0
-rw-r--r--pfbtops/pfbtops.man (renamed from man/pfbtops.man)2
-rw-r--r--pic/Makefile82
-rw-r--r--pic/Makefile.dep22
-rw-r--r--pic/Makefile.sub11
-rw-r--r--pic/common.cc (renamed from pic/common.c)8
-rw-r--r--pic/common.h8
-rw-r--r--pic/depend21
-rw-r--r--pic/lex.cc (renamed from pic/lex.c)28
-rw-r--r--pic/main.cc (renamed from pic/main.c)34
-rwxr-xr-xpic/make-dos-dist3
-rw-r--r--pic/object.cc (renamed from pic/object.c)8
-rw-r--r--pic/object.h8
-rw-r--r--pic/output.h9
-rw-r--r--pic/pic.cc (renamed from pic/pic.tab.c)2236
-rw-r--r--pic/pic.h9
-rw-r--r--pic/pic.man (renamed from man/gpic.man)110
-rw-r--r--pic/pic.tab.h205
-rw-r--r--pic/pic.y30
-rw-r--r--pic/position.h8
-rw-r--r--pic/tex.cc (renamed from pic/tex.c)8
-rw-r--r--pic/troff.cc (renamed from pic/troff.c)86
-rw-r--r--pic/y.output10555
-rw-r--r--ps/Makefile115
-rw-r--r--ps/devps/AB408
-rw-r--r--ps/devps/ABI409
-rw-r--r--ps/devps/AI409
-rw-r--r--ps/devps/AR408
-rw-r--r--ps/devps/CB286
-rw-r--r--ps/devps/CBI287
-rw-r--r--ps/devps/CI287
-rw-r--r--ps/devps/CR286
-rw-r--r--ps/devps/DESC-letter11
-rw-r--r--ps/devps/FontMakefile183
-rw-r--r--ps/devps/HB410
-rw-r--r--ps/devps/HBI409
-rw-r--r--ps/devps/HI409
-rw-r--r--ps/devps/HNB410
-rw-r--r--ps/devps/HNBI409
-rw-r--r--ps/devps/HNI409
-rw-r--r--ps/devps/HNR412
-rw-r--r--ps/devps/HR412
-rw-r--r--ps/devps/Makefile66
-rw-r--r--ps/devps/PB416
-rw-r--r--ps/devps/PBI418
-rw-r--r--ps/devps/PI420
-rw-r--r--ps/devps/PR423
-rw-r--r--ps/devps/S226
-rw-r--r--ps/devps/SS194
-rw-r--r--ps/devps/TB427
-rw-r--r--ps/devps/TBI414
-rw-r--r--ps/devps/TI432
-rw-r--r--ps/devps/TR418
-rw-r--r--ps/devps/ZCMI420
-rw-r--r--ps/devps/ZD193
-rw-r--r--ps/devps/ZDR193
-rw-r--r--ps/devps/eqnchar13
-rw-r--r--ps/devps/symbol.diff65
-rw-r--r--ps/devps/symbolchars3
-rw-r--r--ps/psfig.diff106
-rw-r--r--ps/tmac.ps83
-rw-r--r--psbb/Makefile.dep1
-rw-r--r--psbb/Makefile.sub5
-rw-r--r--psbb/psbb.c (renamed from ps/psbb.c)11
-rw-r--r--psbb/psbb.man (renamed from man/psbb.man)2
-rw-r--r--refer/Makefile163
-rw-r--r--refer/Makefile.dep17
-rw-r--r--refer/Makefile.sub10
-rw-r--r--refer/TODO118
-rw-r--r--refer/command.cc (renamed from refer/command.c)8
-rw-r--r--refer/command.h8
-rw-r--r--refer/label.cc (renamed from refer/label.tab.c)106
-rw-r--r--refer/label.y21
-rw-r--r--refer/ref.cc (renamed from refer/ref.c)8
-rw-r--r--refer/ref.h8
-rw-r--r--refer/refer.cc (renamed from refer/refer.c)26
-rw-r--r--refer/refer.h12
-rw-r--r--refer/refer.man (renamed from man/grefer.man)71
-rw-r--r--refer/token.cc (renamed from refer/token.c)8
-rw-r--r--refer/token.h8
-rw-r--r--refer/y.output670
-rw-r--r--soelim/Makefile.dep2
-rw-r--r--soelim/Makefile.sub6
-rw-r--r--soelim/soelim.cc (renamed from etc/soelim.c)8
-rw-r--r--soelim/soelim.man (renamed from man/gsoelim.man)10
-rw-r--r--stringify5
-rw-r--r--tbl/Makefile64
-rw-r--r--tbl/Makefile.dep6
-rw-r--r--tbl/Makefile.sub7
-rw-r--r--tbl/TODO16
-rw-r--r--tbl/main.cc (renamed from tbl/main.c)66
-rw-r--r--tbl/table.cc (renamed from tbl/table.c)76
-rw-r--r--tbl/table.h8
-rw-r--r--tbl/tbl.man (renamed from man/gtbl.man)44
-rw-r--r--tfmtodit/Makefile.dep2
-rw-r--r--tfmtodit/Makefile.sub6
-rw-r--r--tfmtodit/tfmtodit.cc (renamed from dvi/tfmtodit.c)10
-rw-r--r--tfmtodit/tfmtodit.man (renamed from man/tfmtodit.man)12
-rw-r--r--tmac/Makefile.sub34
-rw-r--r--tmac/TODO (renamed from macros/TODO)12
-rw-r--r--tmac/doc-common (renamed from macros/doc-common)0
-rw-r--r--tmac/doc-ditroff (renamed from macros/doc-ditroff)10
-rw-r--r--tmac/doc-nroff (renamed from macros/doc-nroff)0
-rw-r--r--tmac/doc-syms (renamed from macros/doc-syms)0
-rw-r--r--tmac/eqnrc (renamed from dvi/devdvi/eqnchar)24
-rw-r--r--tmac/fixmacros.sed (renamed from macros/fixmacros.sed)0
-rw-r--r--tmac/groff_ms.man (renamed from man/groff_ms.man)13
-rw-r--r--tmac/man.local2
-rw-r--r--tmac/man.ultrix12
-rw-r--r--tmac/me.man (renamed from man/groff_me.man)19
-rw-r--r--tmac/mm.diff (renamed from macros/mm.diff)0
-rw-r--r--tmac/strip.sed2
-rw-r--r--tmac/tmac.X (renamed from xditview/tmac.X)11
-rw-r--r--tmac/tmac.Xps44
-rw-r--r--tmac/tmac.an (renamed from macros/tmac.an)26
-rw-r--r--tmac/tmac.andoc (renamed from macros/tmac.andoc)0
-rw-r--r--tmac/tmac.doc (renamed from macros/tmac.doc)0
-rw-r--r--tmac/tmac.doc.old (renamed from macros/tmac.doc.old)0
-rw-r--r--tmac/tmac.dvi132
-rw-r--r--tmac/tmac.e (renamed from macros/tmac.e)208
-rw-r--r--tmac/tmac.latin1101
-rw-r--r--tmac/tmac.pic (renamed from macros/tmac.pic)0
-rw-r--r--tmac/tmac.ps52
-rw-r--r--tmac/tmac.psatk (renamed from ps/tmac.psatk)0
-rw-r--r--tmac/tmac.psfig (renamed from ps/tmac.psfig)3
-rw-r--r--tmac/tmac.psnew26
-rw-r--r--tmac/tmac.psold60
-rw-r--r--tmac/tmac.pspic (renamed from ps/tmac.pspic)0
-rw-r--r--tmac/tmac.s (renamed from macros/tmac.s)84
-rw-r--r--tmac/tmac.tty48
-rw-r--r--tmac/tmac.tty-char196
-rw-r--r--tmac/troffrc20
-rw-r--r--troff/Makefile111
-rw-r--r--troff/Makefile.dep33
-rw-r--r--troff/Makefile.sub26
-rw-r--r--troff/TODO9
-rw-r--r--troff/charinfo.h11
-rw-r--r--troff/column.cc (renamed from troff/column.c)8
-rw-r--r--troff/dictionary.cc (renamed from troff/dictionary.c)9
-rw-r--r--troff/dictionary.h8
-rw-r--r--troff/div.cc (renamed from troff/div.c)35
-rw-r--r--troff/div.h14
-rw-r--r--troff/env.cc (renamed from troff/env.c)142
-rw-r--r--troff/env.h10
-rw-r--r--troff/hvunits.h8
-rw-r--r--troff/input.cc (renamed from troff/input.c)649
-rw-r--r--troff/node.cc (renamed from troff/node.c)37
-rw-r--r--troff/node.h8
-rw-r--r--troff/number.cc (renamed from troff/number.c)21
-rw-r--r--troff/reg.cc (renamed from troff/reg.c)8
-rw-r--r--troff/reg.h8
-rw-r--r--troff/request.h9
-rw-r--r--troff/symbol.cc (renamed from troff/symbol.c)8
-rw-r--r--troff/symbol.h8
-rw-r--r--troff/token.h35
-rw-r--r--troff/troff.h13
-rw-r--r--troff/troff.man (renamed from man/gtroff.man)200
-rw-r--r--tty/Makefile83
-rw-r--r--tty/TODO6
-rw-r--r--tty/devascii/Makefile63
-rw-r--r--tty/devlatin1/Makefile72
-rw-r--r--tty/tmac.tty40
-rw-r--r--xditview/ChangeLog80
-rw-r--r--xditview/DESC3
-rw-r--r--xditview/DviChar.c20
-rw-r--r--xditview/FontMap34
-rw-r--r--xditview/GXditview.ad20
-rw-r--r--xditview/Imakefile21
-rw-r--r--xditview/Makefile32
-rw-r--r--xditview/README2
-rw-r--r--xditview/device.c5
-rw-r--r--xditview/draw.c20
-rw-r--r--xditview/eqnchar13
-rw-r--r--xditview/gxditview.man36
-rw-r--r--xditview/path.h1
-rw-r--r--xditview/tmac.Xps5
-rw-r--r--xditview/xditview.c25
468 files changed, 40570 insertions, 20052 deletions
diff --git a/BUG-REPORT b/BUG-REPORT
index 49b019412..c5f60a5a0 100644
--- a/BUG-REPORT
+++ b/BUG-REPORT
@@ -13,16 +13,16 @@ directly to me (jjc@jclark.com). Messages sent to bug-groff can
sometimes take several days to reach me.
GROFF VERSION:
-[The version of groff you are using. For example, `1.00']
+[The version of groff you are using. For example, `1.05']
MACHINE:
-[The machine you are using. For example, `Sun 4/370']
+[The machine you are using. For example, `Sun SPARCstation 2']
OS:
-[The operating system you are using. For example, `SunOS 4.0.3']
+[The operating system you are using. For example, `SunOS 4.1.1']
COMPILER:
-[The compiler you are used to compile groff. For example, `g++ 1.37.1']
+[The compiler you are used to compile groff. For example, `g++ 1.40.3']
INPUT FILES: [Include all the files necessary to reproduce the problem
that are not part of the standard groff distribution. This includes
@@ -51,4 +51,4 @@ to make it more readable.]
SUGGESTED FIX [optional]:
[If you can suggest a fix for the problem, include a context diff
here. But don't delay sending in a bug report in the hope of finding
-a fix. Guesses about the cause of the bug are not helpful.]
+a fix. Guesses about the cause of the bug are not usually helpful.]
diff --git a/CHANGES b/CHANGES
index b17573dbb..0f8899c8e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,161 @@
This file describes recent user-visible changes in groff. Bug fixes
are not described. There are more details in the man pages.
+VERSION 1.06
+============
+
+The programs in groff that have Unix counterparts can now be installed
+without a leading `g' prefix. See the `g' variable in the Makefile.
+
+The g?nroff script simulates the nroff command using groff.
+
+New special characters \(+h, \(+f, \(+p, \(Fn, \(Bq, \(bq, \(aq, \(lz,
+\(an. See groff_char(7).
+
+^L is now a legal input character.
+
+Groff
+-----
+
+The Xps pseudo-device has disappeared. Instead there is a new -X
+option that tells groff to use gxditview instead of the usual
+postprocessor. (So instead of -TXps, use -XTps or just -X if your
+default device is ps.)
+
+The postprocessor to be used for a particular device is now specified
+by a `postpro' command in the DESC file rather than being compiled
+into groff. Similarily the command to be used for printing (with the
+-l option) is now specified by a `print' command in the DESC file.
+
+The groff command no longer specifies eqnchar as an input file for
+eqn. Instead eqn automatically loads a file `eqnrc'. The groff
+command no longer passes the -D option to eqn. Instead eqnrc sets the
+draw_lines parameter.
+
+The groff command no longer tells troff to load a device-specific
+macro file. This is handled instead by the `troffrc' file, which is
+always loaded by troff.
+
+The shell script version of groff has been removed.
+
+Troff
+-----
+
+The `rchar' request removes a character definition established with `char'.
+
+Compatibility mode is disabled and the escape character is set to `\'
+while a character definition is being processed.
+
+The `\#' escape sequence is like `\%' except that the terminating
+newline is ignored.
+
+The `shc' request tells troff which character to insert (instead of
+the default \(hy) when a word is hyphenated at a line break.
+
+A font name of 0 (zero) in the DESC file will cause no font to be
+mounted on the corresponding font position. This is useful for
+arranging that special fonts are mounted on positions on which users
+are not likely explicitly to mount fonts. All groff devices now avoid
+initially mounting fonts on positions 5-9.
+
+The `do' request allows a single request or macro to be interpreted
+with compatibility mode disabled.
+
+troff automatically loads a file `troffrc' before any other input file.
+This can be prevented with the -R option. This file is responsible
+for loading the device-specific macros.
+
+Pic
+---
+
+The -x option has been removed and a -n option has been added. By
+default, pic now assumes that the postprocessor supports groff
+extensions. The -n option tells pic to generate output that works
+with ditroff drivers. The -z option now applies only to TeX mode.
+
+The -p option has been removed. Instead if the -n option is not
+specified, pic generates output that uses \X'ps: ...' if the \n(0p
+register is non-zero and tmac.ps sets this register to 1.
+
+In places where you could 1st or 5th you can now say `i'th or `i+1'th
+(the quotes are required).
+
+Eqn
+---
+
+Eqn now automatically reads a file `eqnrc' from the macro directory.
+This performs the same role that the eqnchar files used to. This can
+be prevented by the -R option.
+
+Setting the draw_lines parameter to a non-zero value causes lines to
+be drawn using \D rather than \l. The -D option is now obsolete.
+
+`uparrow', `downarrow' and `updownarrow' can be used with `left' and
+`right'.
+
+The amount of extra space added before and after lines containing
+equations can be controlled using the `body_height' and `body_depth'
+parameters.
+
+Grops
+-----
+
+Font description files have been regenerated from newer AFM files.
+You can get access to the additional characters present in the text
+fonts in newer PostScript printers by using -mpsnew.
+
+The default value of the -b option is specified by a `broken' command
+in the DESC file.
+
+With the -g option, grops will generate PostScript code that guesses
+the page height. This allows documents to be printed on both letter
+(8.5x11) and A4 paper without change.
+
+Grodvi
+------
+
+ISO Latin-1 characters are available with -Tdvi. Format groff_char(7)
+with groff -Tdvi for more information.
+
+Grotty
+------
+
+The -mtty-char macros contain additional character definitions for
+use with grotty.
+
+Macros
+------
+
+In previous releases the groff -me macros treated the $r and $R number
+registers in a way that was incompatible with the BSD -me macros. The
+reason for this was that the approach used by the BSD -me macros does
+not work with low resolution devices such as -TX75 and -TX100.
+However, this caused problems with existing -me documents. In this
+release, the vertical spacing is controlled by the $v and $V registers
+which have the same meaning as $r and $R in earlier groff releases.
+In addition, if the $r or $R register is set to a value that would be
+correct for for the BSD -me macros and a low resolution device is not
+being used, then an appropriate value for the $v or $V register will
+be derived from the $r or $R register.
+
+The groff -me macros work with -C and (I think) with Unix troff.
+
+For backward compatibility with BSD -me, the \*{ and \*} strings are
+also available as \*[ and \*]. Of course, \*[ will only be useable
+with -C.
+
+The \*T string has been deleted. Use \*(Tm instead.
+
+Xditview
+--------
+
+The `n', Space and Return keys are bound to the Next Page action. The
+`q', BackSpace and Delete keys are bound to the Previous Page action.
+The `q' key is bound to the Quit action.
+
+The `r' key is bound to a rerasterize action that reruns groff, and
+redisplays the current page.
+
VERSION 1.05
============
diff --git a/COPYING b/COPYING
new file mode 100644
index 000000000..c712f50f0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
index 8ff48bfa8..727c01567 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1014 @@
+Tue Sep 1 18:24:53 1992 James Clark (jjc at jclark)
+
+ * Version 1.06 released.
+
+ * Integrate mm 1.04.
+
+Fri Aug 28 11:28:19 1992 James Clark (jjc at jclark)
+
+ * Makefile.comm, Makefile.ccpg, Makefile.cpg: Fix TAGS target.
+
+Thu Aug 27 11:03:33 1992 James Clark (jjc at jclark)
+
+ * afmtodit/afmtodit.pl: Add -n option that disables generation of
+ ligatures command.
+ * devps/generate/Makefile (CR, CB, CI, CBI): Pass -n flag to
+ afmtodit. Regenerate.
+
+ * tmac/tmac.e ()z): Adjust _b if necessary so as to avoid moving
+ @f back past the current position.
+
+ * tmac/tmac.e: Change calls to @R so that comments are not part of
+ arguments.
+
+Tue Aug 25 10:42:07 1992 James Clark (jjc at jclark)
+
+ * configure.in: Check for mkstemp with AC_HAVE_FUNCS.
+
+ * acgroff.m4 (GROFF_PROG_CCC): Don't check for <osfcn.h>. Instead
+ check that we can link a call to a function declared in <stdio.h>.
+ (GROFF_UNISTD_H): New macro.
+ * configure.in: Call it.
+ * Makefile.in: Document it.
+ * include/posix.h: New file.
+ * troff/troff.h: Don't include <osfcn.h>
+ * troff/input.cc: Include posix.h.
+ * libgroff/new.cc, libgroff/tmpfile.cc: Include posix.h rather than
+ osfcn.h.
+ * indxbib/indxbib.cc, libbib/{search.cc,linear.cc,index.cc}:
+ Include posix.h rather <sys/types.h>, <sys/stat.h>, <osfcn.h>,
+ <fcntl.h>.
+ * indxbib/indxbib.cc (S_IRUSR, S_IRGRP, S_IROTH): Delete definitions.
+ * libbib/index.cc (S_ISREG, O_RDONLY): Delete definitions.
+ * libbib/search.cc (O_RDONLY): Delete definition.
+ * refer/refer.cc, include/driver.h, pic/pic.h, groff/groff.cc:
+ Don't include <osfcn.h>.
+
+ * acgroff.m4 (GROFF_TIME_T): New macro.
+ * configure.in: Call it.
+ * Makefile.in: Document it.
+
+ * acgroff.m4 (GROFF_TRADITIONAL_CPP): New macro.
+ * configure.in: Call it.
+ * Makefile.in: Document -DTRADITIONAL_CPP.
+ * include/ptable.h: Don't include generic.h.
+ (name2): Define it.
+
+ * tmac/tmac.s (][): Make [T1 and [T2 aliases for [T.
+ Afterwards remove [T1 and [T2.
+ (ref*spec!0, ref*spec!2): Use T1 rather than T.
+ (ref*spec!1, ref*spec!4, ref*spec!4): Use T2 rather than T.
+ (ref*add-T2): Renamed from ref*add-T.
+ (ref*add-T1): New macro.
+
+Mon Aug 24 11:11:11 1992 James Clark (jjc at jclark)
+
+ * acgroff.m4 (AC_PROG_CCC): Use GROFF_EXIT rather than exit 1.
+
+ * libbib/index.cc: Include <fcntl.h>.
+ (O_RDONLY): Define if necessary.
+ (make_index_search_item, index_search_item_iterator::get_tag,
+ index_search_item::check_files): Use O_RDONLY.
+ * libbib/seach.cc: Include <fcntl.h>, <sys/types.h>, <sys/stat.h>.
+ (O_RDONLY): Define if necessary.
+ (search_list::add_file): Use O_RDONLY.
+ * indxbib/indxbib.cc: Include <fcntl.h>, <sys/types.h>,
+ <sys/stat.h>.
+ (S_IRUSR, S_IRGRP, S_IROTH): Define if necessary.
+ (main): Use these.
+
+ * libbib/index.cc (S_ISREG): Define it if necessary.
+ (index_search_item::load): Use S_ISREG.
+
+ * include/driver.h: Include <errno.h>.
+
+Sun Aug 23 11:32:18 1992 James Clark (jjc at jclark)
+
+ * eqn/box.cc (body_height): Increase default value to 85.
+ (body_depth): Increase default value to 35.
+
+Fri Aug 21 05:34:42 1992 James Clark (jjc at jclark)
+
+ * eqn/pbox.h (SAVE_FONT_STRING): Define it.
+ * eqn/box.cc (box::top_level): Hide use of \R in a string that is
+ protected from expansion with \E.
+
+ * acgroff.m4 (GROFF_PAGE): Use `case' to test domain.
+
+ * Makefile (Makefile): New target.
+
+ * Makefile.sub (configure, distfiles): New targets.
+
+ * acgroff.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Avoid using ${var:-val}
+ construct.
+
+Thu Aug 20 12:27:26 1992 James Clark (jjc at jclark)
+
+ * eqn/box.cc (param_table): Add body_height and body_depth.
+
+ * eqn/lex.cc (def_table): Make circumflex in hat_def roman.
+
+Tue Aug 18 16:24:25 1992 James Clark (jjc at jclark)
+
+ * psbb/Makefile.sub: Don't link with libgroff.a.
+
+ * acgroff.m4 (GROFF_PUTENV): New macro.
+ * configure.in: Call GROFF_PUTENV.
+ * Makefile.in: Document STDLIB_H_DECLARES_PUTENV.
+ * groff/groff.cc: Don't declare putenv if STDLIB_H_DECLARES_PUTENV
+ is defined.
+
+ * troff/env.cc (distribute_space): Rename force_forward argument
+ to force_reverse. Reverse the list if force_reverse is true.
+
+Mon Aug 17 17:49:05 1992 James Clark (jjc at jclark)
+
+ * tmac/tmac.an: Don't define a string `T'. Just define Tm.
+
+ * eqn/pile.cc (matrix_box::compute_metrics): Don't allow computed
+ height or depth to be negative. Guard against SUP_RAISE quantity
+ being negative.
+
+Sat Aug 15 08:18:54 1992 James Clark (jjc at jclark)
+
+ * devps/generate/textmap: Add `an' (arrowhorizex).
+ * tmac/tmac.ps: \(an overlaps horizontally.
+ * tmac/tmac.dvi, tmac/tmac.tty: Add `an'.
+
+ * devps/symbolchars: Add arrowverttp, arrowvertbt.
+ * devps/textmap: Add arrowvertex.
+ * eqn/delim.cc (delim_table): Add uparrow, downarrow and
+ updownarrow delimiters.
+ * tmac/tmac.ps, tmac/tmac.X: Add definition of \(va.
+
+ * tbl/table.cc (simple_entry::position_vertically,
+ block_entry::position_vertically): For a centered entry, perform
+ the motion in two stages.
+
+ * refer/refer.cc (split_punct): Don't call lookup_token if there
+ is no token.
+
+Fri Aug 14 11:14:58 1992 James Clark (jjc at jclark)
+
+ * troff/input.cc (token::next): Delete token_node after copying
+ token.
+
+ * grodvi/grodvi.cc (dvi_printer::dvi_printer): Initialize
+ cur_point_size.
+
+ * libdriver/printer.cc (printer::load_font): Delete old_font_table.
+
+ * grops/ps.cc (ps_printer::define_encoding): Delete elements of vec.
+
+Tue Aug 11 13:50:38 1992 James Clark (jjc at jclark)
+
+ * grops/ps.cc (usage): -b option takes an argument.
+
+ * devps/prologue (PLG): New procedure.
+ * grops/ps.cc (main, usage): New -g option.
+ (ps_printer::~ps_printer): If guess_flag is set, guess the paper
+ length using PLG.
+
+Mon Aug 10 11:17:53 1992 James Clark (jjc at jclark)
+
+ * include/cset.h: Include <limits.h> if we have it.
+
+ * libgroff/illegal.cc: New file.
+ * include/lib.h (illegal_input_char): Use table.
+ * troff/input.cc (ESCAPE_RIGHT_PARENTHESIS): Renumber to 0206.
+ * pic/lex.cc (ARG1): Renumber to 14.
+ * eqn/lex.cc (ARG1: Likewise.
+
+ * troff/Makefile.sub (majorminor.cc): Handle 3 part versions
+ (eg 1.05.90) correctly.
+
+Sun Aug 9 13:35:43 1992 James Clark (jjc at jclark)
+
+ * tmac/tmac.e (sr): Deleted. Set $r and $R directly.
+ Rename $r and $R registers to $v and $V.
+ ($r, $R): Initialize to 0.
+ (@v, @V): New macros.
+ (sz): Call @v.
+ (@M): Call @V.
+
+ * troff/input.cc (main, usage): Add -R option that says not to
+ load troffrc.
+ * eqn/main.cc (main, usage): Rename -n to -R.
+
+Sat Aug 8 00:16:00 1992 James Clark (jjc at jclark)
+
+ * devps/DESC.in: Leave font positions 5-9 blank.
+ * devdvi/DESC.in: Likewise.
+
+ * grog/grog.pl: Handle `.PS <file' correctly.
+
+ * troff/input.cc (input_stack::push): Improve error message when
+ input stack limit exceeded.
+
+Fri Aug 7 13:08:16 1992 James Clark (jjc at jclark)
+
+ * refer/refer.cc (main): Fix typo in handling of `a' option.
+
+ * refer/refer.cc (do_bib): In state START after a newline remain
+ in state START.
+
+ * groff/groff.sh: Deleted.
+ * groff/Makefile.sub: Delete handling of groff.sh.
+
+ * pic/troff.cc (troff_output::text): Test \n(0p rather than \*(.T
+ to determine whether to use \X'ps:...'.
+ * tmac/troffrc: Set 0p register to 0.
+ * tmac/tmac.ps: Set 0p register to 1.
+
+ * groff/groff.cc: Support -X option. Give warning for -TXps and
+ transform to -X -Tps. Pass troff a -r.X=1 option if -X is used.
+ * tmac/troffrc: Support -r.X=1.
+
+ * pic/troff.cc (troff_output::dot): Don't test
+ zero_length_line_flag.
+
+Thu Aug 6 13:32:08 1992 James Clark (jjc at jclark)
+
+ * include/lib.h: Declare getopt() and friends unless
+ STDLIB_H_DECLARES_GETOPT is defined.
+
+ * doc/chars.tr: Delete.
+ * man/groff_char.man: New file.
+
+Wed Aug 5 00:38:58 1992 James Clark (jjc at jclark)
+
+ * tmac/tmac.e (np, bu): Test \n($p with string expression in case
+ user has changed register format.
+
+Mon Aug 3 11:22:18 1992 James Clark (jjc at jclark)
+
+ * groff/groff.cc: Get rid of device_table. Get postprocessor from
+ `postpro' command in DESC file. Get spooler command from `print'
+ command in DESC file. Execute spooler command with /bin/sh.
+
+ * groff/groff.cc: Split Unix-specific parts into...
+ * groff/pipeline.c: New file.
+
+ * LICENSE: Delete.
+ * COPYING: New file.
+ * all files: Update copyright notices.
+
+ * Rearrange files. Redo Makefiles. Use autoconf.
+
+Sat Aug 1 09:36:50 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (charinfo_to_node_list): Interpret character
+ definition with escape_char of `\'.
+
+Tue Jul 28 12:20:12 1992 James Clark (jjc at jclark)
+
+ * lib/strerror.c, lib/iftoa.c, lib/itoa.c: Don't include lib.h.
+ Define INT_DIGITS as big enough for 64-bit integer.
+ * lib/strtol.c: Don't include lib.h.
+ * lib/lib.h: Delete ifdef __cplusplus stuff.
+
+Mon Jul 27 11:08:50 1992 James Clark (jjc at jclark)
+
+ * ps/devps/Makefile: Add DESC to DEVICEFILES. Separate out rule
+ for making DESC. Make $(FONTS) depend on DESC. afmtodit should
+ get DESC from current directory.
+
+Sun Jul 26 15:38:26 1992 James Clark (jjc at jclark)
+
+ * tbl/main.c (main): Always reset the line number when reading
+ from stdin.
+
+ * tbl/table.c (table::print_single_hline, table::print_double_hline,
+ table::define_bottom_macro, table::do_row, table::do_top): Round
+ vertical spacing up to vertical resolution.
+
+Fri Jul 24 14:32:07 1992 James Clark (jjc at jclark)
+
+ * ps/ps.h (enum resource_type): Avoid comma at end of
+ enumerator-list.
+ * dvi/dvi.c (class dvi_printer): Likewise.
+ * dvi/tfmtodit.c (gf::load): Likewise.
+ * refer/label.y (struct expression): Likewise.
+ * refer/refer.c (class label_processing_state): Likewise.
+ * refer/indxbib.c (do_file): Likewise.
+ * troff/troff.c (enum warning_type): Likewise.
+ * tbl/main.c (process_data): Likewise.
+ * troff/charinfo.h (class charinfo):
+
+Wed Jul 22 09:17:58 1992 James Clark (jjc at jclark)
+
+ * dvi/devdvi/textt.map: Add entry for `-'. Regenerate fonts.
+
+Tue Jul 21 11:39:26 1992 James Clark (jjc at jclark)
+
+ * groff.c: Move to new groff subdirectory.
+ * groff/Makefile: New file.
+ * Makefile: Remove handling of groff.c. Add groff to SUBDIRS.
+
+ * man/mdate.sh: Use ls -L if supported.
+
+ * Consolidate all header files produced by gendef into lib/defs.h.
+ * lib/macropath.c, lib/fontfile.c, lib/device.c: Include defs.h.
+ Don't include path.h.
+ * lib/Makefile (path.h): Don't generate.
+ * troff/input.c: Include defs.h. Don't include config.h.
+ * troff/Makefile (config.h): Don't generate.
+ * refer/index.h: Don't include suffix.h.
+ * refer/index.c: Include defs.h.
+ * refer/indxbib.c: Include defs.h.
+ * refer/refer.h, refer/lkbib.h: Don't include path.h. Include
+ defs.h.
+ * refer/Makefile (suffix.h, path.h): Don't generate.
+ * groff.c: Don't include config.h. Include defs.h.
+ * Makefile (config.h): Don't generate.
+ (lib/defs.h): Generate.
+ (topclean): Remove lib/defs.h.
+
+Mon Jul 20 10:12:57 1992 James Clark (jjc at jclark)
+
+ * lib/malloc.c, lib/getpagesize.h: Deleted.
+ * Makefile: Add COOKIE_BUG configuration option. Delete malloc
+ related stuff.
+ * lib/Makefile: Delete malloc-related stuff.
+ * lib/new.c: Workaround COOKIE_BUG if necessary.
+
+ * refer/lkbib.c, refer/indxbib.c: Don't include refer.h. Include
+ needed header files directly.
+ * refer/refer.h: Omit definition of DEFAULT_INDEX.
+ * Makefile: Include definition of DEFAULT_INDEX in path.h.
+
+Sun Jul 19 10:19:22 1992 James Clark (jjc at jclark)
+
+ * lib/font.c (FONT_COMMAND_HANDLER): Pass command name and single
+ argument.
+ * lib/font (font::load_desc, font::load): Don't split argument of
+ unknown command.
+ (font::handle_unknown_font_command): Change type.
+ * ps/ps.c (ps_font::handle_unknown_font_command,
+ handle_unknown_desc_command): Change type.
+ * dvi/dvi.c (dvi_font::handle_unknown_font_command): Change type.
+
+Fri Jul 17 11:12:49 1992 James Clark (jjc at jclark)
+
+ * lib/font.h (font::handle_unknown_font_command): Add file and
+ line arguments.
+ * lib/font.c (font::handle_unknown_font_command):
+ * ps/ps.c (ps_font::handle_unknown_font_command):
+ * dvi/dvi.c (dvi_font::handle_unknown_font_command): Add file and
+ lineno arguments. Use _with_file_and_line functions for error
+ reporting.
+
+ * lib/fontfile.c (font::unknown_desc_command_handler): New static
+ data member.
+ * lib/font.c (font::set_unknown_desc_command_handler): New
+ function.
+ (font::load_desc): For unknown commands, call
+ unknown_desc_command_handler if not null.
+ * lib/font.h (class font): Declare them.
+ (FONT_COMMAND_HANDLER): New typedef.
+ * ps/ps.c (handle_unknown_desc_command): New function.
+ (main): Set bflag if we had a -b option. Call
+ font::set_unknown_desc_command_handler.
+ (broken.h): Don't include.
+ * ps/Makefile: No need for broken.h. Pass BROKEN_SPOOLER_FLAGS to
+ submake
+ * ps/devps/Makefile: Add `broken' command to DESC file using
+ BROKEN_SPOOLER_FLAGS.
+
+ * macros/tmac.e ([, ]): Add as synonyms for { and }.
+
+ * macros/tmac.e ($p): Only exdent if \$3 > 0.
+
+ * macros/tmac.e (@R, @S): New macros.
+ Declare @, po, $0, $i, $p, df, so, fu, bt, *, ?a, ?b, ?C, ?e, ?H,
+ ?I, ?n, ?o, ?R, ?s, ?T, ?W, ?w registers with @R.
+ Declare $H, $[0-9], .. macros with @S.
+ Declare |0, |1, |2, |3 strings with @S.
+
+ * macros/tmac.e (@S): Rename to @U.
+
+ * macros/tmac.e (@z): Define @b and bp as empty instead of
+ deleting them,
+
+ * macros/tmac.e (@m): Deleted.
+ (@h): Don't call @m.
+ (@z): Don't set @m trap.
+
+ * macros/tmac.e ($h, $f): Define |z as empty string.
+
+ * macros/tmac.e (@D): Rework to avoid unbalanced .el requests.
+ (@q): Likewise.
+
+ * macros/tmac.e (@h): Set ?H, ?C , ?s registers to 0 rather than
+ removing them.
+ ()f): Likewise for * register.
+
+ * macros/tmac.e (sr): Don't ever scale the arguments. If the third
+ argument is missing, don't change $R. Call sr with three
+ arguments when initializing.
+
+Thu Jul 16 12:17:12 1992 James Clark (jjc at jclark)
+
+ * macros/tmac.e (sr): New macro.
+ Initialize $r and $R using sr.
+
+ * macros/tmac.e (,): Delete \*(#[.
+
+ * troff/env.c (set_tabs): Read the tab type even if the position
+ is bad. Allow the position of the first tab stop to be negative.
+
+Wed Jul 15 13:14:37 1992 James Clark (jjc at jclark)
+
+ * refer/dirnamemax.c: Use pathconf() if <unistd.h> defines
+ _POSIX_VERSION.
+ * refer/Makefile: Compile dirnamemax.c using -DHAVE_UNISTD_H
+ rather than -DPATHCONF_MISSING.
+ * Makefile: Get rid of PATHCONF_MISSING.
+
+ * refer/map.c: New file.
+ * refer/index.c: Interface to mmap through map.c. Rename map_size
+ to map_len.
+ * refer/Makefile: Handle map.c.
+ * Makefile: Include -DHAVE_MMAP in OLDCFLAGS rather than CFLAGS.
+
+Tue Jul 14 14:15:20 1992 James Clark (jjc at jclark)
+
+ * Makefile: RANLIB should be `true' if there is no ranlib.
+ * lib/Makefile (libgroff.a): Simplify.
+ * driver/Makefile (libdriver.a): Simplify.
+
+ * Makefile: Change -DWAIT_COREDUMP_0200 to -DWCOREFLAG=0200.
+ * groff.c (WCOREDUMP): Use WCOREFLAG. Define only if not already
+ defined.
+
+Sat Jul 11 09:19:17 1992 James Clark (jjc at jclark)
+
+ * troff/env.c (compare_ranges): Declare as extern "C".
+
+ * troff/input.c (init_registers): Use `struct tm' instead of `tm'.
+
+ * macros/tmac.s, macros/tmac.e: Change .nx /dev/null to .nx.
+
+Wed Jul 8 11:52:27 1992 James Clark (jjc at jclark)
+
+ * pic/troff.c (troff_output::text): Merge in grops_output::text,
+ but conditionalize use of \X based on \*(.T.
+ (grops_output::*): Deleted.
+ * pic/output.h: Delete declaration of make_grops_output.
+ * pic/main.c (main): Ignore -p and -x. driver_extension_flag is 1
+ by default. -n sets it to 0.
+ (usage): Corresponding changes.
+ * groff.c (main): Don't pass -x or -p to pic.
+ * groff.sh: Likewise.
+
+ * ps/ps.c (ps_printer::do_exec, ps_printer::do_file): Force ndefs
+ to be non-zero.
+
+ * ps/devps/afmtodit: Change calculation of asc_boundary and
+ desc_boundary. Make these bounds inclusive.
+ * ps/devps: Regenerate font files.
+
+Tue Jul 7 13:14:15 1992 James Clark (jjc at jclark)
+
+ * macros/tmac.latin1: New file.
+ * macros/tmac.tty-char: Use tmac.latin1.
+ (tmac.tty-tr): Deleted.
+ * macros/Makefile: Install tmac.latin1.
+ * macros/tmac.dvi: Use tmac.latin1.
+ * macros/troffrc: Translate \[char160] onto no-break space here.
+ * macros/{tmac.dvi,tmac.ps,tmac.tty,tmac.X75}: Don't do it here.
+
+Mon Jul 6 11:06:52 1992 James Clark (jjc at jclark)
+
+ * macros/tmac.Xps: Use `do' request.
+
+ * macros/tmac.ps: Use `do' request.
+
+ * macros/tmac.e (@C): Use `do' request.
+
+ * macros/tmac.X, macros/tmac.Xps: Moved from xditview.
+ * macros/Makefile: Install tmac.X*.
+
+ * tty/tmac.tty, tty/tmac.tty-char: Move to macros.
+ * tty/Makefile: Don't install tmac.tty*.
+ * macros/Makefile: Install tmac.tty*.
+
+ * dvi/tmac.dvi: Move to macros.
+ * dvi/Makefile: Don't install tmac.dvi.
+ * macros/Makefile: Install tmac.dvi.
+
+ * ps/tmac.ps*: Move to macros.
+ * ps/Makefile: Don't install tmac.ps*.
+ * macros/Makefile: Install tmac.ps*.
+
+ * eqn/box.c: Provide draw_lines parameter corresponding to -D
+ option.
+ * macros/eqnrc: Set draw_lines parameter based on device.
+ * groff.c: Don't pass -D flag to eqn.
+ * groff.sh: Likewise.
+ * eqn/main.c: Warn about use of -D.
+
+ * troff/input.c (process_startup_file): New function.
+ (main): Call process_startup_file().
+ * macros/troffrc: New file.
+ * macros/Makefile: Install troffrc.
+ * groff.c (main): Don't pass extra -m option to troff. For a
+ pseudo device pass the name of the pseudo device to troff using
+ -d.
+ * groff.sh: Likewise.
+ * groff.c (possible_command::prepend_arg): Deleted.
+
+ * troff/input.c (do_request): New function.
+ (init_input_requests): Bind "do" to do_request.
+
+ * eqn/main.c (main): Instead of loading eqnchar from device directory,
+ load eqnrc from macro directory.
+ * macros/eqnrc: New file.
+ * macros/Makefile: Install eqnrc.
+ * ps/devps/eqnchar: Deleted.
+ * ps/devps/Makefile: Don't install eqnchar.
+ * dvi/devdvi/eqnchar: Deleted.
+ * dvi/devdvi/Makefile: Don't install eqnchar.
+ * groff.c (main): Pass -M to eqn. Don't pass -F to eqn. New
+ variable optM.
+
+ * lib/device.[ch]: New files.
+ * lib/font.h (font::set_device_name, font::get_device_name):
+ Deleted.
+ * lib/fontfile.c: Use device.h.
+ * lib/Makefile: Handle device.[ch]. Make paths.h define DEVICE.
+ * troff/input.c: Delete definition of `device'.
+ (main): Don't initialize device.
+ * troff/troff.h: Include device.h rather than declaring device.
+ * troff/Makefile: No need to handle DEVICE.
+ * driver/input.c: Include device.h. Don't use
+ font::{set,get}_device_name.
+ * groff.c, Makefile: Rename device.h to config.h.
+ * groff.c: Use library device variable.
+ * eqn/main.c: Use library device variable.
+ * eqn/Makefile: No need to handle DEVICE.
+
+ * lib/searchpath.[ch]: New files.
+ * lib/Makefile: Handle searchpath.[ch].
+ * troff/input.c (open_file, init_dirs): Deleted.
+ (macro_dirs): Deleted.
+ (open_mac_file, macro_source): Use class search_path.
+ (add_string, struct string_list): Move definition.
+ (main): Change -M option to use macro_path. Delete call to
+ init_dirs().
+ * lib/fontfile.c (font::command_line_font_dir, font::open_file):
+ Rewrite to use class search_path.
+ * lib/font.h, lib/fontfile.c (font::cl_font_dirs): Deleted.
+ * lib/Makefile: fontfile.c depends on searchpath.h.
+ * lib/Makefile: Rename fontpath.h to paths.h. Make paths.h define
+ MACROPATH.
+ * lib/macropath.[ch]: New files.
+ * troff/Makefile: No need to handle MACROPATH.
+
+ * troff/input.c: Delete DUMP code.
+ * lib/fontfile.c, lib/font.h: Delete
+ font::forget_command_line_font_dirs.
+
+ * troff/input.c (push_token): New function.
+ (handle_first_page_transition): Use push_token().
+ (process_input_stack): Change handling of a space at the beginning
+ of the line.
+
+Sun Jul 5 17:11:09 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (font_dirs): Delete unused variable.
+
+ * eqn/lex.c (do_set): Correct error messages.
+
+Sat Jul 4 10:20:55 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (do_define_string): Allow the string name to be
+ followed immediately by a tab.
+ (define_character): Likewise.
+
+Thu Jul 2 10:59:15 1992 James Clark (jjc at jclark)
+
+ * ps/ps.c (ps_printer::draw): When drawing an arc, don't allow k to
+ be negative.
+
+ * troff/input.c (input_iterator::is_file): New virtual function.
+ (file_iterator::is_file): New function.
+ (input_stack::end_file): New function.
+ (input_stack::next_file): Handle the situation where there is no
+ file on the input stack correctly. Avoid making two passes over
+ the input stack.
+ (next_file): Make the filename optional; in this case call
+ input_stack::end_file().
+
+Wed Jul 1 10:17:25 1992 James Clark (jjc at jclark)
+
+ * dvi/tmac.dvi: Change the definitions of \(ul and _ so that they
+ produce a real _ charater when the current font is CW and _
+ otherwise.
+
+ * lib/errarg.c (errarg::errarg(const char *)): Invert conditional
+ expression to work around gcc 2.2 bug.
+
+Wed Jun 24 08:12:24 1992 James Clark (jjc at jclark)
+
+ * eqn/main.c (main): Don't give an error if we can't find eqnchar.
+
+ * troff/env.c (environment::add_padding): New function.
+ (environment::add_char): Use add_padding().
+ (environment::space): Likewise.
+ (environment::wrap_up_field): Add some padding if there is none
+ and there's no current tab.
+ * troff/env.h: Declare environment::add_padding.
+
+Mon Jun 22 08:37:45 1992 James Clark (jjc@jclark)
+
+ * pic/pic.y: undef fmod and rand before declaring them.
+
+Sun Jun 14 11:40:18 1992 James Clark (jjc@jclark)
+
+ * troff/input.c (main): If the DESC file specifies a font name of
+ 0, then leave the corresponding font position empty.
+
+ * nroff.sh: New file.
+ * Makefile (install.nobin): Install nroff.sh.
+
+ * tty/devlatin1/R.proto: Add ao as synonym for de.
+ * tty/tmac.tty-char: Define ao as o.
+
+ * tty/dev{ascii,latin1}/R.proto: Add aq.
+ * tty/tmac.tty-char: Delete definition of aq.
+
+Mon Jun 8 11:43:20 1992 James Clark (jjc@jclark)
+
+ * troff/input.c (init_charset_table): Don't translate 0240.
+ * ps/tmac.ps: Translate char160 to space.
+ * dvi/tmac.dvi: Likewise.
+ * tty/tmac.tty: Likewise.
+
+Sun Jun 7 10:52:35 1992 James Clark (jjc@jclark)
+
+ * dvi/tmac.dvi: Add support for all Latin-1 characters.
+
+ * macros/tmac.s: Delete definitions of \(rg, \(ah, \(ad, \(a-,
+ \(ao, \(ac, \(ho, \(-D, \(Sd, \(TP, \(Tp, \(ss, \(AE, \(ae, \(OE,
+ \(oe, \(r?, \(r!.
+
+ * tty/tmac.tty-char: Add \(ah.
+
+ * dvi/tmac.dvi: Add definitions of Tp, TP, Sd, -D, ho.
+ No need to define \(FM and \(!/. Conditionalize all character
+ definitions.
+
+ * ps/devps/lgreekmap: Add +h, +f, +p.
+
+ * ps/tmac.psnew: New file.
+ * ps/Makefile: Install tmac.psnew.
+
+ * troff/input.c (charinfo_to_node_list): Don't ever interpret
+ character definitions in compatible mode.
+
+ * troff/input.c (remove_character): New function.
+ (init_input_requests): Bind remove_character to "rchar".
+
+ * ps/tmac.psold: New file.
+ * ps/Makefile: Install tmac.psold.
+ * ps/tmac.ps: Load tmac.psold. Move definitions of ISO Latin-1
+ characters into tmac.psold. Make these definitions unconditional.
+
+ * tty/tmac.tty-char: Define \n(_C only if it is not already defined.
+
+ * ps/tmac.ps: Don't define \('c and \('C.
+
+ * ps/devps/textmap: Move Greek characters to...
+ * ps/devps/symbolchars:
+
+Sat Jun 6 16:41:17 1992 James Clark (jjc@jclark)
+
+ * ps/devps/text.enc: Add quotesingle.
+ * ps/devps/textmap: Add +h, +f, +p, Fn, Bq, bq, aq, lz.
+ * tty/tmac.tty-char: Likewise.
+ * dvi/devdvi/texmi.map: Add +h, +f, +p.
+ * dvi/devdvi/texi.map: Add Fn.
+ * dvi/devdvi/msam.map: Add lz.
+ * dvi/tmac.dvi: Handle Bq, bq, aq.
+
+ * pic/lex.c (get_token): Recognize 'th.
+ * pic/map.y: Allow `expr'th in contexts where ORDINAL was allowed.
+
+Fri Jun 5 11:20:46 1992 James Clark (jjc@jclark)
+
+ * ps/devps/textmap: Move di, mu, +- to...
+ * ps/devps/symbolchars:
+
+ * macros/tmac.s (@XS): Don't call par@reset or fi.
+ (XA): Call LP. Turn off adjustment. Reduce line length.
+
+ * macros/tmac.s: Initially alias XS to LP.
+ (XS): Rename to @XS.
+ (cov*ab-init): Alias XS to @XS.
+
+Thu Jun 4 09:12:05 1992 James Clark (jjc@jclark)
+
+ * troff/token.h: Delete TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT,
+ TOKEN_FONT_NAME, TOKEN_FONT_POSITION, TOKEN_SIZE tokens.
+ (token::is_size, token::changes_env): Deleted.
+ * troff/number.c (parse_term): No need to process \s explicitly.
+ Call tok.next() only after scale indicator has been processed.
+ * troff/input.c (do_overstrike, do_bracket): No need to process \s,
+ \f etc explicitly.
+ (token::next): Handle \s, \f, \S, \H immediately rather than
+ returning them as tokens.
+ (token::operator==, token::description, token::add_to_node_list,
+ token::process): Remove handling of deleted tokens.
+
+ * troff/env.c (environment::add_char): When adding padding
+ indicator character, call start_line() if necessary.
+
+Wed Jun 3 09:55:50 1992 James Clark (jjc@jclark)
+
+ * ps/devps/afmtodit: Don't output 0 kerns.
+
+ * ps/devps/afmtodit: Remove directory from name of encoding in
+ font description file.
+
+ * ps/devps/afmtodit: Improve error messages.
+
+ * ps/devps/afmtodit: Allow DESC file to be specified with -d.
+
+ * ps/devps/Makefile: Incorporate FontMakefile. Rework.
+ * ps/devps/FontMakefile: Deleted.
+ * ps/devps/afmname: New file.
+
+ * ps/devps/symbol.sed: New file.
+ * ps/devps/symbol.diff: Deleted.
+ * ps/devps/FontMakefile: Generate symbol.afm using symbol.sed.
+ Generate zapfdr.afm from zapfd.afm.
+
+ * tty/tmac.tty (tty-char): Prefix definition with ".
+
+ * macros/tmac.an (TP): Don't start a diversion if one has already
+ been started.
+
+ * tty/tmac.tty-char: Add Latin-1 characters.
+
+ * tty/tmac.tty-char: Incorporate suggestions from Paul Eggert.
+
+Tue Jun 2 00:54:34 1992 James Clark (jjc@jclark)
+
+ * tbl/table.c (table::allocate): Delete old_vline, old_entry.
+ Move declaration of struct horizontal_span.
+
+ * tbl/table.c (table::table): Initialize span_list.
+ (table::~table): Delete span_list.
+
+ * lib/ptable.h (PTABLE(T)::~PTABLE(T)): Delete v.
+
+ * ps/devps/Makefile: Avoid dependency on GNU make.
+
+ * ps/tmac.ps: Check that character does not already exist before
+ defining it.
+
+ * tty/tmac.tty: Add definitions of \(ff, \(!=, \(==, \(~=, \(sq,
+ \(OE, \(oe, \(AE, \(ae, \(lh, \(rh. Delete definitions of \(en,
+ \(ru, \(ul, \(br, \(bv, \(sl which are in the font description
+ files.
+
+ * tty/tmac.tty-char: New file.
+ * tty/Makefile: Install tmac.tty-char.
+ * tty/tmac.tty: Move definitions of \(ua, \(da, \(uA, \(dA into
+ tmac.tty-char.
+
+ * tty/tmac.tty: Fix definition of \(34.
+
+ * tty/dev{ascii,latin1}/R.proto: Add ha and ti. Map
+ bracket-drawing characters onto |. Add *o.
+
+ * troff/env.c (environment::wrap_up_tab): Increment field_spaces
+ only if current_field.
+
+ * troff/dictionary.c (dictionary::lookup): Free old_table after
+ rehashing.
+
+Mon Jun 1 10:15:22 1992 James Clark (jjc@jclark)
+
+ * tty/dev{ascii,latin1}/R.proto: Add uppercase Greek characters
+ whose glyphs are identical to glyphs of some Roman character.
+
+ * tty/devlatin1/R.proto (bu): Deleted.
+ * tty/devascii/R.proto (bu): Deleted.
+ * tty/tmac.tty: Add definition of \(bu.
+
+ * eqn/main.c (do_file): Pass FILE as argument.
+ (main): Automatically load eqnchar. New options -F and -n.
+ Pass do_file an opened FILE.
+ * groff.c: Don't pass eqnchar to eqn. Pass -F options onto eqn.
+ No need to include font.h.
+ * groff.sh: Likewise. Don't need to use - for standard input.
+ Prefix files with -- if first file starts with -.
+
+ * macros/tmac.e: Conditionalize use of \$* on \n(.g.
+
+ * troff/env.c (environment::possibly_break_line): Don't set line
+ to 0 across call to output_line(). Don't call output_line() until
+ after discarding nodes after break.
+
+Sun May 31 10:45:29 1992 James Clark (jjc@jclark)
+
+ * request.h (macro::empty): Declare it.
+ * input.c (macro::empty): New method.
+ (interpolate_macro): Don't give a WARN_SPACE if the two-character
+ macro is empty.
+
+Sat May 30 10:27:15 1992 James Clark (jjc@jclark)
+
+ * troff/env.c (environment::start_field): Decrement space_total
+ when a space is frozen.
+
+Fri May 22 14:34:38 1992 James Clark (jjc@jclark)
+
+ * macros/tmac.an (R): Delete macro.
+
+ * troff/input.c (get_copy, token::next): Support \# (like \" but
+ newline is ignored).
+
+ * troff/input.c (token::next): Fix error message in 'Y' case.
+
+Thu May 21 09:26:24 1992 James Clark (jjc@jclark)
+
+ * eqn/delim.c (define_extensible_string): Recognize any prefix of
+ a delimiter name.
+
+Fri May 15 10:20:41 1992 James Clark (jjc at jclark)
+
+ * c++test.c: Include <osfcn.h>.
+
+ * lib/strtol.c, lib/getcwd.c, ps/psbb.c: Declare errno in case
+ <errno.h> doesn't.
+
+Fri May 8 09:37:19 1992 James Clark (jjc at jclark)
+
+ * tbl/table.c (table::divide_span): Don't count column separation
+ if expand was specified.
+
+ * tbl/main.c (process_format): Don't ignore width specs in
+ continued format. Give warning for changing equal widths or
+ column separation in continued format.
+ (process_data): Set column separation, minimum width, equal
+ columns at end of table.
+
+Thu May 7 08:50:40 1992 James Clark (jjc at jclark)
+
+ * troff/node.c (kern_pair_node::add_discretionary_hyphen,
+ node::add_discretionary_hyphen): Use soft_hyphen_char.
+ (set_soft_hyphen_char): New function.
+ (init_node_requests): Bind to shc. Initialize soft_hyphen_char.
+
+ * Makefile (c++tested): Give more helpful message if test fails.
+
+Tue May 5 10:58:39 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (init_charset_table): Translate 0240 to
+ an unbreakable space.
+
+ * troff/token.h (token::hyphen_indicator): New function.
+ * troff/charinfo.h (TRANSLATE_HYPHEN_INDICATOR): New special
+ translation.
+ * troff/input.c (translate): Allow translation to \%.
+ * troff/node.c (node::add_char): Handle
+ TRANSLATE_HYPHEN_INDICATOR.
+ (make_node): Don't allow TRANSLATE_HYPHEN_INDICATOR here.
+
+ * troff/input.c (init_charset_table): Don't set BREAK_AFTER flag
+ for \(hy.
+
+ * tty/devlatin1/R.proto: \(hy and - should print as 055.
+
+Tue Apr 21 09:24:42 1992 James Clark (jjc at jclark)
+
+ * groff.c (run_commands): If the last command gets a SIGPIPE send
+ a SIGPIPE to all children than haven't yet terminated. When
+ command terminates, set pid field to -1.
+
+Fri Apr 17 11:20:48 1992 James Clark (jjc at jclark)
+
+ * groff.c (main): Pass an appropriate -filename option to gxditview.
+
+Thu Apr 16 15:11:40 1992 James Clark (jjc at jclark)
+
+ * Makefile.bd (install): Remove existing program before copying.
+
+ * Makefile, */Makefile, Makefile.bd, groff.sh, groff.c: Allow
+ programs which have Unix counterparts to be installed with
+ user-specified prefix.
+
+ * troff/input.c (exit_troff): Don't check if exit_started.
+ (exit_request): Don't call exit_troff if exit_started.
+
+ * Makefile.bd (install.mm): Rename to install.dwbmm.
+
+Tue Apr 14 10:05:10 1992 James Clark (jjc at jclark)
+
+ * driver/input.c (do_file): Add missing break for '#' case.
+
+Mon Apr 13 10:11:02 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (input_stack::clear): Clear past any boundaries and
+ then add the boundaries back.
+
+ * troff/input.c (exit_troff): Return immediately if already
+ exiting.
+
+ * macros/tmac.s (pg@end-text): New macro. Use pg@end-text for the
+ end macro.
+ (pg*end-page): If the text has ended and there are no more
+ footnotes or keeps, exit.
+
+ * macros/doc-ditroff (Lq, Rq): Define as \(lq and \(rq.
+
+ * troff/input.c (init_charset_table): Make \(rq transparent by
+ default.
+
+ * macros/tmac.an: Define lq and rq strings.
+
+ * macros/tmac.s (Q, U): Define as \(lq and \(rq.
+
+Sun Apr 12 12:54:37 1992 James Clark (jjc at jclark)
+
+ * troff/env.c (environment::final_break): New function.
+ (environment::newline): Set prev_line_interrupted to 2 if
+ exit_started.
+ * troff/env.h: Declare environment::final_break.
+ * troff/input.c (exit_troff): Call environment::final_break()
+ instead of environment::do_break().
+
+ * macros/Makefile: Install man.local if $(MACRODIR)/man.local
+ doesn't already exist.
+ * macros/man.local: New file.
+ * macros/tmac.an: Load man.local.
+ * macros/man.ultrix: New file.
+
+Sat Apr 11 17:32:04 1992 James Clark (jjc at jclark)
+
+ * troff/input.c (exit_groff): Rename to...
+ (exit_troff): New function.
+
+ * troff/div.c (exit_started, done_end_macro,
+ seen_last_page_ejector): New global variables.
+ (began_page_in_end_macro): New static variable.
+ (exit_flag): Deleted.
+ (top_level_diversion::top_level_diversion): Initialize
+ last_page_count.
+ (top_level_diversion): More elaborate test for whether
+ cleanup_and_exit() should be called.
+ Set began_page_in_end_macro if the end macro isn't yet finished.
+ * troff/div.h (top_level_diversion::last_page_count): New data
+ member.
+ (top_level_diversion::set_last_page): New function.
+ (exit_started, done_end_macro, seen_last_page_ejector): Declare.
+ * troff/env.c (do_break): Zero prev_line_interrupted.
+ * troff/input.c (exit_flag): Delete declaration.
+ (LAST_PAGE_EJECTOR): New magic cookie.
+ (token::next): Handle LAST_PAGE_EJECTOR.
+ (exit_groff): Set exit_started and done_end_macro instead of
+ exit_flag. Call top_level_diversion::set_last_page. Push a
+ LAST_PAGE_EJECTOR instead of calling push_page_ejector(). Do
+ another ejection after setting seen_last_page_ejector.
+
+Thu Apr 9 04:37:11 1992 James Clark (jjc at jclark)
+
+ * etc/grog.sh, etc/grog.sh: Recognize -me sh macro.
+
+ * macros/tmac.e (TH): Make sure there's room for the initial
+ header.
+
+ * macros/tmac.s (par@init): Make PD and DD at least \n(.V.
+ Set FVS in points rather than units.
+
+Mon Apr 6 11:21:32 1992 James Clark (jjc at jclark)
+
+ * troff/div.c (top_level_diversion::add_trap): Don't consider the
+ position of empty slots.
+
+Fri Apr 3 10:46:45 1992 James Clark (jjc at jclark)
+
+ * ps/devps/S: Fix height and depth of parenrightex.
+ * ps/devps/symbol.diff: Regenerate.
+
+Sat Mar 28 21:17:52 1992 James Clark (jjc at jclark)
+
+ * tmac.e (u): Do underlining as in -mgs.
+
+Fri Mar 27 09:23:44 1992 James Clark (jjc at jclark)
+
+ * tty/tty.c (tty_printer::end_page): If overstriking is
+ suppressed, still turn overstruck horizontal and vertical lines
+ into +.
+
+ * lib/new.c: Back out Feb 24 change; no longer needed with gcc
+ 2.1.
+
+ * refer/label.y (format_expr::evaluate): Avoid use of %0*d.
+
Wed Mar 18 09:29:10 1992 James Clark (jjc at jclark)
* Version 1.05 released.
@@ -162,7 +1173,7 @@ Sat Feb 15 09:55:20 1992 James Clark (jjc at jclark)
plain version of the tfont if the environment is composite.
* troff/node.c (font_info::get_space_width): Additional argument
- giving space_size. Handle constance space correctly. Scale by
+ giving space_size. Handle constant space correctly. Scale by
space_size unless constant spaced.
(env_sentence_space_width): New function.
* troff/node.h: Declare it.
diff --git a/INSTALL b/INSTALL
index 7f740367d..85aea2d93 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,196 +1,113 @@
-If you are using g++, you will need to install the header files from
-the appropriate version of libg++. With g++ version 1.x, you will
-also need a libg++.a that contains at least xyzzy.o (if you're using
-GNU ld) and gnulib3.o. With gcc/g++ version 2.0, you don't need
-libg++.a at all.
-
-If you're using gcc/g++ version 2.0, you'll need the following patch:
-
-*** cp-parse.y.~1~ Sat Feb 22 08:35:51 1992
---- cp-parse.y Sun Mar 1 15:20:10 1992
-***************
-*** 1075,1081 ****
- }
- $$ = build_delete (type, expr, integer_three_node,
- LOOKUP_NORMAL|LOOKUP_HAS_IN_CHARGE,
-! TYPE_HAS_DESTRUCTOR (TREE_TYPE (type)) ? $$ : 0, 1);
- }
- | delete '[' ']' cast_expr %prec UNARY
- {
---- 1075,1081 ----
- }
- $$ = build_delete (type, expr, integer_three_node,
- LOOKUP_NORMAL|LOOKUP_HAS_IN_CHARGE,
-! TYPE_HAS_DESTRUCTOR (TREE_TYPE (type)) ? $$ : 0, 0);
- }
- | delete '[' ']' cast_expr %prec UNARY
- {
-
-
-On a Sun 3 and other 68k machines, using libg++ 1.37.0 you will need
-to apply the following change to g++-include/math.h:
-
-*** math.h- Sat Jan 6 14:09:52 1990
---- math.h Tue Mar 13 02:07:01 1990
-***************
-*** 32,39 ****
-
-
- #ifdef __HAVE_68881__ /* MC68881/2 Floating-Point Coprocessor */
-- #include <math-68881.h>
- extern "C" { /* fill in what we've left out */
-
- double acosh(double);
- double asinh(double);
---- 32,39 ----
-
-
- #ifdef __HAVE_68881__ /* MC68881/2 Floating-Point Coprocessor */
- extern "C" { /* fill in what we've left out */
-+ #include <math-68881.h>
-
- double acosh(double);
- double asinh(double);
-
-If you have bison 1.11, you will need to apply the following fix to
-bison.simple if you want change any of the grammars:
-
-*** bison.simple.~1~ Fri Aug 10 12:13:41 1990
---- bison.simple Fri Aug 10 12:24:46 1990
-***************
-*** 20,26 ****
---- 20,28 ----
-
-
- #ifdef __GNUC__
-+ #ifndef alloca
- #define alloca __builtin_alloca
-+ #endif /* Not alloca. */
- #else /* Not GNU C. */
- #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
- #include <alloca.h>
-***************
-*** 114,123 ****
---- 116,129 ----
- /* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
- static void
-+ #ifdef __cplusplus
-+ __yy_bcopy (char *from, char *to, int count)
-+ #else
- __yy_bcopy (from, to, count)
- char *from;
- char *to;
- int count;
-+ #endif
- {
- register char *f = from;
- register char *t = to;
-***************
-*** 127,133 ****
- *t++ = *f++;
- }
-
-! #line 131 "/usr/local/lib/bison.simple"
- int
- yyparse()
- {
---- 133,139 ----
- *t++ = *f++;
- }
-
-! #line 137 "/usr/local/lib/bison.simple"
- int
- yyparse()
- {
-
-On a Sequent Symmetry S27 running Dynix 3.0.17, you'll need to use GNU
-make or add 'MAKE=make' to Makefiles which use $(MAKE). You'll also
-need to change
-
- dev=${GROFF_TYPESETTER:-@DEVICE@}
-
-to
-
- dev=$GROFF_TYPESETTER
-
-in groff.sh. You should use gcc to compile xditview.
-
-You should only have to edit the top-level Makefile. The comments
-should make it clear what has to be changed. If you don't have a
-separate directory tree for local manual pages you can make
-MAN[157]EXT be l (that's an ell) or n, and MANROOT be /usr/man. The
-changes you make to the top-level Makefile will be propagated to
-sub-makes, but this won't happen if you invoke make in the
-sub-directories.
-
-You might also need to edit groff.sh. This is a shell-script that
-runs gtroff, an appropriate postprocessor and optionally various
-preprocessors. (Actually, the shell-script is created from groff.sh
-by substituting for some variables surrounded by @s). If your kernel
-doesn't understand #!, you will need to arrange for the script to be
-run by /bin/sh in some other way.
-
-If you want to use existing troff drivers you should change groff.sh
-so that it recognises them. It is also a good idea to copy over the
-dev* directory for the device into a directory that's only searched by
-groff (eg /usr/local/lib/groff/font), so that you can take advantage
-of the groff extensions to the DESC and font formats. Groff only uses
-the ASCII versions of the device files so you only need copy them. If
-you want to use GNU eqn, it is essential that the font files contain
-correct height and depth information. The format for this information
-is described in the groff_font(5) page. The best way to add this
-information is to modify the program that generates the font files.
-As a last resort you could try using the program addftinfo: it
-attempts to guess plausible heights and depths. To obtain good
-results you would probably have to do more work on addftinfo.
-
-To compile everything, just do a `make'. If that works, then do a
-`make install'.
-
-If you have problems compiling pic/pic.tab.c or eqn/eqn.tab.c, you might
-want to try using your system's yacc. Set YACC=yacc in the top-level
-Makefile, and also do
-
- mv pic/pic.tab.c pic/pic.tab.c.dist
- mv eqn/eqn.tab.c eqn/eqn.tab.c.dist
-
-so that the parsers will be regenerated using yacc (the supplied
-*.tab.[ch] files were generated by bison.)
-
-If you want to install xditview, you'll need to do that separately.
-Follow the instructions in xditview/INSTALL.
-
-The dvi files produced by grodvi can use fonts at non-standard
-magnifications. You may need to compile fonts with Metafont at these
-magnifications. The CompileFonts script in the dvi/devdvi directory
-may help you to do this. (It will take a *long* time.)
-
-If you have problems printing existing troff documents, read the
-section on `Incompatibilities' in gtroff(1). If you have existing
-macro packages that are in the habit of omitting the space between a
-macro or request and its arguments, it is good idea to produce a
-version with spaces so that you can use it with groff (without having
-to use the -C flag). The file macros/fixmacros.sed is a sed script
-which will attempt to edit a file of macros so that it can be used
-with groff without the -C flag.
-
-If you have the DWB 2.0 mm macros installed on your machine, you might
-want to do a `make install.dwbmm'; this will copy the mm macros to
-groff's macro directory and fix a few problems that occur when using
-the DWB mm macros with groff; this requires the `patch' program. If
-the patch in macros/mm.diff is rejected, carefully apply it by hand.
-If you do this make sure that TMAC_M=gm in the Makefile, so that the
-groff mm macros are installed as -mgm.
-
-You can share groff with a friend who has the same type of machine as
-you, but does not have a C++ compiler. First do `make bindist'; this
-will create a subdirectory `bindist' containing a set of binaries, a
-Makefile and a README. If you want to strip the binaries, now do a
-`make strip' in the bindist directory. Rename the bindist directory
-to something more meaningful, tar it up, and give to your friend along
-with the original groff source distribution. Your friend can then
-install groff just by editing the Makefile in the bindist directory
-and doing a make there; this will automatically install the non-binary
-parts of the groff source distribution as well as the binaries from
-the bindist directory.
+1. Get a C++ compiler. The C++ source files use a suffix of `.cc', so
+your C++ compiler must be able to handle this. If you don't already
+have a C++ compiler, I suggest the latest release of either g++
+version 1 or gcc/g++ version 2. (g++ version 2 is included in gcc
+version 2). If you are using g++, you will also need to install the
+corresponding version of libg++, unless your system header files
+provide C++ support. If you're using gcc/g++ version 2.[012], I
+recommend you apply the patch in the file gcc.patch. (If you don't,
+configure will detect this and work around the bug, but this will make
+groff use significantly more memory.)
+
+2. In the directory that this file is in, type `./configure'. If
+you're using `csh' on an old version of System V, you might need to
+type `sh configure' instead to prevent `csh' from trying to execute
+`configure' itself.
+
+The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation, and
+creates the Makefile. It also creates a file `config.status' that you
+can run in the future to recreate the current configuration.
+
+Running `configure' takes a minute or two. While it is running, it
+prints some messages that tell what it is doing. It also performs
+some checks on your C++ compiler. If these checks fail, it will print
+a message and exit. In this case, you should correct the problems
+with your C++ compiler and then rerun configure.
+
+To compile the package in a different directory from the one
+containing the source code, you must use GNU make. `cd' to the
+directory where you want the object files and executables to go and
+run `configure' with the option `--srcdir=DIR', where DIR is the
+directory that contains the source code. Using this option is
+actually unnecessary if the source code is in the parent directory of
+the one in which you are compiling; `configure' automatically checks
+for the source code in `..' if it does not find it in the current
+directory.
+
+By default, `make install' will install the package's files in
+/usr/local/bin, /usr/local/lib/groff, and /usr/local/man. You can
+specify an installation prefix other than /usr/local by giving
+`configure' the option `--prefix=PATH'. Alternately, you can do so by
+changing the `prefix' variable in the Makefile that `configure'
+creates.
+
+You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If
+you give `configure' the option `--exec_prefix=PATH', the package will
+use PATH as the prefix for installing programs and libraries. Data
+files and documentation will still use the regular prefix. Normally,
+all files are installed using the regular prefix.
+
+You can tell `configure' to figure out the configuration for your
+system, and record it in `config.status', without actually configuring
+the package (creating `Makefile's and perhaps a configuration header
+file). To do this, give `configure' the `--no-create' option. Later,
+you can run `./config.status' to actually configure the package. This
+option is useful mainly in `Makefile' rules for updating `config.status'
+and `Makefile'. You can also give `config.status' the `--recheck'
+option, which makes it re-run `configure' with the same arguments you
+used before. This is useful if you change `configure'.
+
+`configure' ignores any other arguments that you give it.
+
+If your system requires unusual options for compilation or linking
+that `configure' doesn't know about, you can give `configure' initial
+values for some variables by setting them in the environment. In
+Bourne-compatible shells, you can do that on the command line like
+this:
+ CC='gcc -traditional' DEFS=-D_POSIX_SOURCE ./configure
+
+The `make' variables that you might want to override with environment
+variables when running `configure' are:
+
+(For these variables, any value given in the environment overrides the
+value that `configure' would choose:)
+CC C compiler program.
+ Default is `cc', or `gcc' if `gcc' is in your PATH.
+CCC C++ compiler program (for .cc files).
+ By default, configure will look for gcc version 2, g++,
+ and then CC.
+INSTALL Program to use to install files.
+ Default is `install' if you have it, `cp' otherwise.
+PAGE This should be `A4' if your PostScript printer uses
+ A4 paper and `letter' if your printer uses 8.5x11in
+ paper.
+
+(For these variables, any value given in the environment is added to
+the value that `configure' chooses:)
+DEFS Configuration options, in the form `-Dfoo -Dbar ...'
+LIBS Libraries to link with, in the form `-lfoo -lbar ...'
+CCLIBS Libraries to link C++ programs with, in the same form.
+
+
+If you need to do unusual things to compile the package, we encourage
+you to figure out how `configure' could check whether to do them, and
+mail diffs or instructions to the address given in the README so we
+can include them in the next release.
+
+3. Have a look at the generated Makefile. The options you are most
+likely to want to change are near the beginning. Make sure that the
+definition of PAGE is correct.
+
+4. Type `make'.
+
+5. Type `make install'.
+
+6. If you want to install gxditview (an X11 previewer), follow the
+instructions in the INSTALL file in the xditview directory.
+
+7. Try groff out on one of the man pages, eg troff/troff.n.
+
+If you have problems, read the PROBLEMS file. If this doesn't help
+send a bug report using the form in the file BUG-REPORT.
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 9a1703758..000000000
--- a/LICENSE
+++ /dev/null
@@ -1,249 +0,0 @@
-
- GNU GENERAL PUBLIC LICENSE
- Version 1, February 1989
-
- Copyright (C) 1989 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The license agreements of most software companies try to keep users
-at the mercy of those companies. By contrast, our General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. The
-General Public License applies to the Free Software Foundation's
-software and to any other program whose authors commit to using it.
-You can use it for your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Specifically, the General Public License is designed to make
-sure that you have the freedom to give away or sell copies of free
-software, that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free
-programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of a such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must tell them their rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any program or other work which
-contains a notice placed by the copyright holder saying it may be
-distributed under the terms of this General Public License. The
-"Program", below, refers to any such program or work, and a "work based
-on the Program" means either the Program or any work containing the
-Program or a portion of it, either verbatim or with modifications. Each
-licensee is addressed as "you".
-
- 1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this
-General Public License and to the absence of any warranty; and give any
-other recipients of the Program a copy of this General Public License
-along with the Program. You may charge a fee for the physical act of
-transferring a copy.
-
- 2. You may modify your copy or copies of the Program or any portion of
-it, and copy and distribute such modifications under the terms of Paragraph
-1 above, provided that you also do the following:
-
- a) cause the modified files to carry prominent notices stating that
- you changed the files and the date of any change; and
-
- b) cause the whole of any work that you distribute or publish, that
- in whole or in part contains the Program or any part thereof, either
- with or without modifications, to be licensed at no charge to all
- third parties under the terms of this General Public License (except
- that you may choose to grant warranty protection to some or all
- third parties, at your option).
-
- c) If the modified program normally reads commands interactively when
- run, you must cause it, when started running for such interactive use
- in the simplest and most usual way, to print or display an
- announcement including an appropriate copyright notice and a notice
- that there is no warranty (or else, saying that you provide a
- warranty) and that users may redistribute the program under these
- conditions, and telling the user how to view a copy of this General
- Public License.
-
- d) You may charge a fee for the physical act of transferring a
- copy, and you may at your option offer warranty protection in
- exchange for a fee.
-
-Mere aggregation of another independent work with the Program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other work under the scope of these terms.
-
- 3. You may copy and distribute the Program (or a portion or derivative of
-it, under Paragraph 2) in object code or executable form under the terms of
-Paragraphs 1 and 2 above provided that you also do one of the following:
-
- a) accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- b) accompany it with a written offer, valid for at least three
- years, to give any third party free (except for a nominal charge
- for the cost of distribution) a complete machine-readable copy of the
- corresponding source code, to be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- c) accompany it with the information you received as to where the
- corresponding source code may be obtained. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form alone.)
-
-Source code for a work means the preferred form of the work for making
-modifications to it. For an executable file, complete source code means
-all the source code for all modules it contains; but, as a special
-exception, it need not include source code for modules which are standard
-libraries that accompany the operating system on which the executable
-file runs, or for standard header files or definitions files that
-accompany that operating system.
-
- 4. You may not copy, modify, sublicense, distribute or transfer the
-Program except as expressly provided under this General Public License.
-Any attempt otherwise to copy, modify, sublicense, distribute or transfer
-the Program is void, and will automatically terminate your rights to use
-the Program under this License. However, parties who have received
-copies, or rights to use copies, from you under this General Public
-License will not have their licenses terminated so long as such parties
-remain in full compliance.
-
- 5. By copying, distributing or modifying the Program (or any work based
-on the Program) you indicate your acceptance of this license to do so,
-and all its terms and conditions.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these
-terms and conditions. You may not impose any further restrictions on the
-recipients' exercise of the rights granted herein.
-
- 7. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of the license which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-the license, you may choose any version ever published by the Free Software
-Foundation.
-
- 8. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to humanity, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is safest to
-attach them to the start of each source file to most effectively convey
-the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program 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 1, or (at your option)
- any later version.
-
- This program 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19xx name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than `show w' and `show
-c'; they could even be mouse-clicks or menu items--whatever suits your
-program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- program `Gnomovision' (a program to direct compilers to make passes
- at assemblers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/Makefile b/Makefile
index 824070f94..8d93c936b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,421 +1,25 @@
-#Copyright (C) 1989, 1990, 1991 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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Read this Makefile up to the line that says:
-# End of configuration section.
-
-# Define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA)
-# and define it to be A4, if it uses A4 paper (rest of the world).
-PAGE=A4
-#PAGE=letter
-
-# BINDIR says where to install executables.
-BINDIR=/usr/local/bin
-
-GROFFLIBDIR=/usr/local/lib/groff
-
-# FONTDIR says where to install dev*/*.
-FONTDIR=$(GROFFLIBDIR)/font
-
-# FONTPATH says where to look for dev*/*.
-FONTPATH=.:$(FONTDIR):/usr/local/lib/font:/usr/lib/font
-
-# MACRODIR says where to install macros.
-MACRODIR=$(GROFFLIBDIR)/tmac
-
-# MACROPATH says where to look for macro files.
-MACROPATH=.:$(MACRODIR):/usr/lib/tmac
-
-# DEVICE is the default device.
-DEVICE=ps
-
-# PSPRINT is the command to use for printing a PostScript file.
-# It must be a simple command, not a pipeline.
-PSPRINT=lpr
-
-# DVIPRINT is the command to use for printing a TeX dvi file.
-# It must be a simple command, not a pipeline.
-DVIPRINT=lpr -d
-
-# HYPHENFILE is the file containing the hyphenation patterns.
-HYPHENFILE=$(GROFFLIBDIR)/hyphen
-
-# Suffix to be used for refer index files. Index files are not
-# shareable between different architectures, so you might want to use
-# different suffixes for different architectures. Choose a suffix
-# that doesn't conflict with refer or any other indexing program.
-INDEX_SUFFIX=.i
-
-# Directory containing the default index for refer.
-DEFAULT_INDEX_DIR=/usr/dict/papers
-
-# The filename (without suffix) of the default index for refer.
-DEFAULT_INDEX_NAME=Ind
-
-# COMMON_WORDS_FILE is a file containing a list of common words.
-# If your system provides /usr/lib/eign it will be copied onto this,
-# otherwise the supplied eign file will be used.
-COMMON_WORDS_FILE=$(GROFFLIBDIR)/eign
-
-# MANROOT is the root of the man page directory tree.
-MANROOT=/usr/local/man
-
-# MAN1EXT is the man section for user commands.
-MAN1EXT=1
-MAN1DIR=$(MANROOT)/man$(MAN1EXT)
-
-# MAN5EXT is the man section for file formats.
-MAN5EXT=5
-MAN5DIR=$(MANROOT)/man$(MAN5EXT)
-
-# MAN7EXT is the man section for macros.
-MAN7EXT=7
-MAN7DIR=$(MANROOT)/man$(MAN7EXT)
-
-# The groff ms macros will be available as -m$(TMAC_S).
-# If you use `TMAC_S=s', you can use the Unix ms macros by using
-# groff -ms -M/usr/lib/tmac.
-TMAC_S=gs
-
-# Similarily, the groff mm macros will be available as -m$(TMAC_M).
-TMAC_M=gm
-
-# Normally the Postscript driver, grops, produces output that conforms
-# to version 3.0 of the Adobe Document Structuring Conventions.
-# Unfortunately some spoolers and previewers can't handle such output.
-# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
-# make its output acceptable to such programs. This variable controls
-# only the default behaviour of grops; the behaviour can be changed at
-# runtime by the grops -b option (and so by groff -P-b).
-# Use a value of 0 if your spoolers and previewers are able to handle
-# conforming PostScript correctly.
-# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
-# this is needed for early versions of TranScript that get confused by
-# anything between the %%EndProlog line and the first %%Page: comment.
-# Add 2 if lines in included files beginning with %! should be
-# stripped out; this is needed for Sun's pageview previewer.
-# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
-# stripped out of included files; this is needed for spoolers that
-# don't understand the %%{Begin,End}Document comments. I suspect this
-# includes early versions of TranScript.
-# A value of 7 is equivalent to -DBROKEN_SPOOLER of earlier releases.
-BROKEN_SPOOLER_FLAGS=7
-
-# Uncomment the next line if you are using AT&T C++ 2.0 with an ANSI C
-# compiler backend.
-D1=#-DCFRONT_ANSI_BUG
-
-# Uncomment the next line if you have vfork().
-D2=#-DHAVE_VFORK
-
-# Uncomment the next line if you have sys_siglist[].
-D3=#-DHAVE_SYS_SIGLIST
-
-# Uncomment the next line if you have the mmap() system call (and you
-# want to use it).
-D4=#-DHAVE_MMAP
-
-# Uncomment the next line if you have the rename() system call.
-D5=#-DHAVE_RENAME
-
-# Uncomment the next line if the argument to localtime() is a long*
-# rather than a time_t*.
-D6=#-DLONG_FOR_TIME_T
-
-# Uncomment the next line if wait is declared by your C++ header files
-# to take an argument of type union wait *.
-D7=#-DHAVE_UNION_WAIT
-
-# Uncoment the next line if your C++ header files declare a type pid_t
-# which is used as the return type of fork() and wait().
-D8=#-DHAVE_PID_T
-
-# Uncomment the next line if the 0200 bit of the status returned by
-# wait() indicates whether a core image was produced for a process
-# that was terminated by a signal. This is true for traditional Unix
-# implementations, but not necessarily for all POSIX systems.
-D9=-DWAIT_COREDUMP_0200
-
-# Uncomment the next line if <sys/wait.h> should not be included
-# when using wait(). Use this with the libg++ header files.
-D10=-DNO_SYS_WAIT_H
-
-# Uncomment the next line if you C++ compiler requires delete [n] rather
-# than delete []. This is needed for g++ 1.x and cfront 2.0.
-D11=#-DARRAY_DELETE_NEEDS_SIZE
-
-# Uncomment the next line if you do not have the POSIX pathconf()
-# function. You will need this on old UNIX systems that do not
-# support POSIX.
-PATHCONF_MISSING=#-DPATHCONF_MISSING
-
-# Uncomment the next line if you don't have fmod in your math library.
-# I believe this is needed on old versions of Ultrix and BSD 4.3.
-FMOD=#fmod.o
-
-# Uncomment the next line if you don't have strtol in your C library.
-# I believe this is needed on BSD 4.3.
-STRTOL=#strtol.o
-
-# Uncomment the next line if you don't have getcwd in your library.
-# An emulation in terms of getwd() will be provided. I believe this
-# is needed on BSD 4.3.
-GETCWD=#getcwd.o
-
-# Additional flags needed to compile the GNU Emacs malloc.
-# Use this with BSD.
-# MALLOCFLAGS=-DBSD
-# Use this with System V
-# MALLOCFLAGS=-DUSG
-# Use this with SunOS 4.1 and 4.1.1.
-MALLOCFLAGS=-DBSD -DSUNOS_LOCALTIME_BUG
-
-# Comment this out if the GNU malloc gives you problems, or if you would
-# prefer to use the system malloc.
-MALLOC=malloc.o
-
-GROFF=
-# Comment the next line out if groff.c gives problems.
-GROFF=groff
-
-# There is a new version of the grog program written in perl. This is
-# a little more capable than the previous version which was written in
-# shell; in particular, it can distinguish files that need to be run
-# through pic/eqn/tbl from files that have already been run through
-# pic/eqn/tbl. You can only use this version if you have perl
-# available. The first line of the perl program is `#!/usr/bin/perl';
-# if your system doesn't support `#!' or if there is no link to perl
-# in /usr/bin you'll have to edit etc/grog.pl by hand.
-# The next line should be uncommented if you want to use the old shell
-# version.
-GROG=grog.sh
-# The next line should be uncommented if you want to use the new perl
+# Copyright (C) 1989, 1990, 1991, 1992 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 2, or (at your option) any later
# version.
-# GROG=grog.pl
-
-# CC is the C++ compiler
-CC=g++
-# This is the flag that tells the C++ compiler to treat a .c file as C++.
-C++LANG_FLAG=
-# I'm told that -fno-inline is needed on a 68030-based Apollo
-# CC=g++ -fno-inline
-
-# Use this with gcc/g++ version 2.
-# CC=gcc
-# C++LANG_FLAG=-xc++
-
-# OLDCC is the C compiler.
-OLDCC=gcc
-
-PROFILE_FLAG=
-DEBUG_FLAG=-g
-# With gcc/g++ 2.0 on a sparc, -O works better than -O2.
-OPTIMIZE_FLAG=-O
-WARNING_FLAGS=#-Wall -Wcast-qual -Wwrite-strings
-
-# Use this to pass additional flags on the command line.
-XCFLAGS=
-
-# CFLAGS are passed to sub makes
-CFLAGS=$(C++LANG_FLAG) $(PROFILE_FLAG) $(DEBUG_FLAG) $(OPTIMIZE_FLAG) \
-$(WARNING_FLAGS) $(XCFLAGS) \
-$(D1) $(D2) $(D3) $(D4) $(D5) $(D6) $(D7) $(D8) $(D9) $(D10) $(D11)
-
-XOLDCFLAGS=
-# OLDCFLAGS are passed to sub makes
-OLDCFLAGS=$(DEBUG_FLAG) $(PROFILE_FLAG) $(OPTIMIZE_FLAG) $(XOLDCFLAGS)
-
-XLDFLAGS=
-LDFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(XLDFLAGS)
-# Libraries needed for linking C++ programs.
-LIBS=
-# Libraries needed for linking C++ programs that use libm.a.
-MLIBS=$(LIBS) -lm
-
-AR=ar
-
-# Define RANLIB to be empty if you don't have ranlib.
-RANLIB=ranlib
-
-# YACC can be either yacc or bison -y
-YACC=bison -y
-YACCFLAGS=-v
-
-ETAGS=etags
-# Flag to make etags treat *.[ch] files as C++
-ETAGSFLAGS=-p
-
-# End of configuration section.
-# You shouldn't need to change anything after this point.
+#
+# 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 groff; see the file COPYING. If not, write to the Free Software
+# Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
SHELL=/bin/sh
-SUBDIRS=lib troff pic tbl eqn refer etc driver ps tty dvi macros man mm
-
-# SUBFLAGS says what flags to pass to sub makes
-SUBFLAGS="SHELL=$(SHELL)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" \
- "OLDCC=$(OLDCC)" "OLDCFLAGS=$(OLDCFLAGS)" \
- "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \
- "DEVICE=$(DEVICE)" "FONTPATH=$(FONTPATH)" "MACROPATH=$(MACROPATH)" \
- "MALLOCFLAGS=$(MALLOCFLAGS)" "MALLOC=$(MALLOC)" \
- "FMOD=$(FMOD)" "STRTOL=$(STRTOL)" "GETCWD=$(GETCWD)" "GROG=$(GROG)" \
- "AR=$(AR)" "RANLIB=$(RANLIB)" "LIBS=$(LIBS)" "MLIBS=$(MLIBS)" \
- "FONTDIR=$(FONTDIR)" "BINDIR=$(BINDIR)" "PAGE=$(PAGE)" \
- "MACRODIR=$(MACRODIR)" "HYPHENFILE=$(HYPHENFILE)" \
- "TMAC_S=$(TMAC_S)" "TMAC_M=$(TMAC_M)" "MAN1EXT=$(MAN1EXT)" \
- "MAN1DIR=$(MAN1DIR)" "MAN5EXT=$(MAN5EXT)" "MAN5DIR=$(MAN5DIR)" \
- "MAN7EXT=$(MAN7EXT)" "MAN7DIR=$(MAN7DIR)" \
- "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \
- "INDEX_SUFFIX=$(INDEX_SUFFIX)" \
- "DEFAULT_INDEX_DIR=$(DEFAULT_INDEX_DIR)" \
- "DEFAULT_INDEX_NAME=$(DEFAULT_INDEX_NAME)" \
- "COMMON_WORDS_FILE=$(COMMON_WORDS_FILE)" \
- "PATHCONF_MISSING=$(PATHCONF_MISSING)"
-
-INCLUDES=-Ilib
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: $(SUBDIRS) $(GROFF) shgroff
-
-$(SUBDIRS): FORCE
- @cd $@; \
- echo Making all in $@; \
- $(MAKE) $(SUBFLAGS) all
-
-troff pic tbl eqn refer etc ps tty dvi: lib
-ps tty dvi: driver
-
-lib: c++tested
-
-c++tested: Makefile
- @echo Testing your C++ compiler
- $(CC) -c $(INCLUDES) $(CFLAGS) c++test.c
- $(CC) $(LDFLAGS) -o c++test c++test.o $(LIBS)
- ./c++test >c++test.out
- cmp -s c++test.out c++test.ref
- touch $@
-
-TAGS: FORCE
- @for dir in $(SUBDIRS); do \
- echo Making TAGS in $$dir; \
- (cd $$dir; $(MAKE) "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGS=$(ETAGS)" TAGS); \
- done
-
-topclean: FORCE
- -rm -f shgroff
- -rm -f groff *.o core device.h
- -rm -f c++test c++test.o c++test.out c++tested
-
-clean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making clean in $$dir; \
- (cd $$dir; $(MAKE) clean); done
-
-distclean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making distclean in $$dir; \
- (cd $$dir; $(MAKE) distclean); done
-
-# You really don't want to use this target.
-realclean: topclean FORCE
- @for dir in $(SUBDIRS) doc; do \
- echo Making realclean in $$dir; \
- (cd $$dir; $(MAKE) realclean); done
-
-install.nobin: FORCE shgroff
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
- -[ -d $(MANROOT) ] || mkdir $(MANROOT)
- @for dir in $(SUBDIRS); do \
- echo Making install.nobin in $$dir; \
- (cd $$dir; $(MAKE) $(SUBFLAGS) install.nobin); done
- -if [ -z "$(GROFF)" ] ; \
- then rm -f $(BINDIR)/groff ; \
- cp shgroff $(BINDIR)/groff ; fi
-
-install.bin: FORCE $(GROFF)
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- @for dir in $(SUBDIRS); do \
- echo Making install.bin in $$dir; \
- (cd $$dir; $(MAKE) $(SUBFLAGS) install.bin); done
- -if [ -n "$(GROFF)" ] ; \
- then rm -f $(BINDIR)/groff ; \
- cp groff $(BINDIR)/groff ; fi
-
-install: install.bin install.nobin
-
-install.dwbmm: FORCE
- -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR)
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.m
- sed -f macros/fixmacros.sed -e 's;/usr/lib/tmac;$(MACRODIR);' \
- /usr/lib/macros/mmt >$(MACRODIR)/tmac.m
- -rm -f $(MACRODIR)/sys.name
- sed -f macros/fixmacros.sed /usr/lib/tmac/sys.name \
- >$(MACRODIR)/sys.name
- patch -s $(MACRODIR)/tmac.m macros/mm.diff
-
-shgroff: groff.sh
- @echo Making $@ from groff.sh
- @-rm -f $@
- @sed -e "s;@BINDIR@;$(BINDIR);g" \
- -e "s;@DEVICE@;$(DEVICE);g" \
- -e "s;@PROG_PREFIX@;$(PROG_PREFIX);g" \
- -e "s;@FONTDIR@;$(FONTDIR);g" \
- -e "s;@PSPRINT@;$(PSPRINT);g" \
- -e "s;@DVIPRINT@;$(DVIPRINT);g" \
- groff.sh >$@ || rm -f $@
- @chmod +x $@
-
-groff: groff.o lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ groff.o lib/libgroff.a $(LIBS)
-
-lib/libgroff.a: lib
-
-device.h: FORCE
- @$(SHELL) gendef $@ \
- "DEVICE=\"$(DEVICE)\"" \
- "PSPRINT=`$(SHELL) stringify $(PSPRINT)`" \
- "DVIPRINT=`$(SHELL) stringify $(DVIPRINT)`"
-
-groff.o: device.h lib/lib.h lib/errarg.h lib/error.h lib/stringclass.h \
- lib/font.h
-
-bindist: all VERSION Makefile.bd README.bd FORCE
- -[ -d bindist ] || mkdir bindist
- @topdir=`pwd`; \
- for dir in $(SUBDIRS); do \
- (cd $$dir; $(MAKE) $(SUBFLAGS) "BINDIR=$$topdir/bindist" install.bin); done
- cp README.bd bindist/README
- cp VERSION bindist
- -if [ -n "$(GROFF)" ] ; then cp groff bindist/groff ; fi
- @echo Making bindist/Makefile
- @sed -e "s;@GROFFLIBDIR@;$(GROFFLIBDIR);g" \
- -e "s;@FONTDIR@;$(FONTDIR);g" \
- -e "s;@FONTPATH@;$(FONTPATH);g" \
- -e "s;@MACRODIR@;$(MACRODIR);g" \
- -e "s;@MACROPATH@;$(MACROPATH);g" \
- -e "s;@HYPHENFILE@;$(HYPHENFILE);g" \
- -e "s;@DEVICE@;$(DEVICE);g" \
- -e "s;@GROFF@;$(GROFF);g" \
- Makefile.bd >bindist/Makefile
-
-FORCE:
+.PHONY: all
+all:
+ $(SHELL) configure
+ $(MAKE) all
diff --git a/Makefile.bd b/Makefile.bd
deleted file mode 100644
index 6b1239791..000000000
--- a/Makefile.bd
+++ /dev/null
@@ -1,119 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# This is a Makefile for installing groff from a set of binaries and
-# a source distribution.
-
-# SRCDIR should point to the directory containing the groff
-# source distribution. You'll have to change this.
-SRCDIR=/usr/jjc/groff
-
-# Define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA);
-# define it to be A4, if it uses A4 paper (rest of the world)
-PAGE=A4
-#PAGE=letter
-
-# BINDIR says where to install the binaries.
-BINDIR=/usr/local/bin
-
-# PSPRINT is the command to use for printing a PostScript file
-PSPRINT=lpr
-
-# DVIPRINT is the command to use for printing a TeX dvi file
-DVIPRINT=lpr -d
-
-MANROOT=/usr/local/man
-
-# MAN1EXT is the man section for user commands
-MAN1EXT=1
-MAN1DIR=$(MANROOT)/man$(MAN1EXT)
-# MAN5EXT is the man section for file formats
-MAN5EXT=5
-MAN5DIR=$(MANROOT)/man$(MAN5EXT)
-# MAN7EXT is the man section for macros
-MAN7EXT=7
-MAN7DIR=$(MANROOT)/man$(MAN7EXT)
-
-# FONTDIR is the directory in which device sub-directories are to be installed.
-# If this is not in the path
-# `@FONTPATH@',
-# you must set the GROFF_FONT_PATH environment variable.
-FONTDIR=@FONTDIR@
-
-# MACRODIR is the directory in which macro files should be installed.
-# If this is not in the path `@MACROPATH@',
-# you must set the GROFF_TMAC_PATH environment variable.
-MACRODIR=@MACRODIR@
-
-# HYPHENFILE is the file containing gtroff's hyphenation patterns.
-# If you change it from `@HYPHENFILE@',
-# you will need to set the GROFF_HYPHEN environment variable.
-HYPHENFILE=@HYPHENFILE@
-
-# If GROFFLIBDIR does not exist, then it will be created before MACRODIR,
-# FONTDIR, or HYPHENFILE are created.
-GROFFLIBDIR=@GROFFLIBDIR@
-
-# DEVICE is the default device used by the groff shell script.
-# If you want the binaries to use a default device other than `@DEVICE@'
-# when not run using the groff shell script,
-# you will need to set the GROFF_TYPESETTER environment variable.
-DEVICE=@DEVICE@
-
-# The groff ms macros will be available as -m$(TMAC_S).
-# If you use `TMAC_S=s', you can use the Unix ms macros by using
-# groff -ms -M/usr/lib/tmac.
-TMAC_S=gs
-
-GROFF=
-
-# Comment this line out if you would rather use the shell version of the
-# groff command.
-GROFF=@GROFF@
-
-STRIP=strip
-BINARIES=gtroff gtbl gpic geqn gsoelim grodvi grotty grops psbb pfbtops \
- grefer gindxbib glookbib lkbib addftinfo tfmtodit $(GROFF)
-
-INSTALLFLAGS="PAGE=$(PAGE)" "BINDIR=$(BINDIR)" "PSPRINT=$(PSPRINT)" \
- "DVIPRINT=$(DVIPRINT)" "MANROOT=$(MANROOT)" "MAN1EXT=$(MAN1EXT)" \
- "MAN1DIR=$(MAN1DIR)" "MAN5EXT=$(MAN5EXT)" "MAN5DIR=$(MAN5DIR)" \
- "MAN7EXT=$(MAN7EXT)" "MAN7DIR=$(MAN7DIR)" "FONTDIR=$(FONTDIR)" \
- "GROFFLIBDIR=$(GROFFLIBDIR)" "MACRODIR=$(MACRODIR)" \
- "HYPHENFILE=$(HYPHENFILE)" "DEVICE=$(DEVICE)" "GROFF=$(GROFF)" \
- "TMAC_S=$(TMAC_S)"
-
-install: $(BINARIES) checkversions FORCE
- @echo Making install.nobin in $(SRCDIR)
- @(cd $(SRCDIR); $(MAKE) $(INSTALLFLAGS) install.nobin)
- cp $(BINARIES) $(BINDIR)
-
-install.mm: FORCE
- @echo Making install.mm in $(SRCDIR)
- @(cd $(SRCDIR); $(MAKE) $(INSTALLFLAGS) install.mm)
-
-strip: FORCE
- $(STRIP) $(BINARIES)
-
-checkversions: VERSION $(SRCDIR)/VERSION FORCE
- @echo Checking that the source and binary distributions \
- have the same version...
- cmp VERSION $(SRCDIR)/VERSION
-
-FORCE:
diff --git a/Makefile.ccpg b/Makefile.ccpg
new file mode 100644
index 000000000..627b182ae
--- /dev/null
+++ b/Makefile.ccpg
@@ -0,0 +1,19 @@
+# Makefile.ccpg
+MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \
+ $(srcdir)/Makefile.sub $(srcdir)/../Makefile.ccpg $(srcdir)/Makefile.dep
+
+all: $(PROG) $(MANPAGES)
+
+$(PROG): $(OBJS) $(XLIBS)
+ $(LINK.cc) -o $@ $(OBJS) $(XLIBS) $(CCLIBS) $(LIBS) $(MLIB)
+
+install_bin: install_prog
+install_prog: $(PROG)
+install_data: install_man
+install_man: $(MANPAGES)
+depend: depend_src
+depend.temp: $(GENSRCS)
+distfiles: $(YTABC)
+TAGS: TAGS_src
+TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
+Makefile: $(MAKEFILEPARTS)
diff --git a/Makefile.comm b/Makefile.comm
new file mode 100644
index 000000000..58234b32a
--- /dev/null
+++ b/Makefile.comm
@@ -0,0 +1,203 @@
+# Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+# Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# Makefile.comm
+#
+SHELL=/bin/sh
+INCLUDES=-I. -I$(srcdir) -I../include -I$(srcdir)/../include
+ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS)
+COMPILE.cc=$(CCC) $(ALL_CCFLAGS) -c
+ALL_CFLAGS=$(CDEFINES) $(CFLAGS) $(CPPFLAGS)
+COMPILE.c=$(CC) $(ALL_CFLAGS) -c
+LINK.cc=$(CCC) $(CCFLAGS) $(LDFLAGS)
+LINK.c=$(CC) $(CFLAGS) $(LDFLAGS)
+TOP=..
+LIBGROFF=$(TOP)/libgroff/libgroff.a
+LIBBIB=$(TOP)/libbib/libbib.a
+LIBDRIVER=$(TOP)/libdriver/libdriver.a
+LIBM=-lm
+MLIB=
+XLIBS=
+YTABH=
+YTABC=
+GRAM=
+LIBCLEAN=
+CLEANADD=
+MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \
+ depend.temp core $(CLEANADD)
+CLEANFILES=$(LIBCLEAN)
+DISTCLEANFILES=TAGS Makefile
+REALCLEANFILES=$(YTABC) $(YTABH) Makefile.dep
+NAMEPREFIX=
+HDRS=
+MANPAGES=$(MAN1) $(MAN5) $(MAN7)
+MANCLEAN=$(MANPAGES)
+fontsubdir=$(fontdir)/dev$(DEV)
+
+all install install_bin install_data TAGS depend distfiles:
+
+install: install_bin install_data
+
+.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles
+.PHONY: install install_bin install_data
+
+mostlyclean:
+ -rm -f $(MOSTLYCLEANFILES)
+
+clean:
+ -rm -f $(CLEANFILES) $(MOSTLYCLEANFILES)
+
+distclean:
+ -rm -f $(DISTCLEANFILES) $(CLEANFILES) $(MOSTLYCLEANFILES)
+
+realclean:
+ -rm -f $(REALCLEANFILES) $(DISTCLEANFILES) $(CLEANFILES) \
+ $(MOSTLYCLEANFILES)
+
+extraclean:
+ -rm -f $(DISTCLEANFILES) $(CLEANFILES) $(MOSTLYCLEANFILES) \
+ \#* *~ core junk grot old temp tmp tem
+
+.SUFFIXES:
+.SUFFIXES: .o .cc .c .y .man .n
+
+.cc.o:
+ $(COMPILE.cc) $<
+
+.c.o:
+ $(COMPILE.c) $<
+
+.y.cc:
+ if test -n "$(YTABH)"; then \
+ $(YACC) $(YACCFLAGS) -d $<; \
+ else \
+ $(YACC) $(YACCFLAGS) $<; \
+ fi
+ mv y.tab.c $@
+ test -z "$(YTABH)" || mv y.tab.h $(YTABH)
+
+.man.n:
+ @echo Making $@ from $<
+ @-rm -f $@
+ @sed -e "s;@HYPHENFILE@;$(hyphenfile);g" \
+ -e "s;@FONTDIR@;$(fontdir);g" \
+ -e "s;@FONTPATH@;$(fontpath);g" \
+ -e "s;@MACRODIR@;$(tmacdir);g" \
+ -e "s;@MACROPATH@;$(tmacpath);g" \
+ -e "s;@DEVICE@;$(DEVICE);g" \
+ -e "s;@DEFAULT_INDEX@;$(indexdir)/$(indexname);g" \
+ -e "s;@DEFAULT_INDEX_NAME@;$(indexname);g" \
+ -e "s;@INDEX_SUFFIX@;$(indexext);g" \
+ -e "s;@COMMON_WORDS_FILE@;$(common_words_file);g" \
+ -e "s;@MAN1EXT@;$(man1ext);g" \
+ -e "s;@MAN5EXT@;$(man5ext);g" \
+ -e "s;@MAN7EXT@;$(man7ext);g" \
+ -e "s;@TMAC_S@;$(tmac_s);g" \
+ -e "s;@TMAC_M@;$(tmac_m);g" \
+ -e "s;@TMAC_MDIR@;$(macrodir)/mm;g" \
+ -e "s;@BROKEN_SPOOLER_FLAGS@;$(BROKEN_SPOOLER_FLAGS);g" \
+ -e "s;@VERSION@;`cat $(srcdir)/../VERSION`;g" \
+ -e "s;@MDATE@;`$(SHELL) $(srcdir)/../mdate.sh $<`;g" \
+ -e "s;@g@;$(g);g" \
+ -e "s;@G@;`echo $(g) | tr [a-z] [A-Z]`;g" \
+ $< >$@
+
+.PHONY: install_man
+install_man:
+ -test -d $(manroot) || mkdir $(manroot)
+ -test -d $(man1dir) || mkdir $(man1dir)
+ @-pages="$(MAN1)"; \
+ for p in $$pages; do \
+ prog=`basename $$p .n`; \
+ target=$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \
+ rm -f $$target; \
+ echo $(INSTALL_DATA) $$p $$target; \
+ $(INSTALL_DATA) $$p $$target; \
+ done
+ -test -d $(man5dir) || mkdir $(man5dir)
+ @-pages="$(MAN5)"; \
+ for p in $$pages; do \
+ target=$(man5dir)/`basename $$p .n`.$(man5ext); \
+ rm -f $$target; \
+ echo $(INSTALL_DATA) $$p $$target; \
+ $(INSTALL_DATA) $$p $$target; \
+ done
+ -test -d $(man7dir) || mkdir $(man7dir)
+ @-pages="$(MAN7)"; \
+ for p in $$pages; do \
+ target=$(man7dir)/`basename $$p .n`.$(man7ext); \
+ rm -f $$target; \
+ echo $(INSTALL_DATA) $$p $$target; \
+ $(INSTALL_DATA) $$p $$target; \
+ done
+
+.PHONY: install_prog
+install_prog:
+ -test -d $(bindir) || mkdir $(bindir)
+ rm -f $(bindir)/$(NAMEPREFIX)$(PROG)
+ $(INSTALL_PROGRAM) $(PROG) $(bindir)/$(NAMEPREFIX)$(PROG)
+
+.PHONY: install_dev
+install_dev:
+ -test -d $(datadir) || mkdir $(datadir)
+ -test -d $(datasubdir) || mkdir $(datasubdir)
+ -test -d $(fontdir) || mkdir $(fontdir)
+ -test -d $(fontsubdir) || mkdir $(fontsubdir)
+ -if test -d $(srcdir)/generate; then \
+ test -d $(fontsubdir)/generate || mkdir $(fontsubdir)/generate; \
+ fi
+ -for f in $(DEVFILES); do \
+ rm -f $(fontsubdir)/$$f; \
+ if test -f $$f; then \
+ $(INSTALL_DATA) $$f $(fontsubdir)/$$f; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$f $(fontsubdir)/$$f; \
+ fi; \
+ done
+
+.PHONY: depend_src
+depend_src: depend.temp
+ mv depend.temp Makefile.dep
+
+depend.temp: FORCE
+ > depend.temp;
+ test -z "$(CCSRCS)$(YTABC)" \
+ || $(CCC) $(ALL_CCFLAGS) -MM $(CCSRCS) $(YTABC) >>depend.temp
+ test -z "$(CSRCS)" \
+ || $(CC) $(ALL_CFLAGS) -MM $(CSRCS) >>depend.temp
+ if test -n "$(YTABH)"; then \
+ sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend.temp1; \
+ mv depend.temp1 depend.temp; \
+ fi
+
+.PHONY: TAGS_src
+TAGS_src:
+ $(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS)
+ test -z "$(GRAM)$(HDRS)" \
+ || $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS)
+
+Makefile:
+ -rm -f Makefile
+ echo srcdir=$(srcdir) >>Makefile
+ echo VPATH=$(VPATH) >>Makefile
+ cat $(MAKEFILEPARTS) /dev/null >>Makefile
+
+FORCE:
+
+.NOEXPORT:
diff --git a/Makefile.cpg b/Makefile.cpg
new file mode 100644
index 000000000..8eb000481
--- /dev/null
+++ b/Makefile.cpg
@@ -0,0 +1,19 @@
+# Makefile.cpg
+MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \
+ $(srcdir)/Makefile.sub $(srcdir)/../Makefile.cpg $(srcdir)/Makefile.dep
+
+all: $(PROG) $(MANPAGES)
+
+$(PROG): $(OBJS) $(XLIBS)
+ $(LINK.c) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)
+
+install_bin: install_prog
+install_prog: $(PROG)
+install_data: install_man
+install_man: $(MANPAGES)
+depend: depend_src
+depend.temp: $(GENSRCS)
+distfiles: $(YTABC)
+TAGS: TAGS_src
+TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
+Makefile: $(MAKEFILEPARTS)
diff --git a/Makefile.dev b/Makefile.dev
new file mode 100644
index 000000000..ec630ef22
--- /dev/null
+++ b/Makefile.dev
@@ -0,0 +1,2 @@
+all: $(DEVFILES)
+install_data: install_dev
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 000000000..934cc6d57
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,360 @@
+# Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+# Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Define `page' to be letter if your PostScript printer uses 8.5x11
+# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
+# world).
+PAGE=@PAGE@
+
+# Normally the Postscript driver, grops, produces output that conforms
+# to version 3.0 of the Adobe Document Structuring Conventions.
+# Unfortunately some spoolers and previewers can't handle such output.
+# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
+# make its output acceptable to such programs. This variable controls
+# only the default behaviour of grops; the behaviour can be changed at
+# runtime by the grops -b option (and so by groff -P-b).
+# Use a value of 0 if your spoolers and previewers are able to handle
+# conforming PostScript correctly.
+# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
+# this is needed for early versions of TranScript that get confused by
+# anything between the %%EndProlog line and the first %%Page: comment.
+# Add 2 if lines in included files beginning with %! should be
+# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
+# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
+# stripped out of included files; this is needed for spoolers that
+# don't understand the %%{Begin,End}Document comments. I suspect this
+# includes early versions of TranScript.
+BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@
+
+# DEVICE is the default device.
+DEVICE=ps
+
+# PSPRINT is the command to use for printing a PostScript file,
+# for example `lpr'.
+PSPRINT=@PSPRINT@
+
+# DVIPRINT is the command to use for printing a TeX dvi file,
+# for example `lpr -d'.
+DVIPRINT=@DVIPRINT@
+
+# Prefix for names of programs that have Unix counterparts.
+# For example, if `g' is `g' then troff will be installed as
+# gtroff. This doesn't affect programs like grops or groff that have
+# no Unix counterparts. Note that the groff versions of eqn and tbl
+# will not work with Unix troff. This is also use in the definitions
+# of tmac_s and tmac_m.
+g=g
+
+# The groff ms macros will be available as -m$(tmac_s).
+# If you use `tmac_s=s', you can use the Unix ms macros by using
+# groff -ms -M/usr/lib/tmac.
+tmac_s=$(g)s
+
+# Similarily, the groff mm macros will be available as -m$(tmac_m).
+tmac_m=$(g)m
+
+# Common prefix for installation directories.
+# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
+# This must already exist when you do make install.
+prefix=/usr/local
+
+exec_prefix=$(prefix)
+
+# bindir says where to install executables.
+bindir=$(exec_prefix)/bin
+
+# datasubdir says where to install executables
+datadir=$(prefix)/lib
+datasubdir=$(datadir)/groff
+
+# fontdir says where to install dev*/*.
+fontdir=$(datasubdir)/font
+
+# fontpath says where to look for dev*/*.
+fontpath=.:$(fontdir):$(prefix)/lib/font:/usr/lib/font
+
+# tmacdir says where to install macros.
+tmacdir=$(datasubdir)/tmac
+
+# tmacpath says where to look for macro files.
+tmacpath=.:$(tmacdir):/usr/lib/tmac
+
+# hyphenfile is the file containing the hyphenation patterns.
+hyphenfile=$(datasubdir)/hyphen
+
+# Extension to be used for refer index files. Index files are not
+# shareable between different architectures, so you might want to use
+# different suffixes for different architectures. Choose an extension
+# that doesn't conflict with refer or any other indexing program.
+indexext=.i
+
+# Directory containing the default index for refer.
+indexdir=/usr/dict/papers
+
+# The filename (without suffix) of the default index for refer.
+indexname=Ind
+
+# common_words_file is a file containing a list of common words.
+# If your system provides /usr/lib/eign it will be copied onto this,
+# otherwise the supplied eign file will be used.
+common_words_file=$(datasubdir)/eign
+
+# manroot is the root of the man page directory tree.
+manroot=$(prefix)/man
+
+# man1ext is the man section for user commands.
+man1ext=1
+man1dir=$(manroot)/man$(man1ext)
+
+# man5ext is the man section for file formats.
+man5ext=5
+man5dir=$(manroot)/man$(man5ext)
+
+# man7ext is the man section for macros.
+man7ext=7
+man7dir=$(manroot)/man$(man7ext)
+
+# DEFINES should include the following:
+# -DHAVE_MMAP if you have mmap() and <sys/mman.h>
+# -DCFRONT_ANSI_BUG if you're using cfront 2.0 (or later?) with
+# an ANSI C compiler
+# -DCOOKIE_BUG if you're using gcc/g++ 2.[012] but haven't
+# applied the patch in gcc.patch.
+# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []'
+# -DHAVE_SYS_SIGLIST if you have sys_siglist[]
+# -DWCOREFLAG=0200 if the 0200 bit of the status returned by
+# wait() indicates whether a core image was
+# produced for a process that was terminated
+# by a signal
+# -DHAVE_UNISTD_H if you have <unistd.h>
+# -DHAVE_CC_UNISTD_H if you have a C++ <unistd.h>
+# -DHAVE_DIRENT_H if you have <dirent.h>
+# -DHAVE_LIMITS_H if you have <limits.h>
+# -DHAVE_CC_LIMITS_H if you have a C++ <limits.h>
+# -DHAVE_SYS_DIR_H if you have <sys/dir.h>
+# -DHAVE_VFORK_H if you have <vfork.h>
+# -Dvfork=fork if you don't have a working vfork()
+# -DHAVE_RENAME if you have rename()
+# -DHAVE_MKSTEMP if you have mkstemp()
+# -DSTDLIB_H_DECLARES_GETOPT if your C++ <stdlib.h> declares getopt()
+# -DSTDLIB_H_DECLARES_PUTENV if your C++ <stdlib.h> declares putenv()
+# -DTRADITIONAL_CPP if your C++ compiler uses a traditional
+# (Reiser) preprocessor.
+# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t *
+DEFINES=@DEFS@
+
+# Include fmod.o, strtol.o, getcwd.o, strerror.o in LIBOBJS if your C library
+# is missing the corresponding function.
+LIBOBJS=@LIBOBJS@
+
+# CCC is the compiler for C++ (.cc) files.
+CCC=@CCC@
+CC=@CC@
+# CCDEFINES are definitions for C++ compilations.
+CCDEFINES=$(DEFINES)
+# CDEFINES are definitions for C compilations.
+CDEFINES=$(DEFINES)
+
+DEBUG=-g
+CCFLAGS=$(DEBUG)
+CFLAGS=$(DEBUG)
+YACC=@YACC@
+YACCFLAGS=-v
+
+LIBS=@LIBS@
+CCLIBS=@CCLIBS@
+RANLIB=@RANLIB@
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_DATA=@INSTALL_DATA@
+LN_S=@LN_S@
+AR=ar
+ETAGS=etags
+ETAGSFLAGS=
+# Flag that tells etags to assume C++.
+ETAGSCCFLAG=@ETAGSCCFLAG@
+# Full path to perl.
+PERLPATH=@PERLPATH@
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+MDEFINES="PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \
+ "DEVICE=$(DEVICE)" "PSPRINT=$(PSPRINT)" "DVIPRINT=$(DVIPRINT)" \
+ "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "bindir=$(bindir)" \
+ "g=$(g)" "datadir=$(datadir)" "datasubdir=$(datasubdir)" \
+ "fontdir=$(fontdir)" "fontpath=$(fontpath)" \
+ "tmacdir=$(tmacdir)" "tmacpath=$(tmacpath)" \
+ "hyphenfile=$(hyphenfile)" "indexext=$(indexext)" "indexdir=$(indexdir)" \
+ "indexname=$(indexname)" "common_words_file=$(common_words_file)" \
+ "manroot=$(manroot)" "man1ext=$(man1ext)" "man1dir=$(man1dir)" \
+ "man5ext=$(man5ext)" "man5dir=$(man5dir)" \
+ "man7ext=$(man7ext)" "man7dir=$(man7dir)" \
+ "tmac_s=$(tmac_s)" "tmac_m=$(tmac_m)" \
+ "CCC=$(CCC)" "CC=$(CC)" "CCDEFINES=$(CCDEFINES)" "CDEFINES=$(CDEFINES)" \
+ "CCFLAGS=$(CCFLAGS)" "CFLAGS=$(CFLAGS)" \
+ "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \
+ "LIBS=$(LIBS)" "CCLIBS=$(CCLIBS)" "LIBOBJS=$(LIBOBJS)" \
+ "RANLIB=$(RANLIB)" "AR=$(AR)" \
+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_DATA=$(INSTALL_DATA)" \
+ "ETAGS=$(ETAGS)" "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGSCCFLAG=$(ETAGSCCFLAG)" \
+ "PERLPATH=$(PERLPATH)"
+
+SHELL=/bin/sh
+INCDIRS=include
+LIBDIRS=libgroff libdriver libbib
+CCPROGDIRS=groff troff tbl pic eqn grops grotty grodvi tfmtodit \
+ refer lookbib indxbib lkbib soelim addftinfo
+CPROGDIRS=pfbtops psbb
+PROGDIRS=$(CCPROGDIRS) $(CPROGDIRS)
+DEVDIRS=devps devdvi devascii devlatin1
+OTHERDIRS=man tmac afmtodit grog nroff mm
+ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(OTHERDIRS)
+EXTRADIRS=devps/generate devdvi/generate xditview doc
+DISTDIRS=$(ALLDIRS) $(EXTRADIRS)
+TARGETS=all install install_bin install_data clean distclean mostlyclean \
+ realclean extraclean distfiles TAGS depend
+
+do=all
+dodirs=$(ALLDIRS) dot
+# Default target for subdir_Makefile
+subdir=troff
+
+
+$(TARGETS):
+ @$(MAKE) do=$@ $(dodirs)
+
+dot: FORCE
+ @$(MAKE) srcdir=$(srcdir) VPATH=$(srcdir) -f $(srcdir)/Makefile.comm \
+ -f $(srcdir)/Makefile.sub $(do)
+
+$(LIBDIRS): FORCE
+ @if test $(srcdir) = .; \
+ then srcdir=.; \
+ else srcdir=`cd $(srcdir); pwd`/$@; \
+ fi; \
+ echo Making $(do) in $@; \
+ test -d $@ || mkdir $@; \
+ cd $@; \
+ $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
+ -f $$srcdir/../Makefile.lib -f $$srcdir/Makefile.dep $(do)
+
+$(CPROGDIRS): FORCE
+ @if test $(srcdir) = .; \
+ then srcdir=.; \
+ else srcdir=`cd $(srcdir); pwd`/$@; \
+ fi; \
+ echo Making $(do) in $@; \
+ test -d $@ || mkdir $@; \
+ cd $@; \
+ $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
+ -f $$srcdir/../Makefile.cpg -f $$srcdir/Makefile.dep $(do)
+
+$(CCPROGDIRS): FORCE
+ @if test $(srcdir) = .; \
+ then srcdir=.; \
+ else srcdir=`cd $(srcdir); pwd`/$@; \
+ fi; \
+ echo Making $(do) in $@; \
+ test -d $@ || mkdir $@; \
+ cd $@; \
+ $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
+ -f $$srcdir/../Makefile.ccpg -f $$srcdir/Makefile.dep $(do)
+
+$(DEVDIRS): FORCE
+ @if test $(srcdir) = .; \
+ then srcdir=.; \
+ else srcdir=`cd $(srcdir); pwd`/$@; \
+ fi; \
+ echo Making $(do) in $@; \
+ test -d $@ || mkdir $@; \
+ cd $@; \
+ $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
+ -f $$srcdir/../Makefile.dev $(do)
+
+$(INCDIRS) $(OTHERDIRS): FORCE
+ @if test $(srcdir) = .; \
+ then srcdir=.; \
+ else srcdir=`cd $(srcdir); pwd`/$@; \
+ fi; \
+ echo Making $(do) in $@; \
+ test -d $@ || mkdir $@; \
+ cd $@; \
+ $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \
+ -f $$srcdir/../Makefile.man $(do)
+
+version=`cat $(srcdir)/VERSION`
+
+.PHONY: dist
+dist:
+ -rm -fr tmp
+ mkdir tmp
+ for d in $(DISTDIRS); do \
+ mkdir tmp/$$d; \
+ done
+ srcdir=`cd $(srcdir); pwd`; \
+ cd tmp; \
+ $(LN_S) $$srcdir/* . 2>/dev/null; \
+ for d in $(DISTDIRS); do \
+ (cd $$d; $(LN_S) $$srcdir/$$d/* . 2>/dev/null); \
+ done; \
+ $(MAKE) -f ../Makefile srcdir=$$srcdir VPATH=$$srcdir extraclean; \
+ for d in $(EXTRADIRS); do \
+ (cd $$d; $(MAKE) extraclean); \
+ done; \
+ $(LN_S) $$srcdir/Makefile.init Makefile
+ mv tmp groff-$(version)
+ tar cfh - groff-$(version) | compress >groff-$(version).tar.Z
+ rm -fr groff-$(version)
+
+# $(PROGDIRS): libgroff
+# grops grotty grodvi: libdriver
+# refer lookbib indxbib lkbib: libbib
+# $(LIBDIRS) $(PROGDIRS): include
+
+.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE
+
+subdir_Makefile: Makefile.cfg
+ $(MAKE) do=Makefile $(subdir)
+
+Makefile.cfg: Makefile
+ >Makefile.cfg
+ for var in $(MDEFINES); do \
+ echo "$$var" >>Makefile.cfg; \
+ done
+
+depend: srcdir_must_be_dot
+
+.PHONY: srcdir_must_be_dot
+srcdir_must_be_dot:
+ @test "X$(srcdir)" = "X." \
+ || (echo This target can only be made in the source directory; \
+ exit 1)
+
+Makefile: Makefile.in
+ $(SHELL) config.status
+
+FORCE:
+
+.NOEXPORT:
diff --git a/Makefile.init b/Makefile.init
new file mode 100644
index 000000000..8d93c936b
--- /dev/null
+++ b/Makefile.init
@@ -0,0 +1,25 @@
+# Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+# Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+SHELL=/bin/sh
+
+.PHONY: all
+all:
+ $(SHELL) configure
+ $(MAKE) all
diff --git a/Makefile.lib b/Makefile.lib
new file mode 100644
index 000000000..019ba6af2
--- /dev/null
+++ b/Makefile.lib
@@ -0,0 +1,14 @@
+LIBCLEAN=lib$(LIB).a
+MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \
+ $(srcdir)/Makefile.sub $(srcdir)/../Makefile.lib $(srcdir)/Makefile.dep
+
+all: lib$(LIB).a
+
+lib$(LIB).a: $(OBJS)
+ $(AR) r $@ $?
+ $(RANLIB) $@
+
+depend: depend_src
+depend.temp: $(GENSRCS)
+TAGS: $(CCSRCS) $(CSRCS)
+Makefile: $(MAKEFILEPARTS)
diff --git a/Makefile.man b/Makefile.man
new file mode 100644
index 000000000..0d7de660a
--- /dev/null
+++ b/Makefile.man
@@ -0,0 +1,3 @@
+all: $(MANPAGES)
+install_data: install_man
+install_man: $(MANPAGES)
diff --git a/Makefile.sub b/Makefile.sub
new file mode 100644
index 000000000..f0d09a3d7
--- /dev/null
+++ b/Makefile.sub
@@ -0,0 +1,7 @@
+DISTCLEANFILES=config.status Makefile
+CLEANADD=Makefile.cfg conftest*
+
+distfiles: configure
+
+configure: configure.in acgroff.m4
+ cd $(srcdir); autoconf
diff --git a/PROBLEMS b/PROBLEMS
index f2b612e47..4c0bfac4c 100644
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -2,39 +2,17 @@ This file describes various problems that have been encountered in
compiling, installing and running groff. Suggestions for additions or
other improvements to this file are welcome.
-* I am having problems compiling groff with g++ on a DECstation or
-other machine using a MIPS processor (such as SGI machines).
+* On a DECstation, gcc/g++ 2.2.2 gets a fatal signal while compiling
+tbl/main.c and tbl/table.c.
-Try getting g++ from foobar.colorado.edu:pub/Gnu-For-Pmax.
-
-* I am having problems compiling groff with g++ on a 386 PC
-running SVR3.2.
-
-I recommend using Michael Bloom's GNU COFF patches
-(tut.cis.ohio-state.edu:pub/gnu/coff/gnu-coff.tar.Z).
+Compile those two files without -O.
* I get lots of `numeric overflow' error messages whenever I run
groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.
-Include -DCFRONT_ANSI_BUG in CPPDEFINES in the top-level Makefile. If
-that doesn't solve the problem, define INT_MIN as -INT_MAX in
-lib/lib.h.
-
-* Using SunOS 4.1 or 4.1.1, gtroff aborts in malloc.
-
-Include -DSUNOS_LOCALTIME_BUG in MALLOCFLAGS in the top-level Makefile.
-
-* When I try to compile groff with g++, I get lots of parse errors
-from files in /usr/include.
-
-You must install C++ versions of the standard include files; these are
-included with libg++.
-
-* g++ complains about conflicting declarations of fmod() while
-compiling pic.tab.c; I'm using a 68k based machine.
-
-This is a bug in the libg++ header files. Apply the fix given in the
-INSTALL file.
+Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level
+Makefile. If that doesn't solve the problem, define INT_MIN as
+-INT_MAX in libgroff/lib.h.
* I get errors when I try to compile groff with Sun C++.
@@ -52,16 +30,21 @@ optarg, optind and opterr should be added to <stdlib.h>; in
<sys/signal.h> the return type and the second argument type of
signal() should be changed to be `void (*)(int)'.
- You can either change
-them in place, or copy them to some other directory and include that
-directory with a -I option.
+You can either change them in place, or copy them to some other
+directory and include that directory with a -I option.
+
+* Groff can't handle my troff document. It works fine with AT&T troff.
+
+Read the section on incompatibilities in gtroff(1). Try using the -C
+option. Alternatively there's the sed script in tmac/fixmacros.sed
+which will attempt to edit a file of macros so that it can be used
+with groff without the -C flag.
-* I get the error `make[2]: execve: /bin/sh: Arg list too long.'.
+* groff -Tdvi produces dvi files that use fonts at weird magnifications.
-If you're using GNU make, try using /bin/make instead. Alternatively,
-if you're using GNU make 3.59 or later, do something like:
- echo .NOEXPORT: >make.noexport
- MAKEFILES=`pwd`/make.noexport; export MAKEFILES
+Yes, it does. You may need to compile fonts with Metafont at these
+magnifications. The CompileFonts script in the devdvi/generate
+directory may help you to do this. (It will take a *long* time.)
* pic output is not centered horizontally; pictures sometimes run off
the bottom of the page.
@@ -182,12 +165,13 @@ Some dvi drivers (notably early versions of xtex) do not correct
handle dvi files that use a resolution different from that used by dvi
files produced by TeX. Try getting a more up to date driver.
-* I get lots of errors when I use groff with -mm.
+* I get lots of errors when I use groff with the AT&T -mm macros.
--mm needs a few changes to work with groff; `make install.mm' will
-copy your -mm macros to groff's macro directory and make the necessary
-changes. You may need to edit the commands for the install.mm target
-in the Makefile.
+The AT&T -mm macros need a few changes to work with groff; `make
+install.dwbmm' will copy your -mm macros to groff's macro directory
+and make the necessary changes. You may need to edit the commands for
+the install.mm target in the Makefile. Alternatively use the groff
+-mm macros.
* gtroff doesn't understand lines like `.ce99' with no space between
the name of the request or macro and the arguments.
@@ -250,7 +234,7 @@ The solution is to fix the manual page:
as when I print the document with -Tps: the line and page breaks come
in different places.
-Use groff -TXps.
+Use groff -X -Tps.
* In gpic expressions don't work at all. I'm using g++ 1.39 on a sparc.
diff --git a/README b/README
index 6c79487a1..4ecfcb38d 100644
--- a/README
+++ b/README
@@ -8,17 +8,12 @@ modified version of the Berkeley -me macros, an enhanced version of
the X11 xditview previewer, and an implementation of the -mm macros
contributed by Joergen Haegg (jh@efd.lth.se).
-You will require a C++ compiler implementing at least version 2.0 of
-the C++ language. I suggest GNU C++ version 1.40.3. (Do not use
-version 1.39.) You may also be able use GNU C/C++ version 2.0, but
-you should apply the patch given in the file INSTALL. You will also
-require C++ header files that are fairly compliant with ANSI C.
-
-See the file INSTALL for installation instructions.
+See the file INSTALL for installation instructions. You will require
+a C++ compiler.
The file CHANGES describes recent user-visible changes to groff.
-Groff is free software. See the file LICENSE for copying permission.
+Groff is free software. See the file COPYING for copying permission.
The file PROBLEMS describes various problems that have been
encountered in compiling, installing, and running groff.
@@ -27,13 +22,8 @@ For the moment, the documentation assumes that you are already
familiar with the Unix versions of troff, -man, -ms and the
preprocessors.
-People occasionally ask me where they can get binaries of groff for
-various systems. If you are prepared to make binaries available,
-please let me know and tell me how people can get them, the systems
-they will run on, and the version of groff they are for. (See the
-last paragraph of the INSTALL file for how to make a binary
-distribution.) I'll keep a list which I can send to people who are
-looking for binaries.
+The most recent released version of groff is always available by
+anonymous ftp from prep.ai.mit.edu in the directory pub/gnu.
Please report bugs using the form in the file BUG-REPORT; the idea of
this is to make sure that I have all the information I need to fix the
@@ -41,8 +31,8 @@ bug. At the very least, read the BUG-REPORT form and make sure that
you supply all the information that it asks for. Even if you are not
sure that something is a bug, report it using BUG-REPORT: this will
enable me to determine whether it really is a bug or not. As well as
-bug reports, I would be interested in suggestions for improvements to
-groff (no matter how small).
+bug reports, I welcome suggestions for improvements to groff (no
+matter how small).
James Clark
jjc@jclark.com
diff --git a/README.bd b/README.bd
deleted file mode 100644
index 724c8db5b..000000000
--- a/README.bd
+++ /dev/null
@@ -1,15 +0,0 @@
-This directory contains a set of binaries for the GNU groff document
-formatting system. The version number is given in the file VERSION.
-
-In order to use these, you must also have a copy of the groff source
-distribution with exactly the same version. You will not need a C++
-compiler (or indeed any other compiler).
-
-To install groff, edit the Makefile in this directory and type `make'.
-You shouldn't need to change the Makefile in the source directory.
-
-Groff is free software. See the file LICENSE in the groff source
-distribution for copying information.
-
-See also the README and INSTALL files in the groff source
-distribution.
diff --git a/TODO b/TODO
new file mode 100644
index 000000000..e4212eb29
--- /dev/null
+++ b/TODO
@@ -0,0 +1,7 @@
+Provide a `check' target.
+
+Provide a `bindist' target.
+
+Implement tmac.bib in terms of tmac.s.
+
+Support long options using GNU getopt.
diff --git a/VERSION b/VERSION
index 993f09564..d510f05a9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.05
+1.06
diff --git a/acgroff.m4 b/acgroff.m4
new file mode 100644
index 000000000..da0fefdcc
--- /dev/null
+++ b/acgroff.m4
@@ -0,0 +1,325 @@
+dnl Autoconf macros for groff.
+dnl Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+dnl
+dnl This file is part of groff.
+dnl
+dnl groff is free software; you can redistribute it and/or modify it under
+dnl the terms of the GNU General Public License as published by the Free
+dnl Software Foundation; either version 2, or (at your option) any later
+dnl version.
+dnl
+dnl groff is distributed in the hope that it will be useful, but WITHOUT ANY
+dnl WARRANTY; without even the implied warranty of MERCHANTABILITY or
+dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+dnl for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License along
+dnl with groff; see the file COPYING. If not, write to the Free Software
+dnl Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+dnl
+define(GROFF_EXIT,[rm -f conftest* core; exit 1])dnl
+define(GROFF_PREFIX,[AC_PROVIDE([$0])AC_PREFIX(grops)AC_PREFIX(gcc)])dnl
+define(GROFF_PROG_CCC,
+[AC_PROVIDE([$0])cc_compile='$CCC conftest.cc -o conftest $CCLIBS $LIBS >/dev/null 2>&1'
+AC_SUBST(CCLIBS)
+if test -z "$CCC"; then
+# See whether the C compiler is also a C++ compiler.
+echo checking if C compiler is also a C++ compiler
+cat <<EOF > conftest.cc
+#ifdef __cplusplus
+ yes
+#endif
+EOF
+$CC -E conftest.cc >conftest.out 2>&1
+if egrep yes conftest.out >/dev/null 2>&1; then
+ CCC="$CC"
+fi
+fi
+AC_PROGRAM_CHECK(CCC,g++,g++,)
+AC_PROGRAM_CHECK(CCC,CC,CC,)
+AC_PROGRAM_CHECK(CCC,cc++,cc++,)
+if test -z "$CCC"; then
+cat <<EOM
+This package requires a C++ compiler, but I couldn't find one.
+Set the environment variable CCC to the name of your C++ compiler.
+EOM
+GROFF_EXIT
+fi
+echo checking that C++ compiler can compile very simple C++ program
+GROFF_CC_TEST_PROGRAM([
+extern "C" { void exit(int); }
+int main() { exit(0); }
+],,
+cat <<EOM
+$CCC was unable successfully to compile a very simple C++ program
+(the C++ program was in a file with a suffix of .cc)
+EOM
+GROFF_EXIT
+,)
+echo checking that C++ static constructors and destructors are called
+GROFF_CC_TEST_PROGRAM([
+extern "C" {
+ void exit(int);
+ void _exit(int);
+}
+int i;
+struct A {
+ char dummy;
+ A() { i = 1; }
+ ~A() { if (i == 1) _exit(0); }
+};
+A a;
+main() { exit(1); }
+],,
+cat <<EOM
+$CCC is not installed correctly: static constructors and destructors do not work
+EOM
+GROFF_EXIT
+,)
+GROFF_CC_COMPILE_CHECK([C++ header files],[#include <stdio.h>],
+[fputs(0, 0);],,
+[cat <<\EOF
+Your header files do not appear to support C++.
+I was unable to compile and link a simple C++ program that used a function
+declared in <stdio.h>.
+If you're using gcc/g++, you should install libg++.
+EOF
+GROFF_EXIT])
+if test "$CCC" = gcc; then CCC="gcc -O"; fi
+if test "$CCC" = "g++"; then CCC="g++ -O"; fi])dnl
+define(GROFF_CC_COMPILE_CHECK,
+[AC_PROVIDE([$0])AC_REQUIRE([GROFF_PROG_CCC])echo checking for $1
+cat <<EOF >conftest.cc
+$2
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { $3 }
+EOF
+dnl Don't try to run the program, which would prevent cross-configuring.
+if eval $cc_compile; then
+ ifelse([$4], , :, [$4])
+ifelse([$5], , , [else
+ $5
+])dnl
+fi
+rm -f conftest*])dnl
+dnl
+define(GROFF_CC_TEST_PROGRAM,
+[AC_PROVIDE([$0])AC_REQUIRE([GROFF_PROG_CCC])ifelse([$4], , ,
+[AC_REQUIRE([AC_CROSS_CHECK])if $cross_compiling
+then
+ $4
+else
+])dnl
+cat <<EOF > conftest.cc
+[$1]
+EOF
+rm -f conftest
+eval $cc_compile
+if test -s conftest && (./conftest) 2>/dev/null; then
+ ifelse([$2], , :, [$2])
+ifelse([$3], , , [else
+ $3
+])dnl
+fi
+ifelse([$4], , , fi
+)dnl
+rm -f conftest*])dnl
+dnl
+define(GROFF_PAGE,
+[AC_REQUIRE([GROFF_PREFIX])
+if test -z "$PAGE" && test -r $prefix/lib/groff/font/devps/DESC
+then
+ if grep "^paperlength 841890" \
+ $prefix/lib/groff/font/devps/DESC >/dev/null 2>&1
+ then
+ PAGE=A4
+ else
+ PAGE=letter
+ fi
+fi
+if test -z "$PAGE"
+then
+ dom=`awk '([$]1 == "dom" || [$]1 == "search") { print [$]2; exit}' \
+ /etc/resolv.conf 2>/dev/null`
+
+ if test -z "$dom"
+ then
+ dom=`(domainname) 2>/dev/null | tr -d '+'`
+ if test -z "$dom"
+ then
+ dom=`(hostname) 2>/dev/null | grep '\.'`
+ fi
+ fi
+
+changequote(,)dnl
+ # If the top-level domain is two letters and it's not `us' or `ca'
+ # then they probably use A4 paper.
+ case "$dom" in
+ *.[Uu][Ss]|*.[Cc][Aa]) ;;
+ *.[A-Za-z][A-Za-z]) PAGE=A4 ;;
+ esac
+changequote([,])dnl
+fi
+test -n "$PAGE" || PAGE=letter
+echo guessing $PAGE size paper
+AC_SUBST(PAGE)])dnl
+dnl
+define(GROFF_PERL_PATH,
+[echo checking for perl
+PERLPATH=
+saveifs="$IFS"; IFS="${IFS}:"
+for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/perl; then
+ PERLPATH="$dir/perl"
+ break
+ fi
+done
+IFS="$saveifs"
+AC_SUBST(PERLPATH)])dnl
+dnl
+define(GROFF_WCOREFLAG,
+[echo checking for w_coredump
+AC_TEST_PROGRAM([
+#include <sys/types.h>
+#include <sys/wait.h>
+main()
+{
+#ifdef WCOREFLAG
+ exit(1);
+#else
+ int i = 0;
+ ((union wait *)&i)->w_coredump = 1;
+ exit(i != 0200);
+#endif
+}
+],AC_DEFINE(WCOREFLAG,0200),,)])dnl
+dnl
+define(GROFF_MMAP,
+[AC_COMPILE_CHECK([mmap],[#include <sys/types.h>
+#include <sys/mman.h>],
+[char *p = mmap(0, 0, PROT_READ, MAP_PRIVATE, 0, 0); munmap(p, 0);],
+AC_DEFINE(HAVE_MMAP))])dnl
+dnl;
+define(GROFF_SYS_SIGLIST,
+[AC_COMPILE_CHECK([sys_siglist],,changequote(,)dnl
+[extern char *sys_siglist[]; sys_siglist[0] = 0;],changequote([,])dnl
+AC_DEFINE(HAVE_SYS_SIGLIST))])dnl
+dnl
+define(GROFF_COOKIE_BUG,
+[echo checking for gcc/g++ delete bug
+GROFF_CC_TEST_PROGRAM([
+#include <stdlib.h>
+#include <stddef.h>
+
+int testit = 0;
+
+int main()
+{
+ testit = 1;
+ int *p = new int;
+ delete p;
+ testit = 0;
+ exit(1);
+}
+
+static unsigned dummy[3];
+
+void *operator new(size_t n)
+{
+ if (testit) {
+ dummy[1] = -(unsigned)(dummy + 2);
+ return dummy + 2;
+ }
+ else
+ return (void *)malloc(n);
+}
+
+void operator delete(void *p)
+{
+ if (testit) {
+ if (p == dummy)
+ exit(0);
+ }
+ else
+ free(p);
+}
+],AC_DEFINE(COOKIE_BUG),,)])dnl
+dnl
+define(GROFF_CFRONT_ANSI_BUG,
+[AC_REQUIRE([GROFF_LIMITS_H])echo checking for cfront ANSI C INT_MIN bug
+GROFF_CC_TEST_PROGRAM([#include <stdlib.h>
+#ifdef HAVE_CC_LIMITS_H
+#include <limits.h>
+#else
+#define INT_MAX 2147483647
+#endif
+
+#undef INT_MIN
+#define INT_MIN (-INT_MAX-1)
+
+int main()
+{
+ int z = 0;
+ exit(INT_MIN < z);
+}
+],AC_DEFINE(CFRONT_ANSI_BUG),,)])dnl
+dnl
+define(GROFF_ARRAY_DELETE,
+[GROFF_CC_COMPILE_CHECK(new array delete syntax,,
+changequote(,)dnl
+[char *p = new char[5]; delete [] p;]
+changequote([,]),,AC_DEFINE(ARRAY_DELETE_NEEDS_SIZE))])dnl
+dnl
+define(GROFF_BROKEN_SPOOLER_FLAGS,
+[test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7
+echo using default value of ${BROKEN_SPOOLER_FLAGS} for grops -b option
+AC_SUBST(BROKEN_SPOOLER_FLAGS)])dnl
+dnl
+define(GROFF_PRINT,
+[AC_PROGRAMS_CHECK(PSPRINT,lpr lp)
+if test -n "$PSPRINT" && test -z "$DVIPRINT"
+then
+ if test "X$PSPRINT" = "Xlpr"
+ then
+ DVIPRINT="lpr -d"
+ else
+ DVIPRINT="$PSPRINT"
+ fi
+fi
+AC_SUBST(DVIPRINT)])dnl
+define(GROFF_GETOPT,
+[GROFF_CC_COMPILE_CHECK([declaration of getopt],[#include <stdlib.h>],
+[int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1;],
+AC_DEFINE(STDLIB_H_DECLARES_GETOPT))])dnl
+define(GROFF_PUTENV,
+[GROFF_CC_COMPILE_CHECK([declaration of putenv],[#include <stdlib.h>],
+[putenv((char *)0);],
+AC_DEFINE(STDLIB_H_DECLARES_PUTENV))])dnl
+define(GROFF_ETAGSCCFLAG,
+[echo checking for etags C++ option
+for flag in p C
+do
+ test -z "$ETAGSCCFLAG" || break
+ >conftest.c
+ (etags -$flag -o /dev/null conftest.c >/dev/null 2>&1) 2>/dev/null &&
+ ETAGSCCFLAG="-$flag"
+ rm -f conftest.c
+done
+AC_SUBST(ETAGSCCFLAG)])dnl
+define(GROFF_LIMITS_H,
+[AC_PROVIDE([$0])GROFF_CC_COMPILE_CHECK(['C++ <limits.h>'],
+[#include <limits.h>],
+[int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX;],
+AC_DEFINE(HAVE_CC_LIMITS_H))])dnl
+define(GROFF_TRADITIONAL_CPP,
+[GROFF_CC_COMPILE_CHECK([traditional preprocessor],
+[#define name2(a,b) a/**/b],[int name2(foo,bar);],
+AC_DEFINE(TRADITIONAL_CPP))])dnl
+define(GROFF_TIME_T,
+[GROFF_CC_COMPILE_CHECK([time_t],[#include <time.h>],
+[time_t t = time(0); struct tm *p = localtime(&t);],,
+AC_DEFINE(LONG_FOR_TIME_T))])dnl
+define(GROFF_UNISTD_H,
+[GROFF_CC_COMPILE_CHECK(['C++ <unistd.h>'],[#include <unistd.h>],
+[read(0, 0, 0);],AC_DEFINE(HAVE_CC_UNISTD_H))])dnl
diff --git a/addftinfo/Makefile.dep b/addftinfo/Makefile.dep
new file mode 100644
index 000000000..4583de263
--- /dev/null
+++ b/addftinfo/Makefile.dep
@@ -0,0 +1,3 @@
+addftinfo.o : addftinfo.cc ../include/lib.h ../include/errarg.h \
+ ../include/error.h ../include/stringclass.h ../include/cset.h guess.h
+guess.o : guess.cc guess.h
diff --git a/addftinfo/Makefile.sub b/addftinfo/Makefile.sub
new file mode 100644
index 000000000..95a8f5bf5
--- /dev/null
+++ b/addftinfo/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=addftinfo
+MAN1=addftinfo.n
+XLIBS=$(LIBGROFF)
+OBJS=addftinfo.o guess.o
+CCSRCS=addftinfo.cc guess.cc
+HDRS=guess.h
diff --git a/etc/addftinfo.c b/addftinfo/addftinfo.cc
index 19c7b2907..e6d96695c 100644
--- a/etc/addftinfo.c
+++ b/addftinfo/addftinfo.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/man/addftinfo.man b/addftinfo/addftinfo.man
index 7c937479f..4c92477c7 100644
--- a/man/addftinfo.man
+++ b/addftinfo/addftinfo.man
@@ -82,4 +82,4 @@ a Times font.
.BR font (5)
.BR groff_font (@MAN5EXT@),
.BR groff (@MAN1EXT@),
-.I "Groff Character Names"
+.BR groff_char (@MAN7EXT@)
diff --git a/etc/guess.c b/addftinfo/guess.cc
index 304e25f4d..44b5f914b 100644
--- a/etc/guess.c
+++ b/addftinfo/guess.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "guess.h"
diff --git a/etc/guess.h b/addftinfo/guess.h
index 6f1125650..6712045e1 100644
--- a/etc/guess.h
+++ b/addftinfo/guess.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct font_params {
diff --git a/afmtodit/Makefile.sub b/afmtodit/Makefile.sub
new file mode 100644
index 000000000..ef6e2617d
--- /dev/null
+++ b/afmtodit/Makefile.sub
@@ -0,0 +1,18 @@
+MAN1=afmtodit.n
+CLEANADD=afmtodit
+
+all: afmtodit
+
+afmtodit: afmtodit.pl
+ if test -n "$(PERLPATH)"; then \
+ sed -e 's;/usr/bin/perl;$(PERLPATH);' \
+ $(srcdir)/afmtodit.pl >afmtodit; \
+ else \
+ cp $(srcdir)/afmtodit.pl afmtodit; \
+ fi
+ chmod +x afmtodit
+
+install_data: afmtodit
+ -test -d $(bindir) || mkdir $(bindir)
+ -rm -f $(bindir)/afmtodit
+ $(INSTALL_PROGRAM) afmtodit $(bindir)/afmtodit
diff --git a/man/afmtodit.man b/afmtodit/afmtodit.man
index 9a85c9a03..dd83afd03 100644
--- a/man/afmtodit.man
+++ b/afmtodit/afmtodit.man
@@ -1,10 +1,20 @@
+.\" -*- nroff -*-
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH AFMTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
afmtodit \- create font files for use with groff \-Tps
.SH SYNOPSIS
.B afmtodit
[
-.B \-s
+.B \-ns
+]
+[
+.BI \-d desc_file
]
[
.BI \-e enc_file
@@ -59,7 +69,7 @@ will put it in the groff font file as an unnamed character,
which can be accessed by the
.B \eN
escape sequence in
-.BR gtroff .
+.BR troff .
The groff font file will be output to a file called
.IR font .
.LP
@@ -98,12 +108,24 @@ is the desired value of the corresponding parameter in thousandths of an em.
These parameters are normally needed only for italic (or oblique) fonts.
.SH OPTIONS
.TP
+.B \-n
+Don't output a
+.B ligatures
+command for this font.
+Use this with constant-width fonts.
+.TP
.B \-s
The font is special.
The effect of this option is to add the
.B special
command to the font file.
.TP
+.BI \-d desc_file
+The device description file is
+.I desc_file
+rather than the default
+.BR DESC .
+.TP
.BI \-e enc_file
The PostScript font should be reencoded to use the encoding described
in enc_file.
@@ -159,7 +181,7 @@ The font files distributed with groff were created using an option of
.B \-i50
for italic fonts.
.SH FILES
-.TP \w'\fB@FONTDIR@/devps/download'u+2n
+.Tp \w'\fB@FONTDIR@/devps/download'u+2n
.B @FONTDIR@/devps/DESC
Device desciption file.
.TP
diff --git a/ps/devps/afmtodit b/afmtodit/afmtodit.pl
index 3914b9729..1d1a24969 100755..100644
--- a/ps/devps/afmtodit
+++ b/afmtodit/afmtodit.pl
@@ -1,12 +1,12 @@
#! /usr/bin/perl -P- # -*- Perl -*-
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
+#Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+#Software Foundation; either version 2, or (at your option) any later
#version.
#
#groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,25 +15,27 @@
#for more details.
#
#You should have received a copy of the GNU General Public License along
-#with groff; see the file LICENSE. If not, write to the Free Software
+#with groff; see the file COPYING. If not, write to the Free Software
#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
$prog = $0;
+$prog =~ s@.*/@@;
do 'getopts.pl';
-do Getopts('e:sd:i:a:');
+do Getopts('e:sd:i:a:n');
if ($#ARGV != 2) {
- die "Usage: $prog [-s] [-e encoding] [-i n] [-a angle] afmfile mapfile font\n";
+ die "Usage: $prog [-ns] [-d DESC] [-e encoding] [-i n] [-a angle] afmfile mapfile font\n";
}
$afm = $ARGV[0];
$map = $ARGV[1];
$font = $ARGV[2];
+$desc = $opt_d || "DESC";
# read the afm file
-open(AFM, $afm) || die "Can't open " . $ARGV[0];
+open(AFM, $afm) || die "$prog: can't open \`$ARGV[0]': $!\n";
while (<AFM>) {
chop;
@@ -120,7 +122,7 @@ close(AFM);
$sizescale = 1;
-open(DESC, "DESC") || die "Can't open DESC";
+open(DESC, $desc) || die "$prog: can't open \`$desc': $!\n";
while (<DESC>) {
next if /^#/;
chop;
@@ -135,7 +137,7 @@ close(DESC);
if ($opt_e) {
# read the encoding file
- open(ENCODING, $opt_e) || die "Can't open $opt_e";
+ open(ENCODING, $opt_e) || die "$prog: can't open \`$opt_e': $!\n";
while (<ENCODING>) {
chop;
@field = split(' ');
@@ -151,7 +153,7 @@ if ($opt_e) {
# read the map file
-open(MAP, $map) || die "Can't open $map";
+open(MAP, $map) || die "$prog: can't open \`$map': $!\n";
while (<MAP>) {
next if /^#/;
chop;
@@ -182,7 +184,7 @@ $italic_angle = $opt_a if $opt_a;
# print it all out
-open(FONT, ">$font") || die "Can't open $font for output";
+open(FONT, ">$font") || die "$prog: can't open \`$font' for output: $!\n";
select(FONT);
print("name $font\n");
@@ -190,9 +192,14 @@ print("internalname $psname\n") if $psname;
print("special\n") if $opt_s;
printf("slant %g\n", $italic_angle) if $italic_angle != 0;
printf("spacewidth %d\n", do conv($width{"space"})) if defined $width{"space"};
-print("encoding $opt_e\n") if $opt_e;
-if ($#ligatures >= 0) {
+if ($opt_e) {
+ $e = $opt_e;
+ $e =~ s@.*/@@;
+ print("encoding $e\n");
+}
+
+if (!$opt_n && $#ligatures >= 0) {
print("ligatures");
foreach $lig (@ligatures) {
print(" $lig");
@@ -210,21 +217,29 @@ if ($#kern1 >= 0) {
&& $in_encoding{$c2} == 1 && $nmap{$c2} != 0) {
for ($j = 0; $j < $nmap{$c1}; $j++) {
for ($k = 0; $k < $nmap{$c2}; $k++) {
- printf("%s %s %d\n",
- $map{$c1,$j},
- $map{$c2,$k},
- do conv($kernx[$i]));
+ if ($kernx[$i] != 0) {
+ printf("%s %s %d\n",
+ $map{$c1,$j},
+ $map{$c2,$k},
+ do conv($kernx[$i]));
+ }
}
}
}
}
}
-# characters taller than asc_boundary are considered to have ascenders
-$asc_boundary = $height{"a"} + 50;
+# characters not shorter than asc_boundary are considered to have ascenders
+$asc_boundary = $height{"t"} - 1;
# likewise for descenders
-$desc_boundary = $depth{"a"} + 50;
+$desc_boundary = $depth{"g"};
+$desc_boundary = $depth{"j"} if $depth{"j"} < $desc_boundary;
+$desc_boundary = $depth{"p"} if $depth{"p"} < $desc_boundary;
+$desc_boundary = $depth{"q"} if $depth{"q"} < $desc_boundary;
+$desc_boundary = $depth{"y"} if $depth{"y"} < $desc_boundary;
+$desc_boundary -= 1;
+
if (defined $height{"x"}) {
$xheight = $height{"x"};
}
@@ -249,8 +264,8 @@ for ($i = 0; $i < 256; $i++) {
$h = 0 if $h < 0;
$d = $depth{$ch};
$d = 0 if $d < 0;
- $type = 1 if $d > $desc_boundary;
- $type += 2 if $h > $asc_boundary;
+ $type = 1 if $d >= $desc_boundary;
+ $type += 2 if $h >= $asc_boundary;
printf("%s\t%d", $map{$ch,"0"}, do conv($width{$ch}));
$italic_correction = 0;
$left_math_fit = 0;
diff --git a/c++test.c b/c++test.c
deleted file mode 100644
index 7b4a0c99b..000000000
--- a/c++test.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-
-struct A {
- A() { fputs("A\n", stdout); }
- ~A() { fputs("~A\n", stdout); }
-};
-
-A a;
-
-main()
-{
- return 0;
-}
diff --git a/c++test.ref b/c++test.ref
deleted file mode 100644
index f7cd656fa..000000000
--- a/c++test.ref
+++ /dev/null
@@ -1,2 +0,0 @@
-A
-~A
diff --git a/configure b/configure
new file mode 100755
index 000000000..19d89f912
--- /dev/null
+++ b/configure
@@ -0,0 +1,891 @@
+#!/bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf.
+# Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+
+# This program 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 2, or (at your option)
+# any later version.
+
+# This program 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, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create]
+# [--prefix=PREFIX] [--exec_prefix=PREFIX] [--with-PROGRAM] [TARGET]
+# Ignores all args except --srcdir, --prefix, --exec_prefix, and --no-create.
+
+trap 'rm -f conftest* core; exit 1' 1 3 15
+
+for arg
+do
+ # Handle --exec_prefix with a space before the argument.
+ if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
+ # Handle --host with a space before the argument.
+ elif test x$next_host = xyes; then next_host=
+ # Handle --prefix with a space before the argument.
+ elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
+ # Handle --srcdir with a space before the argument.
+ elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
+ else
+ case $arg in
+ -exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=*)
+ exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e)
+ next_exec_prefix=yes ;;
+
+ -gas | --gas | --ga | --g) ;;
+
+ -host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
+ -host | --host | --hos | --ho | --h)
+ next_host=yes ;;
+
+ -nfp | --nfp | --nf) ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre | --no-cr | --no-c | --no- | --no)
+ no_create=1 ;;
+
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ next_prefix=yes ;;
+
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
+ srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
+ next_srcdir=yes ;;
+
+ -with-* | --with-*) ;;
+
+ *) ;;
+ esac
+ fi
+done
+
+rm -f conftest*
+compile='${CC-cc} $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+unique_file=groff/groff.cc
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ srcdirdefaulted=yes; srcdir=.
+ if test ! -r $unique_file; then srcdir=..; fi
+fi
+if test ! -r $srcdir/$unique_file; then
+ if test x$srcdirdefaulted = xyes; then
+ echo "configure: Can not find sources in \`.' or \`..'." 1>&2
+ else
+ echo "configure: Can not find sources in \`${srcdir}'." 1>&2
+ fi
+ exit 1
+fi
+# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
+# But we can't avoid them for `..', to make subdirectories work.
+case $srcdir in
+ .|/*|~*) ;;
+ *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
+esac
+
+if test -z "$prefix"
+then
+ echo checking for grops to derive installation directory prefix
+ saveifs="$IFS"; IFS="$IFS:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test $dir != . && test -f $dir/grops; then
+ # Not all systems have dirname.
+ prefix=`echo $dir|sed 's,/[^/][^/]*$,,'`
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+if test -z "$prefix"
+then
+ echo checking for gcc to derive installation directory prefix
+ saveifs="$IFS"; IFS="$IFS:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test $dir != . && test -f $dir/gcc; then
+ # Not all systems have dirname.
+ prefix=`echo $dir|sed 's,/[^/][^/]*$,,'`
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+
+if test -z "$CC"; then
+ echo checking for gcc
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/gcc; then
+ CC="gcc"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$CC" && CC="cc"
+
+# Find out if we are using GNU C, under whatever name.
+cat <<EOF > conftest.c
+#ifdef __GNUC__
+ yes
+#endif
+EOF
+${CC-cc} -E conftest.c > conftest.out 2>&1
+if egrep yes conftest.out >/dev/null 2>&1; then
+ GCC=1 # For later tests.
+ CC="$CC -O"
+fi
+rm -f conftest*
+
+cc_compile='$CCC conftest.cc -o conftest $CCLIBS $LIBS >/dev/null 2>&1'
+
+if test -z "$CCC"; then
+# See whether the C compiler is also a C++ compiler.
+echo checking if C compiler is also a C++ compiler
+cat <<EOF > conftest.cc
+#ifdef __cplusplus
+ yes
+#endif
+EOF
+$CC -E conftest.cc >conftest.out 2>&1
+if egrep yes conftest.out >/dev/null 2>&1; then
+ CCC="$CC"
+fi
+fi
+if test -z "$CCC"; then
+ echo checking for g++
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/g++; then
+ CCC="g++"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$CCC" && CCC=""
+
+if test -z "$CCC"; then
+ echo checking for CC
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/CC; then
+ CCC="CC"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$CCC" && CCC=""
+
+if test -z "$CCC"; then
+ echo checking for cc++
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/cc++; then
+ CCC="cc++"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$CCC" && CCC=""
+
+if test -z "$CCC"; then
+cat <<EOM
+This package requires a C++ compiler, but I couldn't find one.
+Set the environment variable CCC to the name of your C++ compiler.
+EOM
+rm -f conftest* core; exit 1
+fi
+echo checking that C++ compiler can compile very simple C++ program
+cat <<EOF > conftest.cc
+
+extern "C" { void exit(int); }
+int main() { exit(0); }
+
+EOF
+rm -f conftest
+eval $cc_compile
+if test -s conftest && (./conftest) 2>/dev/null; then
+ :
+else
+ cat <<EOM
+$CCC was unable successfully to compile a very simple C++ program
+(the C++ program was in a file with a suffix of .cc)
+EOM
+rm -f conftest* core; exit 1
+
+fi
+rm -f conftest*
+echo checking that C++ static constructors and destructors are called
+cat <<EOF > conftest.cc
+
+extern "C" {
+ void exit(int);
+ void _exit(int);
+}
+int i;
+struct A {
+ char dummy;
+ A() { i = 1; }
+ ~A() { if (i == 1) _exit(0); }
+};
+A a;
+main() { exit(1); }
+
+EOF
+rm -f conftest
+eval $cc_compile
+if test -s conftest && (./conftest) 2>/dev/null; then
+ :
+else
+ cat <<EOM
+$CCC is not installed correctly: static constructors and destructors do not work
+EOM
+rm -f conftest* core; exit 1
+
+fi
+rm -f conftest*
+echo checking for C++ header files
+cat <<EOF >conftest.cc
+#include <stdio.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { fputs(0, 0); }
+EOF
+if eval $cc_compile; then
+ :
+else
+ cat <<\EOF
+Your header files do not appear to support C++.
+I was unable to compile and link a simple C++ program that used a function
+declared in <stdio.h>.
+If you're using gcc/g++, you should install libg++.
+EOF
+rm -f conftest* core; exit 1
+fi
+rm -f conftest*
+if test "$CCC" = gcc; then CCC="gcc -O"; fi
+if test "$CCC" = "g++"; then CCC="g++ -O"; fi
+for p in lpr lp
+do
+if test -z "$PSPRINT"; then
+ echo checking for $p
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/$p; then
+ PSPRINT="$p"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$PSPRINT" && PSPRINT=""
+
+test -n "$PSPRINT" && break
+done
+
+if test -n "$PSPRINT" && test -z "$DVIPRINT"
+then
+ if test "X$PSPRINT" = "Xlpr"
+ then
+ DVIPRINT="lpr -d"
+ else
+ DVIPRINT="$PSPRINT"
+ fi
+fi
+
+echo checking for perl
+PERLPATH=
+saveifs="$IFS"; IFS="${IFS}:"
+for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/perl; then
+ PERLPATH="$dir/perl"
+ break
+ fi
+done
+IFS="$saveifs"
+
+if test -z "$YACC"; then
+ echo checking for bison
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/bison; then
+ YACC="bison -y"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$YACC" && YACC=""
+
+if test -z "$YACC"; then
+ echo checking for byacc
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/byacc; then
+ YACC="byacc"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$YACC" && YACC="yacc"
+
+
+if test -z "$RANLIB"; then
+ echo checking for ranlib
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ if test -f $dir/ranlib; then
+ RANLIB="ranlib"
+ break
+ fi
+ done
+ IFS="$saveifs"
+fi
+test -z "$RANLIB" && RANLIB="@:"
+
+# Make sure to not get the incompatible SysV /etc/install and
+# /usr/sbin/install, which might be in PATH before a BSD-like install,
+# or the SunOS /usr/etc/install directory.
+if test -z "$INSTALL"; then
+ echo checking for install
+ saveifs="$IFS"; IFS="${IFS}:"
+ for dir in $PATH; do
+ test -z "$dir" && dir=.
+ case $dir in
+ /etc|/usr/sbin|/usr/etc) ;;
+ *)
+ if test -f $dir/install; then
+ INSTALL="$dir/install -c"
+ INSTALL_PROGRAM='$(INSTALL)'
+ INSTALL_DATA='$(INSTALL) -m 644'
+ break
+ fi
+ ;;
+ esac
+ done
+ IFS="$saveifs"
+fi
+INSTALL=${INSTALL-cp}
+INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'}
+INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'}
+
+echo checking for ln -s
+rm -f conftestdata
+if ln -s X conftestdata 2>/dev/null
+then
+ rm -f conftestdata
+ LN_S="ln -s"
+else
+ LN_S=ln
+fi
+
+
+echo checking for etags C++ option
+for flag in p C
+do
+ test -z "$ETAGSCCFLAG" || break
+ >conftest.c
+ (etags -$flag -o /dev/null conftest.c >/dev/null 2>&1) 2>/dev/null &&
+ ETAGSCCFLAG="-$flag"
+ rm -f conftest.c
+done
+
+echo checking for unistd.h
+echo checking how to run the C preprocessor
+if test -z "$CPP"; then
+ CPP='${CC-cc} -E'
+ cat <<EOF > conftest.c
+
+#include <stdio.h>
+EOF
+err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
+if test -z "$err"; then
+ :
+else
+ CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+
+cat <<EOF > conftest.c
+
+#include <unistd.h>
+EOF
+err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
+if test -z "$err"; then
+ DEFS="$DEFS -DHAVE_UNISTD_H=1"
+fi
+rm -f conftest*
+
+for hdr in dirent.h limits.h sys/dir.h
+do
+trfrom='[a-z]./' trto='[A-Z]__'
+echo checking for $hdr
+cat <<EOF > conftest.c
+
+#include <$hdr>
+EOF
+err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
+if test -z "$err"; then
+ DEFS="$DEFS -DHAVE_`echo $hdr|tr "$trfrom" "$trto"`=1"
+fi
+rm -f conftest*
+done
+
+echo checking for 'C++ <limits.h>'
+cat <<EOF >conftest.cc
+#include <limits.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; }
+EOF
+if eval $cc_compile; then
+ DEFS="$DEFS -DHAVE_CC_LIMITS_H=1"
+fi
+rm -f conftest*
+echo checking for 'C++ <unistd.h>'
+cat <<EOF >conftest.cc
+#include <unistd.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { read(0, 0, 0); }
+EOF
+if eval $cc_compile; then
+ DEFS="$DEFS -DHAVE_CC_UNISTD_H=1"
+fi
+rm -f conftest*
+echo checking for declaration of getopt
+cat <<EOF >conftest.cc
+#include <stdlib.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1; }
+EOF
+if eval $cc_compile; then
+ DEFS="$DEFS -DSTDLIB_H_DECLARES_GETOPT=1"
+fi
+rm -f conftest*
+echo checking for declaration of putenv
+cat <<EOF >conftest.cc
+#include <stdlib.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { putenv((char *)0); }
+EOF
+if eval $cc_compile; then
+ DEFS="$DEFS -DSTDLIB_H_DECLARES_PUTENV=1"
+fi
+rm -f conftest*
+echo checking for time_t
+cat <<EOF >conftest.cc
+#include <time.h>
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { time_t t = time(0); struct tm *p = localtime(&t); }
+EOF
+if eval $cc_compile; then
+ :
+else
+ DEFS="$DEFS -DLONG_FOR_TIME_T=1"
+fi
+rm -f conftest*
+echo checking for mmap
+echo "#include <sys/types.h>
+#include <sys/mman.h>
+main() { exit(0); } t() { char *p = mmap(0, 0, PROT_READ, MAP_PRIVATE, 0, 0); munmap(p, 0); }" > conftest.c
+if eval $compile; then
+ DEFS="$DEFS -DHAVE_MMAP=1"
+fi
+rm -f conftest*
+
+echo checking for vfork.h
+cat <<EOF > conftest.c
+
+#include <vfork.h>
+EOF
+err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
+if test -z "$err"; then
+ DEFS="$DEFS -DHAVE_VFORK_H=1"
+fi
+rm -f conftest*
+
+echo checking for working vfork
+cat <<EOF > conftest.c
+/* Thanks to Paul Eggert for this test. */
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_VFORK_H
+#include <vfork.h>
+#endif
+main() {
+ pid_t parent = getpid();
+ pid_t child = vfork();
+
+ if (child == 0) {
+ /* On sparc systems, changes by the child to local and incoming
+ argument registers are propagated back to the parent.
+ The compiler is told about this with #include <vfork.h>,
+ but some compilers (e.g. gcc -O) don't grok <vfork.h>.
+ Test for this by using lots of local variables, at least
+ as many local variables as main has allocated so far
+ including compiler temporaries. 4 locals are enough for
+ gcc 1.40.3 on a sparc, but we use 8 to be safe.
+ A buggy compiler should reuse the register of parent
+ for one of the local variables, since it will think that
+ parent can't possibly be used any more in this routine.
+ Assigning to the local variable will thus munge parent
+ in the parent process. */
+ pid_t
+ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+ /* Convince the compiler that p..p7 are live; otherwise, it might
+ use the same hardware register for all 8 local variables. */
+ if (p != p1 || p != p2 || p != p3 || p != p4
+ || p != p5 || p != p6 || p != p7)
+ _exit(1);
+
+ /* On some systems (e.g. IRIX 3.3),
+ vfork doesn't separate parent from child file descriptors.
+ If the child closes a descriptor before it execs or exits,
+ this munges the parent's descriptor as well.
+ Test for this by closing stdout in the child. */
+ _exit(close(fileno(stdout)) != 0);
+ } else {
+ int status;
+ struct stat st;
+
+ while (wait(&status) != child)
+ ;
+ exit(
+ /* Was there some problem with vforking? */
+ child < 0
+
+ /* Did the child fail? (This shouldn't happen.) */
+ || status
+
+ /* Did the vfork/compiler bug occur? */
+ || parent != getpid()
+
+ /* Did the file descriptor bug occur? */
+ || fstat(fileno(stdout), &st) != 0
+ );
+ }
+}
+EOF
+eval $compile
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+ :
+else
+ DEFS="$DEFS -Dvfork=fork"
+fi
+rm -f conftest*
+saved_libs="$LIBS"
+LIBS="$LIBS -lm"
+for func in fmod strtol getcwd strerror
+do
+echo checking for ${func}
+echo "
+main() { exit(0); } t() {
+/* Override any gcc2 internal prototype to avoid an error. */
+extern char ${func}(); ${func}(); }" > conftest.c
+if eval $compile; then
+ :
+else
+ LIBOBJS="$LIBOBJS ${func}.o"
+fi
+rm -f conftest*
+
+done
+
+LIBS="$saved_libs"
+for func in rename mkstemp
+do
+trfrom='[a-z]' trto='[A-Z]'
+echo checking for ${func}
+echo "
+main() { exit(0); } t() {
+/* Override any gcc2 internal prototype to avoid an error. */
+extern char ${func}(); ${func}(); }" > conftest.c
+if eval $compile; then
+ DEFS="$DEFS -DHAVE_`echo $func|tr "$trfrom" "$trto"`=1"
+fi
+rm -f conftest*
+done
+
+echo checking for sys_siglist
+echo "
+main() { exit(0); } t() { extern char *sys_siglist[]; sys_siglist[0] = 0; }" > conftest.c
+if eval $compile; then
+ DEFS="$DEFS -DHAVE_SYS_SIGLIST=1"
+fi
+rm -f conftest*
+
+echo checking for gcc/g++ delete bug
+cat <<EOF > conftest.cc
+
+#include <stdlib.h>
+#include <stddef.h>
+
+int testit = 0;
+
+int main()
+{
+ testit = 1;
+ int *p = new int;
+ delete p;
+ testit = 0;
+ exit(1);
+}
+
+static unsigned dummy[3];
+
+void *operator new(size_t n)
+{
+ if (testit) {
+ dummy[1] = -(unsigned)(dummy + 2);
+ return dummy + 2;
+ }
+ else
+ return (void *)malloc(n);
+}
+
+void operator delete(void *p)
+{
+ if (testit) {
+ if (p == dummy)
+ exit(0);
+ }
+ else
+ free(p);
+}
+
+EOF
+rm -f conftest
+eval $cc_compile
+if test -s conftest && (./conftest) 2>/dev/null; then
+ DEFS="$DEFS -DCOOKIE_BUG=1"
+fi
+rm -f conftest*
+echo checking for cfront ANSI C INT_MIN bug
+cat <<EOF > conftest.cc
+#include <stdlib.h>
+#ifdef HAVE_CC_LIMITS_H
+#include <limits.h>
+#else
+#define INT_MAX 2147483647
+#endif
+
+#undef INT_MIN
+#define INT_MIN (-INT_MAX-1)
+
+int main()
+{
+ int z = 0;
+ exit(INT_MIN < z);
+}
+
+EOF
+rm -f conftest
+eval $cc_compile
+if test -s conftest && (./conftest) 2>/dev/null; then
+ DEFS="$DEFS -DCFRONT_ANSI_BUG=1"
+fi
+rm -f conftest*
+echo checking for new array delete syntax
+cat <<EOF >conftest.cc
+
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { char *p = new char[5]; delete [] p;
+ }
+EOF
+if eval $cc_compile; then
+ :
+else
+ DEFS="$DEFS -DARRAY_DELETE_NEEDS_SIZE=1"
+fi
+rm -f conftest*
+echo checking for traditional preprocessor
+cat <<EOF >conftest.cc
+#define name2(a,b) a/**/b
+extern "C" { void exit(int); }
+int main() { exit(0); } void t() { int name2(foo,bar); }
+EOF
+if eval $cc_compile; then
+ DEFS="$DEFS -DTRADITIONAL_CPP=1"
+fi
+rm -f conftest*
+echo checking for w_coredump
+cat <<EOF > conftest.c
+
+#include <sys/types.h>
+#include <sys/wait.h>
+main()
+{
+#ifdef WCOREFLAG
+ exit(1);
+#else
+ int i = 0;
+ ((union wait *)&i)->w_coredump = 1;
+ exit(i != 0200);
+#endif
+}
+
+EOF
+eval $compile
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+ DEFS="$DEFS -DWCOREFLAG=0200"
+fi
+rm -f conftest*
+test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7
+echo using default value of ${BROKEN_SPOOLER_FLAGS} for grops -b option
+
+
+if test -z "$PAGE" && test -r $prefix/lib/groff/font/devps/DESC
+then
+ if grep "^paperlength 841890" \
+ $prefix/lib/groff/font/devps/DESC >/dev/null 2>&1
+ then
+ PAGE=A4
+ else
+ PAGE=letter
+ fi
+fi
+if test -z "$PAGE"
+then
+ dom=`awk '($1 == "dom" || $1 == "search") { print $2; exit}' \
+ /etc/resolv.conf 2>/dev/null`
+
+ if test -z "$dom"
+ then
+ dom=`(domainname) 2>/dev/null | tr -d '+'`
+ if test -z "$dom"
+ then
+ dom=`(hostname) 2>/dev/null | grep '\.'`
+ fi
+ fi
+
+ # If the top-level domain is two letters and it's not `us' or `ca'
+ # then they probably use A4 paper.
+ case "$dom" in
+ *.[Uu][Ss]|*.[Cc][Aa]) ;;
+ *.[A-Za-z][A-Za-z]) PAGE=A4 ;;
+ esac
+fi
+test -n "$PAGE" || PAGE=letter
+echo guessing $PAGE size paper
+
+if test -n "$prefix"; then
+ test -z "$exec_prefix" && exec_prefix='$(prefix)'
+ prsub="s,^prefix[ ]*=.*$,prefix = $prefix,"
+fi
+if test -n "$exec_prefix"; then
+ prsub="$prsub
+s,^exec_prefix[ ]*=.*$,exec_prefix = $exec_prefix,"
+fi
+
+trap 'rm -f config.status; exit 1' 1 3 15
+echo creating config.status
+rm -f config.status
+cat <<EOF > config.status
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows:
+# $0 $*
+
+case "\$1" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ exec /bin/sh $0 $* ;;
+esac
+
+trap 'rm -f Makefile; exit 1' 1 3 15
+CC='$CC'
+CCLIBS='$CCLIBS'
+CCC='$CCC'
+PSPRINT='$PSPRINT'
+DVIPRINT='$DVIPRINT'
+PERLPATH='$PERLPATH'
+YACC='$YACC'
+RANLIB='$RANLIB'
+INSTALL='$INSTALL'
+INSTALL_PROGRAM='$INSTALL_PROGRAM'
+INSTALL_DATA='$INSTALL_DATA'
+LN_S='$LN_S'
+ETAGSCCFLAG='$ETAGSCCFLAG'
+CPP='$CPP'
+LIBOBJS='$LIBOBJS'
+BROKEN_SPOOLER_FLAGS='$BROKEN_SPOOLER_FLAGS'
+PAGE='$PAGE'
+LIBS='$LIBS'
+srcdir='$srcdir'
+DEFS='$DEFS'
+prefix='$prefix'
+exec_prefix='$exec_prefix'
+prsub='$prsub'
+EOF
+cat <<\EOF >> config.status
+
+top_srcdir=$srcdir
+for file in Makefile; do
+ srcdir=$top_srcdir
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ dir=`echo $file|sed 's,/[^/][^/]*$,,'`
+ if test "$dir" != "$file"; then
+ test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
+ test ! -d $dir && mkdir $dir
+ fi
+ echo creating $file
+ rm -f $file
+ echo "# Generated automatically from `basename $file`.in by configure." > $file
+ sed -e "
+$prsub
+s,@CC@,$CC,g
+s,@CCLIBS@,$CCLIBS,g
+s,@CCC@,$CCC,g
+s,@PSPRINT@,$PSPRINT,g
+s,@DVIPRINT@,$DVIPRINT,g
+s,@PERLPATH@,$PERLPATH,g
+s,@YACC@,$YACC,g
+s,@RANLIB@,$RANLIB,g
+s,@INSTALL@,$INSTALL,g
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,g
+s,@INSTALL_DATA@,$INSTALL_DATA,g
+s,@LN_S@,$LN_S,g
+s,@ETAGSCCFLAG@,$ETAGSCCFLAG,g
+s,@CPP@,$CPP,g
+s,@LIBOBJS@,$LIBOBJS,g
+s,@BROKEN_SPOOLER_FLAGS@,$BROKEN_SPOOLER_FLAGS,g
+s,@PAGE@,$PAGE,g
+s,@LIBS@,$LIBS,g
+s,@srcdir@,$srcdir,g
+s,@DEFS@,$DEFS," $top_srcdir/${file}.in >> $file
+done
+
+EOF
+chmod +x config.status
+test -n "$no_create" || ./config.status
+
diff --git a/configure.in b/configure.in
new file mode 100644
index 000000000..e05b370c2
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,43 @@
+dnl Process this file with autoconf to produce a configure script.
+include([acgroff.m4])dnl
+AC_INIT(groff/groff.cc)
+GROFF_PREFIX
+dnl checks for programs
+AC_PROG_CC
+GROFF_PROG_CCC
+GROFF_PRINT
+GROFF_PERL_PATH
+AC_PROG_YACC
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+AC_LN_S
+GROFF_ETAGSCCFLAG
+dnl checks for headers
+AC_UNISTD_H
+AC_HAVE_HEADERS(dirent.h limits.h sys/dir.h)
+GROFF_LIMITS_H
+GROFF_UNISTD_H
+GROFF_GETOPT
+GROFF_PUTENV
+dnl checks for typedefs
+GROFF_TIME_T
+dnl checks for functions
+GROFF_MMAP
+AC_VFORK
+saved_libs="$LIBS"
+LIBS="$LIBS -lm"
+AC_REPLACE_FUNCS(fmod strtol getcwd strerror)
+LIBS="$saved_libs"
+AC_HAVE_FUNCS(rename mkstemp)
+GROFF_SYS_SIGLIST
+dnl checks for compiler characteristics
+GROFF_COOKIE_BUG
+GROFF_CFRONT_ANSI_BUG
+GROFF_ARRAY_DELETE
+GROFF_TRADITIONAL_CPP
+dnl checks for operating system services
+GROFF_WCOREFLAG
+dnl other random stuff
+GROFF_BROKEN_SPOOLER_FLAGS
+GROFF_PAGE
+AC_OUTPUT(Makefile)
diff --git a/tty/devascii/DESC.proto b/devascii/DESC.proto
index 882ff5e47..88399ab16 100644
--- a/tty/devascii/DESC.proto
+++ b/devascii/DESC.proto
@@ -5,3 +5,4 @@ unitwidth 10
sizes 10 0
fonts 4 R I B BI
tcommand
+postpro grotty
diff --git a/devascii/Makefile.sub b/devascii/Makefile.sub
new file mode 100644
index 000000000..238f7b742
--- /dev/null
+++ b/devascii/Makefile.sub
@@ -0,0 +1,31 @@
+DEV=ascii
+FONTS=R I B BI
+DEVFILES=$(FONTS) DESC
+CLEANADD=$(FONTS) DESC
+
+RES=240
+CPI=10
+LPI=6
+
+$(FONTS): R.proto
+ @echo Making $@
+ @-rm -f $@
+ @(charwidth=`expr $(RES) / $(CPI)` ; \
+ sed -e "s/^name [A-Z]*$$/name $@/" \
+ -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \
+ -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
+ -e "s/^internalname .*$$/internalname $@/" \
+ -e "/^internalname/s/BI/3/" \
+ -e "/^internalname/s/B/2/" \
+ -e "/^internalname/s/I/1/" \
+ -e "/^internalname .*[^ 0-9]/d" \
+ $(srcdir)/R.proto >$@)
+
+DESC: DESC.proto
+ @echo Making $@
+ @-rm -f $@
+ @sed -e "s/^res .*$$/res $(RES)/" \
+ -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
+ -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
+ -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
+ $(srcdir)/DESC.proto >$@
diff --git a/tty/devascii/R.proto b/devascii/R.proto
index 29bec7f97..876c74c4a 100644
--- a/tty/devascii/R.proto
+++ b/devascii/R.proto
@@ -15,6 +15,7 @@ Do "
' 24 0 0047
aa "
fm "
+aq "
( 24 0 0050
) 24 0 0051
* 24 0 0052
@@ -26,9 +27,11 @@ pl "
hy "
- "
mi "
+en "
. 24 0 0056
/ 24 0 0057
sl "
+f/ "
0 24 0 0060
1 24 0 0061
2 24 0 0062
@@ -43,40 +46,56 @@ sl "
; 24 0 0073
< 24 0 0074
la "
+fo "
= 24 0 0075
eq "
> 24 0 0076
ra "
+fc "
? 24 0 0077
@ 24 0 0100
at "
A 24 0 0101
+*A "
B 24 0 0102
+*B "
C 24 0 0103
D 24 0 0104
E 24 0 0105
+*E "
F 24 0 0106
G 24 0 0107
H 24 0 0110
+*Y "
I 24 0 0111
+*I "
J 24 0 0112
K 24 0 0113
+*K "
L 24 0 0114
M 24 0 0115
+*M "
N 24 0 0116
+*N "
O 24 0 0117
ci "
+*O "
P 24 0 0120
+*R "
Q 24 0 0121
R 24 0 0122
S 24 0 0123
T 24 0 0124
+*T "
U 24 0 0125
V 24 0 0126
W 24 0 0127
X 24 0 0130
+*X "
Y 24 0 0131
+*U "
Z 24 0 0132
+*Z "
[ 24 0 0133
lB "
\ 24 0 0134
@@ -85,6 +104,7 @@ rs "
rB "
a^ 24 0 0136
^ "
+ha "
_ 24 0 0137
ru "
ul "
@@ -100,13 +120,14 @@ f 24 0 0146
g 24 0 0147
h 24 0 0150
i 24 0 0151
+.i "
j 24 0 0152
k 24 0 0153
l 24 0 0154
m 24 0 0155
n 24 0 0156
o 24 0 0157
-bu "
+*o "
p 24 0 0160
q 24 0 0161
r 24 0 0162
@@ -126,8 +147,19 @@ or "
bv "
br "
| "
+lb "
+lc "
+lf "
+lk "
+lt "
+rb "
+rc "
+rf "
+rk "
+rt "
rC 24 0 0175
} "
a~ 24 0 0176
~ "
ap "
+ti "
diff --git a/dvi/devdvi/B b/devdvi/B
index 240731a75..240731a75 100644
--- a/dvi/devdvi/B
+++ b/devdvi/B
diff --git a/dvi/devdvi/BI b/devdvi/BI
index 36da04044..16d0193c4 100644
--- a/dvi/devdvi/BI
+++ b/devdvi/BI
@@ -161,10 +161,16 @@ e d -61749
e c -61749
e g -61749
e q -61749
+Fn ' 111848
f ' 111848
+Fn ? 111848
f ? 111848
+Fn ! 111848
f ! 111848
+Fn ) 111848
f ) 111848
+Fn rB 111848
+Fn ] 111848
f rB 111848
f ] 111848
l l 61749
@@ -315,7 +321,8 @@ b 558070,728178,0,82430,-34078,82430 2 0142
c 558070,466034,0,54760,-34078,54760 0 0143
d 619819,728178,0,113890,-34078,113890 2 0144
e 558070,466034,0,89131,-34078,89131 0 0145
-f 419432,728178,203890,228357,112722,116509 3 0146
+Fn 419432,728178,203890,228357,112722,116509 3 0146
+f "
g 558070,466034,203890,110102,-35829,71266 1 0147
h 619819,728178,0,98840,0,98840 2 0150
i 372824,726931,0,119403,-17669,119403 2 0151
diff --git a/dvi/devdvi/CW b/devdvi/CW
index 254764821..fd94235ce 100644
--- a/dvi/devdvi/CW
+++ b/devdvi/CW
@@ -61,6 +61,7 @@ $ "
+ 550498,556326,-84470 2 0053
, 550498,131072,145635 1 0054
\- 550498,556326,-84470 2 0055
+- "
. 550498,131072 0 0056
sl 550498,728178,87379 3 0057
/ "
diff --git a/dvi/devdvi/DESC b/devdvi/DESC.in
index 46214b065..b605255d4 100644
--- a/dvi/devdvi/DESC
+++ b/devdvi/DESC.in
@@ -5,5 +5,6 @@ hor 1
vert 1
sizes 500 600 700 800 900 1000 1100 1200 1400 1440 1600 1728 1800
2000 2074 2200 2400 2488 2800 3600 0
-fonts 8 R I B BI MI S EX CW
+fonts 13 R I B BI 0 0 0 0 0 MI S EX CW
tcommand
+postpro grodvi
diff --git a/dvi/devdvi/EX b/devdvi/EX
index 6e83d02bd..6e83d02bd 100644
--- a/dvi/devdvi/EX
+++ b/devdvi/EX
diff --git a/dvi/devdvi/H b/devdvi/H
index 96ae0f5fe..96ae0f5fe 100644
--- a/dvi/devdvi/H
+++ b/devdvi/H
diff --git a/dvi/devdvi/HB b/devdvi/HB
index aaff89681..aaff89681 100644
--- a/dvi/devdvi/HB
+++ b/devdvi/HB
diff --git a/dvi/devdvi/HI b/devdvi/HI
index dcfcced1a..dcfcced1a 100644
--- a/dvi/devdvi/HI
+++ b/devdvi/HI
diff --git a/dvi/devdvi/I b/devdvi/I
index f1b4c0eb1..a46501669 100644
--- a/dvi/devdvi/I
+++ b/devdvi/I
@@ -162,10 +162,16 @@ e d -53594
e c -53594
e g -53594
e q -53594
+Fn ' 109373
f ' 109373
+Fn ? 109373
f ? 109373
+Fn ! 109373
f ! 109373
+Fn ) 109373
f ) 109373
+Fn rB 109373
+Fn ] 109373
f rB 109373
f ] 109373
l l 53594
@@ -316,7 +322,8 @@ b 482342,728178,0,66190,-46677,66190 2 0142
c 482342,451470,0,59274,-46677,59274 0 0143
d 535936,728178,0,108354,-46677,108354 2 0144
e 482342,451470,0,78789,-46677,78789 0 0145
-f 321562,728178,203890,222240,104566,112867 3 0146
+Fn 321562,728178,203890,222240,104566,112867 3 0146
+f "
g 482342,451470,203890,92770,-21045,55147 1 0147
h 535936,728178,0,80440,0,80440 2 0150
i 321562,687194,0,106846,-32427,106846 2 0151
diff --git a/dvi/devdvi/MI b/devdvi/MI
index c48d5ca76..2b2e3491b 100644
--- a/dvi/devdvi/MI
+++ b/devdvi/MI
@@ -41,11 +41,11 @@ char181 631819,451470,203890 1 0026
*q 683034,728178,203890,37622 3 0040
*w 652691,451470,0,37622 0 0041
--- 488970,451470 0 0042
---- 620170,728178 2 0043
---- 868357,451470,0,29128 0 0044
++h 620170,728178 2 0043
++p 868357,451470,0,29128 0 0044
--- 542130,451470,203890 1 0045
ts 380474,451470,101946,83739 1 0046
---- 685944,451470,203890 1 0047
++f 685944,451470,203890 1 0047
--- 1048579,384696,-139592 0 0050
--- 1048579,384696,-139592 0 0051
--- 1048579,384696,-139592 0 0052
diff --git a/devdvi/Makefile.sub b/devdvi/Makefile.sub
new file mode 100644
index 000000000..8c3248fdf
--- /dev/null
+++ b/devdvi/Makefile.sub
@@ -0,0 +1,11 @@
+DEV=dvi
+DEVFILES=DESC R I B BI CW MI S EX H HI HB SA SB \
+ generate/CompileFonts generate/Makefile generate/msam.map generate/msbm.map \
+ generate/texb.map generate/texex.map generate/texi.map generate/texmi.map \
+ generate/texr.map generate/texsy.map generate/textt.map
+
+CLEANADD=DESC
+
+DESC: DESC.in
+ cat $(srcdir)/DESC.in >DESC
+ test -z '$(DVIPRINT)' || echo print '$(DVIPRINT)' >>DESC
diff --git a/dvi/devdvi/R b/devdvi/R
index 3e49b938e..3e49b938e 100644
--- a/dvi/devdvi/R
+++ b/devdvi/R
diff --git a/dvi/devdvi/S b/devdvi/S
index 11b79ff9c..11b79ff9c 100644
--- a/dvi/devdvi/S
+++ b/devdvi/S
diff --git a/dvi/devdvi/SA b/devdvi/SA
index e0768c0b6..f2b258f16 100644
--- a/dvi/devdvi/SA
+++ b/devdvi/SA
@@ -10,7 +10,8 @@ boxtimes 815562,709446 2 0002
square 815562,709446 2 0003
blacksquare 815562,709446 2 0004
centerdot 291272,576570 2 0005
-lozenge 699053,728178,116509 3 0006
+lz 699053,728178,116509 3 0006
+lozenge "
blacklozenge 699053,728178,116509 3 0007
circlearrowright 815562,610248,85960 3 0010
circlearrowleft 815562,610248,85960 3 0011
diff --git a/dvi/devdvi/SB b/devdvi/SB
index a4be59db2..a4be59db2 100644
--- a/dvi/devdvi/SB
+++ b/devdvi/SB
diff --git a/dvi/devdvi/CompileFonts b/devdvi/generate/CompileFonts
index 8859f8ea8..8859f8ea8 100755
--- a/dvi/devdvi/CompileFonts
+++ b/devdvi/generate/CompileFonts
diff --git a/devdvi/generate/Makefile b/devdvi/generate/Makefile
new file mode 100644
index 000000000..f133ab620
--- /dev/null
+++ b/devdvi/generate/Makefile
@@ -0,0 +1,93 @@
+#Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# This is set up so you can do:
+# make -f generate/Makefile
+# in the parent directory of the directory containing this file.
+
+srcdir=.
+tfmdir=/usr/local/lib/groff-tfm
+gfdir=/usr/local/lib/groff-gf
+
+TFMTODIT=tfmtodit
+FONTS=R I B BI CW MI S EX H HI HB SA SB
+SPECIALFLAG=-s
+
+all: $(FONTS)
+
+# R is special because it contains \(pl \(eq
+
+R: $(srcdir)/texr.map
+ $(TFMTODIT) $(SPECIALFLAG) -g $(gfdir)/cmr10.300gf \
+ $(tfmdir)/cmr10.tfm $(srcdir)/texr.map $@
+
+# I is special because it contains \(Po
+
+I: $(srcdir)/texi.map
+ $(TFMTODIT) $(SPECIALFLAG) -g $(gfdir)/cmti10.300gf \
+ $(tfmdir)/cmti10.tfm $(srcdir)/texi.map $@
+
+B: $(srcdir)/texb.map
+ $(TFMTODIT) -g $(gfdir)/cmbx10.300gf \
+ $(tfmdir)/cmbx10.tfm $(srcdir)/texb.map $@
+
+BI: $(srcdir)/texi.map
+ $(TFMTODIT) -g $(gfdir)/cmbxti10.300gf \
+ $(tfmdir)/cmbxti10.tfm $(srcdir)/texi.map $@
+
+# CW is special because it contains "
+
+CW: $(srcdir)/textt.map
+ $(TFMTODIT) $(SPECIALFLAG) $(tfmdir)/cmtt10.tfm $(srcdir)/textt.map $@
+
+MI: $(srcdir)/texmi.map
+ $(TFMTODIT) $(SPECIALFLAG) -k 0177 $(tfmdir)/cmmi10.tfm $(srcdir)/texmi.map $@
+
+S: $(srcdir)/texsy.map
+ $(TFMTODIT) $(SPECIALFLAG) -k 060 $(tfmdir)/cmsy10.tfm $(srcdir)/texsy.map $@
+
+EX: $(srcdir)/texex.map
+ $(TFMTODIT) $(SPECIALFLAG) $(tfmdir)/cmex10.tfm $(srcdir)/texex.map $@
+
+H: $(srcdir)/texr.map
+ $(TFMTODIT) -g $(gfdir)/cmss10.300gf $(tfmdir)/cmss10.tfm $(srcdir)/texb.map $@
+
+HB: $(srcdir)/texr.map
+ $(TFMTODIT) -g $(gfdir)/cmssbx10.300gf \
+ $(tfmdir)/cmssbx10.tfm $(srcdir)/texb.map $@
+
+HI: $(srcdir)/texr.map
+ $(TFMTODIT) -g $(gfdir)/cmssi10.300gf \
+ $(tfmdir)/cmssi10.tfm $(srcdir)/texb.map $@
+
+SA: $(srcdir)/msam.map
+ $(TFMTODIT) $(SPECIALFLAG) $(tfmdir)/msam10.tfm $(srcdir)/msam.map $@
+
+SB: $(srcdir)/msbm.map
+ $(TFMTODIT) $(SPECIALFLAG) $(tfmdir)/msbm10.tfm $(srcdir)/msbm.map $@
+
+clean:
+
+realclean:
+ -rm -f $(FONTS)
+
+extraclean: realclean
+ -rm -f core *~ \#*
+
+.PHONY: clean realclean extraclean all
diff --git a/dvi/devdvi/msam.map b/devdvi/generate/msam.map
index 9e5e5f90b..90006c957 100644
--- a/dvi/devdvi/msam.map
+++ b/devdvi/generate/msam.map
@@ -6,7 +6,7 @@
3 square
4 blacksquare
5 centerdot
-6 lozenge
+6 lozenge lz
7 blacklozenge
8 circlearrowright
9 circlearrowleft
diff --git a/dvi/devdvi/msbm.map b/devdvi/generate/msbm.map
index 07ee095d4..07ee095d4 100644
--- a/dvi/devdvi/msbm.map
+++ b/devdvi/generate/msbm.map
diff --git a/dvi/devdvi/texb.map b/devdvi/generate/texb.map
index 67008339e..67008339e 100644
--- a/dvi/devdvi/texb.map
+++ b/devdvi/generate/texb.map
diff --git a/dvi/devdvi/texex.map b/devdvi/generate/texex.map
index a5b26901d..a5b26901d 100644
--- a/dvi/devdvi/texex.map
+++ b/devdvi/generate/texex.map
diff --git a/dvi/devdvi/texi.map b/devdvi/generate/texi.map
index d881e5f18..835c6421f 100644
--- a/dvi/devdvi/texi.map
+++ b/devdvi/generate/texi.map
@@ -99,7 +99,7 @@
99 c
100 d
101 e
-102 f
+102 f Fn
103 g
104 h
105 i
diff --git a/dvi/devdvi/texmi.map b/devdvi/generate/texmi.map
index ee64fece8..6d01dc4cf 100644
--- a/dvi/devdvi/texmi.map
+++ b/devdvi/generate/texmi.map
@@ -21,7 +21,10 @@
31 *x
32 *q
33 *w
+35 +h
+36 +p
38 ts
+39 +f
60 <
62 >
64 pd
diff --git a/dvi/devdvi/texr.map b/devdvi/generate/texr.map
index bebf67b80..bebf67b80 100644
--- a/dvi/devdvi/texr.map
+++ b/devdvi/generate/texr.map
diff --git a/dvi/devdvi/texsy.map b/devdvi/generate/texsy.map
index 2c970bc2a..2c970bc2a 100644
--- a/dvi/devdvi/texsy.map
+++ b/devdvi/generate/texsy.map
diff --git a/dvi/devdvi/textt.map b/devdvi/generate/textt.map
index ce1185dd9..1461d0abe 100644
--- a/dvi/devdvi/textt.map
+++ b/devdvi/generate/textt.map
@@ -42,7 +42,7 @@
42 *
43 +
44 ,
-45 \-
+45 - \-
46 .
47 / sl
48 0
diff --git a/tty/devlatin1/DESC.proto b/devlatin1/DESC.proto
index 882ff5e47..88399ab16 100644
--- a/tty/devlatin1/DESC.proto
+++ b/devlatin1/DESC.proto
@@ -5,3 +5,4 @@ unitwidth 10
sizes 10 0
fonts 4 R I B BI
tcommand
+postpro grotty
diff --git a/devlatin1/Makefile.sub b/devlatin1/Makefile.sub
new file mode 100644
index 000000000..25de3f772
--- /dev/null
+++ b/devlatin1/Makefile.sub
@@ -0,0 +1,32 @@
+DEV=latin1
+FONTS=R I B BI
+DEVFILES=$(FONTS) DESC
+CLEANADD=$(FONTS) DESC
+
+RES=240
+CPI=10
+LPI=6
+
+$(FONTS): R.proto
+ @echo Making $@
+ @-rm -f $@
+ @(charwidth=`expr $(RES) / $(CPI)` ; \
+ sed -e "s/^name [A-Z]*$$/name $@/" \
+ -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \
+ -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
+ -e "s/^internalname .*$$/internalname $@/" \
+ -e "/^internalname/s/BI/3/" \
+ -e "/^internalname/s/B/2/" \
+ -e "/^internalname/s/I/1/" \
+ -e "/^internalname .*[^ 0-9]/d" \
+ $(srcdir)/R.proto >$@)
+
+DESC: DESC.proto
+ @echo Making $@
+ @-rm -f $@
+ @sed -e "s/^res .*$$/res $(RES)/" \
+ -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
+ -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
+ -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
+ $(srcdir)/DESC.proto >$@
+
diff --git a/tty/devlatin1/R.proto b/devlatin1/R.proto
index 5d6de0ead..29a88754b 100644
--- a/tty/devlatin1/R.proto
+++ b/devlatin1/R.proto
@@ -14,6 +14,7 @@ Do "
& 24 0 0046
' 24 0 0047
fm "
+aq "
( 24 0 0050
) 24 0 0051
* 24 0 0052
@@ -23,9 +24,13 @@ pl "
, 24 0 0054
\- 24 0 0055
mi "
+- "
+hy "
+en "
. 24 0 0056
/ 24 0 0057
sl "
+f/ "
0 24 0 0060
1 24 0 0061
2 24 0 0062
@@ -40,40 +45,56 @@ sl "
; 24 0 0073
< 24 0 0074
la "
+fo "
= 24 0 0075
eq "
> 24 0 0076
ra "
+fc "
? 24 0 0077
@ 24 0 0100
at "
A 24 0 0101
+*A "
B 24 0 0102
+*B "
C 24 0 0103
D 24 0 0104
E 24 0 0105
+*E "
F 24 0 0106
G 24 0 0107
H 24 0 0110
+*Y "
I 24 0 0111
+*I "
J 24 0 0112
K 24 0 0113
+*K "
L 24 0 0114
M 24 0 0115
+*M "
N 24 0 0116
+*N "
O 24 0 0117
ci "
+*O "
P 24 0 0120
+*R "
Q 24 0 0121
R 24 0 0122
S 24 0 0123
T 24 0 0124
+*T "
U 24 0 0125
V 24 0 0126
W 24 0 0127
X 24 0 0130
+*X "
Y 24 0 0131
+*U "
Z 24 0 0132
+*Z "
[ 24 0 0133
lB "
\ 24 0 0134
@@ -82,6 +103,7 @@ rs "
rB "
a^ 24 0 0136
^ "
+ha "
_ 24 0 0137
ru "
ul "
@@ -97,13 +119,14 @@ f 24 0 0146
g 24 0 0147
h 24 0 0150
i 24 0 0151
+.i "
j 24 0 0152
k 24 0 0153
l 24 0 0154
m 24 0 0155
n 24 0 0156
o 24 0 0157
-bu "
+*o "
p 24 0 0160
q 24 0 0161
r 24 0 0162
@@ -122,11 +145,22 @@ or "
bv "
br "
| "
+lb "
+lc "
+lf "
+lk "
+lt "
+rb "
+rc "
+rf "
+rk "
+rt "
rC 24 0 0175
} "
a~ 24 0 0176
~ "
ap "
+ti "
r! 24 0 0241
char161 "
ct 24 0 0242
@@ -151,15 +185,14 @@ Fo 24 0 0253
char171 "
no 24 0 0254
char172 "
-- 24 0 0255
-hy "
-char173 "
+char173 24 0 0255
rg 24 0 0256
char174 "
a- 24 0 0257
char175 "
de 24 0 0260
char176 "
+ao "
+- 24 0 0261
char177 "
S2 24 0 0262
diff --git a/devps/AB b/devps/AB
new file mode 100644
index 000000000..d5313f0de
--- /dev/null
+++ b/devps/AB
@@ -0,0 +1,559 @@
+name AB
+internalname AvantGarde-Demi
+spacewidth 280
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -50
+A w -65
+A v -70
+A u -20
+A ' -90
+A Y -80
+A W -60
+A V -102
+A U -40
+A T -25
+A Q -50
+A O -50
+A G -40
+A C -40
+B A -10
+C A -40
+D . -20
+D , -20
+D Y -45
+D W -25
+D V -50
+D A -50
+F . -129
+F e -20
+F , -162
+F a -20
+F A -75
+G . -20
+G , -20
+G Y -15
+J . -15
+J a -20
+J A -30
+K y -20
+K u -15
+K o -45
+K e -40
+K O -30
+L y -23
+L ' -30
+L rq -30
+L Y -80
+L W -55
+L V -85
+L T -46
+O . -30
+O , -30
+O Y -30
+O X -30
+O W -20
+O V -45
+O T -15
+O A -60
+P . -200
+P o -20
+P e -20
+P , -220
+P a -20
+P A -100
+Q , 20
+R W 25
+R V -10
+R U 25
+R T 40
+R O 25
+S , 20
+T y -10
+T w -55
+T u -46
+T ; -29
+T r -30
+T . -91
+T o -49
+T - -75
+T hy -75
+T char173 -75
+T e -49
+T , -82
+T : -15
+T a -70
+T O -15
+T A -25
+U . -20
+U , -20
+U A -40
+V u -55
+V ; -33
+V . -145
+V o -101
+V i -15
+V - -75
+V hy -75
+V char173 -75
+V e -101
+V , -145
+V : -18
+V a -95
+V O -45
+V G -20
+V A -102
+W y -15
+W u -30
+W ; -33
+W . -106
+W o -46
+W i -10
+W - -35
+W hy -35
+W char173 -35
+W e -47
+W , -106
+W : -15
+W a -50
+W O -20
+W A -58
+Y u -52
+Y ; -23
+Y . -145
+Y o -89
+Y - -100
+Y hy -100
+Y char173 -100
+Y e -89
+Y , -145
+Y : -10
+Y a -93
+Y O -30
+Y A -80
+a t 5
+a p 20
+a b 5
+b y -20
+b v -20
+c y -20
+c l -15
+c k -15
+, ' -70
+, rq -70
+e y -20
+e x -20
+e w -20
+e v -20
+f . -40
+f o -20
+f l -15
+f i -15
+f f -20
+f .i -15
+f , -40
+f a -15
+g i 25
+g a 15
+h y -30
+k y -5
+k o -30
+k e -40
+m y -20
+m u -20
+n y -15
+n v -30
+o y -20
+o x -30
+o w -20
+o v -30
+p y -20
+. ' -70
+. rq -70
+lq A -50
+` ` -80
+` oq -80
+oq ` -80
+oq oq -80
+` A -50
+oq A -50
+' v -10
+' t 10
+' s -15
+' r -20
+' ' -80
+' d -50
+r y 40
+r v 40
+r u 20
+r t 20
+r s 20
+r q -8
+r . -73
+r p 20
+r o -15
+r n 21
+r m 15
+r l 20
+r k 5
+r i 20
+r - -60
+r hy -60
+r char173 -60
+r g 1
+r e -4
+r d -6
+r , -75
+r c -7
+s . 20
+s , 20
+v . -90
+v o -20
+v e -20
+v , -90
+v a -30
+w . -90
+w o -30
+w e -20
+w , -90
+w a -30
+x e -20
+y . -100
+y o -30
+y e -20
+y , -100
+y c -35
+y a -30
+charset
+ha 600,740 2 0000 asciicircum
+ti 600,347 0 0001 asciitilde
+vS 520,944,15 2 0002 Scaron
+vZ 500,944 2 0003 Zcaron
+vs 440,774,18 2 0004 scaron
+vz 460,774 2 0005 zcaron
+:Y 620,939 2 0006 Ydieresis
+tm 1000,740 2 0007 trademark
+aq 220,740 2 0010 quotesingle
+space 280 0 0040
+! 280,740 2 0041 exclam
+" 360,740 2 0042 quotedbl
+# 560,700 0 0043 numbersign
+sh "
+$ 560,857,86 2 0044 dollar
+Do "
+% 860,755,15 2 0045 percent
+& 680,755,15 2 0046 ampersand
+' 280,740 2 0047 quoteright
+( 380,754,157 2 0050 parenleft
+) 380,754,157 2 0051 parenright
+* 440,755 2 0052 asterisk
++ 600,506 0 0053 plus
+, 280,133,141 0 0054 comma
+- 420,348 0 0055 hyphen
+hy "
+char173 "
+. 280,133 0 0056 period
+/ 460,740,100 2 0057 slash
+sl "
+0 560,755,15 2 0060 zero
+1 560,740 2 0061 one
+2 560,755 2 0062 two
+3 560,755,15 2 0063 three
+4 560,740 2 0064 four
+5 560,740,15 2 0065 five
+6 560,739,15 2 0066 six
+7 560,740 2 0067 seven
+8 560,755,15 2 0070 eight
+9 560,754 2 0071 nine
+: 280,555 0 0072 colon
+; 280,555,141 0 0073 semicolon
+< 600,514,8 0 0074 less
+= 600,425 0 0075 equal
+> 600,514,8 0 0076 greater
+? 560,755 2 0077 question
+@ 740,712,12 0 0100 at
+at "
+A 740,740 2 0101 A
+B 580,740 2 0102 B
+C 780,755,15 2 0103 C
+D 700,740 2 0104 D
+E 520,740 2 0105 E
+F 480,740 2 0106 F
+G 840,755,15 2 0107 G
+H 680,740 2 0110 H
+I 280,740 2 0111 I
+J 480,740,15 2 0112 J
+K 620,740 2 0113 K
+L 440,740 2 0114 L
+M 900,740 2 0115 M
+N 740,740 2 0116 N
+O 840,755,15 2 0117 O
+P 560,740 2 0120 P
+Q 840,755,15 2 0121 Q
+R 580,740 2 0122 R
+S 520,755,15 2 0123 S
+T 420,740 2 0124 T
+U 640,740,15 2 0125 U
+V 700,740 2 0126 V
+W 900,740 2 0127 W
+X 680,740 2 0130 X
+Y 620,740 2 0131 Y
+Z 500,740 2 0132 Z
+[ 320,754,157 2 0133 bracketleft
+lB "
+\ 640,740,100 2 0134 backslash
+rs "
+] 320,754,157 2 0135 bracketright
+rB "
+a^ 540,774 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 280,740 2 0140 quoteleft
+oq "
+a 660,574,18 0 0141 a
+b 660,740,18 2 0142 b
+c 640,574,18 0 0143 c
+d 660,740,18 2 0144 d
+e 640,577,18 0 0145 e
+f 280,755 2 0146 f
+g 660,574,226 1 0147 g
+h 600,740 2 0150 h
+i 240,740 2 0151 i
+j 260,740,185 3 0152 j
+k 580,740 2 0153 k
+l 240,740 2 0154 l
+m 940,574 0 0155 m
+n 600,574 0 0156 n
+o 640,574,18 0 0157 o
+p 660,574,185 1 0160 p
+q 660,574,185 1 0161 q
+r 320,574 0 0162 r
+s 440,574,18 0 0163 s
+t 300,740 2 0164 t
+u 600,555,18 0 0165 u
+v 560,555 0 0166 v
+w 800,555 0 0167 w
+x 560,555 0 0170 x
+y 580,555,185 1 0171 y
+z 460,555 0 0172 z
+lC 340,747,191 3 0173 braceleft
+{ "
+ba 600,740,100 2 0174 bar
+| "
+rC 340,747,191 3 0175 braceright
+} "
+a~ 480,767 2 0176 tilde
+~ "
+bq 280,133,141 0 0200 quotesinglbase
+Fo 460,469 0 0201 guillemotleft
+char171 "
+Fc 460,469 0 0202 guillemotright
+char187 "
+bu 600,532 0 0203 bullet
+Fn 560,824,151 2 0204 florin
+f/ 160,740 2 0205 fraction
+%0 1280,755,15 2 0206 perthousand
+dg 560,740,142 2 0207 dagger
+dd 560,740,142 2 0210 daggerdbl
+en 500,348 0 0211 endash
+em 1000,348 0 0212 emdash
+fi 520,755 2 0214 fi
+fl 520,755 2 0215 fl
+.i 240,555 0 0220 dotlessi
+ga 420,851 2 0222 grave
+a" 700,862 2 0223 hungarumlaut
+a. 280,769 2 0224 dotaccent
+ab 480,770 2 0225 breve
+ah 540,774 2 0226 caron
+ao 360,834 2 0227 ring
+ho 340,9,195 1 0230 ogonek
+lq 480,740 2 0231 quotedblleft
+rq 480,740 2 0232 quotedblright
+oe 1080,574,18 0 0233 oe
+/l 320,740 2 0234 lslash
+Bq 480,133,141 0 0235 quotedblbase
+OE 1060,755,15 2 0236 OE
+/L 480,740 2 0237 Lslash
+r! 280,555,185 1 0241 exclamdown
+char161 "
+ct 560,715 0 0242 cent
+char162 "
+Po 560,755 2 0243 sterling
+char163 "
+Cs 560,577 0 0244 currency
+char164 "
+Ye 560,740 2 0245 yen
+char165 "
+bb 600,740,100 2 0246 brokenbar
+char166 "
+sc 560,755,158 2 0247 section
+char167 "
+ad 500,769 2 0250 dieresis
+char168 "
+co 740,752,12 2 0251 copyright
+char169 "
+Of 360,755 2 0252 ordfeminine
+char170 "
+fo 240,469 0 0253 guilsinglleft
+no 600,425 0 0254 logicalnot
+char172 "
+\- 600,313 0 0255 minus
+rg 740,752,12 2 0256 registered
+char174 "
+a- 420,759 2 0257 macron
+char175 "
+de 400,712 0 0260 degree
+char176 "
+char177 600,556,62 0 0261 plusminus
+S2 336,749 2 0262 twosuperior
+char178 "
+S3 336,749 2 0263 threesuperior
+char179 "
+aa 420,849 2 0264 acute
+char180 "
+char181 576,555,187 1 0265 mu
+ps 600,740,103 2 0266 paragraph
+char182 "
+char183 280,320 0 0267 periodcentered
+ac 340,6,251 1 0270 cedilla
+char184 "
+S1 336,740 2 0271 onesuperior
+char185 "
+Om 360,755 2 0272 ordmasculine
+char186 "
+fc 240,469 0 0273 guilsinglright
+14 840,740 2 0274 onequarter
+char188 "
+12 840,740 2 0275 onehalf
+char189 "
+34 840,749 2 0276 threequarters
+char190 "
+r? 560,555,200 1 0277 questiondown
+char191 "
+`A 740,1021 2 0300 Agrave
+char192 "
+'A 740,1019 2 0301 Aacute
+char193 "
+^A 740,944 2 0302 Acircumflex
+char194 "
+~A 740,937 2 0303 Atilde
+char195 "
+:A 740,939 2 0304 Adieresis
+char196 "
+oA 740,969 2 0305 Aring
+char197 "
+AE 900,740 2 0306 AE
+char198 "
+,C 780,755,251 3 0307 Ccedilla
+char199 "
+`E 520,1021 2 0310 Egrave
+char200 "
+'E 520,1019 2 0311 Eacute
+char201 "
+^E 520,944 2 0312 Ecircumflex
+char202 "
+:E 520,939 2 0313 Edieresis
+char203 "
+`I 280,1021 2 0314 Igrave
+char204 "
+'I 280,1019 2 0315 Iacute
+char205 "
+^I 280,944 2 0316 Icircumflex
+char206 "
+:I 280,939 2 0317 Idieresis
+char207 "
+-D 742,740 2 0320 Eth
+char208 "
+~N 740,937 2 0321 Ntilde
+char209 "
+`O 840,1021,15 2 0322 Ograve
+char210 "
+'O 840,1019,15 2 0323 Oacute
+char211 "
+^O 840,944,15 2 0324 Ocircumflex
+char212 "
+~O 840,937,15 2 0325 Otilde
+char213 "
+:O 840,939,15 2 0326 Odieresis
+char214 "
+char215 600,494 0 0327 multiply
+/O 840,814,71 2 0330 Oslash
+char216 "
+`U 640,1021,15 2 0331 Ugrave
+char217 "
+'U 640,1019,15 2 0332 Uacute
+char218 "
+^U 640,944,15 2 0333 Ucircumflex
+char219 "
+:U 640,939,15 2 0334 Udieresis
+char220 "
+'Y 620,1019 2 0335 Yacute
+char221 "
+TP 560,740 2 0336 Thorn
+char222 "
+ss 600,755,18 2 0337 germandbls
+char223 "
+`a 660,851,18 2 0340 agrave
+char224 "
+'a 660,849,18 2 0341 aacute
+char225 "
+^a 660,774,18 2 0342 acircumflex
+char226 "
+~a 660,767,18 2 0343 atilde
+char227 "
+:a 660,769,18 2 0344 adieresis
+char228 "
+oa 660,834,18 2 0345 aring
+char229 "
+ae 1080,574,18 0 0346 ae
+char230 "
+,c 640,574,251 1 0347 ccedilla
+char231 "
+`e 640,851,18 2 0350 egrave
+char232 "
+'e 640,849,18 2 0351 eacute
+char233 "
+^e 640,774,18 2 0352 ecircumflex
+char234 "
+:e 640,769,18 2 0353 edieresis
+char235 "
+`i 240,851 2 0354 igrave
+char236 "
+'i 240,849 2 0355 iacute
+char237 "
+^i 240,774 2 0356 icircumflex
+char238 "
+:i 240,769 2 0357 idieresis
+char239 "
+Sd 640,754,18 2 0360 eth
+char240 "
+~n 600,767 2 0361 ntilde
+char241 "
+`o 640,851,18 2 0362 ograve
+char242 "
+'o 640,849,18 2 0363 oacute
+char243 "
+^o 640,774,18 2 0364 ocircumflex
+char244 "
+~o 640,767,18 2 0365 otilde
+char245 "
+:o 640,769,18 2 0366 odieresis
+char246 "
+char247 600,526,20 0 0367 divide
+/o 660,608,50 0 0370 oslash
+char248 "
+`u 600,851,18 2 0371 ugrave
+char249 "
+'u 600,849,18 2 0372 uacute
+char250 "
+^u 600,774,18 2 0373 ucircumflex
+char251 "
+:u 600,769,18 2 0374 udieresis
+char252 "
+'y 580,849,185 3 0375 yacute
+char253 "
+Tp 660,740,185 3 0376 thorn
+char254 "
+:y 580,769,185 3 0377 ydieresis
+char255 "
diff --git a/devps/ABI b/devps/ABI
new file mode 100644
index 000000000..000d95885
--- /dev/null
+++ b/devps/ABI
@@ -0,0 +1,560 @@
+name ABI
+internalname AvantGarde-DemiOblique
+slant 10.5
+spacewidth 280
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -50
+A w -65
+A v -70
+A u -20
+A ' -90
+A Y -80
+A W -60
+A V -102
+A U -40
+A T -25
+A Q -50
+A O -50
+A G -40
+A C -40
+B A -10
+C A -40
+D . -20
+D , -20
+D Y -45
+D W -25
+D V -50
+D A -50
+F . -129
+F e -20
+F , -162
+F a -20
+F A -75
+G . -20
+G , -20
+G Y -15
+J . -15
+J a -20
+J A -30
+K y -20
+K u -15
+K o -45
+K e -40
+K O -30
+L y -23
+L ' -30
+L rq -30
+L Y -80
+L W -55
+L V -85
+L T -46
+O . -30
+O , -30
+O Y -30
+O X -30
+O W -20
+O V -45
+O T -15
+O A -60
+P . -200
+P o -20
+P e -20
+P , -220
+P a -20
+P A -100
+Q , 20
+R W 25
+R V -10
+R U 25
+R T 40
+R O 25
+S , 20
+T y -10
+T w -55
+T u -46
+T ; -29
+T r -30
+T . -91
+T o -49
+T - -75
+T hy -75
+T char173 -75
+T e -49
+T , -82
+T : -15
+T a -70
+T O -15
+T A -25
+U . -20
+U , -20
+U A -40
+V u -55
+V ; -33
+V . -145
+V o -101
+V i -15
+V - -75
+V hy -75
+V char173 -75
+V e -101
+V , -145
+V : -18
+V a -95
+V O -45
+V G -20
+V A -102
+W y -15
+W u -30
+W ; -33
+W . -106
+W o -46
+W i -10
+W - -35
+W hy -35
+W char173 -35
+W e -47
+W , -106
+W : -15
+W a -50
+W O -20
+W A -58
+Y u -52
+Y ; -23
+Y . -145
+Y o -89
+Y - -100
+Y hy -100
+Y char173 -100
+Y e -89
+Y , -145
+Y : -10
+Y a -93
+Y O -30
+Y A -80
+a t 5
+a p 20
+a b 5
+b y -20
+b v -20
+c y -20
+c l -15
+c k -15
+, ' -70
+, rq -70
+e y -20
+e x -20
+e w -20
+e v -20
+f . -40
+f o -20
+f l -15
+f i -15
+f f -20
+f .i -15
+f , -40
+f a -15
+g i 25
+g a 15
+h y -30
+k y -5
+k o -30
+k e -40
+m y -20
+m u -20
+n y -15
+n v -30
+o y -20
+o x -30
+o w -20
+o v -30
+p y -20
+. ' -70
+. rq -70
+lq A -50
+` ` -80
+` oq -80
+oq ` -80
+oq oq -80
+` A -50
+oq A -50
+' v -10
+' t 10
+' s -15
+' r -20
+' ' -80
+' d -50
+r y 40
+r v 40
+r u 20
+r t 20
+r s 20
+r q -8
+r . -73
+r p 20
+r o -15
+r n 21
+r m 15
+r l 20
+r k 5
+r i 20
+r - -60
+r hy -60
+r char173 -60
+r g 1
+r e -4
+r d -6
+r , -75
+r c -7
+s . 20
+s , 20
+v . -90
+v o -20
+v e -20
+v , -90
+v a -30
+w . -90
+w o -30
+w e -20
+w , -90
+w a -30
+x e -20
+y . -100
+y o -30
+y e -20
+y , -100
+y c -35
+y a -30
+charset
+ha 600,740,0,46,-92,46 2 0000 asciicircum
+ti 600,347,0,29,-64,29 0 0001 asciitilde
+vS 520,944,15,165,1,82 2 0002 Scaron
+vZ 500,944,0,200,31,82 2 0003 Zcaron
+vs 440,774,18,173,1,82 2 0004 scaron
+vz 460,774,0,188,30,82 2 0005 zcaron
+:Y 620,939,0,189,-85,82 2 0006 Ydieresis
+tm 1000,740,0,8,-81,8 2 0007 trademark
+aq 220,740,0,144,-102,82 2 0010 quotesingle
+space 280 0 0040
+! 280,740,0,113,-23,82 2 0041 exclam
+" 360,740,0,168,-77,82 2 0042 quotedbl
+# 560,700,0,108,-16,82 0 0043 numbersign
+sh "
+$ 560,857,86,72,-49,72 2 0044 dollar
+Do "
+% 860,755,15,46,-89,46 2 0045 percent
+& 680,755,15,112,-21,82 2 0046 ampersand
+' 280,740,0,112,-109,82 2 0047 quoteright
+( 380,754,157,160,-70,82 2 0050 parenleft
+) 380,754,157,48,42,48 2 0051 parenright
+* 440,755,0,102,-124,82 2 0052 asterisk
++ 600,506,0,60,-34,60 0 0053 plus
+, 280,133,141,1,2,1 0 0054 comma
+- 420,348,0,43,-64,43 0 0055 hyphen
+hy "
+char173 "
+. 280,133,0,1,-23,1 0 0056 period
+/ 460,740,100,181,63,82 2 0057 slash
+sl "
+0 560,755,15,118,-20,82 2 0060 zero
+1 560,740,0,0,-180 2 0061 one
+2 560,755,0,112,6,82 2 0062 two
+3 560,755,15,75,-17,75 2 0063 three
+4 560,740,0,94,14,82 2 0064 four
+5 560,740,15,90,-14,82 2 0065 five
+6 560,739,15,77,-14,77 2 0066 six
+7 560,740,0,125,-33,82 2 0067 seven
+8 560,755,15,80,-21,80 2 0070 eight
+9 560,754,0,123,-60,82 2 0071 nine
+: 280,555,0,79,-23,79 0 0072 colon
+; 280,555,141,79,2,79 0 0073 semicolon
+< 600,514,8,99,-34,82 0 0074 less
+= 600,425,0,81,-13,81 0 0075 equal
+> 600,514,8,60,5,60 0 0076 greater
+? 560,755,0,83,-85,82 2 0077 question
+@ 740,712,12,142,-59,82 0 0100 at
+at "
+A 740,740,0,42,43,42 2 0101 A
+B 580,740,0,80,-20,80 2 0102 B
+C 780,755,15,134,-47,82 2 0103 C
+D 700,740,0,82,-13,82 2 0104 D
+E 520,740,0,126,-11,82 2 0105 E
+F 480,740,0,145,-11,82 2 0106 F
+G 840,755,15,97,-39,82 2 0107 G
+H 680,740,0,117,-21,82 2 0110 H
+I 280,740,0,116,-22,82 2 0111 I
+J 480,740,15,116,16,82 2 0112 J
+K 620,740,0,187,-39,82 2 0113 K
+L 440,740,0,69,-22,69 2 0114 L
+M 900,740,0,124,-13,82 2 0115 M
+N 740,740,0,118,-20,82 2 0116 N
+O 840,755,15,92,-45,82 2 0117 O
+P 560,740,0,135,-22,82 2 0120 P
+Q 840,755,15,92,-44,82 2 0121 Q
+R 580,740,0,126,-14,82 2 0122 R
+S 520,755,15,108,1,82 2 0123 S
+T 420,740,0,185,-69,82 2 0124 T
+U 640,740,15,132,-47,82 2 0125 U
+V 700,740,0,182,-95,82 2 0126 V
+W 900,740,0,186,-94,82 2 0127 W
+X 680,740,0,183,46,82 2 0130 X
+Y 620,740,0,189,-85,82 2 0131 Y
+Z 500,740,0,149,31,82 2 0132 Z
+[ 320,754,157,154,-39,82 2 0133 bracketleft
+lB "
+\ 640,740,100,0,-183 2 0134 backslash
+rs "
+] 320,754,157,72,43,72 2 0135 bracketright
+rB "
+a^ 540,774,0,98,-139,82 2 0136 circumflex
+^ "
+_ 500,0,125,36,73,36 0 0137 underscore
+` 280,740,0,111,-108,82 2 0140 quoteleft
+oq "
+a 660,574,18,106,-23,82 0 0141 a
+b 660,740,18,79,3,79 2 0142 b
+c 640,574,18,89,-34,82 0 0143 c
+d 660,740,18,145,-30,82 2 0144 d
+e 640,577,18,77,-27,77 0 0145 e
+f 280,755,0,190,-12,82 2 0146 f
+g 660,574,226,116,17,82 1 0147 g
+h 600,740,0,64,-4,64 2 0150 h
+i 240,740,0,133,-3,82 2 0151 i
+j 260,740,185,132,68,82 3 0152 j
+k 580,740,0,118,-30,82 2 0153 k
+l 240,740,0,134,-4,82 2 0154 l
+m 940,574,0,64,-4,64 0 0155 m
+n 600,574,0,63,-4,63 0 0156 n
+o 640,574,18,82,-21,82 0 0157 o
+p 660,574,185,76,37,76 1 0160 p
+q 660,574,185,106,-28,82 1 0161 q
+r 320,574,0,153,-13,82 0 0162 r
+s 440,574,18,93,1,82 0 0163 s
+t 300,740,0,152,-36,82 2 0164 t
+u 600,555,18,97,-37,82 0 0165 u
+v 560,555,0,149,-56,82 0 0166 v
+w 800,555,0,142,-64,82 0 0167 w
+x 560,555,0,122,47,82 0 0170 x
+y 580,555,185,144,-25,82 1 0171 y
+z 460,555,0,118,30,82 0 0172 z
+lC 340,747,191,165,10,82 3 0173 braceleft
+{ "
+ba 600,740,100,0,-164 2 0174 bar
+| "
+rC 340,747,191,115,62,82 3 0175 braceright
+} "
+a~ 480,767,0,134,-128,82 2 0176 tilde
+~ "
+bq 280,133,141,0,3 0 0200 quotesinglbase
+Fo 460,469,0,77,-55,77 0 0201 guillemotleft
+char171 "
+Fc 460,469,0,53,-31,53 0 0202 guillemotright
+char187 "
+bu 600,532,0,0,-165 0 0203 bullet
+Fn 560,824,151,154,77,82 2 0204 florin
+f/ 160,740,0,309,173,82 2 0205 fraction
+%0 1280,755,15,26,-89,26 2 0206 perthousand
+dg 560,740,142,102,-83,82 2 0207 dagger
+dd 560,740,142,108,-13,82 2 0210 daggerdbl
+en 500,348,0,79,-28,79 0 0211 endash
+em 1000,348,0,79,-28,79 0 0212 emdash
+fi 520,755,0,128,-22,82 2 0214 fi
+fl 520,755,0,128,-22,82 2 0215 fl
+.i 240,555,0,99,-3,82 0 0220 dotlessi
+ga 420,851,0,92,-139,82 2 0222 grave
+a" 700,862,0,104,-208,82 2 0223 hungarumlaut
+a. 280,769,0,120,-142,82 2 0224 dotaccent
+ab 480,770,0,152,-135,82 2 0225 breve
+ah 540,774,0,123,-164,82 2 0226 caron
+ao 360,834,0,114,-156,82 2 0227 ring
+ho 340,9,195,0,-9 1 0230 ogonek
+lq 480,740,0,116,-106,82 2 0231 quotedblleft
+rq 480,740,0,117,-107,82 2 0232 quotedblright
+oe 1080,574,18,78,-26,78 0 0233 oe
+/l 320,740,0,134,-24,82 2 0234 lslash
+Bq 480,133,141,5,5,5 0 0235 quotedblbase
+OE 1060,755,15,134,-48,82 2 0236 OE
+/L 480,740,0,54,-18,54 2 0237 Lslash
+r! 280,555,185,80,10,80 1 0241 exclamdown
+char161 "
+ct 560,715,0,89,-60,82 0 0242 cent
+char162 "
+Po 560,755,0,105,12,82 2 0243 sterling
+char163 "
+Cs 560,577,0,118,-3,82 0 0244 currency
+char164 "
+Ye 560,740,0,197,-33,82 2 0245 yen
+char165 "
+bb 600,740,100,0,-164 2 0246 brokenbar
+char166 "
+sc 560,755,158,92,-15,82 2 0247 section
+char167 "
+ad 500,769,0,115,-146,82 2 0250 dieresis
+char168 "
+co 740,752,12,137,0,82 2 0251 copyright
+char169 "
+Of 360,755,0,162,-77,82 2 0252 ordfeminine
+char170 "
+fo 240,469,0,87,-44,82 0 0253 guilsinglleft
+no 600,425,0,81,-55,81 0 0254 logicalnot
+char172 "
+\- 600,313,0,60,-34,60 0 0255 minus
+rg 740,752,12,137,0,82 2 0256 registered
+char174 "
+a- 420,759,0,120,-142,82 2 0257 macron
+char175 "
+de 400,712,0,101,-110,82 0 0260 degree
+char176 "
+char177 600,556,62,76,13,76 0 0261 plusminus
+S2 336,749,0,150,-23,82 2 0262 twosuperior
+char178 "
+S3 336,749,0,127,-37,82 2 0263 threesuperior
+char179 "
+aa 420,849,0,138,-174,82 2 0264 acute
+char180 "
+char181 576,555,187,116,47,82 1 0265 mu
+ps 600,740,103,194,-40,82 2 0266 paragraph
+char182 "
+char183 280,320,0,35,-58,35 0 0267 periodcentered
+ac 340,6,251,0,-17 1 0270 cedilla
+char184 "
+S1 336,740,0,74,-132,74 2 0271 onesuperior
+char185 "
+Om 360,755,0,141,-81,82 2 0272 ordmasculine
+char186 "
+fc 240,469,0,63,-20,63 0 0273 guilsinglright
+14 840,740,0,0,-137 2 0274 onequarter
+char188 "
+12 840,740,0,40,-107,40 2 0275 onehalf
+char189 "
+34 840,749,0,46,-47,46 2 0276 threequarters
+char190 "
+r? 560,555,200,17,-19,17 1 0277 questiondown
+char191 "
+`A 740,1021,0,42,43,42 2 0300 Agrave
+char192 "
+'A 740,1019,0,42,43,42 2 0301 Aacute
+char193 "
+^A 740,944,0,42,43,42 2 0302 Acircumflex
+char194 "
+~A 740,937,0,42,43,42 2 0303 Atilde
+char195 "
+:A 740,939,0,42,43,42 2 0304 Adieresis
+char196 "
+oA 740,969,0,42,43,42 2 0305 Aring
+char197 "
+AE 900,740,0,111,55,82 2 0306 AE
+char198 "
+,C 780,755,251,134,-47,82 3 0307 Ccedilla
+char199 "
+`E 520,1021,0,126,-11,82 2 0310 Egrave
+char200 "
+'E 520,1019,0,126,-11,82 2 0311 Eacute
+char201 "
+^E 520,944,0,139,-11,82 2 0312 Ecircumflex
+char202 "
+:E 520,939,0,136,-11,82 2 0313 Edieresis
+char203 "
+`I 280,1021,0,168,-22,82 2 0314 Igrave
+char204 "
+'I 280,1019,0,264,-22,82 2 0315 Iacute
+char205 "
+^I 280,944,0,259,-22,82 2 0316 Icircumflex
+char206 "
+:I 280,939,0,256,-22,82 2 0317 Idieresis
+char207 "
+-D 742,740,0,74,-33,74 2 0320 Eth
+char208 "
+~N 740,937,0,118,-20,82 2 0321 Ntilde
+char209 "
+`O 840,1021,15,92,-45,82 2 0322 Ograve
+char210 "
+'O 840,1019,15,92,-45,82 2 0323 Oacute
+char211 "
+^O 840,944,15,92,-45,82 2 0324 Ocircumflex
+char212 "
+~O 840,937,15,92,-45,82 2 0325 Otilde
+char213 "
+:O 840,939,15,92,-45,82 2 0326 Odieresis
+char214 "
+char215 600,494,0,67,-26,67 0 0327 multiply
+/O 840,814,71,101,-44,82 2 0330 Oslash
+char216 "
+`U 640,1021,15,132,-47,82 2 0331 Ugrave
+char217 "
+'U 640,1019,15,132,-47,82 2 0332 Uacute
+char218 "
+^U 640,944,15,132,-47,82 2 0333 Ucircumflex
+char219 "
+:U 640,939,15,132,-47,82 2 0334 Udieresis
+char220 "
+'Y 620,1019,0,189,-85,82 2 0335 Yacute
+char221 "
+TP 560,740,0,109,-22,82 2 0336 Thorn
+char222 "
+ss 600,755,18,79,-1,79 2 0337 germandbls
+char223 "
+`a 660,851,18,106,-23,82 2 0340 agrave
+char224 "
+'a 660,849,18,106,-23,82 2 0341 aacute
+char225 "
+^a 660,774,18,106,-23,82 2 0342 acircumflex
+char226 "
+~a 660,767,18,106,-23,82 2 0343 atilde
+char227 "
+:a 660,769,18,106,-23,82 2 0344 adieresis
+char228 "
+oa 660,834,18,106,-23,82 2 0345 aring
+char229 "
+ae 1080,574,18,75,-25,75 0 0346 ae
+char230 "
+,c 640,574,251,89,-33,82 1 0347 ccedilla
+char231 "
+`e 640,851,18,77,-27,77 2 0350 egrave
+char232 "
+'e 640,849,18,77,-27,77 2 0351 eacute
+char233 "
+^e 640,774,18,77,-27,77 2 0352 ecircumflex
+char234 "
+:e 640,769,18,77,-27,77 2 0353 edieresis
+char235 "
+`i 240,851,0,157,-3,82 2 0354 igrave
+char236 "
+'i 240,849,0,253,-3,82 2 0355 iacute
+char237 "
+^i 240,774,0,248,11,82 2 0356 icircumflex
+char238 "
+:i 240,769,0,245,-3,82 2 0357 idieresis
+char239 "
+Sd 640,754,18,109,-23,82 2 0360 eth
+char240 "
+~n 600,767,0,74,-4,74 2 0361 ntilde
+char241 "
+`o 640,851,18,82,-21,82 2 0362 ograve
+char242 "
+'o 640,849,18,82,-21,82 2 0363 oacute
+char243 "
+^o 640,774,18,82,-21,82 2 0364 ocircumflex
+char244 "
+~o 640,767,18,82,-21,82 2 0365 otilde
+char245 "
+:o 640,769,18,82,-21,82 2 0366 odieresis
+char246 "
+char247 600,526,20,60,-34,60 0 0367 divide
+/o 660,608,50,75,-31,75 0 0370 oslash
+char248 "
+`u 600,851,18,97,-37,82 2 0371 ugrave
+char249 "
+'u 600,849,18,97,-37,82 2 0372 uacute
+char250 "
+^u 600,774,18,97,-37,82 2 0373 ucircumflex
+char251 "
+:u 600,769,18,97,-37,82 2 0374 udieresis
+char252 "
+'y 580,849,185,144,-25,82 3 0375 yacute
+char253 "
+Tp 660,740,185,76,37,76 3 0376 thorn
+char254 "
+:y 580,769,185,144,-25,82 3 0377 ydieresis
+char255 "
diff --git a/devps/AI b/devps/AI
new file mode 100644
index 000000000..686823706
--- /dev/null
+++ b/devps/AI
@@ -0,0 +1,559 @@
+name AI
+internalname AvantGarde-BookOblique
+slant 10.5
+spacewidth 277
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -62
+A w -65
+A v -70
+A u -20
+A ' -100
+A rq -100
+A Y -92
+A W -60
+A V -102
+A U -40
+A T -45
+A Q -40
+A O -50
+A G -40
+A C -40
+B A -10
+C A -40
+D . -20
+D , -20
+D Y -30
+D W -10
+D V -50
+D A -50
+F . -160
+F e -20
+F , -180
+F a -20
+F A -75
+G . -20
+G , -20
+G Y -20
+J . -15
+J a -20
+J A -30
+K o -15
+K e -20
+K O -20
+L y -23
+L ' -130
+L rq -130
+L Y -91
+L W -67
+L V -113
+L T -46
+O . -30
+O , -30
+O Y -30
+O X -30
+O W -20
+O V -60
+O T -30
+O A -60
+P . -300
+P o -60
+P e -20
+P , -280
+P a -20
+P A -114
+Q , 20
+R Y -10
+R W 10
+R V -10
+R T 6
+S , 20
+T y -50
+T w -55
+T u -46
+T ; -29
+T r -30
+T . -91
+T o -70
+T i 10
+T - -75
+T hy -75
+T char173 -75
+T e -49
+T , -82
+T : -15
+T a -90
+T O -30
+T A -45
+U . -20
+U , -20
+U A -40
+V u -40
+V ; -33
+V . -165
+V o -101
+V i -5
+V - -75
+V hy -75
+V char173 -75
+V e -101
+V , -145
+V : -18
+V a -104
+V O -60
+V G -20
+V A -102
+W y -2
+W u -30
+W ; -33
+W . -106
+W o -46
+W i 6
+W - -35
+W hy -35
+W char173 -35
+W e -47
+W , -106
+W : -15
+W a -50
+W O -20
+W A -58
+Y u -52
+Y ; -23
+Y . -175
+Y o -89
+Y - -85
+Y hy -85
+Y char173 -85
+Y e -89
+Y , -145
+Y : -10
+Y a -93
+Y O -30
+Y A -92
+a p 20
+a b 20
+b y -20
+b v -20
+c y -20
+c k -15
+, ' -120
+, rq -120
+e y -20
+e w -20
+e v -20
+f . -50
+f o -40
+f l -30
+f i -34
+f f -60
+f e -20
+f .i -34
+f , -50
+f a -40
+g a -15
+h y -30
+k y -5
+k e -15
+m y -20
+m u -20
+m a -20
+n y -15
+n v -20
+o y -20
+o x -15
+o w -20
+o v -30
+p y -20
+. ' -120
+. rq -120
+lq ` -35
+lq oq -35
+lq A -100
+` ` -203
+` oq -203
+oq ` -203
+oq oq -203
+` A -100
+oq A -100
+' v -30
+' t 10
+' s -15
+' r -20
+' ' -203
+' rq -35
+' d -110
+r y 40
+r v 40
+r u 20
+r t 20
+r s 20
+r q -8
+r . -73
+r p 20
+r o -20
+r n 21
+r m 28
+r l 20
+r k 20
+r i 20
+r - -60
+r hy -60
+r char173 -60
+r g -15
+r e -4
+r d -6
+r , -75
+r c -20
+r a -20
+s . 20
+s , 20
+v . -130
+v o -30
+v e -20
+v , -100
+v a -30
+w . -100
+w o -30
+w h 15
+w e -20
+w , -90
+w a -30
+y . -125
+y o -30
+y e -20
+y , -110
+y a -30
+charset
+ha 606,740,0,54,-60,54 2 0000 asciicircum
+ti 606,319,0,28,-64,28 0 0001 asciitilde
+vS 498,927,13,145,-7,81 2 0002 Scaron
+vZ 480,927,0,166,38,81 2 0003 Zcaron
+vs 388,764,13,170,1,81 2 0004 scaron
+vz 425,764,0,152,40,81 2 0005 zcaron
+:Y 592,928,0,187,-88,81 2 0006 Ydieresis
+tm 1000,740,0,3,-87,3 2 0007 trademark
+aq 198,740,0,129,-103,81 2 0010 quotesingle
+space 277 0 0040
+! 295,740,0,77,-61,77 2 0041 exclam
+" 309,740,0,151,-80,81 2 0042 quotedbl
+# 554,740,0,116,-21,81 2 0043 numbersign
+sh "
+$ 554,811,70,77,-57,77 2 0044 dollar
+Do "
+% 775,751,13,62,-74,62 2 0045 percent
+& 757,753,12,68,-42,68 2 0046 ampersand
+' 351,740,0,92,-145,81 2 0047 quoteright
+( 369,757,205,176,-39,81 3 0050 parenleft
+) 369,757,205,63,74,63 3 0051 parenright
+* 425,740,0,104,-120,81 2 0052 asterisk
++ 606,506,0,52,-42,52 0 0053 plus
+, 277,126,67,0,48 0 0054 comma
+- 332,315,0,78,-26,78 0 0055 hyphen
+hy "
+char173 "
+. 277,126,0,0,-52 0 0056 period
+/ 437,740,100,153,25,81 2 0057 slash
+sl "
+0 554,753,13,118,-21,81 2 0060 zero
+1 554,740,0,0,-210 2 0061 one
+2 554,753,0,111,10,81 2 0062 two
+3 554,753,13,61,-23,61 2 0063 three
+4 554,740,0,94,11,81 2 0064 four
+5 554,740,13,101,-19,81 2 0065 five
+6 554,739,13,76,-15,76 2 0066 six
+7 554,740,0,124,-60,81 2 0067 seven
+8 554,753,13,76,-27,76 2 0070 eight
+9 554,752,0,122,-61,81 2 0071 nine
+: 277,548,0,51,-52,51 0 0072 colon
+; 277,548,67,51,48,51 0 0073 semicolon
+< 606,514,8,93,-37,81 0 0074 less
+= 606,388,0,71,-23,71 0 0075 equal
+> 606,514,8,57,-1,57 0 0076 greater
+? 591,752,0,87,-108,81 2 0077 question
+@ 867,753,13,71,-76,71 2 0100 at
+at "
+A 740,740,0,39,38,39 2 0101 A
+B 574,740,0,82,-24,81 2 0102 B
+C 813,752,13,107,-55,81 2 0103 C
+D 744,740,0,79,-24,79 2 0104 D
+E 536,740,0,126,-20,81 2 0105 E
+F 485,740,0,146,-20,81 2 0106 F
+G 872,753,13,69,-53,69 2 0107 G
+H 683,740,0,111,-26,81 2 0110 H
+I 226,740,0,111,-26,81 2 0111 I
+J 482,740,13,107,13,81 2 0112 J
+K 591,740,0,187,-31,81 2 0113 K
+L 462,740,0,62,-32,62 2 0114 L
+M 919,740,0,111,-26,81 2 0115 M
+N 740,740,0,111,-25,81 2 0116 N
+O 869,753,13,82,-55,81 2 0117 O
+P 592,740,0,122,-25,81 2 0120 P
+Q 871,753,13,91,-52,81 2 0121 Q
+R 607,740,0,112,-20,81 2 0122 R
+S 498,753,13,113,-7,81 2 0123 S
+T 426,740,0,180,-81,81 2 0124 T
+U 655,740,13,111,-68,81 2 0125 U
+V 702,740,0,178,-95,81 2 0126 V
+W 960,740,0,177,-98,81 2 0127 W
+X 609,740,0,165,42,81 2 0130 X
+Y 592,740,0,187,-88,81 2 0131 Y
+Z 480,740,0,166,38,81 2 0132 Z
+[ 351,753,179,176,-95,81 2 0133 bracketleft
+lB "
+\ 605,740,100,0,-205 2 0134 backslash
+rs "
+] 351,753,179,11,69,11 2 0135 bracketright
+rB "
+a^ 502,764,0,94,-142,81 2 0136 circumflex
+^ "
+_ 500,0,125,36,73,36 0 0137 underscore
+` 351,740,0,57,-182,57 2 0140 quoteleft
+oq "
+a 683,561,13,89,-38,81 0 0141 a
+b 682,740,13,71,-18,71 2 0142 b
+c 647,561,13,81,-37,81 0 0143 c
+d 685,740,13,120,-35,81 2 0144 d
+e 650,561,13,64,-34,64 0 0145 e
+f 314,753,0,190,-54,81 2 0146 f
+g 673,561,215,84,-6,81 1 0147 g
+h 610,740,0,46,-12,46 2 0150 h
+i 200,740,0,122,-15,81 2 0151 i
+j 203,740,192,121,130,81 3 0152 j
+k 502,740,0,136,-20,81 2 0153 k
+l 200,740,0,122,-15,81 2 0154 l
+m 938,561,0,50,-16,50 0 0155 m
+n 610,561,0,49,-15,49 0 0156 n
+o 655,561,13,64,-38,64 0 0157 o
+p 682,561,192,67,22,67 1 0160 p
+q 682,561,192,85,-33,81 1 0161 q
+r 301,561,0,144,-15,81 0 0162 r
+s 388,561,13,86,1,81 0 0163 s
+t 339,740,0,142,-54,81 2 0164 t
+u 608,547,13,84,-50,81 0 0165 u
+v 554,547,0,143,-58,81 0 0166 v
+w 831,547,0,140,-64,81 0 0167 w
+x 480,547,0,139,38,81 0 0170 x
+y 536,547,192,138,-47,81 1 0171 y
+z 425,547,0,123,40,81 0 0172 z
+lC 351,740,189,167,-65,81 2 0173 braceleft
+{ "
+ba 672,740,100,0,-230 2 0174 bar
+| "
+rC 351,740,189,37,65,37 2 0175 braceright
+} "
+a~ 439,754,0,131,-129,81 2 0176 tilde
+~ "
+bq 354,126,68,0,-26 0 0200 quotesinglbase
+Fo 425,481,0,94,-42,81 0 0201 guillemotleft
+char171 "
+Fc 425,481,0,62,-10,62 0 0202 guillemotright
+char187 "
+bu 606,532,0,0,-167 0 0203 bullet
+Fn 554,818,153,165,89,81 2 0204 florin
+f/ 166,740,0,301,163,81 2 0205 fraction
+%0 1174,751,13,58,-78,58 2 0206 perthousand
+dg 553,740,133,90,-96,81 2 0207 dagger
+dd 553,740,133,90,-22,81 2 0210 daggerdbl
+en 500,315,0,73,-31,73 0 0211 endash
+em 1000,315,0,73,-31,73 0 0212 emdash
+fi 487,753,0,122,-54,81 2 0214 fi
+fl 485,753,0,122,-54,81 2 0215 fl
+.i 200,547,0,86,-15,81 0 0220 dotlessi
+ga 378,786,0,97,-154,81 2 0222 grave
+a" 552,800,0,92,-189,81 2 0223 hungarumlaut
+a. 222,765,0,118,-142,81 2 0224 dotaccent
+ab 453,754,0,138,-142,81 2 0225 breve
+ah 502,764,0,113,-160,81 2 0226 caron
+ao 332,807,0,119,-141,81 2 0227 ring
+ho 302,0,191,0,-3 1 0230 ogonek
+lq 502,740,0,55,-184,55 2 0231 quotedblleft
+rq 484,740,0,108,-147,81 2 0232 quotedblright
+oe 1137,561,13,73,-30,73 0 0233 oe
+/l 300,740,0,104,-45,81 2 0234 lslash
+Bq 502,126,68,0,-26 0 0235 quotedblbase
+OE 1194,753,13,135,-57,81 2 0236 OE
+/L 517,740,0,62,-57,62 2 0237 Lslash
+r! 295,548,192,41,-24,41 1 0241 exclamdown
+char161 "
+ct 554,707,0,92,-65,81 0 0242 cent
+char162 "
+Po 554,753,0,110,21,81 2 0243 sterling
+char163 "
+Cs 554,580,0,141,26,81 0 0244 currency
+char164 "
+Ye 554,740,0,183,-25,81 2 0245 yen
+char165 "
+bb 672,740,100,0,-230 2 0246 brokenbar
+char166 "
+sc 615,753,141,32,-68,32 2 0247 section
+char167 "
+ad 369,765,0,118,-141,81 2 0250 dieresis
+char168 "
+co 747,752,12,133,-3,81 2 0251 copyright
+char169 "
+Of 369,753,0,175,-52,81 2 0252 ordfeminine
+char170 "
+fo 251,481,0,94,-42,81 0 0253 guilsinglleft
+no 606,388,0,71,-60,71 0 0254 logicalnot
+char172 "
+\- 606,287,0,52,-42,52 0 0255 minus
+rg 747,752,12,133,-3,81 2 0256 registered
+char174 "
+a- 485,736,0,112,-147,81 0 0257 macron
+char175 "
+de 400,709,0,101,-108,81 0 0260 degree
+char176 "
+char177 606,518,24,62,3,62 0 0261 plusminus
+S2 332,747,0,151,-24,81 2 0262 twosuperior
+char178 "
+S3 332,747,0,126,-48,81 2 0263 threesuperior
+char179 "
+aa 375,786,0,119,-153,81 2 0264 acute
+char180 "
+char181 608,547,184,70,4,70 0 0265 mu
+ps 564,740,110,174,-69,81 2 0266 paragraph
+char182 "
+char183 277,316,0,8,-87,8 0 0267 periodcentered
+ac 324,0,222,0,-2 1 0270 cedilla
+char184 "
+S1 332,740,0,53,-140,53 2 0271 onesuperior
+char185 "
+Om 369,753,0,147,-66,81 2 0272 ordmasculine
+char186 "
+fc 251,481,0,62,-10,62 0 0273 guilsinglright
+14 831,740,0,0,-133 2 0274 onequarter
+char188 "
+12 831,740,0,29,-114,29 2 0275 onehalf
+char189 "
+34 831,747,0,44,-76,44 2 0276 threequarters
+char190 "
+r? 591,548,205,0,-14 1 0277 questiondown
+char191 "
+`A 740,949,0,39,38,39 2 0300 Agrave
+char192 "
+'A 740,949,0,39,38,39 2 0301 Aacute
+char193 "
+^A 740,927,0,39,38,39 2 0302 Acircumflex
+char194 "
+~A 740,917,0,39,38,39 2 0303 Atilde
+char195 "
+:A 740,928,0,39,38,39 2 0304 Adieresis
+char196 "
+oA 740,955,0,39,38,39 2 0305 Aring
+char197 "
+AE 992,740,0,102,70,81 2 0306 AE
+char198 "
+,C 813,752,222,107,-55,81 3 0307 Ccedilla
+char199 "
+`E 536,949,0,126,-20,81 2 0310 Egrave
+char200 "
+'E 536,949,0,126,-20,81 2 0311 Eacute
+char201 "
+^E 536,927,0,126,-20,81 2 0312 Ecircumflex
+char202 "
+:E 536,928,0,126,-20,81 2 0313 Edieresis
+char203 "
+`I 226,949,0,164,-26,81 2 0314 Igrave
+char204 "
+'I 226,949,0,264,-26,81 2 0315 Iacute
+char205 "
+^I 226,927,0,263,-26,81 2 0316 Icircumflex
+char206 "
+:I 226,928,0,220,-26,81 2 0317 Idieresis
+char207 "
+-D 790,740,0,73,-54,73 2 0320 Eth
+char208 "
+~N 740,917,0,111,-25,81 2 0321 Ntilde
+char209 "
+`O 869,949,13,82,-55,81 2 0322 Ograve
+char210 "
+'O 869,949,13,82,-55,81 2 0323 Oacute
+char211 "
+^O 869,927,13,82,-55,81 2 0324 Ocircumflex
+char212 "
+~O 869,917,13,82,-55,81 2 0325 Otilde
+char213 "
+:O 869,928,13,82,-55,81 2 0326 Odieresis
+char214 "
+char215 606,482,0,56,-37,56 0 0327 multiply
+/O 868,819,83,111,-26,81 2 0330 Oslash
+char216 "
+`U 655,949,13,111,-68,81 2 0331 Ugrave
+char217 "
+'U 655,949,13,111,-68,81 2 0332 Uacute
+char218 "
+^U 655,927,13,111,-68,81 2 0333 Ucircumflex
+char219 "
+:U 655,928,13,111,-68,81 2 0334 Udieresis
+char220 "
+'Y 592,949,0,187,-88,81 2 0335 Yacute
+char221 "
+TP 592,740,0,79,-10,79 2 0336 Thorn
+char222 "
+ss 554,753,13,74,-11,74 2 0337 germandbls
+char223 "
+`a 683,786,13,89,-38,81 2 0340 agrave
+char224 "
+'a 683,786,13,89,-38,81 2 0341 aacute
+char225 "
+^a 683,764,13,89,-38,81 2 0342 acircumflex
+char226 "
+~a 683,754,13,89,-38,81 2 0343 atilde
+char227 "
+:a 683,765,13,89,-38,81 2 0344 adieresis
+char228 "
+oa 683,807,13,89,-38,81 2 0345 aring
+char229 "
+ae 1157,561,13,62,-30,62 0 0346 ae
+char230 "
+,c 647,561,222,81,-37,81 1 0347 ccedilla
+char231 "
+`e 650,786,13,64,-34,64 2 0350 egrave
+char232 "
+'e 650,786,13,64,-34,64 2 0351 eacute
+char233 "
+^e 650,764,13,64,-34,64 2 0352 ecircumflex
+char234 "
+:e 650,765,13,64,-34,64 2 0353 edieresis
+char235 "
+`i 200,786,0,146,-15,81 2 0354 igrave
+char236 "
+'i 200,786,0,247,-15,81 2 0355 iacute
+char237 "
+^i 200,764,0,245,9,81 2 0356 icircumflex
+char238 "
+:i 200,765,0,203,-15,81 2 0357 idieresis
+char239 "
+Sd 655,753,12,70,-38,70 2 0360 eth
+char240 "
+~n 610,754,0,49,-15,49 2 0361 ntilde
+char241 "
+`o 655,786,13,64,-38,64 2 0362 ograve
+char242 "
+'o 655,786,13,64,-38,64 2 0363 oacute
+char243 "
+^o 655,764,13,64,-38,64 2 0364 ocircumflex
+char244 "
+~o 655,754,13,64,-38,64 2 0365 otilde
+char245 "
+:o 655,765,13,64,-38,64 2 0366 odieresis
+char246 "
+char247 606,519,13,52,-42,52 0 0367 divide
+/o 653,614,64,100,-1,81 0 0370 oslash
+char248 "
+`u 608,786,13,84,-50,81 2 0371 ugrave
+char249 "
+'u 608,786,13,84,-50,81 2 0372 uacute
+char250 "
+^u 608,764,13,84,-50,81 2 0373 ucircumflex
+char251 "
+:u 608,765,13,84,-50,81 2 0374 udieresis
+char252 "
+'y 536,786,192,138,-47,81 3 0375 yacute
+char253 "
+Tp 682,740,192,67,22,67 3 0376 thorn
+char254 "
+:y 536,765,192,138,-47,81 3 0377 ydieresis
+char255 "
diff --git a/devps/AR b/devps/AR
new file mode 100644
index 000000000..00fd6320b
--- /dev/null
+++ b/devps/AR
@@ -0,0 +1,558 @@
+name AR
+internalname AvantGarde-Book
+spacewidth 277
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -62
+A w -65
+A v -70
+A u -20
+A ' -100
+A rq -100
+A Y -92
+A W -60
+A V -102
+A U -40
+A T -45
+A Q -40
+A O -50
+A G -40
+A C -40
+B A -10
+C A -40
+D . -20
+D , -20
+D Y -30
+D W -10
+D V -50
+D A -50
+F . -160
+F e -20
+F , -180
+F a -20
+F A -75
+G . -20
+G , -20
+G Y -20
+J . -15
+J a -20
+J A -30
+K o -15
+K e -20
+K O -20
+L y -23
+L ' -130
+L rq -130
+L Y -91
+L W -67
+L V -113
+L T -46
+O . -30
+O , -30
+O Y -30
+O X -30
+O W -20
+O V -60
+O T -30
+O A -60
+P . -300
+P o -60
+P e -20
+P , -280
+P a -20
+P A -114
+Q , 20
+R Y -10
+R W 10
+R V -10
+R T 6
+S , 20
+T y -50
+T w -55
+T u -46
+T ; -29
+T r -30
+T . -91
+T o -70
+T i 10
+T - -75
+T hy -75
+T char173 -75
+T e -49
+T , -82
+T : -15
+T a -90
+T O -30
+T A -45
+U . -20
+U , -20
+U A -40
+V u -40
+V ; -33
+V . -165
+V o -101
+V i -5
+V - -75
+V hy -75
+V char173 -75
+V e -101
+V , -145
+V : -18
+V a -104
+V O -60
+V G -20
+V A -102
+W y -2
+W u -30
+W ; -33
+W . -106
+W o -46
+W i 6
+W - -35
+W hy -35
+W char173 -35
+W e -47
+W , -106
+W : -15
+W a -50
+W O -20
+W A -58
+Y u -52
+Y ; -23
+Y . -175
+Y o -89
+Y - -85
+Y hy -85
+Y char173 -85
+Y e -89
+Y , -145
+Y : -10
+Y a -93
+Y O -30
+Y A -92
+a p 20
+a b 20
+b y -20
+b v -20
+c y -20
+c k -15
+, ' -120
+, rq -120
+e y -20
+e w -20
+e v -20
+f . -50
+f o -40
+f l -30
+f i -34
+f f -60
+f e -20
+f .i -34
+f , -50
+f a -40
+g a -15
+h y -30
+k y -5
+k e -15
+m y -20
+m u -20
+m a -20
+n y -15
+n v -20
+o y -20
+o x -15
+o w -20
+o v -30
+p y -20
+. ' -120
+. rq -120
+lq ` -35
+lq oq -35
+lq A -100
+` ` -203
+` oq -203
+oq ` -203
+oq oq -203
+` A -100
+oq A -100
+' v -30
+' t 10
+' s -15
+' r -20
+' ' -203
+' rq -35
+' d -110
+r y 40
+r v 40
+r u 20
+r t 20
+r s 20
+r q -8
+r . -73
+r p 20
+r o -20
+r n 21
+r m 28
+r l 20
+r k 20
+r i 20
+r - -60
+r hy -60
+r char173 -60
+r g -15
+r e -4
+r d -6
+r , -75
+r c -20
+r a -20
+s . 20
+s , 20
+v . -130
+v o -30
+v e -20
+v , -100
+v a -30
+w . -100
+w o -30
+w h 15
+w e -20
+w , -90
+w a -30
+y . -125
+y o -30
+y e -20
+y , -110
+y a -30
+charset
+ha 606,740 2 0000 asciicircum
+ti 606,319 0 0001 asciitilde
+vS 498,927,13 2 0002 Scaron
+vZ 480,927 2 0003 Zcaron
+vs 388,764,13 2 0004 scaron
+vz 425,764 2 0005 zcaron
+:Y 592,928 2 0006 Ydieresis
+tm 1000,740 2 0007 trademark
+aq 198,740 2 0010 quotesingle
+space 277 0 0040
+! 295,740 2 0041 exclam
+" 309,740 2 0042 quotedbl
+# 554,740 2 0043 numbersign
+sh "
+$ 554,811,70 2 0044 dollar
+Do "
+% 775,751,13 2 0045 percent
+& 757,753,12 2 0046 ampersand
+' 351,740 2 0047 quoteright
+( 369,757,205 3 0050 parenleft
+) 369,757,205 3 0051 parenright
+* 425,740 2 0052 asterisk
++ 606,506 0 0053 plus
+, 277,126,67 0 0054 comma
+- 332,315 0 0055 hyphen
+hy "
+char173 "
+. 277,126 0 0056 period
+/ 437,740,100 2 0057 slash
+sl "
+0 554,753,13 2 0060 zero
+1 554,740 2 0061 one
+2 554,753 2 0062 two
+3 554,753,13 2 0063 three
+4 554,740 2 0064 four
+5 554,740,13 2 0065 five
+6 554,739,13 2 0066 six
+7 554,740 2 0067 seven
+8 554,753,13 2 0070 eight
+9 554,752 2 0071 nine
+: 277,548 0 0072 colon
+; 277,548,67 0 0073 semicolon
+< 606,514,8 0 0074 less
+= 606,388 0 0075 equal
+> 606,514,8 0 0076 greater
+? 591,752 2 0077 question
+@ 867,753,13 2 0100 at
+at "
+A 740,740 2 0101 A
+B 574,740 2 0102 B
+C 813,752,13 2 0103 C
+D 744,740 2 0104 D
+E 536,740 2 0105 E
+F 485,740 2 0106 F
+G 872,753,13 2 0107 G
+H 683,740 2 0110 H
+I 226,740 2 0111 I
+J 482,740,13 2 0112 J
+K 591,740 2 0113 K
+L 462,740 2 0114 L
+M 919,740 2 0115 M
+N 740,740 2 0116 N
+O 869,753,13 2 0117 O
+P 592,740 2 0120 P
+Q 871,753,13 2 0121 Q
+R 607,740 2 0122 R
+S 498,753,13 2 0123 S
+T 426,740 2 0124 T
+U 655,740,13 2 0125 U
+V 702,740 2 0126 V
+W 960,740 2 0127 W
+X 609,740 2 0130 X
+Y 592,740 2 0131 Y
+Z 480,740 2 0132 Z
+[ 351,753,179 2 0133 bracketleft
+lB "
+\ 605,740,100 2 0134 backslash
+rs "
+] 351,753,179 2 0135 bracketright
+rB "
+a^ 502,764 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 351,740 2 0140 quoteleft
+oq "
+a 683,561,13 0 0141 a
+b 682,740,13 2 0142 b
+c 647,561,13 0 0143 c
+d 685,740,13 2 0144 d
+e 650,561,13 0 0145 e
+f 314,753 2 0146 f
+g 673,561,215 1 0147 g
+h 610,740 2 0150 h
+i 200,740 2 0151 i
+j 203,740,192 3 0152 j
+k 502,740 2 0153 k
+l 200,740 2 0154 l
+m 938,561 0 0155 m
+n 610,561 0 0156 n
+o 655,561,13 0 0157 o
+p 682,561,192 1 0160 p
+q 682,561,192 1 0161 q
+r 301,561 0 0162 r
+s 388,561,13 0 0163 s
+t 339,740 2 0164 t
+u 608,547,13 0 0165 u
+v 554,547 0 0166 v
+w 831,547 0 0167 w
+x 480,547 0 0170 x
+y 536,547,192 1 0171 y
+z 425,547 0 0172 z
+lC 351,740,189 2 0173 braceleft
+{ "
+ba 672,740,100 2 0174 bar
+| "
+rC 351,740,189 2 0175 braceright
+} "
+a~ 439,754 2 0176 tilde
+~ "
+bq 354,126,68 0 0200 quotesinglbase
+Fo 425,481 0 0201 guillemotleft
+char171 "
+Fc 425,481 0 0202 guillemotright
+char187 "
+bu 606,532 0 0203 bullet
+Fn 554,818,153 2 0204 florin
+f/ 166,740 2 0205 fraction
+%0 1174,751,13 2 0206 perthousand
+dg 553,740,133 2 0207 dagger
+dd 553,740,133 2 0210 daggerdbl
+en 500,315 0 0211 endash
+em 1000,315 0 0212 emdash
+fi 487,753 2 0214 fi
+fl 485,753 2 0215 fl
+.i 200,547 0 0220 dotlessi
+ga 378,786 2 0222 grave
+a" 552,800 2 0223 hungarumlaut
+a. 222,765 2 0224 dotaccent
+ab 453,754 2 0225 breve
+ah 502,764 2 0226 caron
+ao 332,807 2 0227 ring
+ho 302,0,191 1 0230 ogonek
+lq 502,740 2 0231 quotedblleft
+rq 484,740 2 0232 quotedblright
+oe 1137,561,13 0 0233 oe
+/l 300,740 2 0234 lslash
+Bq 502,126,68 0 0235 quotedblbase
+OE 1194,753,13 2 0236 OE
+/L 517,740 2 0237 Lslash
+r! 295,548,192 1 0241 exclamdown
+char161 "
+ct 554,707 0 0242 cent
+char162 "
+Po 554,753 2 0243 sterling
+char163 "
+Cs 554,580 0 0244 currency
+char164 "
+Ye 554,740 2 0245 yen
+char165 "
+bb 672,740,100 2 0246 brokenbar
+char166 "
+sc 615,753,141 2 0247 section
+char167 "
+ad 369,765 2 0250 dieresis
+char168 "
+co 747,752,12 2 0251 copyright
+char169 "
+Of 369,753 2 0252 ordfeminine
+char170 "
+fo 251,481 0 0253 guilsinglleft
+no 606,388 0 0254 logicalnot
+char172 "
+\- 606,287 0 0255 minus
+rg 747,752,12 2 0256 registered
+char174 "
+a- 485,736 0 0257 macron
+char175 "
+de 400,709 0 0260 degree
+char176 "
+char177 606,518,24 0 0261 plusminus
+S2 332,747 2 0262 twosuperior
+char178 "
+S3 332,747 2 0263 threesuperior
+char179 "
+aa 375,786 2 0264 acute
+char180 "
+char181 608,547,184 0 0265 mu
+ps 564,740,110 2 0266 paragraph
+char182 "
+char183 277,316 0 0267 periodcentered
+ac 324,0,222 1 0270 cedilla
+char184 "
+S1 332,740 2 0271 onesuperior
+char185 "
+Om 369,753 2 0272 ordmasculine
+char186 "
+fc 251,481 0 0273 guilsinglright
+14 831,740 2 0274 onequarter
+char188 "
+12 831,740 2 0275 onehalf
+char189 "
+34 831,747 2 0276 threequarters
+char190 "
+r? 591,548,205 1 0277 questiondown
+char191 "
+`A 740,949 2 0300 Agrave
+char192 "
+'A 740,949 2 0301 Aacute
+char193 "
+^A 740,927 2 0302 Acircumflex
+char194 "
+~A 740,917 2 0303 Atilde
+char195 "
+:A 740,928 2 0304 Adieresis
+char196 "
+oA 740,955 2 0305 Aring
+char197 "
+AE 992,740 2 0306 AE
+char198 "
+,C 813,752,222 3 0307 Ccedilla
+char199 "
+`E 536,949 2 0310 Egrave
+char200 "
+'E 536,949 2 0311 Eacute
+char201 "
+^E 536,927 2 0312 Ecircumflex
+char202 "
+:E 536,928 2 0313 Edieresis
+char203 "
+`I 226,949 2 0314 Igrave
+char204 "
+'I 226,949 2 0315 Iacute
+char205 "
+^I 226,927 2 0316 Icircumflex
+char206 "
+:I 226,928 2 0317 Idieresis
+char207 "
+-D 790,740 2 0320 Eth
+char208 "
+~N 740,917 2 0321 Ntilde
+char209 "
+`O 869,949,13 2 0322 Ograve
+char210 "
+'O 869,949,13 2 0323 Oacute
+char211 "
+^O 869,927,13 2 0324 Ocircumflex
+char212 "
+~O 869,917,13 2 0325 Otilde
+char213 "
+:O 869,928,13 2 0326 Odieresis
+char214 "
+char215 606,482 0 0327 multiply
+/O 868,819,83 2 0330 Oslash
+char216 "
+`U 655,949,13 2 0331 Ugrave
+char217 "
+'U 655,949,13 2 0332 Uacute
+char218 "
+^U 655,927,13 2 0333 Ucircumflex
+char219 "
+:U 655,928,13 2 0334 Udieresis
+char220 "
+'Y 592,949 2 0335 Yacute
+char221 "
+TP 592,740 2 0336 Thorn
+char222 "
+ss 554,753,13 2 0337 germandbls
+char223 "
+`a 683,786,13 2 0340 agrave
+char224 "
+'a 683,786,13 2 0341 aacute
+char225 "
+^a 683,764,13 2 0342 acircumflex
+char226 "
+~a 683,754,13 2 0343 atilde
+char227 "
+:a 683,765,13 2 0344 adieresis
+char228 "
+oa 683,807,13 2 0345 aring
+char229 "
+ae 1157,561,13 0 0346 ae
+char230 "
+,c 647,561,222 1 0347 ccedilla
+char231 "
+`e 650,786,13 2 0350 egrave
+char232 "
+'e 650,786,13 2 0351 eacute
+char233 "
+^e 650,764,13 2 0352 ecircumflex
+char234 "
+:e 650,765,13 2 0353 edieresis
+char235 "
+`i 200,786 2 0354 igrave
+char236 "
+'i 200,786 2 0355 iacute
+char237 "
+^i 200,764 2 0356 icircumflex
+char238 "
+:i 200,765 2 0357 idieresis
+char239 "
+Sd 655,753,12 2 0360 eth
+char240 "
+~n 610,754 2 0361 ntilde
+char241 "
+`o 655,786,13 2 0362 ograve
+char242 "
+'o 655,786,13 2 0363 oacute
+char243 "
+^o 655,764,13 2 0364 ocircumflex
+char244 "
+~o 655,754,13 2 0365 otilde
+char245 "
+:o 655,765,13 2 0366 odieresis
+char246 "
+char247 606,519,13 0 0367 divide
+/o 653,614,64 0 0370 oslash
+char248 "
+`u 608,786,13 2 0371 ugrave
+char249 "
+'u 608,786,13 2 0372 uacute
+char250 "
+^u 608,764,13 2 0373 ucircumflex
+char251 "
+:u 608,765,13 2 0374 udieresis
+char252 "
+'y 536,786,192 3 0375 yacute
+char253 "
+Tp 682,740,192 3 0376 thorn
+char254 "
+:y 536,765,192 3 0377 ydieresis
+char255 "
diff --git a/ps/devps/BMB b/devps/BMB
index 3f10f3a0e..270f7db56 100644
--- a/ps/devps/BMB
+++ b/devps/BMB
@@ -27,9 +27,6 @@ R Y -20
R W -24
R V -29
R T -4
-T y 0
-T w 0
-T u 0
T ; 5
T s -10
T r 27
@@ -116,26 +113,27 @@ vs 520,717,8 2 0004 scaron
vz 560,717 2 0005 zcaron
:Y 700,877 2 0006 Ydieresis
tm 980,681 2 0007 trademark
+aq 240,698 2 0010 quotesingle
space 340 0 0040
! 360,698,8 2 0041 exclam
" 420,698 2 0042 quotedbl
-# 600,681 2 0043 numbersign
+# 660,681 2 0043 numbersign
sh "
-$ 660,805,119 3 0044 dollar
+$ 660,805,119 2 0044 dollar
Do "
% 940,698,8 2 0045 percent
& 800,698,17 2 0046 ampersand
' 320,698 2 0047 quoteright
-( 320,749,150 3 0050 parenleft
-) 320,749,150 3 0051 parenright
+( 320,749,150 2 0050 parenleft
+) 320,749,150 2 0051 parenright
* 460,697 2 0052 asterisk
+ 600,514 0 0053 plus
-, 340,162,124 1 0054 comma
+, 340,162,124 0 0054 comma
- 360,318 0 0055 hyphen
hy "
char173 "
. 340,172,8 0 0056 period
-/ 600,725,149 3 0057 slash
+/ 600,725,149 2 0057 slash
sl "
0 660,698,17 2 0060 zero
1 660,681 2 0061 one
@@ -148,7 +146,7 @@ sl "
8 660,698,17 2 0070 eight
9 660,698,17 2 0071 nine
: 340,515,8 0 0072 colon
-; 340,515,124 1 0073 semicolon
+; 340,515,124 0 0073 semicolon
< 600,542,9 0 0074 less
= 600,421 0 0075 equal
> 600,542,9 0 0076 greater
@@ -181,15 +179,15 @@ W 940,681 2 0127 W
X 780,681 2 0130 X
Y 700,681 2 0131 Y
Z 640,681 2 0132 Z
-[ 300,725,138 3 0133 bracketleft
+[ 300,725,138 2 0133 bracketleft
lB "
\ 600,725 2 0134 backslash
rs "
-] 300,725,138 3 0135 bracketright
+] 300,725,138 2 0135 bracketright
rB "
a^ 500,731 2 0136 circumflex
^ "
-_ 500,0,174 1 0137 underscore
+_ 500,0,155 0 0137 underscore
` 320,698 2 0140 quoteleft
oq "
a 580,515,8 0 0141 a
@@ -198,7 +196,7 @@ c 580,515,8 0 0143 c
d 640,725,8 2 0144 d
e 580,515,8 0 0145 e
f 380,741 2 0146 f
-g 580,595,243 3 0147 g
+g 580,595,243 1 0147 g
h 680,725 2 0150 h
i 360,729 2 0151 i
j 340,729,221 3 0152 j
@@ -218,25 +216,25 @@ w 800,502 0 0167 w
x 600,502 0 0170 x
y 620,502,221 1 0171 y
z 560,502 0 0172 z
-lC 320,726,139 3 0173 braceleft
+lC 320,726,139 2 0173 braceleft
{ "
ba 600,725 2 0174 bar
| "
-rC 320,726,139 3 0175 braceright
+rC 320,726,139 2 0175 braceright
} "
a~ 480,691 2 0176 tilde
~ "
---- 320,144,114 1 0200 quotesinglbase
+bq 320,144,114 0 0200 quotesinglbase
Fo 400,457 0 0201 guillemotleft
char171 "
Fc 400,457 0 0202 guillemotright
char187 "
bu 460,511 0 0203 bullet
---- 660,749,209 3 0204 florin
+Fn 660,749,209 2 0204 florin
f/ 120,681 2 0205 fraction
%0 1360,698,8 2 0206 perthousand
-dg 440,698,156 3 0207 dagger
-dd 380,698,156 3 0210 daggerdbl
+dg 440,698,156 2 0207 dagger
+dd 380,698,156 2 0210 daggerdbl
en 500,318 0 0211 endash
em 1000,318 0 0212 emdash
fi 740,741 2 0214 fi
@@ -248,25 +246,27 @@ a. 320,730 2 0224 dotaccent
ab 500,722 2 0225 breve
ah 500,717 2 0226 caron
ao 340,755 2 0227 ring
-ho 320,0,163 1 0230 ogonek
+ho 320,0,163 0 0230 ogonek
lq 540,698 2 0231 quotedblleft
rq 540,698 2 0232 quotedblright
oe 940,515,8 0 0233 oe
/l 340,725 2 0234 lslash
---- 540,144,114 1 0235 quotedblbase
+Bq 540,144,114 0 0235 quotedblbase
OE 1220,698,17 2 0236 OE
/L 640,681 2 0237 Lslash
-r! 360,515,191 1 0241 exclamdown
+r! 360,515,191 0 0241 exclamdown
char161 "
ct 660,674 2 0242 cent
char162 "
Po 660,698,17 2 0243 sterling
char163 "
-Cs 600,593 2 0244 currency
+Cs 660,593 0 0244 currency
char164 "
Ye 660,681 2 0245 yen
char165 "
-sc 600,698,153 3 0247 section
+bb 600,725 2 0246 brokenbar
+char166 "
+sc 600,698,153 2 0247 section
char167 "
ad 500,698 2 0250 dieresis
char168 "
@@ -282,17 +282,33 @@ rg 740,698,17 2 0256 registered
char174 "
a- 460,663 2 0257 macron
char175 "
+de 400,698 2 0260 degree
+char176 "
+char177 600,514 0 0261 plusminus
+S2 396,698 2 0262 twosuperior
+char178 "
+S3 396,698 2 0263 threesuperior
+char179 "
aa 400,731 2 0264 acute
char180 "
-ps 800,681,101 3 0266 paragraph
+char181 660,502,221 1 0265 mu
+ps 800,681,101 2 0266 paragraph
char182 "
char183 340,355 0 0267 periodcentered
ac 360,0,213 1 0270 cedilla
char184 "
+S1 396,687 2 0271 onesuperior
+char185 "
Om 400,698 2 0272 ordmasculine
char186 "
fc 220,457 0 0273 guilsinglright
-r? 660,515,191 1 0277 questiondown
+14 990,681 2 0274 onequarter
+char188 "
+12 990,681 2 0275 onehalf
+char189 "
+34 990,692 2 0276 threequarters
+char190 "
+r? 660,515,191 0 0277 questiondown
char191 "
`A 720,909 2 0300 Agrave
char192 "
@@ -326,6 +342,8 @@ char205 "
char206 "
:I 400,877 2 0317 Idieresis
char207 "
+-D 780,681 2 0320 Eth
+char208 "
~N 740,870 2 0321 Ntilde
char209 "
`O 800,909,17 2 0322 Ograve
@@ -338,7 +356,8 @@ char212 "
char213 "
:O 800,877,17 2 0326 Odieresis
char214 "
-/O 800,781,110 3 0330 Oslash
+char215 600,514 0 0327 multiply
+/O 800,781,110 2 0330 Oslash
char216 "
`U 740,909,17 2 0331 Ugrave
char217 "
@@ -348,7 +367,11 @@ char218 "
char219 "
:U 740,877,17 2 0334 Udieresis
char220 "
-ss 660,699,91 3 0337 germandbls
+'Y 700,910 2 0335 Yacute
+char221 "
+TP 660,681 2 0336 Thorn
+char222 "
+ss 660,699,91 2 0337 germandbls
char223 "
`a 580,730,8 2 0340 agrave
char224 "
@@ -382,6 +405,8 @@ char237 "
char238 "
:i 360,698 2 0357 idieresis
char239 "
+Sd 620,741,8 2 0360 eth
+char240 "
~n 680,691 2 0361 ntilde
char241 "
`o 620,730,8 2 0362 ograve
@@ -394,6 +419,7 @@ char244 "
char245 "
:o 620,698,8 2 0366 odieresis
char246 "
+char247 600,521 0 0367 divide
/o 620,551,40 0 0370 oslash
char248 "
`u 660,730,8 2 0371 ugrave
@@ -404,5 +430,9 @@ char250 "
char251 "
:u 660,698,8 2 0374 udieresis
char252 "
+'y 620,731,221 3 0375 yacute
+char253 "
+Tp 640,725,212 3 0376 thorn
+char254 "
:y 620,698,221 3 0377 ydieresis
char255 "
diff --git a/ps/devps/BMBI b/devps/BMBI
index fe8f90169..0670451a9 100644
--- a/ps/devps/BMBI
+++ b/devps/BMBI
@@ -81,7 +81,6 @@ Y u -1
Y ; -4
Y q -43
Y . -113
-Y p 0
Y o -41
Y i 20
Y - -20
@@ -117,26 +116,27 @@ vs 540,749,8,83,18,73 2 0004 scaron
vz 560,749,8,76,14,73 2 0005 zcaron
:Y 660,900,0,207,-22,73 2 0006 Ydieresis
tm 940,681,0,92,8,73 2 0007 trademark
+aq 180,696,0,165,-76,73 2 0010 quotesingle
space 340 0 0040
! 320,698,8,96,-36,73 2 0041 exclam
-" 380,697,0,197,-70,73 2 0042 quotedbl
-# 600,681,0,59,-67,59 2 0043 numbersign
+" 380,697,0,177,-90,73 2 0042 quotedbl
+# 680,681,0,19,-107,19 2 0043 numbersign
sh "
-$ 680,790,164,67,5,67 3 0044 dollar
+$ 680,790,164,67,5,67 2 0044 dollar
Do "
% 880,698,17,69,-56,69 2 0045 percent
& 980,698,17,86,2,73 2 0046 ampersand
' 320,698,0,79,-121,73 2 0047 quoteright
-( 260,741,134,178,19,73 3 0050 parenleft
-) 260,741,134,112,85,73 3 0051 parenright
+( 260,741,134,178,19,73 2 0050 parenleft
+) 260,741,134,112,85,73 2 0051 parenright
* 460,698,0,98,-76,73 2 0052 asterisk
+ 600,514,0,45,-41,45 0 0053 plus
-, 340,185,124,8,-50,8 1 0054 comma
+, 340,185,124,8,-50,8 0 0054 comma
- 280,313,0,89,-9,73 0 0055 hyphen
hy "
char173 "
. 340,177,8,6,-56,6 0 0056 period
-/ 360,741,106,192,41,73 3 0057 slash
+/ 360,742,106,192,41,73 2 0057 slash
sl "
0 680,698,17,73,-37,73 2 0060 zero
1 680,681,0,0,-73 2 0061 one
@@ -149,7 +149,7 @@ sl "
8 680,698,17,56,-18,56 2 0070 eight
9 680,698,17,82,-21,73 2 0071 nine
: 340,515,8,66,-56,66 0 0072 colon
-; 340,515,124,62,-50,62 1 0073 semicolon
+; 340,515,124,62,-50,62 0 0073 semicolon
< 620,540,9,18,-29,18 0 0074 less
= 600,421,0,45,-41,45 0 0075 equal
> 620,540,9,28,-39,28 0 0076 greater
@@ -182,15 +182,15 @@ W 1000,681,0,140,-22,73 2 0127 W
X 740,681,0,145,57,73 2 0130 X
Y 660,681,0,207,-22,73 2 0131 Y
Z 680,681,0,110,27,73 2 0132 Z
-[ 260,741,118,164,41,73 3 0133 bracketleft
+[ 260,741,118,164,41,73 2 0133 bracketleft
lB "
\ 580,741,0,45,-23,45 2 0134 backslash
rs "
-] 260,741,118,137,68,73 3 0135 bracketright
+] 260,741,118,137,68,73 2 0135 bracketright
rB "
a^ 480,749,0,93,-133,73 2 0136 circumflex
^ "
-_ 500,0,159,50,50,50 1 0137 underscore
+_ 500,0,155,50,50,50 0 0137 underscore
` 320,698,0,63,-105,63 2 0140 quoteleft
oq "
a 680,515,8,105,-34,73 0 0141 a
@@ -219,27 +219,27 @@ w 860,515,8,81,-6,73 0 0167 w
x 620,515,8,84,40,73 0 0170 x
y 600,507,213,92,25,73 1 0171 y
z 560,515,8,76,14,73 0 0172 z
-lC 300,742,123,159,-3,73 3 0173 braceleft
+lC 300,742,123,159,-3,73 2 0173 braceleft
{ "
-ba 620,741,0,0,-233 2 0174 bar
+ba 620,741,0,0,-253 2 0174 bar
| "
-rC 300,742,123,102,54,73 3 0175 braceright
+rC 300,742,123,102,54,73 2 0175 braceright
} "
a~ 480,709,0,103,-128,73 2 0176 tilde
~ "
---- 300,166,112,34,-56,34 1 0200 quotesinglbase
+bq 300,166,112,34,-56,34 0 0200 quotesinglbase
Fo 380,503,0,76,-12,73 0 0201 guillemotleft
char171 "
Fc 380,503,0,76,-12,73 0 0202 guillemotright
char187 "
bu 360,511,0,94,-10,73 0 0203 bullet
---- 680,741,199,113,78,73 3 0204 florin
-f/ 120,681,0,262,244,73 2 0205 fraction
-%0 1360,698,17,78,-1,73 2 0206 perthousand
-dg 420,698,137,96,-39,73 3 0207 dagger
-dd 420,698,137,116,-29,73 3 0210 daggerdbl
-en 500,311,0,113,-7,73 0 0211 endash
-em 1000,311,0,113,-7,73 0 0212 emdash
+Fn 680,741,199,113,78,73 2 0204 florin
+f/ 120,681,0,312,194,73 2 0205 fraction
+%0 1360,698,17,23,-56,23 2 0206 perthousand
+dg 420,698,137,96,-39,73 2 0207 dagger
+dd 420,698,137,116,-29,73 2 0210 daggerdbl
+en 500,311,0,123,10,73 0 0211 endash
+em 1000,311,0,123,10,73 0 0212 emdash
fi 820,741,213,80,241,73 3 0214 fi
fl 820,741,213,80,241,73 3 0215 fl
.i 380,507,8,90,-33,73 0 0220 dotlessi
@@ -249,25 +249,27 @@ a. 380,734,0,15,-130,15 2 0224 dotaccent
ab 460,707,0,106,-127,73 2 0225 breve
ah 480,749,0,93,-133,73 2 0226 caron
ao 360,775,0,96,-135,73 2 0227 ring
-ho 320,0,182,0,-18 1 0230 ogonek
+ho 320,0,182,0,-18 0 0230 ogonek
lq 520,698,0,75,-106,73 2 0231 quotedblleft
rq 520,698,0,90,-121,73 2 0232 quotedblright
oe 920,515,8,91,2,73 0 0233 oe
/l 380,732,8,82,-13,73 2 0234 lslash
---- 520,166,112,25,-56,25 1 0235 quotedblbase
+Bq 520,166,112,25,-56,25 0 0235 quotedblbase
OE 1180,698,17,115,-44,73 2 0236 OE
/L 640,681,0,134,36,73 2 0237 Lslash
-r! 320,515,191,74,-14,73 1 0241 exclamdown
+r! 320,515,191,74,-14,73 0 0241 exclamdown
char161 "
ct 680,718,0,0,-111 2 0242 cent
char162 "
Po 680,698,17,157,50,73 2 0243 sterling
char163 "
-Cs 680,571,0,0,14 2 0244 currency
+Cs 680,571,0,7,-98,7 0 0244 currency
char164 "
Ye 680,681,0,152,-42,73 2 0245 yen
char165 "
-sc 620,698,137,68,4,68 3 0247 section
+bb 620,741,0,0,-253 2 0246 brokenbar
+char166 "
+sc 620,698,137,68,4,68 2 0247 section
char167 "
ad 520,734,0,99,-130,73 2 0250 dieresis
char168 "
@@ -283,17 +285,33 @@ rg 780,698,17,53,-33,53 2 0256 registered
char174 "
a- 480,691,0,101,-127,73 2 0257 macron
char175 "
+de 400,698,0,80,-80,73 2 0260 degree
+char176 "
+char177 600,514,0,45,-41,45 0 0261 plusminus
+S2 408,698,0,127,-41,73 2 0262 twosuperior
+char178 "
+S3 408,698,0,125,-36,73 2 0263 threesuperior
+char179 "
aa 340,771,0,117,-126,73 2 0264 acute
char180 "
-ps 680,681,204,96,-20,73 3 0266 paragraph
+char181 680,507,213,90,-4,73 1 0265 mu
+ps 680,681,204,96,-20,73 2 0266 paragraph
char182 "
char183 340,358,0,26,-76,26 0 0267 periodcentered
ac 360,0,220,0,-18 1 0270 cedilla
char184 "
+S1 408,688,0,48,-68,48 2 0271 onesuperior
+char185 "
Om 440,685,0,77,3,73 2 0272 ordmasculine
char186 "
fc 220,503,0,79,-12,73 0 0273 guilsinglright
-r? 620,515,189,36,-33,36 1 0277 questiondown
+14 1020,681,0,84,-68,73 2 0274 onequarter
+char188 "
+12 1020,681,0,66,-68,66 2 0275 onehalf
+char189 "
+34 1020,691,0,84,-36,73 2 0276 threequarters
+char190 "
+r? 620,515,189,36,-33,36 0 0277 questiondown
char191 "
`A 720,937,0,99,77,73 2 0300 Agrave
char192 "
@@ -327,6 +345,8 @@ char205 "
char206 "
:I 380,900,0,169,36,73 2 0317 Idieresis
char207 "
+-D 760,681,0,95,36,73 2 0320 Eth
+char208 "
~N 740,875,0,155,36,73 2 0321 Ntilde
char209 "
`O 760,937,17,96,-28,73 2 0322 Ograve
@@ -339,6 +359,7 @@ char212 "
char213 "
:O 760,900,17,96,-28,73 2 0326 Odieresis
char214 "
+char215 600,514,0,45,-41,45 0 0327 multiply
/O 760,725,29,137,29,73 2 0330 Oslash
char216 "
`U 740,937,17,165,-62,73 2 0331 Ugrave
@@ -349,6 +370,10 @@ char218 "
char219 "
:U 740,900,17,165,-62,73 2 0334 Udieresis
char220 "
+'Y 660,937,0,207,-22,73 2 0335 Yacute
+char221 "
+TP 640,681,0,111,56,73 2 0336 Thorn
+char222 "
ss 660,741,213,92,281,73 3 0337 germandbls
char223 "
`a 680,771,8,105,-34,73 2 0340 agrave
@@ -383,6 +408,8 @@ char237 "
char238 "
:i 380,734,8,149,-33,73 2 0357 idieresis
char239 "
+Sd 600,741,8,112,-9,73 2 0360 eth
+char240 "
~n 680,709,8,85,-33,73 2 0361 ntilde
char241 "
`o 600,771,8,77,-9,73 2 0362 ograve
@@ -395,7 +422,8 @@ char244 "
char245 "
:o 600,734,8,77,-9,73 2 0366 odieresis
char246 "
-/o 600,571,54,111,33,73 2 0370 oslash
+char247 600,521,0,45,-41,45 0 0367 divide
+/o 600,571,54,111,33,73 0 0370 oslash
char248 "
`u 680,771,8,90,-33,73 2 0371 ugrave
char249 "
@@ -405,5 +433,9 @@ char250 "
char251 "
:u 680,734,8,90,-33,73 2 0374 udieresis
char252 "
+'y 600,771,213,92,25,73 3 0375 yacute
+char253 "
+Tp 660,732,213,72,74,72 3 0376 thorn
+char254 "
:y 600,734,213,92,25,73 3 0377 ydieresis
char255 "
diff --git a/ps/devps/BMI b/devps/BMI
index bccda195b..7eaa3f1f6 100644
--- a/ps/devps/BMI
+++ b/devps/BMI
@@ -5,9 +5,6 @@ spacewidth 300
encoding text.enc
ligatures fi fl 0
kernpairs
-A y 0
-A w 0
-A v 0
A Y -62
A W -73
A V -78
@@ -19,18 +16,13 @@ L y 20
L Y 7
L W 9
L V 4
-L T 0
P . -105
P , -106
P A -30
-R y 0
R Y 11
R W 2
R V 2
R T 65
-T y 0
-T w 0
-T u 0
T ; 48
T s -7
T r 67
@@ -63,11 +55,11 @@ V a -70
V A -70
W y -14
W u -20
+W ; -42
W r -30
+W . -100
W o -60
W i 3
-W ; -42
-W . -100
W - 20
W hy 20
W char173 20
@@ -117,26 +109,27 @@ vs 540,684,8,57,-15,57 2 0004 scaron
vz 520,684,8,91,12,70 2 0005 zcaron
:Y 660,875,0,199,-37,70 2 0006 Ydieresis
tm 980,681,0,35,-19,35 2 0007 trademark
+aq 200,698,0,97,-49,70 2 0010 quotesingle
space 300 0 0040
! 320,698,8,72,-53,70 2 0041 exclam
-" 360,699,0,92,-57,70 2 0042 quotedbl
-# 600,681,0,38,-47,38 2 0043 numbersign
+" 360,698,0,92,-57,70 2 0042 quotedbl
+# 620,681,0,28,-57,28 2 0043 numbersign
sh "
-$ 620,762,85,49,-28,49 3 0044 dollar
+$ 620,762,85,49,-28,49 2 0044 dollar
Do "
% 800,691,8,61,-6,61 2 0045 percent
& 820,698,18,78,-15,70 2 0046 ampersand
' 280,698,0,58,-98,58 2 0047 quoteright
-( 280,727,146,153,-46,70 3 0050 parenleft
-) 280,727,146,49,58,49 3 0051 parenright
+( 280,727,146,153,-46,70 2 0050 parenleft
+) 280,727,146,49,58,49 2 0051 parenright
* 440,698,0,115,-89,70 2 0052 asterisk
-+ 600,548,0,45,-41,45 2 0053 plus
-, 300,112,115,0,-38 1 0054 comma
-- 320,325,0,49,-28,49 0 0055 hyphen
++ 600,548,0,45,-41,45 0 0053 plus
+, 300,112,115,0,-38 0 0054 comma
+- 320,325,0,66,-28,66 0 0055 hyphen
hy "
char173 "
. 300,127,8,0,-46 0 0056 period
-/ 600,717,149,12,-54,12 3 0057 slash
+/ 600,717,149,12,-54,12 2 0057 slash
sl "
0 620,698,17,76,-36,70 2 0060 zero
1 620,681,0,0,-104 2 0061 one
@@ -149,12 +142,12 @@ sl "
8 620,698,17,85,-11,70 2 0070 eight
9 620,698,17,79,-27,70 2 0071 nine
: 300,494,8,42,-46,42 0 0072 colon
-; 300,494,114,42,-38,42 1 0073 semicolon
-< 600,561,0,38,-29,38 2 0074 less
+; 300,494,114,42,-38,42 0 0073 semicolon
+< 600,561,0,38,-29,38 0 0074 less
= 600,433,0,45,-41,45 0 0075 equal
-> 600,561,0,52,-43,52 2 0076 greater
+> 600,561,0,52,-43,52 0 0076 greater
? 540,698,8,114,-64,70 2 0077 question
-@ 780,698,17,47,-27,47 2 0100 at
+@ 780,698,17,72,-52,70 2 0100 at
at "
A 700,681,0,70,75,70 2 0101 A
B 720,681,0,76,29,70 2 0102 B
@@ -172,7 +165,7 @@ M 860,681,0,146,32,70 2 0115 M
N 720,681,0,153,32,70 2 0116 N
O 760,698,17,89,-38,70 2 0117 O
P 600,681,0,131,29,70 2 0120 P
-Q 780,698,191,82,-11,70 3 0121 Q
+Q 780,698,191,82,-11,70 2 0121 Q
R 700,681,0,86,29,70 2 0122 R
S 640,698,17,78,-11,70 2 0123 S
T 600,681,0,175,0,70 2 0124 T
@@ -182,15 +175,15 @@ W 960,681,0,185,-37,70 2 0127 W
X 700,681,0,165,75,70 2 0130 X
Y 660,681,0,199,-37,70 2 0131 Y
Z 580,681,0,165,42,70 2 0132 Z
-[ 260,717,136,141,-6,70 3 0133 bracketleft
+[ 260,717,136,141,-6,70 2 0133 bracketleft
lB "
\ 600,717,0,0,-34 2 0134 backslash
rs "
-] 260,717,136,99,35,70 3 0135 bracketright
+] 260,717,136,99,35,70 2 0135 bracketright
rB "
a^ 440,685,0,89,-126,70 2 0136 circumflex
^ "
-_ 500,0,140,50,50,50 1 0137 underscore
+_ 500,0,155,50,50,50 0 0137 underscore
` 280,698,0,100,-141,70 2 0140 quoteleft
oq "
a 620,494,8,116,-21,70 0 0141 a
@@ -219,27 +212,27 @@ w 880,494,8,63,-38,63 0 0167 w
x 540,494,8,136,41,70 0 0170 x
y 600,484,221,59,-10,59 1 0171 y
z 520,494,8,91,12,70 0 0172 z
-lC 360,717,191,129,-75,70 3 0173 braceleft
+lC 360,717,191,129,-75,70 2 0173 braceleft
{ "
ba 600,717,0,0,-244 2 0174 bar
| "
-rC 380,717,191,0,35 3 0175 braceright
+rC 380,717,191,0,35 2 0175 braceright
} "
a~ 440,671,0,98,-130,70 2 0176 tilde
~ "
---- 320,113,114,0,-37 1 0200 quotesinglbase
+bq 320,113,114,0,-37 0 0200 quotesinglbase
Fo 300,434,0,63,-20,63 0 0201 guillemotleft
char171 "
Fc 300,434,0,53,-10,53 0 0202 guillemotright
char187 "
bu 460,511,0,34,-50,34 0 0203 bullet
---- 620,725,218,122,76,70 3 0204 florin
+Fn 620,725,218,122,76,70 3 0204 florin
f/ 20,681,0,353,278,70 2 0205 fraction
%0 1180,691,8,69,-6,69 2 0206 perthousand
-dg 620,698,130,0,-142 3 0207 dagger
-dd 620,698,122,0,-94 3 0210 daggerdbl
-en 500,325,0,80,-36,70 0 0211 endash
-em 1000,325,0,0,-68 0 0212 emdash
+dg 620,698,130,0,-142 2 0207 dagger
+dd 620,698,122,0,-94 2 0210 daggerdbl
+en 500,325,0,111,17,70 0 0211 endash
+em 1000,325,0,111,17,70 0 0212 emdash
fi 640,725,222,119,209,70 3 0214 fi
fl 660,725,218,103,209,70 3 0215 fl
.i 280,484,8,121,-38,70 0 0220 dotlessi
@@ -249,12 +242,12 @@ a. 260,664,0,80,-119,70 2 0224 dotaccent
ab 440,680,0,110,-141,70 2 0225 breve
ah 440,684,0,91,-128,70 2 0226 caron
ao 300,706,0,84,-128,70 2 0227 ring
-ho 260,0,173,0,-1 1 0230 ogonek
+ho 260,0,173,0,-1 0 0230 ogonek
lq 440,698,0,103,-141,70 2 0231 quotedblleft
rq 440,698,0,61,-98,61 2 0232 quotedblright
oe 900,494,8,98,-15,70 0 0233 oe
/l 340,717,8,108,0,70 2 0234 lslash
---- 480,113,114,0,-37 1 0235 quotedblbase
+Bq 480,113,114,0,-37 0 0235 quotedblbase
OE 1180,698,17,107,-38,70 2 0236 OE
/L 580,681,0,126,29,70 2 0237 Lslash
r! 320,494,213,31,-23,31 1 0241 exclamdown
@@ -263,15 +256,17 @@ ct 620,715,29,26,-98,26 2 0242 cent
char162 "
Po 620,698,17,132,46,70 2 0243 sterling
char163 "
-Cs 600,591,0,45,-40,45 2 0244 currency
+Cs 620,591,0,35,-50,35 0 0244 currency
char164 "
Ye 620,681,0,165,-21,70 2 0245 yen
char165 "
-sc 620,698,178,68,12,68 3 0247 section
+bb 600,717,0,0,-244 2 0246 brokenbar
+char166 "
+sc 620,698,178,68,12,68 2 0247 section
char167 "
ad 420,688,0,97,-135,70 2 0250 dieresis
char168 "
-co 740,698,17,49,11,49 2 0251 copyright
+co 740,698,17,94,-34,70 2 0251 copyright
char169 "
Of 440,698,0,123,-44,70 2 0252 ordfeminine
char170 "
@@ -279,20 +274,36 @@ fo 180,434,0,78,-25,70 0 0253 guilsinglleft
no 600,433,0,45,-41,45 0 0254 logicalnot
char172 "
\- 600,335,0,45,-41,45 0 0255 minus
-rg 740,698,17,49,11,49 2 0256 registered
+rg 740,698,17,94,-34,70 2 0256 registered
char174 "
-a- 440,658,0,94,-128,70 2 0257 macron
+a- 440,658,0,94,-128,70 0 0257 macron
char175 "
+de 400,698,0,70,-70,70 2 0260 degree
+char176 "
+char177 600,548,0,45,-41,45 0 0261 plusminus
+S2 372,698,0,117,-18,70 2 0262 twosuperior
+char178 "
+S3 372,698,0,117,-20,70 2 0263 threesuperior
+char179 "
aa 320,706,0,103,-128,70 2 0264 acute
char180 "
+char181 620,484,221,116,-3,70 1 0265 mu
ps 620,681,0,148,-62,70 2 0266 paragraph
char182 "
-char183 300,364,0,41,-106,41 0 0267 periodcentered
-ac 320,0,178,0,5 1 0270 cedilla
+char183 300,364,0,22,-87,22 0 0267 periodcentered
+ac 320,0,178,0,5 0 0270 cedilla
char184 "
+S1 372,688,0,17,-64,17 2 0271 onesuperior
+char185 "
Om 400,698,0,105,-44,70 2 0272 ordmasculine
char186 "
fc 180,434,0,73,-20,70 0 0273 guilsinglright
+14 930,681,0,33,-41,33 2 0274 onequarter
+char188 "
+12 930,681,0,45,-41,45 2 0275 onehalf
+char189 "
+34 930,691,0,33,-49,33 2 0276 threequarters
+char190 "
r? 540,494,212,18,32,18 1 0277 questiondown
char191 "
`A 700,893,0,70,75,70 2 0300 Agrave
@@ -309,7 +320,7 @@ oA 700,893,0,70,75,70 2 0305 Aring
char197 "
AE 1220,681,0,99,95,70 2 0306 AE
char198 "
-,C 720,698,178,76,-38,70 3 0307 Ccedilla
+,C 720,698,178,76,-38,70 2 0307 Ccedilla
char199 "
`E 680,893,0,106,29,70 2 0310 Egrave
char200 "
@@ -323,10 +334,12 @@ char203 "
char204 "
'I 320,893,0,142,29,70 2 0315 Iacute
char205 "
-^I 320,872,0,142,29,70 2 0316 Icircumflex
+^I 320,872,0,149,29,70 2 0316 Icircumflex
char206 "
-:I 320,875,0,142,29,70 2 0317 Idieresis
+:I 320,875,0,147,29,70 2 0317 Idieresis
char207 "
+-D 740,681,0,92,29,70 2 0320 Eth
+char208 "
~N 720,858,0,153,32,70 2 0321 Ntilde
char209 "
`O 760,893,17,89,-38,70 2 0322 Ograve
@@ -339,7 +352,8 @@ char212 "
char213 "
:O 760,875,17,89,-38,70 2 0326 Odieresis
char214 "
-/O 760,777,95,89,-38,70 3 0330 Oslash
+char215 600,548,0,45,-41,45 0 0327 multiply
+/O 760,777,95,89,-38,70 2 0330 Oslash
char216 "
`U 720,893,17,172,-68,70 2 0331 Ugrave
char217 "
@@ -349,7 +363,11 @@ char218 "
char219 "
:U 720,875,17,172,-68,70 2 0334 Udieresis
char220 "
-ss 620,698,111,83,171,70 3 0337 germandbls
+'Y 660,893,0,199,-37,70 2 0335 Yacute
+char221 "
+TP 600,681,0,106,29,70 2 0336 Thorn
+char222 "
+ss 620,698,111,83,171,70 2 0337 germandbls
char223 "
`a 620,706,8,116,-21,70 2 0340 agrave
char224 "
@@ -365,7 +383,7 @@ oa 620,706,8,116,-21,70 2 0345 aring
char229 "
ae 880,494,8,88,-21,70 0 0346 ae
char230 "
-,c 480,494,178,92,-15,70 1 0347 ccedilla
+,c 480,494,178,92,-15,70 0 0347 ccedilla
char231 "
`e 540,706,8,85,-15,70 2 0350 egrave
char232 "
@@ -379,10 +397,12 @@ char235 "
char236 "
'i 280,706,8,121,-38,70 2 0355 iacute
char237 "
-^i 280,685,8,139,-16,70 2 0356 icircumflex
+^i 280,685,8,149,-26,70 2 0356 icircumflex
char238 "
-:i 280,688,8,127,-25,70 2 0357 idieresis
+:i 280,688,8,147,-38,70 2 0357 idieresis
char239 "
+Sd 540,725,8,152,-15,70 2 0360 eth
+char240 "
~n 620,671,8,103,-38,70 2 0361 ntilde
char241 "
`o 540,706,8,82,-15,70 2 0362 ograve
@@ -395,6 +415,7 @@ char244 "
char245 "
:o 540,688,8,82,-15,70 2 0366 odieresis
char246 "
+char247 600,548,0,45,-41,45 0 0367 divide
/o 540,532,49,81,-15,70 0 0370 oslash
char248 "
`u 620,706,8,116,-38,70 2 0371 ugrave
@@ -405,5 +426,9 @@ char250 "
char251 "
:u 620,688,8,116,-38,70 2 0374 udieresis
char252 "
+'y 600,706,221,59,-10,59 3 0375 yacute
+char253 "
+Tp 600,717,212,70,74,70 3 0376 thorn
+char254 "
:y 600,688,221,59,-10,59 3 0377 ydieresis
char255 "
diff --git a/ps/devps/BMR b/devps/BMR
index 2a583ca8a..8e90c1000 100644
--- a/ps/devps/BMR
+++ b/devps/BMR
@@ -27,10 +27,6 @@ R Y 26
R W 13
R V 8
R T 71
-T y 0
-T w 0
-T u 0
-T ; 0
T s 16
T r 38
T . -33
@@ -41,13 +37,11 @@ T hy 90
T char173 90
T e 13
T , -28
-T : 0
T c 14
T a 17
T A 1
V y 15
V u -38
-V ; 0
V r -41
V . -40
V o -71
@@ -57,12 +51,10 @@ V hy 11
V char173 11
V e -72
V , -34
-V : 0
V a -69
V A -66
W y 15
W u -38
-W ; 0
W r -41
W . -40
W o -68
@@ -72,12 +64,10 @@ W hy 11
W char173 11
W e -69
W , -34
-W : 0
W a -66
W A -64
Y v 15
Y u -38
-Y ; 0
Y q -55
Y . -40
Y p -31
@@ -88,7 +78,6 @@ Y hy 11
Y char173 11
Y e -58
Y , -34
-Y : 0
Y a -54
Y A -53
f f 29
@@ -116,26 +105,27 @@ vs 520,672,8 2 0004 scaron
vz 480,672 2 0005 zcaron
:Y 640,871 2 0006 Ydieresis
tm 980,681 2 0007 trademark
+aq 220,698 2 0010 quotesingle
space 320 0 0040
! 300,698,8 2 0041 exclam
" 380,698 2 0042 quotedbl
-# 600,681 2 0043 numbersign
+# 620,681 2 0043 numbersign
sh "
-$ 620,791,109 3 0044 dollar
+$ 620,791,109 2 0044 dollar
Do "
% 900,698,8 2 0045 percent
& 800,698,17 2 0046 ampersand
' 220,698 2 0047 quoteright
-( 300,727,145 3 0050 parenleft
-) 300,727,146 3 0051 parenright
+( 300,727,145 2 0050 parenleft
+) 300,727,146 2 0051 parenright
* 440,698 2 0052 asterisk
+ 600,513 0 0053 plus
-, 320,114,114 1 0054 comma
+, 320,114,114 0 0054 comma
- 400,292 0 0055 hyphen
hy "
char173 "
. 320,123,8 0 0056 period
-/ 600,717,149 3 0057 slash
+/ 600,717,149 2 0057 slash
sl "
0 620,698,17 2 0060 zero
1 620,681 2 0061 one
@@ -148,7 +138,7 @@ sl "
8 620,698,17 2 0070 eight
9 620,698,17 2 0071 nine
: 320,494,8 0 0072 colon
-; 320,494,114 1 0073 semicolon
+; 320,494,114 0 0073 semicolon
< 600,526,2 0 0074 less
= 600,398 0 0075 equal
> 600,526,2 0 0076 greater
@@ -171,7 +161,7 @@ M 920,681 2 0115 M
N 740,681 2 0116 N
O 800,698,17 2 0117 O
P 620,681 2 0120 P
-Q 820,698,189 3 0121 Q
+Q 820,698,189 2 0121 Q
R 720,681 2 0122 R
S 660,698,17 2 0123 S
T 620,681 2 0124 T
@@ -181,15 +171,15 @@ W 960,681 2 0127 W
X 720,681 2 0130 X
Y 640,681 2 0131 Y
Z 640,681 2 0132 Z
-[ 300,717,136 3 0133 bracketleft
+[ 300,717,136 2 0133 bracketleft
lB "
\ 600,717 2 0134 backslash
rs "
-] 300,717,136 3 0135 bracketright
+] 300,717,136 2 0135 bracketright
rB "
a^ 420,685 2 0136 circumflex
^ "
-_ 500,0,155 1 0137 underscore
+_ 500,0,155 0 0137 underscore
` 220,698 2 0140 quoteleft
oq "
a 580,494,8 0 0141 a
@@ -198,10 +188,10 @@ c 520,494,8 0 0143 c
d 620,717,8 2 0144 d
e 520,494,8 0 0145 e
f 320,734 2 0146 f
-g 540,567,243 3 0147 g
+g 540,567,243 1 0147 g
h 660,717 2 0150 h
-i 300,654 2 0151 i
-j 300,654,251 3 0152 j
+i 300,654 0 0151 i
+j 300,654,251 1 0152 j
k 620,717 2 0153 k
l 300,717 2 0154 l
m 940,494 0 0155 m
@@ -218,55 +208,57 @@ w 780,484 0 0167 w
x 560,484 0 0170 x
y 540,484,236 1 0171 y
z 480,484 0 0172 z
-lC 280,717,136 3 0173 braceleft
+lC 280,717,136 2 0173 braceleft
{ "
ba 600,717 2 0174 bar
| "
-rC 280,717,136 3 0175 braceright
+rC 280,717,136 2 0175 braceright
} "
-a~ 440,661 2 0176 tilde
+a~ 440,661 0 0176 tilde
~ "
---- 220,110,108 1 0200 quotesinglbase
+bq 220,110,108 0 0200 quotesinglbase
Fo 360,437 0 0201 guillemotleft
char171 "
Fc 360,437 0 0202 guillemotright
char187 "
bu 460,511 0 0203 bullet
---- 620,749,155 3 0204 florin
+Fn 620,749,155 2 0204 florin
f/ 140,681 2 0205 fraction
%0 1280,698,8 2 0206 perthousand
-dg 540,698,156 3 0207 dagger
-dd 540,698,156 3 0210 daggerdbl
+dg 540,698,156 2 0207 dagger
+dd 540,698,156 2 0210 daggerdbl
en 500,292 0 0211 endash
em 1000,292 0 0212 emdash
fi 620,734 2 0214 fi
fl 620,734 2 0215 fl
.i 300,484 0 0220 dotlessi
ga 340,689 2 0222 grave
-a" 380,698 2 0223 hungarumlaut
+a" 380,699 2 0223 hungarumlaut
a. 260,672 2 0224 dotaccent
ab 460,687 2 0225 breve
ah 420,672 2 0226 caron
ao 320,731 2 0227 ring
-ho 320,0,145 1 0230 ogonek
+ho 320,0,145 0 0230 ogonek
lq 400,698 2 0231 quotedblleft
rq 400,698 2 0232 quotedblright
oe 900,494,8 0 0233 oe
/l 320,717 2 0234 lslash
---- 400,110,108 1 0235 quotedblbase
+Bq 400,110,108 0 0235 quotedblbase
OE 1240,698,17 2 0236 OE
/L 600,681 2 0237 Lslash
-r! 300,494,214 1 0241 exclamdown
+r! 300,494,214 0 0241 exclamdown
char161 "
-ct 620,651 2 0242 cent
+ct 620,651 0 0242 cent
char162 "
Po 620,698,17 2 0243 sterling
char163 "
-Cs 600,591 2 0244 currency
+Cs 620,591 0 0244 currency
char164 "
Ye 620,681 2 0245 yen
char165 "
-sc 520,698,178 3 0247 section
+bb 600,717 2 0246 brokenbar
+char166 "
+sc 520,698,178 2 0247 section
char167 "
ad 420,674 2 0250 dieresis
char168 "
@@ -280,19 +272,35 @@ char172 "
\- 600,300 0 0255 minus
rg 740,698,17 2 0256 registered
char174 "
-a- 440,635 2 0257 macron
+a- 440,635 0 0257 macron
char175 "
+de 400,698 2 0260 degree
+char176 "
+char177 600,513 0 0261 plusminus
+S2 372,698 2 0262 twosuperior
+char178 "
+S3 372,698 2 0263 threesuperior
+char179 "
aa 340,689 2 0264 acute
char180 "
+char181 680,484,251 1 0265 mu
ps 600,681 2 0266 paragraph
char182 "
char183 320,327 0 0267 periodcentered
-ac 320,0,200 1 0270 cedilla
+ac 320,0,200 0 0270 cedilla
char184 "
+S1 372,688 2 0271 onesuperior
+char185 "
Om 420,698 2 0272 ordmasculine
char186 "
fc 240,437 0 0273 guilsinglright
-r? 540,494,217 1 0277 questiondown
+14 930,681 2 0274 onequarter
+char188 "
+12 930,681 2 0275 onehalf
+char189 "
+34 930,691 2 0276 threequarters
+char190 "
+r? 540,494,217 0 0277 questiondown
char191 "
`A 680,886 2 0300 Agrave
char192 "
@@ -308,7 +316,7 @@ oA 680,928 2 0305 Aring
char197 "
AE 1260,681 2 0306 AE
char198 "
-,C 740,698,200 3 0307 Ccedilla
+,C 740,698,200 2 0307 Ccedilla
char199 "
`E 720,886 2 0310 Egrave
char200 "
@@ -326,6 +334,8 @@ char205 "
char206 "
:I 340,871 2 0317 Idieresis
char207 "
+-D 800,681 2 0320 Eth
+char208 "
~N 740,858 2 0321 Ntilde
char209 "
`O 800,886,17 2 0322 Ograve
@@ -338,6 +348,7 @@ char212 "
char213 "
:O 800,871,17 2 0326 Odieresis
char214 "
+char215 600,513 0 0327 multiply
/O 800,733,53 2 0330 Oslash
char216 "
`U 780,886,17 2 0331 Ugrave
@@ -348,7 +359,11 @@ char218 "
char219 "
:U 780,871,17 2 0334 Udieresis
char220 "
-ss 660,698,110 3 0337 germandbls
+'Y 640,886 2 0335 Yacute
+char221 "
+TP 620,681 2 0336 Thorn
+char222 "
+ss 660,698,110 2 0337 germandbls
char223 "
`a 580,689,8 2 0340 agrave
char224 "
@@ -356,7 +371,7 @@ char224 "
char225 "
^a 580,685,8 2 0342 acircumflex
char226 "
-~a 580,661,8 2 0343 atilde
+~a 580,661,8 0 0343 atilde
char227 "
:a 580,674,8 2 0344 adieresis
char228 "
@@ -364,7 +379,7 @@ oa 580,731,8 2 0345 aring
char229 "
ae 860,494,8 0 0346 ae
char230 "
-,c 520,494,200 1 0347 ccedilla
+,c 520,494,200 0 0347 ccedilla
char231 "
`e 520,689,8 2 0350 egrave
char232 "
@@ -382,7 +397,9 @@ char237 "
char238 "
:i 300,674 2 0357 idieresis
char239 "
-~n 660,661 2 0361 ntilde
+Sd 560,734,8 2 0360 eth
+char240 "
+~n 660,661 0 0361 ntilde
char241 "
`o 560,689,8 2 0362 ograve
char242 "
@@ -390,10 +407,11 @@ char242 "
char243 "
^o 560,685,8 2 0364 ocircumflex
char244 "
-~o 560,661,8 2 0365 otilde
+~o 560,661,8 0 0365 otilde
char245 "
:o 560,674,8 2 0366 odieresis
char246 "
+char247 600,514 0 0367 divide
/o 560,534,40 0 0370 oslash
char248 "
`u 680,689,8 2 0371 ugrave
@@ -404,5 +422,9 @@ char250 "
char251 "
:u 680,674,8 2 0374 udieresis
char252 "
+'y 540,689,236 3 0375 yacute
+char253 "
+Tp 620,717,228 3 0376 thorn
+char254 "
:y 540,674,236 3 0377 ydieresis
char255 "
diff --git a/devps/CB b/devps/CB
new file mode 100644
index 000000000..c199fd93f
--- /dev/null
+++ b/devps/CB
@@ -0,0 +1,336 @@
+name CB
+internalname Courier-Bold
+spacewidth 600
+encoding text.enc
+charset
+ha 600,616 2 0000 asciicircum
+ti 600,356 0 0001 asciitilde
+vS 600,790,22 2 0002 Scaron
+vZ 600,790 2 0003 Zcaron
+vs 600,667,17 2 0004 scaron
+vz 600,667 2 0005 zcaron
+:Y 600,748 2 0006 Ydieresis
+tm 600,562 2 0007 trademark
+aq 600,562 2 0010 quotesingle
+space 600 0 0040
+! 600,572,15 2 0041 exclam
+" 600,562 2 0042 quotedbl
+# 600,651,45 2 0043 numbersign
+sh "
+$ 600,666,126 2 0044 dollar
+Do "
+% 600,616,15 2 0045 percent
+& 600,543,15 0 0046 ampersand
+' 600,562 2 0047 quoteright
+( 600,616,102 2 0050 parenleft
+) 600,616,102 2 0051 parenright
+* 600,601 2 0052 asterisk
++ 600,478 0 0053 plus
+, 600,174,111 0 0054 comma
+- 600,313 0 0055 hyphen
+hy "
+char173 "
+. 600,171,15 0 0056 period
+/ 600,626,77 2 0057 slash
+sl "
+0 600,616,15 2 0060 zero
+1 600,616 2 0061 one
+2 600,616 2 0062 two
+3 600,616,15 2 0063 three
+4 600,616 2 0064 four
+5 600,601,15 2 0065 five
+6 600,616,15 2 0066 six
+7 600,601 2 0067 seven
+8 600,616,15 2 0070 eight
+9 600,616,15 2 0071 nine
+: 600,425,15 0 0072 colon
+; 600,425,111 0 0073 semicolon
+< 600,501 0 0074 less
+= 600,398 0 0075 equal
+> 600,501 0 0076 greater
+? 600,580,14 2 0077 question
+@ 600,616,15 2 0100 at
+at "
+A 600,562 2 0101 A
+B 600,562 2 0102 B
+C 600,580,18 2 0103 C
+D 600,562 2 0104 D
+E 600,562 2 0105 E
+F 600,562 2 0106 F
+G 600,580,18 2 0107 G
+H 600,562 2 0110 H
+I 600,562 2 0111 I
+J 600,562,18 2 0112 J
+K 600,562 2 0113 K
+L 600,562 2 0114 L
+M 600,562 2 0115 M
+N 600,562,12 2 0116 N
+O 600,580,18 2 0117 O
+P 600,562 2 0120 P
+Q 600,580,138 2 0121 Q
+R 600,562 2 0122 R
+S 600,582,22 2 0123 S
+T 600,562 2 0124 T
+U 600,562,18 2 0125 U
+V 600,562 2 0126 V
+W 600,562 2 0127 W
+X 600,562 2 0130 X
+Y 600,562 2 0131 Y
+Z 600,562 2 0132 Z
+[ 600,616,102 2 0133 bracketleft
+lB "
+\ 600,626,77 2 0134 backslash
+rs "
+] 600,616,102 2 0135 bracketright
+rB "
+a^ 600,657 2 0136 circumflex
+^ "
+_ 600,0,125 0 0137 underscore
+` 600,562 2 0140 quoteleft
+oq "
+a 600,454,15 0 0141 a
+b 600,626,15 2 0142 b
+c 600,459,15 0 0143 c
+d 600,626,15 2 0144 d
+e 600,454,15 0 0145 e
+f 600,626 2 0146 f
+g 600,454,146 1 0147 g
+h 600,626 2 0150 h
+i 600,658 2 0151 i
+j 600,658,146 3 0152 j
+k 600,626 2 0153 k
+l 600,626 2 0154 l
+m 600,454 0 0155 m
+n 600,454 0 0156 n
+o 600,454,15 0 0157 o
+p 600,454,142 1 0160 p
+q 600,454,142 1 0161 q
+r 600,454 0 0162 r
+s 600,459,17 0 0163 s
+t 600,562,15 2 0164 t
+u 600,439,15 0 0165 u
+v 600,439 0 0166 v
+w 600,439 0 0167 w
+x 600,439 0 0170 x
+y 600,439,142 1 0171 y
+z 600,439 0 0172 z
+lC 600,616,102 2 0173 braceleft
+{ "
+ba 600,750,250 3 0174 bar
+| "
+rC 600,616,102 2 0175 braceright
+} "
+a~ 600,636 2 0176 tilde
+~ "
+bq 600,143,142 1 0200 quotesinglbase
+Fo 600,446 0 0201 guillemotleft
+char171 "
+Fc 600,446 0 0202 guillemotright
+char187 "
+bu 600,430 0 0203 bullet
+Fn 600,616,131 2 0204 florin
+f/ 600,661,60 2 0205 fraction
+%0 600,616,15 2 0206 perthousand
+dg 600,580,70 2 0207 dagger
+dd 600,580,70 2 0210 daggerdbl
+en 600,313 0 0211 endash
+em 600,313 0 0212 emdash
+fi 600,626 2 0214 fi
+fl 600,626 2 0215 fl
+.i 600,439 0 0220 dotlessi
+ga 600,661 2 0222 grave
+a" 600,661 2 0223 hungarumlaut
+a. 600,625 2 0224 dotaccent
+ab 600,631 2 0225 breve
+ah 600,667 2 0226 caron
+ao 600,678 2 0227 ring
+ho 600,0,199 1 0230 ogonek
+lq 600,562 2 0231 quotedblleft
+rq 600,562 2 0232 quotedblright
+oe 600,454,15 0 0233 oe
+/l 600,626 2 0234 lslash
+Bq 600,143,142 1 0235 quotedblbase
+OE 600,562 2 0236 OE
+/L 600,562 2 0237 Lslash
+r! 600,449,146 1 0241 exclamdown
+char161 "
+ct 600,614,49 2 0242 cent
+char162 "
+Po 600,611,28 2 0243 sterling
+char163 "
+Cs 600,517 0 0244 currency
+char164 "
+Ye 600,562 2 0245 yen
+char165 "
+bb 600,675,175 3 0246 brokenbar
+char166 "
+sc 600,580,70 2 0247 section
+char167 "
+ad 600,625 2 0250 dieresis
+char168 "
+co 600,580,18 2 0251 copyright
+char169 "
+Of 600,580 2 0252 ordfeminine
+char170 "
+fo 600,446 0 0253 guilsinglleft
+no 600,413 0 0254 logicalnot
+char172 "
+\- 600,313 0 0255 minus
+rg 600,580,18 2 0256 registered
+char174 "
+a- 600,585 2 0257 macron
+char175 "
+de 600,616 2 0260 degree
+char176 "
+char177 600,515 0 0261 plusminus
+S2 600,616 2 0262 twosuperior
+char178 "
+S3 600,616 2 0263 threesuperior
+char179 "
+aa 600,661 2 0264 acute
+char180 "
+char181 600,439,142 1 0265 mu
+ps 600,580,70 2 0266 paragraph
+char182 "
+char183 600,351 0 0267 periodcentered
+ac 600,0,206 1 0270 cedilla
+char184 "
+S1 600,616 2 0271 onesuperior
+char185 "
+Om 600,580 2 0272 ordmasculine
+char186 "
+fc 600,446 0 0273 guilsinglright
+14 600,661,60 2 0274 onequarter
+char188 "
+12 600,661,60 2 0275 onehalf
+char189 "
+34 600,661,60 2 0276 threequarters
+char190 "
+r? 600,449,146 1 0277 questiondown
+char191 "
+`A 600,784 2 0300 Agrave
+char192 "
+'A 600,784 2 0301 Aacute
+char193 "
+^A 600,780 2 0302 Acircumflex
+char194 "
+~A 600,759 2 0303 Atilde
+char195 "
+:A 600,748 2 0304 Adieresis
+char196 "
+oA 600,801 2 0305 Aring
+char197 "
+AE 600,562 2 0306 AE
+char198 "
+,C 600,580,206 3 0307 Ccedilla
+char199 "
+`E 600,784 2 0310 Egrave
+char200 "
+'E 600,784 2 0311 Eacute
+char201 "
+^E 600,780 2 0312 Ecircumflex
+char202 "
+:E 600,748 2 0313 Edieresis
+char203 "
+`I 600,784 2 0314 Igrave
+char204 "
+'I 600,784 2 0315 Iacute
+char205 "
+^I 600,780 2 0316 Icircumflex
+char206 "
+:I 600,748 2 0317 Idieresis
+char207 "
+-D 600,562 2 0320 Eth
+char208 "
+~N 600,759,12 2 0321 Ntilde
+char209 "
+`O 600,784,18 2 0322 Ograve
+char210 "
+'O 600,784,18 2 0323 Oacute
+char211 "
+^O 600,780,18 2 0324 Ocircumflex
+char212 "
+~O 600,759,18 2 0325 Otilde
+char213 "
+:O 600,748,18 2 0326 Odieresis
+char214 "
+char215 600,478 0 0327 multiply
+/O 600,584,22 2 0330 Oslash
+char216 "
+`U 600,784,18 2 0331 Ugrave
+char217 "
+'U 600,784,18 2 0332 Uacute
+char218 "
+^U 600,780,18 2 0333 Ucircumflex
+char219 "
+:U 600,748,18 2 0334 Udieresis
+char220 "
+'Y 600,784 2 0335 Yacute
+char221 "
+TP 600,562 2 0336 Thorn
+char222 "
+ss 600,626,15 2 0337 germandbls
+char223 "
+`a 600,661,15 2 0340 agrave
+char224 "
+'a 600,661,15 2 0341 aacute
+char225 "
+^a 600,657,15 2 0342 acircumflex
+char226 "
+~a 600,636,15 2 0343 atilde
+char227 "
+:a 600,625,15 2 0344 adieresis
+char228 "
+oa 600,678,15 2 0345 aring
+char229 "
+ae 600,454,15 0 0346 ae
+char230 "
+,c 600,459,206 1 0347 ccedilla
+char231 "
+`e 600,661,15 2 0350 egrave
+char232 "
+'e 600,661,15 2 0351 eacute
+char233 "
+^e 600,657,15 2 0352 ecircumflex
+char234 "
+:e 600,625,15 2 0353 edieresis
+char235 "
+`i 600,661 2 0354 igrave
+char236 "
+'i 600,661 2 0355 iacute
+char237 "
+^i 600,657 2 0356 icircumflex
+char238 "
+:i 600,625 2 0357 idieresis
+char239 "
+Sd 600,626,27 2 0360 eth
+char240 "
+~n 600,636 2 0361 ntilde
+char241 "
+`o 600,661,15 2 0362 ograve
+char242 "
+'o 600,661,15 2 0363 oacute
+char243 "
+^o 600,657,15 2 0364 ocircumflex
+char244 "
+~o 600,636,15 2 0365 otilde
+char245 "
+:o 600,625,15 2 0366 odieresis
+char246 "
+char247 600,500 0 0367 divide
+/o 600,463,24 0 0370 oslash
+char248 "
+`u 600,661,15 2 0371 ugrave
+char249 "
+'u 600,661,15 2 0372 uacute
+char250 "
+^u 600,657,15 2 0373 ucircumflex
+char251 "
+:u 600,625,15 2 0374 udieresis
+char252 "
+'y 600,661,142 3 0375 yacute
+char253 "
+Tp 600,626,142 3 0376 thorn
+char254 "
+:y 600,625,142 3 0377 ydieresis
+char255 "
diff --git a/devps/CBI b/devps/CBI
new file mode 100644
index 000000000..802e3366d
--- /dev/null
+++ b/devps/CBI
@@ -0,0 +1,337 @@
+name CBI
+internalname Courier-BoldOblique
+slant 12
+spacewidth 600
+encoding text.enc
+charset
+ha 600,616,0,5,-121,5 2 0000 asciicircum
+ti 600,356,0,39,-70,39 0 0001 asciitilde
+vS 600,790,22,122,-4,75 2 0002 Scaron
+vZ 600,790,0,109,-12,75 2 0003 Zcaron
+vs 600,667,17,82,-17,75 2 0004 scaron
+vz 600,667,0,82,-31,75 2 0005 zcaron
+:Y 600,748,0,158,-59,75 2 0006 Ydieresis
+tm 600,562,0,318,-36,75 2 0007 trademark
+aq 600,562,0,0,-254 2 0010 quotesingle
+space 600 0 0040
+! 600,572,15,0,-166 2 0041 exclam
+" 600,562,0,34,-162,34 2 0042 quotedbl
+# 600,651,45,90,-38,75 2 0043 numbersign
+sh "
+$ 600,666,126,79,-37,75 2 0044 dollar
+Do "
+% 600,616,15,74,-52,74 2 0045 percent
+& 600,543,15,44,-12,44 0 0046 ampersand
+' 600,562,0,0,-180 2 0047 quoteright
+( 600,616,102,42,-216,42 2 0050 parenleft
+) 600,616,102,0,-67 2 0051 parenright
+* 600,601,0,47,-129,47 2 0052 asterisk
++ 600,478,0,46,-64,46 0 0053 plus
+, 600,174,111,0,-49 0 0054 comma
+- 600,313,0,17,-93,17 0 0055 hyphen
+hy "
+char173 "
+. 600,171,15,0,-157 0 0056 period
+/ 600,626,77,76,-41,75 2 0057 slash
+sl "
+0 600,616,15,42,-86,42 2 0060 zero
+1 600,616,0,11,-43,11 2 0061 one
+2 600,616,0,43,-11,43 2 0062 two
+3 600,616,15,21,-22,21 2 0063 three
+4 600,616,0,8,-32,8 2 0064 four
+5 600,601,15,71,-27,71 2 0065 five
+6 600,616,15,102,-86,75 2 0066 six
+7 600,601,0,72,-97,72 2 0067 seven
+8 600,616,15,54,-65,54 2 0070 eight
+9 600,616,15,42,-26,42 2 0071 nine
+: 600,425,15,0,-156 0 0072 colon
+; 600,425,111,0,-49 0 0073 semicolon
+< 600,501,0,62,-71,62 0 0074 less
+= 600,398,0,64,-46,64 0 0075 equal
+> 600,501,0,39,-47,39 0 0076 greater
+? 600,580,14,41,-133,41 2 0077 question
+@ 600,616,15,91,-16,75 2 0100 at
+at "
+A 600,562,0,81,59,75 2 0101 A
+B 600,562,0,79,20,75 2 0102 B
+C 600,580,18,124,-25,75 2 0103 C
+D 600,562,0,114,20,75 2 0104 D
+E 600,562,0,119,25,75 2 0105 E
+F 600,562,0,133,11,75 2 0106 F
+G 600,580,18,124,-25,75 2 0107 G
+H 600,562,0,149,30,75 2 0110 H
+I 600,562,0,92,-27,75 2 0111 I
+J 600,562,18,170,-9,75 2 0112 J
+K 600,562,0,141,29,75 2 0113 K
+L 600,562,0,85,11,75 2 0114 L
+M 600,562,0,171,52,75 2 0115 M
+N 600,562,12,179,42,75 2 0116 N
+O 600,580,18,95,-24,75 2 0117 O
+P 600,562,0,92,2,75 2 0120 P
+Q 600,580,138,86,-34,75 2 0121 Q
+R 600,562,0,67,26,67 2 0122 R
+S 600,582,22,122,-4,75 2 0123 S
+T 600,562,0,128,-36,75 2 0124 T
+U 600,562,18,165,-51,75 2 0125 U
+V 600,562,0,182,-34,75 2 0126 V
+W 600,562,0,187,-34,75 2 0127 W
+X 600,562,0,139,38,75 2 0130 X
+Y 600,562,0,158,-59,75 2 0131 Y
+Z 600,562,0,86,-12,75 2 0132 Z
+[ 600,616,102,56,-173,56 2 0133 bracketleft
+lB "
+\ 600,626,77,0,-173 2 0134 backslash
+rs "
+] 600,616,102,0,-53 2 0135 bracketright
+rB "
+a^ 600,657,0,56,-162,56 2 0136 circumflex
+^ "
+_ 600,0,125,34,77,34 0 0137 underscore
+` 600,562,0,0,-247 2 0140 quoteleft
+oq "
+a 600,454,15,42,-12,42 0 0141 a
+b 600,626,15,86,37,75 2 0142 b
+c 600,459,15,81,-31,75 0 0143 c
+d 600,626,15,94,-11,75 2 0144 d
+e 600,454,15,54,-31,54 0 0145 e
+f 600,626,0,127,-33,75 2 0146 f
+g 600,454,146,123,9,75 1 0147 g
+h 600,626,0,64,32,64 2 0150 h
+i 600,658,0,0,-27 2 0151 i
+j 600,658,146,30,13,30 3 0152 j
+k 600,626,0,92,17,75 2 0153 k
+l 600,626,0,0,-27 2 0154 l
+m 600,454,0,98,72,75 0 0155 m
+n 600,454,0,64,32,64 0 0156 n
+o 600,454,15,72,-21,72 0 0157 o
+p 600,454,142,72,81,72 1 0160 p
+q 600,454,142,134,-11,75 1 0161 q
+r 600,454,0,104,3,75 0 0162 r
+s 600,459,17,57,-17,57 0 0163 s
+t 600,562,15,16,-68,16 2 0164 t
+u 600,439,15,41,-20,41 0 0165 u
+v 600,439,0,144,-20,75 0 0166 v
+w 600,439,0,161,-3,75 0 0167 w
+x 600,439,0,120,44,75 0 0170 x
+y 600,439,142,144,70,75 1 0171 y
+z 600,439,0,63,-31,63 0 0172 z
+lC 600,616,102,45,-154,45 2 0173 braceleft
+{ "
+ba 600,750,250,0,-152 3 0174 bar
+| "
+rC 600,616,102,0,-64 2 0175 braceright
+} "
+a~ 600,636,0,92,-150,75 2 0176 tilde
+~ "
+bq 600,143,142,0,-95 1 0200 quotesinglbase
+Fo 600,446,0,88,-13,75 0 0201 guillemotleft
+char171 "
+Fc 600,446,0,97,-22,75 0 0202 guillemotright
+char187 "
+bu 600,430,0,0,-147 0 0203 bullet
+Fn 600,616,131,151,106,75 2 0204 florin
+f/ 600,661,60,157,28,75 2 0205 fraction
+%0 600,616,15,192,94,75 2 0206 perthousand
+dg 600,580,70,36,-126,36 2 0207 dagger
+dd 600,580,70,36,-72,36 2 0210 daggerdbl
+en 600,313,0,52,-58,52 0 0211 endash
+em 600,313,0,127,17,75 0 0212 emdash
+fi 600,626,0,93,38,75 2 0214 fi
+fl 600,626,0,93,38,75 2 0215 fl
+.i 600,439,0,0,-27 0 0220 dotlessi
+ga 600,661,0,0,-222 2 0222 grave
+a" 600,661,0,178,-122,75 2 0223 hungarumlaut
+a. 600,625,0,0,-296 2 0224 dotaccent
+ab 600,631,0,101,-167,75 2 0225 breve
+ah 600,667,0,82,-188,75 2 0226 caron
+ao 600,678,0,0,-269 2 0227 ring
+ho 600,0,199,0,-94 1 0230 ogonek
+lq 600,562,0,44,-140,44 2 0231 quotedblleft
+rq 600,562,0,94,-70,75 2 0232 quotedblright
+oe 600,454,15,111,31,75 0 0233 oe
+/l 600,626,0,28,-27,28 2 0234 lslash
+Bq 600,143,142,9,15,9 1 0235 quotedblbase
+OE 600,562,0,150,24,75 2 0236 OE
+/L 600,562,0,85,11,75 2 0237 Lslash
+r! 600,449,146,0,-147 1 0241 exclamdown
+char161 "
+ct 600,614,49,54,-71,54 2 0242 cent
+char162 "
+Po 600,611,28,100,-57,75 2 0243 sterling
+char163 "
+Cs 600,517,0,93,-27,75 0 0244 currency
+char164 "
+Ye 600,562,0,159,-48,75 2 0245 yen
+char165 "
+bb 600,675,175,0,-168 3 0246 brokenbar
+char166 "
+sc 600,580,70,69,-24,69 2 0247 section
+char167 "
+ad 600,625,0,42,-194,42 2 0250 dieresis
+char168 "
+co 600,580,18,117,-3,75 2 0251 copyright
+char169 "
+Of 600,580,0,0,-139 2 0252 ordfeminine
+char170 "
+fo 600,446,0,0,-146 0 0253 guilsinglleft
+no 600,413,0,67,-85,67 0 0254 logicalnot
+char172 "
+\- 600,313,0,46,-64,46 0 0255 minus
+rg 600,580,18,117,-3,75 2 0256 registered
+char174 "
+a- 600,585,0,86,-145,75 2 0257 macron
+char175 "
+de 600,616,0,19,-123,19 2 0260 degree
+char176 "
+char177 600,515,0,64,-26,64 0 0261 plusminus
+S2 600,616,0,0,-142 2 0262 twosuperior
+char178 "
+S3 600,616,0,0,-143 2 0263 threesuperior
+char179 "
+aa 600,661,0,58,-263,58 2 0264 acute
+char180 "
+char181 600,439,142,41,0,41 1 0265 mu
+ps 600,580,70,149,-11,75 2 0266 paragraph
+char182 "
+char183 600,351,0,0,-199 0 0267 periodcentered
+ac 600,0,206,0,-119 1 0270 cedilla
+char184 "
+S1 600,616,0,0,-163 2 0271 onesuperior
+char185 "
+Om 600,580,0,0,-139 2 0272 ordmasculine
+char186 "
+fc 600,446,0,0,-116 0 0273 guilsinglright
+14 600,661,60,156,36,75 2 0274 onequarter
+char188 "
+12 600,661,60,165,27,75 2 0275 onehalf
+char189 "
+34 600,661,60,148,42,75 2 0276 threequarters
+char190 "
+r? 600,449,146,0,-51 1 0277 questiondown
+char191 "
+`A 600,784,0,81,59,75 2 0300 Agrave
+char192 "
+'A 600,784,0,115,59,75 2 0301 Aacute
+char193 "
+^A 600,780,0,81,59,75 2 0302 Acircumflex
+char194 "
+~A 600,759,0,88,59,75 2 0303 Atilde
+char195 "
+:A 600,748,0,81,59,75 2 0304 Adieresis
+char196 "
+oA 600,801,0,81,59,75 2 0305 Aring
+char197 "
+AE 600,562,0,157,79,75 2 0306 AE
+char198 "
+,C 600,580,206,124,-24,75 3 0307 Ccedilla
+char199 "
+`E 600,784,0,119,25,75 2 0310 Egrave
+char200 "
+'E 600,784,0,119,25,75 2 0311 Eacute
+char201 "
+^E 600,780,0,119,25,75 2 0312 Ecircumflex
+char202 "
+:E 600,748,0,119,25,75 2 0313 Edieresis
+char203 "
+`I 600,784,0,92,-27,75 2 0314 Igrave
+char204 "
+'I 600,784,0,92,-27,75 2 0315 Iacute
+char205 "
+^I 600,780,0,92,-27,75 2 0316 Icircumflex
+char206 "
+:I 600,748,0,92,-27,75 2 0317 Idieresis
+char207 "
+-D 600,562,0,114,20,75 2 0320 Eth
+char208 "
+~N 600,759,12,179,42,75 2 0321 Ntilde
+char209 "
+`O 600,784,18,95,-24,75 2 0322 Ograve
+char210 "
+'O 600,784,18,95,-24,75 2 0323 Oacute
+char211 "
+^O 600,780,18,95,-24,75 2 0324 Ocircumflex
+char212 "
+~O 600,759,18,118,-24,75 2 0325 Otilde
+char213 "
+:O 600,748,18,95,-24,75 2 0326 Odieresis
+char214 "
+char215 600,478,0,56,-55,56 0 0327 multiply
+/O 600,584,22,122,2,75 2 0330 Oslash
+char216 "
+`U 600,784,18,165,-51,75 2 0331 Ugrave
+char217 "
+'U 600,784,18,165,-51,75 2 0332 Uacute
+char218 "
+^U 600,780,18,165,-51,75 2 0333 Ucircumflex
+char219 "
+:U 600,748,18,165,-51,75 2 0334 Udieresis
+char220 "
+'Y 600,784,0,158,-59,75 2 0335 Yacute
+char221 "
+TP 600,562,0,69,2,69 2 0336 Thorn
+char222 "
+ss 600,626,15,78,28,75 2 0337 germandbls
+char223 "
+`a 600,661,15,42,-12,42 2 0340 agrave
+char224 "
+'a 600,661,15,58,-12,58 2 0341 aacute
+char225 "
+^a 600,657,15,42,-12,42 2 0342 acircumflex
+char226 "
+~a 600,636,15,92,-12,75 2 0343 atilde
+char227 "
+:a 600,625,15,42,-12,42 2 0344 adieresis
+char228 "
+oa 600,678,15,42,-12,42 2 0345 aring
+char229 "
+ae 600,454,15,101,29,75 0 0346 ae
+char230 "
+,c 600,459,206,81,-31,75 1 0347 ccedilla
+char231 "
+`e 600,661,15,54,-31,54 2 0350 egrave
+char232 "
+'e 600,661,15,58,-31,58 2 0351 eacute
+char233 "
+^e 600,657,15,56,-31,56 2 0352 ecircumflex
+char234 "
+:e 600,625,15,54,-31,54 2 0353 edieresis
+char235 "
+`i 600,661,0,0,-27 2 0354 igrave
+char236 "
+'i 600,661,0,58,-27,58 2 0355 iacute
+char237 "
+^i 600,657,0,16,-27,16 2 0356 icircumflex
+char238 "
+:i 600,625,0,2,-27,2 2 0357 idieresis
+char239 "
+Sd 600,626,27,111,-43,75 2 0360 eth
+char240 "
+~n 600,636,0,92,32,75 2 0361 ntilde
+char241 "
+`o 600,661,15,72,-21,72 2 0362 ograve
+char242 "
+'o 600,661,15,72,-21,72 2 0363 oacute
+char243 "
+^o 600,657,15,72,-21,72 2 0364 ocircumflex
+char244 "
+~o 600,636,15,92,-21,75 2 0365 otilde
+char245 "
+:o 600,625,15,72,-21,72 2 0366 odieresis
+char246 "
+char247 600,500,0,46,-64,46 0 0367 divide
+/o 600,463,24,87,-5,75 0 0370 oslash
+char248 "
+`u 600,661,15,41,-20,41 2 0371 ugrave
+char249 "
+'u 600,661,15,58,-20,58 2 0372 uacute
+char250 "
+^u 600,657,15,41,-20,41 2 0373 ucircumflex
+char251 "
+:u 600,625,15,41,-20,41 2 0374 udieresis
+char252 "
+'y 600,661,142,144,70,75 3 0375 yacute
+char253 "
+Tp 600,626,142,72,81,72 3 0376 thorn
+char254 "
+:y 600,625,142,144,70,75 3 0377 ydieresis
+char255 "
diff --git a/devps/CI b/devps/CI
new file mode 100644
index 000000000..f63f1931e
--- /dev/null
+++ b/devps/CI
@@ -0,0 +1,337 @@
+name CI
+internalname Courier-Oblique
+slant 12
+spacewidth 600
+encoding text.enc
+charset
+ha 600,622,0,37,-125,37 2 0000 asciicircum
+ti 600,320,0,50,-66,50 0 0001 asciitilde
+vS 600,805,20,123,-26,72 2 0002 Scaron
+vZ 600,805,0,93,-36,72 2 0003 Zcaron
+vs 600,669,15,64,-28,64 2 0004 scaron
+vz 600,669,0,74,-49,72 2 0005 zcaron
+:Y 600,731,0,145,-83,72 2 0006 Ydieresis
+tm 600,562,0,192,-25,72 2 0007 trademark
+aq 600,562,0,0,-295 2 0010 quotesingle
+space 600 0 0040
+! 600,572,15,0,-193 2 0041 exclam
+" 600,562,0,0,-223 2 0042 quotedbl
+# 600,639,32,46,-83,46 2 0043 numbersign
+sh "
+$ 600,662,126,46,-58,46 2 0044 dollar
+Do "
+% 600,622,15,49,-84,49 2 0045 percent
+& 600,543,15,30,-37,30 0 0046 ampersand
+' 600,562,0,0,-233 2 0047 quoteright
+( 600,622,108,22,-263,22 2 0050 parenleft
+) 600,622,108,0,-87 2 0051 parenright
+* 600,607,0,30,-162,30 2 0052 asterisk
++ 600,470,0,30,-79,30 0 0053 plus
+, 600,122,112,0,-107 0 0054 comma
+- 600,285,0,8,-102,8 0 0055 hyphen
+hy "
+char173 "
+. 600,109,15,0,-188 0 0056 period
+/ 600,629,80,54,-62,54 2 0057 slash
+sl "
+0 600,622,15,25,-104,25 2 0060 zero
+1 600,622,0,0,-48 2 0061 one
+2 600,622,0,18,-20,18 2 0062 two
+3 600,622,15,0,-32 2 0063 three
+4 600,622,0,0,-58 2 0064 four
+5 600,607,15,39,-49,39 2 0065 five
+6 600,622,15,79,-105,72 2 0066 six
+7 600,607,0,62,-132,62 2 0067 seven
+8 600,622,15,38,-82,38 2 0070 eight
+9 600,622,15,24,-43,24 2 0071 nine
+: 600,385,15,0,-188 0 0072 colon
+; 600,385,112,0,-107 0 0073 semicolon
+< 600,472,0,60,-46,60 0 0074 less
+= 600,376,0,50,-59,50 0 0075 equal
+> 600,472,0,49,-35,49 0 0076 greater
+? 600,572,15,33,-172,33 2 0077 question
+@ 600,622,15,32,-77,32 2 0100 at
+at "
+A 600,562,0,57,47,57 2 0101 A
+B 600,562,0,66,7,66 2 0102 B
+C 600,580,18,105,-43,72 2 0103 C
+D 600,562,0,95,7,72 2 0104 D
+E 600,562,0,110,-3,72 2 0105 E
+F 600,562,0,110,-3,72 2 0106 F
+G 600,580,18,95,-33,72 2 0107 G
+H 600,562,0,137,18,72 2 0110 H
+I 600,562,0,73,-46,72 2 0111 I
+J 600,562,18,135,-2,72 2 0112 J
+K 600,562,0,121,12,72 2 0113 K
+L 600,562,0,57,3,57 2 0114 L
+M 600,562,0,165,46,72 2 0115 M
+N 600,562,13,162,43,72 2 0116 N
+O 600,580,18,75,-44,72 2 0117 O
+P 600,562,0,94,-29,72 2 0120 P
+Q 600,580,138,75,-45,72 2 0121 Q
+R 600,562,0,48,12,48 2 0122 R
+S 600,580,20,100,-26,72 2 0123 S
+T 600,562,0,115,-58,72 2 0124 T
+U 600,562,18,152,-75,72 2 0125 U
+V 600,562,13,173,-55,72 2 0126 V
+W 600,562,13,172,-56,72 2 0127 W
+X 600,562,0,125,27,72 2 0130 X
+Y 600,562,0,145,-83,72 2 0131 Y
+Z 600,562,0,60,-36,60 2 0132 Z
+[ 600,622,108,24,-196,24 2 0133 bracketleft
+lB "
+\ 600,629,80,0,-199 2 0134 backslash
+rs "
+] 600,622,108,0,-85 2 0135 bracketright
+rB "
+a^ 600,654,0,31,-179,31 2 0136 circumflex
+^ "
+_ 600,0,125,34,77,34 0 0137 underscore
+` 600,562,0,0,-293 2 0140 quoteleft
+oq "
+a 600,441,15,19,-26,19 0 0141 a
+b 600,629,15,75,21,72 2 0142 b
+c 600,441,15,58,-56,58 0 0143 c
+d 600,629,15,90,-35,72 2 0144 d
+e 600,441,15,48,-56,48 0 0145 e
+f 600,629,0,112,-64,72 2 0146 f
+g 600,441,157,107,-11,72 1 0147 g
+h 600,629,0,42,17,42 2 0150 h
+i 600,657,0,0,-45 2 0151 i
+j 600,657,157,0,-2 3 0152 j
+k 600,629,0,83,-8,72 2 0153 k
+l 600,629,0,0,-45 2 0154 l
+m 600,441,0,65,55,65 0 0155 m
+n 600,441,0,35,24,35 0 0156 n
+o 600,441,15,38,-52,38 0 0157 o
+p 600,441,157,55,74,55 1 0160 p
+q 600,441,157,132,-35,72 1 0161 q
+r 600,441,0,86,-10,72 0 0162 r
+s 600,441,15,34,-28,34 0 0163 s
+t 600,561,15,11,-117,11 2 0164 t
+u 600,426,15,22,-51,22 0 0165 u
+v 600,426,10,131,-40,72 0 0166 v
+w 600,426,10,145,-26,72 0 0167 w
+x 600,426,0,105,30,72 0 0170 x
+y 600,426,157,133,54,72 1 0171 y
+z 600,426,0,43,-49,43 0 0172 z
+lC 600,622,108,19,-183,19 2 0173 braceleft
+{ "
+ba 600,750,250,0,-172 3 0174 bar
+| "
+rC 600,622,108,0,-90 2 0175 braceright
+} "
+a~ 600,606,0,79,-162,72 2 0176 tilde
+~ "
+bq 600,100,134,0,-135 0 0200 quotesinglbase
+Fo 600,446,0,102,-42,72 0 0201 guillemotleft
+char171 "
+Fc 600,446,0,68,-8,68 0 0202 guillemotright
+char187 "
+bu 600,383,0,0,-174 0 0203 bullet
+Fn 600,622,143,121,76,72 2 0204 florin
+f/ 600,665,57,96,-34,72 2 0205 fraction
+%0 600,622,15,77,-9,72 2 0206 perthousand
+dg 600,580,78,0,-167 2 0207 dagger
+dd 600,580,78,0,-113 2 0210 daggerdbl
+en 600,285,0,36,-74,36 0 0211 endash
+em 600,285,0,111,1,72 0 0212 emdash
+fi 600,629,0,69,47,69 2 0214 fi
+fl 600,629,0,69,47,69 2 0215 fl
+.i 600,426,0,0,-45 0 0220 dotlessi
+ga 600,672,0,0,-244 2 0222 grave
+a" 600,672,0,133,-189,72 2 0223 hungarumlaut
+a. 600,580,0,0,-310 2 0224 dotaccent
+ab 600,609,0,26,-229,26 2 0225 breve
+ah 600,669,0,64,-212,64 2 0226 caron
+ao 600,627,0,0,-282 2 0227 ring
+ho 600,0,151,0,-157 0 0230 ogonek
+lq 600,562,0,0,-212 2 0231 quotedblleft
+rq 600,562,0,26,-163,26 2 0232 quotedblright
+oe 600,441,15,65,-4,65 0 0233 oe
+/l 600,629,0,33,-45,33 2 0234 lslash
+Bq 600,100,134,0,-65 0 0235 quotedblbase
+OE 600,562,0,122,-9,72 2 0236 OE
+/L 600,562,0,57,3,57 2 0237 Lslash
+r! 600,430,157,0,-175 1 0241 exclamdown
+char161 "
+ct 600,614,49,38,-101,38 2 0242 cent
+char162 "
+Po 600,611,21,71,-74,71 2 0243 sterling
+char163 "
+Cs 600,506,0,78,-44,72 0 0244 currency
+char164 "
+Ye 600,562,0,143,-70,72 2 0245 yen
+char165 "
+bb 600,675,175,0,-188 3 0246 brokenbar
+char166 "
+sc 600,580,78,40,-54,40 2 0247 section
+char167 "
+ad 600,595,0,20,-212,20 2 0250 dieresis
+char168 "
+co 600,580,18,117,-3,72 2 0251 copyright
+char169 "
+Of 600,580,0,0,-159 2 0252 ordfeminine
+char170 "
+fo 600,446,0,0,-154 0 0253 guilsinglleft
+no 600,369,0,41,-105,41 0 0254 logicalnot
+char172 "
+\- 600,283,0,30,-79,30 0 0255 minus
+rg 600,580,18,117,-3,72 2 0256 registered
+char174 "
+a- 600,565,0,50,-182,50 2 0257 macron
+char175 "
+de 600,622,0,26,-164,26 2 0260 degree
+char176 "
+char177 600,558,0,44,-46,44 0 0261 plusminus
+S2 600,622,0,0,-180 2 0262 twosuperior
+char178 "
+S3 600,622,0,0,-163 2 0263 threesuperior
+char179 "
+aa 600,672,0,62,-298,62 2 0264 acute
+char180 "
+char181 600,426,157,22,-22,22 1 0265 mu
+ps 600,562,78,80,-50,72 2 0266 paragraph
+char182 "
+char183 600,327,0,0,-225 0 0267 periodcentered
+ac 600,10,151,0,-147 0 0270 cedilla
+char184 "
+S1 600,622,0,0,-181 2 0271 onesuperior
+char185 "
+Om 600,580,0,0,-160 2 0272 ordmasculine
+char186 "
+fc 600,446,0,0,-120 0 0273 guilsinglright
+14 600,665,57,124,-15,72 2 0274 onequarter
+char188 "
+12 600,665,57,119,-15,72 2 0275 onehalf
+char189 "
+34 600,666,56,109,-23,72 2 0276 threequarters
+char190 "
+r? 600,430,157,0,-55 1 0277 questiondown
+char191 "
+`A 600,793,0,57,47,57 2 0300 Agrave
+char192 "
+'A 600,793,0,108,47,72 2 0301 Aacute
+char193 "
+^A 600,775,0,57,47,57 2 0302 Acircumflex
+char194 "
+~A 600,732,0,106,47,72 2 0303 Atilde
+char195 "
+:A 600,731,0,57,47,57 2 0304 Adieresis
+char196 "
+oA 600,753,0,57,47,57 2 0305 Aring
+char197 "
+AE 600,562,0,105,47,72 2 0306 AE
+char198 "
+,C 600,580,151,108,-43,72 2 0307 Ccedilla
+char199 "
+`E 600,793,0,110,-3,72 2 0310 Egrave
+char200 "
+'E 600,793,0,118,-3,72 2 0311 Eacute
+char201 "
+^E 600,775,0,110,-3,72 2 0312 Ecircumflex
+char202 "
+:E 600,731,0,110,-3,72 2 0313 Edieresis
+char203 "
+`I 600,793,0,73,-46,72 2 0314 Igrave
+char204 "
+'I 600,793,0,88,-46,72 2 0315 Iacute
+char205 "
+^I 600,775,0,73,-46,72 2 0316 Icircumflex
+char206 "
+:I 600,731,0,73,-46,72 2 0317 Idieresis
+char207 "
+-D 600,562,0,95,7,72 2 0320 Eth
+char208 "
+~N 600,732,13,162,43,72 2 0321 Ntilde
+char209 "
+`O 600,793,18,75,-44,72 2 0322 Ograve
+char210 "
+'O 600,793,18,88,-44,72 2 0323 Oacute
+char211 "
+^O 600,775,18,75,-44,72 2 0324 Ocircumflex
+char212 "
+~O 600,732,18,106,-44,72 2 0325 Otilde
+char213 "
+:O 600,731,18,75,-44,72 2 0326 Odieresis
+char214 "
+char215 600,470,0,57,-53,57 0 0327 multiply
+/O 600,629,80,75,-44,72 2 0330 Oslash
+char216 "
+`U 600,793,18,152,-75,72 2 0331 Ugrave
+char217 "
+'U 600,793,18,152,-75,72 2 0332 Uacute
+char218 "
+^U 600,775,18,152,-75,72 2 0333 Ucircumflex
+char219 "
+:U 600,731,18,152,-75,72 2 0334 Udieresis
+char220 "
+'Y 600,793,0,145,-83,72 2 0335 Yacute
+char221 "
+TP 600,562,0,56,-29,56 2 0336 Thorn
+char222 "
+ss 600,629,15,67,2,67 2 0337 germandbls
+char223 "
+`a 600,672,15,19,-26,19 2 0340 agrave
+char224 "
+'a 600,672,15,62,-26,62 2 0341 aacute
+char225 "
+^a 600,654,15,31,-26,31 2 0342 acircumflex
+char226 "
+~a 600,606,15,79,-26,72 2 0343 atilde
+char227 "
+:a 600,595,15,20,-26,20 2 0344 adieresis
+char228 "
+oa 600,627,15,19,-26,19 2 0345 aring
+char229 "
+ae 600,441,15,76,9,72 0 0346 ae
+char230 "
+,c 600,441,151,64,-56,64 0 0347 ccedilla
+char231 "
+`e 600,672,15,48,-56,48 2 0350 egrave
+char232 "
+'e 600,672,15,62,-56,62 2 0351 eacute
+char233 "
+^e 600,654,15,48,-56,48 2 0352 ecircumflex
+char234 "
+:e 600,595,15,48,-56,48 2 0353 edieresis
+char235 "
+`i 600,672,0,0,-45 2 0354 igrave
+char236 "
+'i 600,672,0,62,-45,62 2 0355 iacute
+char237 "
+^i 600,654,0,1,-45,1 2 0356 icircumflex
+char238 "
+:i 600,595,0,0,-45 2 0357 idieresis
+char239 "
+Sd 600,629,15,89,-52,72 2 0360 eth
+char240 "
+~n 600,606,0,79,24,72 2 0361 ntilde
+char241 "
+`o 600,672,15,38,-52,38 2 0362 ograve
+char242 "
+'o 600,672,15,62,-52,62 2 0363 oacute
+char243 "
+^o 600,654,15,38,-52,38 2 0364 ocircumflex
+char244 "
+~o 600,606,15,79,-52,72 2 0365 otilde
+char245 "
+:o 600,595,15,38,-52,38 2 0366 odieresis
+char246 "
+char247 600,467,0,23,-86,23 0 0367 divide
+/o 600,506,80,38,-52,38 0 0370 oslash
+char248 "
+`u 600,672,15,22,-51,22 2 0371 ugrave
+char249 "
+'u 600,672,15,52,-51,52 2 0372 uacute
+char250 "
+^u 600,654,15,22,-51,22 2 0373 ucircumflex
+char251 "
+:u 600,595,15,22,-51,22 2 0374 udieresis
+char252 "
+'y 600,672,157,133,54,72 3 0375 yacute
+char253 "
+Tp 600,629,157,55,74,55 3 0376 thorn
+char254 "
+:y 600,595,157,133,54,72 3 0377 ydieresis
+char255 "
diff --git a/devps/CR b/devps/CR
new file mode 100644
index 000000000..c6a92a16d
--- /dev/null
+++ b/devps/CR
@@ -0,0 +1,336 @@
+name CR
+internalname Courier
+spacewidth 600
+encoding text.enc
+charset
+ha 600,622 2 0000 asciicircum
+ti 600,320 0 0001 asciitilde
+vS 600,805,20 2 0002 Scaron
+vZ 600,805 2 0003 Zcaron
+vs 600,669,15 2 0004 scaron
+vz 600,669 2 0005 zcaron
+:Y 600,731 2 0006 Ydieresis
+tm 600,562 2 0007 trademark
+aq 600,562 2 0010 quotesingle
+space 600 0 0040
+! 600,572,15 2 0041 exclam
+" 600,562 2 0042 quotedbl
+# 600,639,32 2 0043 numbersign
+sh "
+$ 600,662,126 2 0044 dollar
+Do "
+% 600,622,15 2 0045 percent
+& 600,543,15 0 0046 ampersand
+' 600,562 2 0047 quoteright
+( 600,622,108 2 0050 parenleft
+) 600,622,108 2 0051 parenright
+* 600,607 2 0052 asterisk
++ 600,470 0 0053 plus
+, 600,122,112 0 0054 comma
+- 600,285 0 0055 hyphen
+hy "
+char173 "
+. 600,109,15 0 0056 period
+/ 600,629,80 2 0057 slash
+sl "
+0 600,622,15 2 0060 zero
+1 600,622 2 0061 one
+2 600,622 2 0062 two
+3 600,622,15 2 0063 three
+4 600,622 2 0064 four
+5 600,607,15 2 0065 five
+6 600,622,15 2 0066 six
+7 600,607 2 0067 seven
+8 600,622,15 2 0070 eight
+9 600,622,15 2 0071 nine
+: 600,385,15 0 0072 colon
+; 600,385,112 0 0073 semicolon
+< 600,472 0 0074 less
+= 600,376 0 0075 equal
+> 600,472 0 0076 greater
+? 600,572,15 2 0077 question
+@ 600,622,15 2 0100 at
+at "
+A 600,562 2 0101 A
+B 600,562 2 0102 B
+C 600,580,18 2 0103 C
+D 600,562 2 0104 D
+E 600,562 2 0105 E
+F 600,562 2 0106 F
+G 600,580,18 2 0107 G
+H 600,562 2 0110 H
+I 600,562 2 0111 I
+J 600,562,18 2 0112 J
+K 600,562 2 0113 K
+L 600,562 2 0114 L
+M 600,562 2 0115 M
+N 600,562,13 2 0116 N
+O 600,580,18 2 0117 O
+P 600,562 2 0120 P
+Q 600,580,138 2 0121 Q
+R 600,562 2 0122 R
+S 600,580,20 2 0123 S
+T 600,562 2 0124 T
+U 600,562,18 2 0125 U
+V 600,562,13 2 0126 V
+W 600,562,13 2 0127 W
+X 600,562 2 0130 X
+Y 600,562 2 0131 Y
+Z 600,562 2 0132 Z
+[ 600,622,108 2 0133 bracketleft
+lB "
+\ 600,629,80 2 0134 backslash
+rs "
+] 600,622,108 2 0135 bracketright
+rB "
+a^ 600,654 2 0136 circumflex
+^ "
+_ 600,0,125 0 0137 underscore
+` 600,562 2 0140 quoteleft
+oq "
+a 600,441,15 0 0141 a
+b 600,629,15 2 0142 b
+c 600,441,15 0 0143 c
+d 600,629,15 2 0144 d
+e 600,441,15 0 0145 e
+f 600,629 2 0146 f
+g 600,441,157 1 0147 g
+h 600,629 2 0150 h
+i 600,657 2 0151 i
+j 600,657,157 3 0152 j
+k 600,629 2 0153 k
+l 600,629 2 0154 l
+m 600,441 0 0155 m
+n 600,441 0 0156 n
+o 600,441,15 0 0157 o
+p 600,441,157 1 0160 p
+q 600,441,157 1 0161 q
+r 600,441 0 0162 r
+s 600,441,15 0 0163 s
+t 600,561,15 2 0164 t
+u 600,426,15 0 0165 u
+v 600,426,10 0 0166 v
+w 600,426,10 0 0167 w
+x 600,426 0 0170 x
+y 600,426,157 1 0171 y
+z 600,426 0 0172 z
+lC 600,622,108 2 0173 braceleft
+{ "
+ba 600,750,250 3 0174 bar
+| "
+rC 600,622,108 2 0175 braceright
+} "
+a~ 600,606 2 0176 tilde
+~ "
+bq 600,100,134 0 0200 quotesinglbase
+Fo 600,446 0 0201 guillemotleft
+char171 "
+Fc 600,446 0 0202 guillemotright
+char187 "
+bu 600,383 0 0203 bullet
+Fn 600,622,143 2 0204 florin
+f/ 600,665,57 2 0205 fraction
+%0 600,622,15 2 0206 perthousand
+dg 600,580,78 2 0207 dagger
+dd 600,580,78 2 0210 daggerdbl
+en 600,285 0 0211 endash
+em 600,285 0 0212 emdash
+fi 600,629 2 0214 fi
+fl 600,629 2 0215 fl
+.i 600,426 0 0220 dotlessi
+ga 600,672 2 0222 grave
+a" 600,672 2 0223 hungarumlaut
+a. 600,580 2 0224 dotaccent
+ab 600,609 2 0225 breve
+ah 600,669 2 0226 caron
+ao 600,627 2 0227 ring
+ho 600,0,151 0 0230 ogonek
+lq 600,562 2 0231 quotedblleft
+rq 600,562 2 0232 quotedblright
+oe 600,441,15 0 0233 oe
+/l 600,629 2 0234 lslash
+Bq 600,100,134 0 0235 quotedblbase
+OE 600,562 2 0236 OE
+/L 600,562 2 0237 Lslash
+r! 600,430,157 1 0241 exclamdown
+char161 "
+ct 600,614,49 2 0242 cent
+char162 "
+Po 600,611,21 2 0243 sterling
+char163 "
+Cs 600,506 0 0244 currency
+char164 "
+Ye 600,562 2 0245 yen
+char165 "
+bb 600,675,175 3 0246 brokenbar
+char166 "
+sc 600,580,78 2 0247 section
+char167 "
+ad 600,595 2 0250 dieresis
+char168 "
+co 600,580,18 2 0251 copyright
+char169 "
+Of 600,580 2 0252 ordfeminine
+char170 "
+fo 600,446 0 0253 guilsinglleft
+no 600,369 0 0254 logicalnot
+char172 "
+\- 600,283 0 0255 minus
+rg 600,580,18 2 0256 registered
+char174 "
+a- 600,565 2 0257 macron
+char175 "
+de 600,622 2 0260 degree
+char176 "
+char177 600,558 0 0261 plusminus
+S2 600,622 2 0262 twosuperior
+char178 "
+S3 600,622 2 0263 threesuperior
+char179 "
+aa 600,672 2 0264 acute
+char180 "
+char181 600,426,157 1 0265 mu
+ps 600,562,78 2 0266 paragraph
+char182 "
+char183 600,327 0 0267 periodcentered
+ac 600,10,151 0 0270 cedilla
+char184 "
+S1 600,622 2 0271 onesuperior
+char185 "
+Om 600,580 2 0272 ordmasculine
+char186 "
+fc 600,446 0 0273 guilsinglright
+14 600,665,57 2 0274 onequarter
+char188 "
+12 600,665,57 2 0275 onehalf
+char189 "
+34 600,666,56 2 0276 threequarters
+char190 "
+r? 600,430,157 1 0277 questiondown
+char191 "
+`A 600,793 2 0300 Agrave
+char192 "
+'A 600,793 2 0301 Aacute
+char193 "
+^A 600,775 2 0302 Acircumflex
+char194 "
+~A 600,732 2 0303 Atilde
+char195 "
+:A 600,731 2 0304 Adieresis
+char196 "
+oA 600,753 2 0305 Aring
+char197 "
+AE 600,562 2 0306 AE
+char198 "
+,C 600,580,151 2 0307 Ccedilla
+char199 "
+`E 600,793 2 0310 Egrave
+char200 "
+'E 600,793 2 0311 Eacute
+char201 "
+^E 600,775 2 0312 Ecircumflex
+char202 "
+:E 600,731 2 0313 Edieresis
+char203 "
+`I 600,793 2 0314 Igrave
+char204 "
+'I 600,793 2 0315 Iacute
+char205 "
+^I 600,775 2 0316 Icircumflex
+char206 "
+:I 600,731 2 0317 Idieresis
+char207 "
+-D 600,562 2 0320 Eth
+char208 "
+~N 600,732,13 2 0321 Ntilde
+char209 "
+`O 600,793,18 2 0322 Ograve
+char210 "
+'O 600,793,18 2 0323 Oacute
+char211 "
+^O 600,775,18 2 0324 Ocircumflex
+char212 "
+~O 600,732,18 2 0325 Otilde
+char213 "
+:O 600,731,18 2 0326 Odieresis
+char214 "
+char215 600,470 0 0327 multiply
+/O 600,629,80 2 0330 Oslash
+char216 "
+`U 600,793,18 2 0331 Ugrave
+char217 "
+'U 600,793,18 2 0332 Uacute
+char218 "
+^U 600,775,18 2 0333 Ucircumflex
+char219 "
+:U 600,731,18 2 0334 Udieresis
+char220 "
+'Y 600,793 2 0335 Yacute
+char221 "
+TP 600,562 2 0336 Thorn
+char222 "
+ss 600,629,15 2 0337 germandbls
+char223 "
+`a 600,672,15 2 0340 agrave
+char224 "
+'a 600,672,15 2 0341 aacute
+char225 "
+^a 600,654,15 2 0342 acircumflex
+char226 "
+~a 600,606,15 2 0343 atilde
+char227 "
+:a 600,595,15 2 0344 adieresis
+char228 "
+oa 600,627,15 2 0345 aring
+char229 "
+ae 600,441,15 0 0346 ae
+char230 "
+,c 600,441,151 0 0347 ccedilla
+char231 "
+`e 600,672,15 2 0350 egrave
+char232 "
+'e 600,672,15 2 0351 eacute
+char233 "
+^e 600,654,15 2 0352 ecircumflex
+char234 "
+:e 600,595,15 2 0353 edieresis
+char235 "
+`i 600,672 2 0354 igrave
+char236 "
+'i 600,672 2 0355 iacute
+char237 "
+^i 600,654 2 0356 icircumflex
+char238 "
+:i 600,595 2 0357 idieresis
+char239 "
+Sd 600,629,15 2 0360 eth
+char240 "
+~n 600,606 2 0361 ntilde
+char241 "
+`o 600,672,15 2 0362 ograve
+char242 "
+'o 600,672,15 2 0363 oacute
+char243 "
+^o 600,654,15 2 0364 ocircumflex
+char244 "
+~o 600,606,15 2 0365 otilde
+char245 "
+:o 600,595,15 2 0366 odieresis
+char246 "
+char247 600,467 0 0367 divide
+/o 600,506,80 0 0370 oslash
+char248 "
+`u 600,672,15 2 0371 ugrave
+char249 "
+'u 600,672,15 2 0372 uacute
+char250 "
+^u 600,654,15 2 0373 ucircumflex
+char251 "
+:u 600,595,15 2 0374 udieresis
+char252 "
+'y 600,672,157 3 0375 yacute
+char253 "
+Tp 600,629,157 3 0376 thorn
+char254 "
+:y 600,595,157 3 0377 ydieresis
+char255 "
diff --git a/ps/devps/DESC-A4 b/devps/DESC.in
index 9ddfc5cf7..75df68c19 100644
--- a/ps/devps/DESC-A4
+++ b/devps/DESC.in
@@ -1,4 +1,3 @@
-paperlength 841890
res 72000
hor 1
vert 1
@@ -7,5 +6,6 @@ unitwidth 1000
sizes 3000-10000000 0
styles R I B BI
family T
-fonts 4 SS S ZD ZDR
+fonts 9 0 0 0 0 0 SS S ZD ZDR
tcommand
+postpro grops
diff --git a/devps/HB b/devps/HB
new file mode 100644
index 000000000..8c2ed083a
--- /dev/null
+++ b/devps/HB
@@ -0,0 +1,546 @@
+name HB
+internalname Helvetica-Bold
+spacewidth 278
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -30
+A w -30
+A v -40
+A u -30
+A Y -110
+A W -60
+A V -80
+A U -50
+A T -90
+A Q -40
+A O -40
+A G -50
+A C -40
+B U -10
+B A -30
+D . -30
+D , -30
+D Y -70
+D W -40
+D V -40
+D A -40
+F . -100
+F , -100
+F a -20
+F A -80
+J u -20
+J . -20
+J , -20
+J A -20
+K y -40
+K u -30
+K o -35
+K e -15
+K O -30
+L y -30
+L ' -140
+L rq -140
+L Y -120
+L W -80
+L V -110
+L T -90
+O . -40
+O , -40
+O Y -70
+O X -50
+O W -50
+O V -50
+O T -40
+O A -50
+P . -120
+P o -40
+P e -30
+P , -120
+P a -30
+P A -100
+Q . 20
+Q , 20
+Q U -10
+R Y -50
+R W -40
+R V -50
+R U -20
+R T -20
+R O -20
+T y -60
+T w -60
+T u -90
+T ; -40
+T r -80
+T . -80
+T o -80
+T - -120
+T hy -120
+T char173 -120
+T e -60
+T , -80
+T : -40
+T a -80
+T O -40
+T A -90
+U . -30
+U , -30
+U A -50
+V u -60
+V ; -40
+V . -120
+V o -90
+V - -80
+V hy -80
+V char173 -80
+V e -50
+V , -120
+V : -40
+V a -60
+V O -50
+V G -50
+V A -80
+W y -20
+W u -45
+W ; -10
+W . -80
+W o -60
+W - -40
+W hy -40
+W char173 -40
+W e -35
+W , -80
+W : -10
+W a -40
+W O -20
+W A -60
+Y u -100
+Y ; -50
+Y . -100
+Y o -100
+Y e -80
+Y , -100
+Y : -50
+Y a -90
+Y O -70
+Y A -110
+a y -20
+a w -15
+a v -15
+a g -10
+b y -20
+b v -20
+b u -20
+b l -10
+c y -10
+c l -20
+c k -20
+c h -10
+, ' -120
+, rq -120
+d y -15
+d w -15
+d v -15
+d d -10
+e y -15
+e x -15
+e w -15
+e v -15
+e . 20
+e , 10
+f ' 30
+f rq 30
+f . -10
+f o -20
+f e -10
+f , -10
+g g -10
+g e 10
+h y -20
+k o -15
+l y -15
+l w -15
+m y -30
+m u -20
+n y -20
+n v -40
+n u -10
+o y -20
+o x -30
+o w -15
+o v -20
+p y -15
+. ' -120
+. rq -120
+` ` -46
+` oq -46
+oq ` -46
+oq oq -46
+' v -20
+' s -60
+' r -40
+' ' -46
+' l -20
+' d -80
+r y 10
+r v 10
+r t 20
+r s -15
+r q -20
+r . -60
+r o -20
+r - -20
+r hy -20
+r char173 -20
+r g -15
+r d -20
+r , -60
+r c -20
+s w -15
+v . -80
+v o -30
+v , -80
+v a -20
+w . -40
+w o -20
+w , -40
+x e -10
+y . -80
+y o -25
+y e -10
+y , -80
+y a -30
+z e 10
+charset
+ha 584,698 2 0000 asciicircum
+ti 584,343 0 0001 asciitilde
+vS 667,936,19 2 0002 Scaron
+vZ 611,936 2 0003 Zcaron
+vs 556,750,14 2 0004 scaron
+vz 500,750 2 0005 zcaron
+:Y 667,915 2 0006 Ydieresis
+tm 1000,718 2 0007 trademark
+aq 238,718 2 0010 quotesingle
+space 278 0 0040
+! 333,718 2 0041 exclam
+" 474,718 2 0042 quotedbl
+# 556,698 2 0043 numbersign
+sh "
+$ 556,775,115 2 0044 dollar
+Do "
+% 889,710,19 2 0045 percent
+& 722,718,19 2 0046 ampersand
+' 278,718 2 0047 quoteright
+( 333,734,208 3 0050 parenleft
+) 333,734,208 3 0051 parenright
+* 389,718 2 0052 asterisk
++ 584,506 0 0053 plus
+, 278,146,168 0 0054 comma
+- 333,345 0 0055 hyphen
+hy "
+char173 "
+. 278,146 0 0056 period
+/ 278,737,19 2 0057 slash
+sl "
+0 556,710,19 2 0060 zero
+1 556,710 2 0061 one
+2 556,710 2 0062 two
+3 556,710,19 2 0063 three
+4 556,710 2 0064 four
+5 556,698,19 2 0065 five
+6 556,710,19 2 0066 six
+7 556,698 2 0067 seven
+8 556,710,19 2 0070 eight
+9 556,710,19 2 0071 nine
+: 333,512 0 0072 colon
+; 333,512,168 0 0073 semicolon
+< 584,514,8 0 0074 less
+= 584,419 0 0075 equal
+> 584,514,8 0 0076 greater
+? 611,727 2 0077 question
+@ 975,737,19 2 0100 at
+at "
+A 722,718 2 0101 A
+B 722,718 2 0102 B
+C 722,737,19 2 0103 C
+D 722,718 2 0104 D
+E 667,718 2 0105 E
+F 611,718 2 0106 F
+G 778,737,19 2 0107 G
+H 722,718 2 0110 H
+I 278,718 2 0111 I
+J 556,718,18 2 0112 J
+K 722,718 2 0113 K
+L 611,718 2 0114 L
+M 833,718 2 0115 M
+N 722,718 2 0116 N
+O 778,737,19 2 0117 O
+P 667,718 2 0120 P
+Q 778,737,52 2 0121 Q
+R 722,718 2 0122 R
+S 667,737,19 2 0123 S
+T 611,718 2 0124 T
+U 722,718,19 2 0125 U
+V 667,718 2 0126 V
+W 944,718 2 0127 W
+X 667,718 2 0130 X
+Y 667,718 2 0131 Y
+Z 611,718 2 0132 Z
+[ 333,722,196 2 0133 bracketleft
+lB "
+\ 278,737,19 2 0134 backslash
+rs "
+] 333,722,196 2 0135 bracketright
+rB "
+a^ 333,750 2 0136 circumflex
+^ "
+_ 556,0,125 0 0137 underscore
+` 278,727 2 0140 quoteleft
+oq "
+a 556,546,14 0 0141 a
+b 611,718,14 2 0142 b
+c 556,546,14 0 0143 c
+d 611,718,14 2 0144 d
+e 556,546,14 0 0145 e
+f 333,727 2 0146 f
+g 611,546,217 1 0147 g
+h 611,718 2 0150 h
+i 278,725 2 0151 i
+j 278,725,214 3 0152 j
+k 556,718 2 0153 k
+l 278,718 2 0154 l
+m 889,546 0 0155 m
+n 611,546 0 0156 n
+o 611,546,14 0 0157 o
+p 611,546,207 1 0160 p
+q 611,546,207 1 0161 q
+r 389,546 0 0162 r
+s 556,546,14 0 0163 s
+t 333,676,6 2 0164 t
+u 611,532,14 0 0165 u
+v 556,532 0 0166 v
+w 778,532 0 0167 w
+x 556,532 0 0170 x
+y 556,532,214 1 0171 y
+z 500,532 0 0172 z
+lC 389,722,196 2 0173 braceleft
+{ "
+ba 280,737,19 2 0174 bar
+| "
+rC 389,722,196 2 0175 braceright
+} "
+a~ 333,737 2 0176 tilde
+~ "
+bq 278,127,146 0 0200 quotesinglbase
+Fo 556,484 0 0201 guillemotleft
+char171 "
+Fc 556,484 0 0202 guillemotright
+char187 "
+bu 350,524 0 0203 bullet
+Fn 556,737,210 3 0204 florin
+f/ 167,710,19 2 0205 fraction
+%0 1000,710,19 2 0206 perthousand
+dg 556,718,171 2 0207 dagger
+dd 556,718,171 2 0210 daggerdbl
+en 556,333 0 0211 endash
+em 1000,333 0 0212 emdash
+fi 611,727 2 0214 fi
+fl 611,727 2 0215 fl
+.i 278,532 0 0220 dotlessi
+ga 333,750 2 0222 grave
+a" 333,750 2 0223 hungarumlaut
+a. 333,729 2 0224 dotaccent
+ab 333,750 2 0225 breve
+ah 333,750 2 0226 caron
+ao 333,776 2 0227 ring
+ho 333,0,228 1 0230 ogonek
+lq 500,727 2 0231 quotedblleft
+rq 500,718 2 0232 quotedblright
+oe 944,546,14 0 0233 oe
+/l 278,718 2 0234 lslash
+Bq 500,127,146 0 0235 quotedblbase
+OE 1000,737,19 2 0236 OE
+/L 611,718 2 0237 Lslash
+r! 333,532,186 0 0241 exclamdown
+char161 "
+ct 556,628,118 0 0242 cent
+char162 "
+Po 556,718,16 2 0243 sterling
+char163 "
+Cs 556,636 0 0244 currency
+char164 "
+Ye 556,698 2 0245 yen
+char165 "
+bb 280,737,19 2 0246 brokenbar
+char166 "
+sc 556,727,184 2 0247 section
+char167 "
+ad 333,729 2 0250 dieresis
+char168 "
+co 737,737,19 2 0251 copyright
+char169 "
+Of 370,737 2 0252 ordfeminine
+char170 "
+fo 333,484 0 0253 guilsinglleft
+no 584,419 0 0254 logicalnot
+char172 "
+\- 584,309 0 0255 minus
+rg 737,737,19 2 0256 registered
+char174 "
+a- 333,678 2 0257 macron
+char175 "
+de 400,712 2 0260 degree
+char176 "
+char177 584,506 0 0261 plusminus
+S2 333,710 2 0262 twosuperior
+char178 "
+S3 333,710 2 0263 threesuperior
+char179 "
+aa 333,750 2 0264 acute
+char180 "
+char181 611,532,207 1 0265 mu
+ps 556,700,191 2 0266 paragraph
+char182 "
+char183 278,334 0 0267 periodcentered
+ac 333,0,228 1 0270 cedilla
+char184 "
+S1 333,710 2 0271 onesuperior
+char185 "
+Om 365,737 2 0272 ordmasculine
+char186 "
+fc 333,484 0 0273 guilsinglright
+14 834,710,19 2 0274 onequarter
+char188 "
+12 834,710,19 2 0275 onehalf
+char189 "
+34 834,710,19 2 0276 threequarters
+char190 "
+r? 611,532,195 0 0277 questiondown
+char191 "
+`A 722,936 2 0300 Agrave
+char192 "
+'A 722,936 2 0301 Aacute
+char193 "
+^A 722,936 2 0302 Acircumflex
+char194 "
+~A 722,923 2 0303 Atilde
+char195 "
+:A 722,915 2 0304 Adieresis
+char196 "
+oA 722,962 2 0305 Aring
+char197 "
+AE 1000,718 2 0306 AE
+char198 "
+,C 722,737,228 3 0307 Ccedilla
+char199 "
+`E 667,936 2 0310 Egrave
+char200 "
+'E 667,936 2 0311 Eacute
+char201 "
+^E 667,936 2 0312 Ecircumflex
+char202 "
+:E 667,915 2 0313 Edieresis
+char203 "
+`I 278,936 2 0314 Igrave
+char204 "
+'I 278,936 2 0315 Iacute
+char205 "
+^I 278,936 2 0316 Icircumflex
+char206 "
+:I 278,915 2 0317 Idieresis
+char207 "
+-D 722,718 2 0320 Eth
+char208 "
+~N 722,923 2 0321 Ntilde
+char209 "
+`O 778,936,19 2 0322 Ograve
+char210 "
+'O 778,936,19 2 0323 Oacute
+char211 "
+^O 778,936,19 2 0324 Ocircumflex
+char212 "
+~O 778,923,19 2 0325 Otilde
+char213 "
+:O 778,915,19 2 0326 Odieresis
+char214 "
+char215 584,505 0 0327 multiply
+/O 778,745,27 2 0330 Oslash
+char216 "
+`U 722,936,19 2 0331 Ugrave
+char217 "
+'U 722,936,19 2 0332 Uacute
+char218 "
+^U 722,936,19 2 0333 Ucircumflex
+char219 "
+:U 722,915,19 2 0334 Udieresis
+char220 "
+'Y 667,936 2 0335 Yacute
+char221 "
+TP 667,718 2 0336 Thorn
+char222 "
+ss 611,731,14 2 0337 germandbls
+char223 "
+`a 556,750,14 2 0340 agrave
+char224 "
+'a 556,750,14 2 0341 aacute
+char225 "
+^a 556,750,14 2 0342 acircumflex
+char226 "
+~a 556,737,14 2 0343 atilde
+char227 "
+:a 556,729,14 2 0344 adieresis
+char228 "
+oa 556,776,14 2 0345 aring
+char229 "
+ae 889,546,14 0 0346 ae
+char230 "
+,c 556,546,228 1 0347 ccedilla
+char231 "
+`e 556,750,14 2 0350 egrave
+char232 "
+'e 556,750,14 2 0351 eacute
+char233 "
+^e 556,750,14 2 0352 ecircumflex
+char234 "
+:e 556,729,14 2 0353 edieresis
+char235 "
+`i 278,750 2 0354 igrave
+char236 "
+'i 278,750 2 0355 iacute
+char237 "
+^i 278,750 2 0356 icircumflex
+char238 "
+:i 278,729 2 0357 idieresis
+char239 "
+Sd 611,737,14 2 0360 eth
+char240 "
+~n 611,737 2 0361 ntilde
+char241 "
+`o 611,750,14 2 0362 ograve
+char242 "
+'o 611,750,14 2 0363 oacute
+char243 "
+^o 611,750,14 2 0364 ocircumflex
+char244 "
+~o 611,737,14 2 0365 otilde
+char245 "
+:o 611,729,14 2 0366 odieresis
+char246 "
+char247 584,548,42 0 0367 divide
+/o 611,560,29 0 0370 oslash
+char248 "
+`u 611,750,14 2 0371 ugrave
+char249 "
+'u 611,750,14 2 0372 uacute
+char250 "
+^u 611,750,14 2 0373 ucircumflex
+char251 "
+:u 611,729,14 2 0374 udieresis
+char252 "
+'y 556,750,214 3 0375 yacute
+char253 "
+Tp 611,718,208 3 0376 thorn
+char254 "
+:y 556,729,214 3 0377 ydieresis
+char255 "
diff --git a/devps/HBI b/devps/HBI
new file mode 100644
index 000000000..595e58f90
--- /dev/null
+++ b/devps/HBI
@@ -0,0 +1,547 @@
+name HBI
+internalname Helvetica-BoldOblique
+slant 12
+spacewidth 278
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -30
+A w -30
+A v -40
+A u -30
+A Y -110
+A W -60
+A V -80
+A U -50
+A T -90
+A Q -40
+A O -40
+A G -50
+A C -40
+B U -10
+B A -30
+D . -30
+D , -30
+D Y -70
+D W -40
+D V -40
+D A -40
+F . -100
+F , -100
+F a -20
+F A -80
+J u -20
+J . -20
+J , -20
+J A -20
+K y -40
+K u -30
+K o -35
+K e -15
+K O -30
+L y -30
+L ' -140
+L rq -140
+L Y -120
+L W -80
+L V -110
+L T -90
+O . -40
+O , -40
+O Y -70
+O X -50
+O W -50
+O V -50
+O T -40
+O A -50
+P . -120
+P o -40
+P e -30
+P , -120
+P a -30
+P A -100
+Q . 20
+Q , 20
+Q U -10
+R Y -50
+R W -40
+R V -50
+R U -20
+R T -20
+R O -20
+T y -60
+T w -60
+T u -90
+T ; -40
+T r -80
+T . -80
+T o -80
+T - -120
+T hy -120
+T char173 -120
+T e -60
+T , -80
+T : -40
+T a -80
+T O -40
+T A -90
+U . -30
+U , -30
+U A -50
+V u -60
+V ; -40
+V . -120
+V o -90
+V - -80
+V hy -80
+V char173 -80
+V e -50
+V , -120
+V : -40
+V a -60
+V O -50
+V G -50
+V A -80
+W y -20
+W u -45
+W ; -10
+W . -80
+W o -60
+W - -40
+W hy -40
+W char173 -40
+W e -35
+W , -80
+W : -10
+W a -40
+W O -20
+W A -60
+Y u -100
+Y ; -50
+Y . -100
+Y o -100
+Y e -80
+Y , -100
+Y : -50
+Y a -90
+Y O -70
+Y A -110
+a y -20
+a w -15
+a v -15
+a g -10
+b y -20
+b v -20
+b u -20
+b l -10
+c y -10
+c l -20
+c k -20
+c h -10
+, ' -120
+, rq -120
+d y -15
+d w -15
+d v -15
+d d -10
+e y -15
+e x -15
+e w -15
+e v -15
+e . 20
+e , 10
+f ' 30
+f rq 30
+f . -10
+f o -20
+f e -10
+f , -10
+g g -10
+g e 10
+h y -20
+k o -15
+l y -15
+l w -15
+m y -30
+m u -20
+n y -20
+n v -40
+n u -10
+o y -20
+o x -30
+o w -15
+o v -20
+p y -15
+. ' -120
+. rq -120
+` ` -46
+` oq -46
+oq ` -46
+oq oq -46
+' v -20
+' s -60
+' r -40
+' ' -46
+' l -20
+' d -80
+r y 10
+r v 10
+r t 20
+r s -15
+r q -20
+r . -60
+r o -20
+r - -20
+r hy -20
+r char173 -20
+r g -15
+r d -20
+r , -60
+r c -20
+s w -15
+v . -80
+v o -30
+v , -80
+v a -20
+w . -40
+w o -20
+w , -40
+x e -10
+y . -80
+y o -25
+y e -10
+y , -80
+y a -30
+z e 10
+charset
+ha 584,698,0,57,-81,57 2 0000 asciicircum
+ti 584,343,0,43,-65,43 0 0001 asciitilde
+vS 667,936,19,101,-31,90 2 0002 Scaron
+vZ 611,936,0,176,25,90 2 0003 Zcaron
+vs 556,750,14,108,-13,90 2 0004 scaron
+vz 500,750,0,136,30,90 2 0005 zcaron
+:Y 667,915,0,189,-118,90 2 0006 Ydieresis
+tm 1000,718,0,159,-129,90 2 0007 trademark
+aq 238,718,0,133,-115,90 2 0010 quotesingle
+space 278 0 0040
+! 333,718,0,114,-44,90 2 0041 exclam
+" 474,718,0,105,-143,90 2 0042 quotedbl
+# 556,698,0,138,-10,90 2 0043 numbersign
+sh "
+$ 556,775,115,116,-17,90 2 0044 dollar
+Do "
+% 889,710,19,62,-86,62 2 0045 percent
+& 722,718,19,60,-39,60 2 0046 ampersand
+' 278,718,0,134,-117,90 2 0047 quoteright
+( 333,734,208,187,-26,90 3 0050 parenleft
+) 333,734,208,86,75,86 3 0051 parenright
+* 389,718,0,142,-96,90 2 0052 asterisk
++ 584,506,0,76,-32,76 0 0053 plus
+, 278,146,168,17,22,17 0 0054 comma
+- 333,345,0,96,-23,90 0 0055 hyphen
+hy "
+char173 "
+. 278,146,0,17,-14,17 0 0056 period
+/ 278,737,19,240,87,90 2 0057 slash
+sl "
+0 556,710,19,111,-36,90 2 0060 zero
+1 556,710,0,23,-123,23 2 0061 one
+2 556,710,0,113,24,90 2 0062 two
+3 556,710,19,102,-15,90 2 0063 three
+4 556,710,0,92,-10,90 2 0064 four
+5 556,698,19,130,-14,90 2 0065 five
+6 556,710,19,113,-35,90 2 0066 six
+7 556,698,0,170,-75,90 2 0067 seven
+8 556,710,19,110,-19,90 2 0070 eight
+9 556,710,19,109,-28,90 2 0071 nine
+: 333,512,0,68,-42,68 0 0072 colon
+; 333,512,168,68,-6,68 0 0073 semicolon
+< 584,514,8,121,-32,90 0 0074 less
+= 584,419,0,99,-8,90 0 0075 equal
+> 584,514,8,75,14,75 0 0076 greater
+? 611,727,0,110,-115,90 2 0077 question
+@ 975,737,19,29,-136,29 2 0100 at
+at "
+A 722,718,0,30,30,30 2 0101 A
+B 722,718,0,92,-26,90 2 0102 B
+C 722,737,19,117,-57,90 2 0103 C
+D 722,718,0,105,-26,90 2 0104 D
+E 667,718,0,140,-26,90 2 0105 E
+F 611,718,0,179,-26,90 2 0106 F
+G 778,737,19,89,-58,89 2 0107 G
+H 722,718,0,132,-21,90 2 0110 H
+I 278,718,0,139,-14,90 2 0111 I
+J 556,718,18,131,-10,90 2 0112 J
+K 722,718,0,186,-37,90 2 0113 K
+L 611,718,0,50,-26,50 2 0114 L
+M 833,718,0,135,-19,90 2 0115 M
+N 722,718,0,135,-19,90 2 0116 N
+O 778,737,19,95,-57,90 2 0117 O
+P 667,718,0,121,-26,90 2 0120 P
+Q 778,737,52,95,-57,90 2 0121 Q
+R 722,718,0,106,-26,90 2 0122 R
+S 667,737,19,101,-31,90 2 0123 S
+T 611,718,0,190,-90,90 2 0124 T
+U 722,718,19,132,-66,90 2 0125 U
+V 667,718,0,184,-122,90 2 0126 V
+W 944,718,0,188,-119,90 2 0127 W
+X 667,718,0,174,36,90 2 0130 X
+Y 667,718,0,189,-118,90 2 0131 Y
+Z 611,718,0,176,25,90 2 0132 Z
+[ 333,722,196,179,29,90 2 0133 bracketleft
+lB "
+\ 278,737,19,79,-74,79 2 0134 backslash
+rs "
+] 333,722,196,140,68,90 2 0135 bracketright
+rB "
+a^ 333,750,0,188,-68,90 2 0136 circumflex
+^ "
+_ 556,0,125,34,77,34 0 0137 underscore
+` 278,727,0,133,-115,90 2 0140 quoteleft
+oq "
+a 556,546,14,77,-5,77 0 0141 a
+b 611,718,14,84,-11,84 2 0142 b
+c 556,546,14,93,-29,90 0 0143 c
+d 611,718,14,143,-32,90 2 0144 d
+e 556,546,14,87,-20,87 0 0145 e
+f 333,727,0,186,-37,90 2 0146 f
+g 611,546,217,105,12,90 1 0147 g
+h 611,718,0,68,-15,68 2 0150 h
+i 278,725,0,135,-19,90 2 0151 i
+j 278,725,214,135,92,90 3 0152 j
+k 556,718,0,164,-19,90 2 0153 k
+l 278,718,0,134,-19,90 2 0154 l
+m 889,546,0,70,-14,70 0 0155 m
+n 611,546,0,68,-15,68 0 0156 n
+o 611,546,14,82,-32,82 0 0157 o
+p 611,546,207,84,32,84 1 0160 p
+q 611,546,207,104,-30,90 1 0161 q
+r 389,546,0,150,-14,90 0 0162 r
+s 556,546,14,78,-13,78 0 0163 s
+t 333,676,6,139,-50,90 2 0164 t
+u 611,532,14,97,-48,90 0 0165 u
+v 556,532,0,150,-76,90 0 0166 v
+w 778,532,0,154,-73,90 0 0167 w
+x 556,532,0,142,35,90 0 0170 x
+y 556,532,214,146,8,90 1 0171 y
+z 500,532,0,133,30,90 0 0172 z
+lC 389,722,196,179,-44,90 2 0173 braceleft
+{ "
+ba 280,737,19,123,-30,90 2 0174 bar
+| "
+rC 389,722,196,68,68,68 2 0175 braceright
+} "
+a~ 333,737,0,224,-63,90 2 0176 tilde
+~ "
+bq 278,127,146,8,9,8 0 0200 quotesinglbase
+Fo 556,484,0,65,-85,65 0 0201 guillemotleft
+char171 "
+Fc 556,484,0,34,-54,34 0 0202 guillemotright
+char187 "
+bu 350,524,0,120,-33,90 0 0203 bullet
+Fn 556,737,210,163,100,90 3 0204 florin
+f/ 167,710,19,370,224,90 2 0205 fraction
+%0 1000,710,19,88,-26,88 2 0206 perthousand
+dg 556,718,171,120,-68,90 2 0207 dagger
+dd 556,718,171,122,4,90 2 0210 daggerdbl
+en 556,333,0,121,2,90 0 0211 endash
+em 1000,333,0,121,2,90 0 0212 emdash
+fi 611,727,0,135,-37,90 2 0214 fi
+fl 611,727,0,134,-37,90 2 0215 fl
+.i 278,532,0,94,-19,90 0 0220 dotlessi
+ga 333,750,0,70,-86,70 2 0222 grave
+a" 333,750,0,362,-87,90 2 0223 hungarumlaut
+a. 333,729,0,102,-185,90 2 0224 dotaccent
+ab 333,750,0,211,-106,90 2 0225 breve
+ah 333,750,0,219,-99,90 2 0226 caron
+ao 333,776,0,137,-150,90 2 0227 ring
+ho 333,0,228,0,9 1 0230 ogonek
+lq 500,727,0,138,-110,90 2 0231 quotedblleft
+rq 500,718,0,139,-112,90 2 0232 quotedblright
+oe 944,546,14,83,-32,83 0 0233 oe
+/l 278,718,0,179,10,90 2 0234 lslash
+Bq 500,127,146,13,14,13 0 0235 quotedblbase
+OE 1000,737,19,164,-49,90 2 0236 OE
+/L 611,718,0,50,16,50 2 0237 Lslash
+r! 333,532,186,70,0,70 0 0241 exclamdown
+char161 "
+ct 556,628,118,93,-29,90 0 0242 cent
+char162 "
+Po 556,718,16,129,0,90 2 0243 sterling
+char163 "
+Cs 556,636,0,174,23,90 0 0244 currency
+char164 "
+Ye 556,698,0,207,-10,90 2 0245 yen
+char165 "
+bb 280,737,19,123,-30,90 2 0246 brokenbar
+char166 "
+sc 556,727,184,92,-11,90 2 0247 section
+char167 "
+ad 333,729,0,199,-87,90 2 0250 dieresis
+char168 "
+co 737,737,19,148,-6,90 2 0251 copyright
+char169 "
+Of 370,737,0,145,-42,90 2 0252 ordfeminine
+char170 "
+fo 333,484,0,70,-80,70 0 0253 guilsinglleft
+no 584,419,0,99,-55,90 0 0254 logicalnot
+char172 "
+\- 584,309,0,76,-32,76 0 0255 minus
+rg 737,737,19,147,-5,90 2 0256 registered
+char174 "
+a- 333,678,0,200,-72,90 2 0257 macron
+char175 "
+de 400,712,0,117,-125,90 2 0260 degree
+char176 "
+char177 584,506,0,91,10,90 0 0261 plusminus
+S2 333,710,0,166,-19,90 2 0262 twosuperior
+char178 "
+S3 333,710,0,158,-41,90 2 0263 threesuperior
+char179 "
+aa 333,750,0,232,-186,90 2 0264 acute
+char180 "
+char181 611,532,207,97,28,90 1 0265 mu
+ps 556,700,191,182,-48,90 2 0266 paragraph
+char182 "
+char183 278,334,0,48,-60,48 0 0267 periodcentered
+ac 333,0,228,0,87 1 0270 cedilla
+char184 "
+S1 333,710,0,105,-98,90 2 0271 onesuperior
+char185 "
+Om 365,737,0,170,-42,90 2 0272 ordmasculine
+char186 "
+fc 333,484,0,39,-49,39 0 0273 guilsinglright
+14 834,710,19,22,-82,22 2 0274 onequarter
+char188 "
+12 834,710,19,74,-82,74 2 0275 onehalf
+char189 "
+34 834,710,19,55,-49,55 2 0276 threequarters
+char190 "
+r? 611,532,195,0,-3 0 0277 questiondown
+char191 "
+`A 722,936,0,30,30,30 2 0300 Agrave
+char192 "
+'A 722,936,0,78,30,78 2 0301 Aacute
+char193 "
+^A 722,936,0,34,30,34 2 0302 Acircumflex
+char194 "
+~A 722,923,0,69,30,69 2 0303 Atilde
+char195 "
+:A 722,915,0,44,30,44 2 0304 Adieresis
+char196 "
+oA 722,962,0,30,30,30 2 0305 Aring
+char197 "
+AE 1000,718,0,150,45,90 2 0306 AE
+char198 "
+,C 722,737,228,117,-57,90 3 0307 Ccedilla
+char199 "
+`E 667,936,0,140,-26,90 2 0310 Egrave
+char200 "
+'E 667,936,0,140,-26,90 2 0311 Eacute
+char201 "
+^E 667,936,0,140,-26,90 2 0312 Ecircumflex
+char202 "
+:E 667,915,0,140,-26,90 2 0313 Edieresis
+char203 "
+`I 278,936,0,139,-14,90 2 0314 Igrave
+char204 "
+'I 278,936,0,300,-14,90 2 0315 Iacute
+char205 "
+^I 278,936,0,256,-14,90 2 0316 Icircumflex
+char206 "
+:I 278,915,0,266,-14,90 2 0317 Idieresis
+char207 "
+-D 722,718,0,105,-12,90 2 0320 Eth
+char208 "
+~N 722,923,0,135,-19,90 2 0321 Ntilde
+char209 "
+`O 778,936,19,95,-57,90 2 0322 Ograve
+char210 "
+'O 778,936,19,95,-57,90 2 0323 Oacute
+char211 "
+^O 778,936,19,95,-57,90 2 0324 Ocircumflex
+char212 "
+~O 778,923,19,95,-57,90 2 0325 Otilde
+char213 "
+:O 778,915,19,95,-57,90 2 0326 Odieresis
+char214 "
+char215 584,505,0,101,-7,90 0 0327 multiply
+/O 778,745,27,166,15,90 2 0330 Oslash
+char216 "
+`U 722,936,19,132,-66,90 2 0331 Ugrave
+char217 "
+'U 722,936,19,132,-66,90 2 0332 Uacute
+char218 "
+^U 722,936,19,132,-66,90 2 0333 Ucircumflex
+char219 "
+:U 722,915,19,132,-66,90 2 0334 Udieresis
+char220 "
+'Y 667,936,0,189,-118,90 2 0335 Yacute
+char221 "
+TP 667,718,0,99,-26,90 2 0336 Thorn
+char222 "
+ss 611,731,14,96,-19,90 2 0337 germandbls
+char223 "
+`a 556,750,14,77,-5,77 2 0340 agrave
+char224 "
+'a 556,750,14,121,-5,90 2 0341 aacute
+char225 "
+^a 556,750,14,77,-5,77 2 0342 acircumflex
+char226 "
+~a 556,737,14,113,-5,90 2 0343 atilde
+char227 "
+:a 556,729,14,88,-5,88 2 0344 adieresis
+char228 "
+oa 556,776,14,77,-5,77 2 0345 aring
+char229 "
+ae 889,546,14,84,-6,84 0 0346 ae
+char230 "
+,c 556,546,228,93,-29,90 1 0347 ccedilla
+char231 "
+`e 556,750,14,87,-20,87 2 0350 egrave
+char232 "
+'e 556,750,14,121,-20,90 2 0351 eacute
+char233 "
+^e 556,750,14,87,-20,87 2 0352 ecircumflex
+char234 "
+:e 556,729,14,88,-20,88 2 0353 edieresis
+char235 "
+`i 278,750,0,98,-19,90 2 0354 igrave
+char236 "
+'i 278,750,0,260,-19,90 2 0355 iacute
+char237 "
+^i 278,750,0,216,-19,90 2 0356 icircumflex
+char238 "
+:i 278,729,0,227,-19,90 2 0357 idieresis
+char239 "
+Sd 611,737,14,109,-32,90 2 0360 eth
+char240 "
+~n 611,737,0,85,-15,85 2 0361 ntilde
+char241 "
+`o 611,750,14,82,-32,82 2 0362 ograve
+char242 "
+'o 611,750,14,93,-32,90 2 0363 oacute
+char243 "
+^o 611,750,14,82,-32,82 2 0364 ocircumflex
+char244 "
+~o 611,737,14,85,-32,85 2 0365 otilde
+char245 "
+:o 611,729,14,82,-32,82 2 0366 odieresis
+char246 "
+char247 584,548,42,76,-32,76 0 0367 divide
+/o 611,560,29,140,28,90 0 0370 oslash
+char248 "
+`u 611,750,14,97,-48,90 2 0371 ugrave
+char249 "
+'u 611,750,14,97,-48,90 2 0372 uacute
+char250 "
+^u 611,750,14,97,-48,90 2 0373 ucircumflex
+char251 "
+:u 611,729,14,97,-48,90 2 0374 udieresis
+char252 "
+'y 556,750,214,146,8,90 3 0375 yacute
+char253 "
+Tp 611,718,208,84,32,84 3 0376 thorn
+char254 "
+:y 556,729,214,146,8,90 3 0377 ydieresis
+char255 "
diff --git a/devps/HI b/devps/HI
new file mode 100644
index 000000000..bfdcb3280
--- /dev/null
+++ b/devps/HI
@@ -0,0 +1,617 @@
+name HI
+internalname Helvetica-Oblique
+slant 12
+spacewidth 278
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -40
+A w -40
+A v -40
+A u -30
+A Y -100
+A W -50
+A V -70
+A U -50
+A T -120
+A Q -30
+A O -30
+A G -30
+A C -30
+B . -20
+B , -20
+B U -10
+C . -30
+C , -30
+D . -70
+D , -70
+D Y -90
+D W -40
+D V -70
+D A -40
+F r -45
+F . -150
+F o -30
+F e -30
+F , -150
+F a -50
+F A -80
+J u -20
+J . -30
+J , -30
+J a -20
+J A -20
+K y -50
+K u -30
+K o -40
+K e -40
+K O -50
+L y -30
+L ' -160
+L rq -140
+L Y -140
+L W -70
+L V -110
+L T -110
+O . -40
+O , -40
+O Y -70
+O X -60
+O W -30
+O V -50
+O T -40
+O A -20
+P . -180
+P o -50
+P e -50
+P , -180
+P a -40
+P A -120
+Q U -10
+R Y -50
+R W -30
+R V -50
+R U -40
+R T -30
+R O -20
+S . -20
+S , -20
+T y -120
+T w -120
+T u -120
+T ; -20
+T r -120
+T . -120
+T o -120
+T - -140
+T hy -140
+T char173 -140
+T e -120
+T , -120
+T : -20
+T a -120
+T O -40
+T A -120
+U . -40
+U , -40
+U A -40
+V u -70
+V ; -40
+V . -125
+V o -80
+V - -80
+V hy -80
+V char173 -80
+V e -80
+V , -125
+V : -40
+V a -70
+V O -40
+V G -40
+V A -80
+W y -20
+W u -30
+W . -80
+W o -30
+W - -40
+W hy -40
+W char173 -40
+W e -30
+W , -80
+W a -40
+W O -20
+W A -50
+Y u -110
+Y ; -60
+Y . -140
+Y o -140
+Y i -20
+Y - -140
+Y hy -140
+Y char173 -140
+Y e -140
+Y , -140
+Y : -60
+Y a -140
+Y O -85
+Y A -110
+a y -30
+a w -20
+a v -20
+b y -20
+b v -20
+b u -20
+b . -40
+b l -20
+b , -40
+b b -10
+c k -20
+c , -15
+, ' -100
+, rq -100
+e y -20
+e x -30
+e w -20
+e v -30
+e . -15
+e , -15
+f ' 50
+f rq 60
+f . -30
+f o -30
+f e -30
+f .i -28
+f , -30
+f a -30
+g r -10
+h y -30
+k o -20
+k e -20
+m y -15
+m u -10
+n y -15
+n v -20
+n u -10
+o y -30
+o x -30
+o w -15
+o v -15
+o . -40
+o , -40
+/o z -55
+char248 z -55
+/o y -70
+char248 y -70
+/o x -85
+char248 x -85
+/o w -70
+char248 w -70
+/o v -70
+char248 v -70
+/o u -55
+char248 u -55
+/o t -55
+char248 t -55
+/o s -55
+char248 s -55
+/o r -55
+char248 r -55
+/o q -55
+char248 q -55
+/o . -95
+char248 . -95
+/o p -55
+char248 p -55
+/o o -55
+char248 o -55
+/o n -55
+char248 n -55
+/o m -55
+char248 m -55
+/o l -55
+char248 l -55
+/o k -55
+char248 k -55
+/o j -55
+char248 j -55
+/o i -55
+char248 i -55
+/o h -55
+char248 h -55
+/o g -55
+char248 g -55
+/o f -55
+char248 f -55
+/o e -55
+char248 e -55
+/o d -55
+char248 d -55
+/o , -95
+char248 , -95
+/o c -55
+char248 c -55
+/o b -55
+char248 b -55
+/o a -55
+char248 a -55
+p y -30
+p . -35
+p , -35
+. ' -100
+. rq -100
+` ` -57
+` oq -57
+oq ` -57
+oq oq -57
+' s -50
+' r -50
+' ' -57
+' d -50
+r y 30
+r v 30
+r u 15
+r t 40
+r ; 30
+r . -50
+r p 30
+r n 25
+r m 25
+r l 15
+r k 15
+r i 15
+r , -50
+r : 30
+r a -10
+s w -30
+s . -15
+s , -15
+v . -80
+v o -25
+v e -25
+v , -80
+v a -25
+w . -60
+w o -10
+w e -10
+w , -60
+w a -15
+x e -30
+y . -100
+y o -20
+y e -20
+y , -100
+y a -20
+z o -15
+z e -15
+charset
+ha 469,688,0,120,8,89 2 0000 asciicircum
+ti 584,326,0,46,-61,46 0 0001 asciitilde
+vS 667,929,19,96,-40,89 2 0002 Scaron
+vZ 611,929,0,180,27,89 2 0003 Zcaron
+vs 500,734,15,102,-13,89 2 0004 scaron
+vz 500,734,0,121,19,89 2 0005 zcaron
+:Y 667,901,0,189,-117,89 2 0006 Ydieresis
+tm 1000,718,0,106,-136,89 2 0007 trademark
+aq 191,718,0,144,-107,89 2 0010 quotesingle
+space 278 0 0040
+! 278,718,0,112,-40,89 2 0041 exclam
+" 355,718,0,133,-118,89 2 0042 quotedbl
+# 556,688,0,125,-23,89 2 0043 numbersign
+sh "
+$ 556,775,115,111,-19,89 2 0044 dollar
+Do "
+% 889,703,19,50,-97,50 2 0045 percent
+& 667,718,15,30,-27,30 2 0046 ampersand
+' 222,718,0,138,-101,89 2 0047 quoteright
+( 333,733,207,171,-58,89 3 0050 parenleft
+) 333,733,207,54,59,54 3 0051 parenright
+* 389,718,0,136,-115,89 2 0052 asterisk
++ 584,505,0,72,-35,72 0 0053 plus
+, 278,106,147,0,-6 0 0054 comma
+- 333,322,0,74,-43,74 0 0055 hyphen
+hy "
+char173 "
+. 278,106,0,0,-37 0 0056 period
+/ 278,737,19,224,71,89 2 0057 slash
+sl "
+0 556,703,19,102,-43,89 2 0060 zero
+1 556,703,0,2,-157,2 2 0061 one
+2 556,703,0,111,24,89 2 0062 two
+3 556,703,19,104,-25,89 2 0063 three
+4 556,703,0,70,-11,70 2 0064 four
+5 556,688,19,115,-18,89 2 0065 five
+6 556,703,19,109,-41,89 2 0066 six
+7 556,688,0,163,-87,89 2 0067 seven
+8 556,703,19,101,-24,89 2 0070 eight
+9 556,703,19,103,-32,89 2 0071 nine
+: 278,516,0,73,-37,73 0 0072 colon
+; 278,516,147,73,-6,73 0 0073 semicolon
+< 584,495,0,107,-44,89 0 0074 less
+= 584,390,0,94,-13,89 0 0075 equal
+> 584,495,0,63,0,63 0 0076 greater
+? 556,727,0,104,-111,89 2 0077 question
+@ 1015,737,19,0,-165 2 0100 at
+at "
+A 667,718,0,37,36,37 2 0101 A
+B 667,718,0,95,-24,89 2 0102 B
+C 722,737,19,110,-58,89 2 0103 C
+D 722,718,0,92,-31,89 2 0104 D
+E 667,718,0,145,-36,89 2 0105 E
+F 611,718,0,175,-36,89 2 0106 F
+G 778,737,19,71,-61,71 2 0107 G
+H 722,718,0,127,-27,89 2 0110 H
+I 278,718,0,113,-41,89 2 0111 I
+J 500,718,19,131,3,89 2 0112 J
+K 667,718,0,191,-26,89 2 0113 K
+L 556,718,0,49,-26,49 2 0114 L
+M 833,718,0,131,-23,89 2 0115 M
+N 722,718,0,127,-26,89 2 0116 N
+O 778,737,19,98,-55,89 2 0117 O
+P 667,718,0,120,-36,89 2 0120 P
+Q 778,737,56,98,-55,89 2 0121 Q
+R 722,718,0,101,-38,89 2 0122 R
+S 667,737,19,96,-40,89 2 0123 S
+T 611,718,0,189,-98,89 2 0124 T
+U 722,718,19,125,-73,89 2 0125 U
+V 667,718,0,183,-123,89 2 0126 V
+W 944,718,0,187,-119,89 2 0127 W
+X 667,718,0,173,31,89 2 0130 X
+Y 667,718,0,189,-117,89 2 0131 Y
+Z 611,718,0,180,27,89 2 0132 Z
+[ 278,722,196,175,29,89 2 0133 bracketleft
+lB "
+\ 278,737,19,63,-90,63 2 0134 backslash
+rs "
+] 278,722,196,140,64,89 2 0135 bracketright
+rB "
+a^ 333,734,0,155,-97,89 2 0136 circumflex
+^ "
+_ 556,0,125,34,77,34 0 0137 underscore
+` 222,725,0,151,-115,89 2 0140 quoteleft
+oq "
+a 556,538,15,53,-11,53 0 0141 a
+b 556,718,15,78,-8,78 2 0142 b
+c 500,538,15,103,-24,89 0 0143 c
+d 556,718,15,146,-34,89 2 0144 d
+e 556,538,15,72,-34,72 0 0145 e
+f 278,728,0,188,-36,89 2 0146 f
+g 556,538,220,104,8,89 1 0147 g
+h 556,718,0,67,-15,67 2 0150 h
+i 222,718,0,136,-17,89 2 0151 i
+j 222,718,210,136,110,89 3 0152 j
+k 500,718,0,150,-17,89 2 0153 k
+l 222,718,0,136,-17,89 2 0154 l
+m 833,538,0,69,-15,69 0 0155 m
+n 556,538,0,67,-15,67 0 0156 n
+o 556,538,14,79,-33,79 0 0157 o
+p 556,538,207,78,36,78 1 0160 p
+q 556,538,207,99,-34,89 1 0161 q
+r 333,538,0,163,-27,89 0 0162 r
+s 500,538,15,79,-13,79 0 0163 s
+t 278,669,7,140,-52,89 2 0164 t
+u 556,523,15,94,-44,89 0 0165 u
+v 500,523,0,153,-69,89 0 0166 v
+w 722,523,0,148,-75,89 0 0167 w
+x 500,523,0,144,39,89 0 0170 x
+y 500,523,214,150,35,89 1 0171 y
+z 500,523,0,121,19,89 0 0172 z
+lC 334,722,196,161,-42,89 2 0173 braceleft
+{ "
+ba 260,737,19,114,-40,89 2 0174 bar
+| "
+rC 334,722,196,70,50,70 2 0175 braceright
+} "
+a~ 333,722,0,207,-75,89 2 0176 tilde
+~ "
+bq 222,106,149,8,29,8 0 0200 quotesinglbase
+Fo 556,446,0,48,-96,48 0 0201 guillemotleft
+char171 "
+Fc 556,446,0,22,-70,22 0 0202 guillemotright
+char187 "
+bu 350,517,0,113,-41,89 0 0203 bullet
+Fn 556,737,207,148,102,89 3 0204 florin
+f/ 167,703,19,365,220,89 2 0205 fraction
+%0 1000,703,19,79,-38,79 2 0206 perthousand
+dg 556,718,159,116,-85,89 2 0207 dagger
+dd 556,718,159,117,-2,89 2 0210 daggerdbl
+en 556,313,0,117,-1,89 0 0211 endash
+em 1000,313,0,117,-1,89 0 0212 emdash
+fi 500,728,0,137,-36,89 2 0214 fi
+fl 500,728,0,135,-36,89 2 0215 fl
+.i 278,523,0,66,-45,66 0 0220 dotlessi
+ga 333,734,0,54,-120,54 2 0222 grave
+a" 333,734,0,282,-107,89 2 0223 hungarumlaut
+a. 333,706,0,79,-199,79 2 0224 dotaccent
+ab 333,731,0,193,-117,89 2 0225 breve
+ah 333,734,0,185,-127,89 2 0226 caron
+ao 333,756,0,119,-164,89 2 0227 ring
+ho 333,0,225,0,7 1 0230 ogonek
+lq 333,725,0,178,-88,89 2 0231 quotedblleft
+rq 333,718,0,165,-74,89 2 0232 quotedblright
+oe 944,538,15,70,-33,70 0 0233 oe
+/l 222,718,0,175,9,89 2 0234 lslash
+Bq 333,106,149,35,56,35 0 0235 quotedblbase
+OE 1000,737,19,166,-48,89 2 0236 OE
+/L 556,718,0,49,9,49 2 0237 Lslash
+r! 333,523,195,43,-27,43 0 0241 exclamdown
+char161 "
+ct 556,623,115,78,-45,78 0 0242 cent
+char162 "
+Po 556,718,16,128,1,89 2 0243 sterling
+char163 "
+Cs 556,603,0,140,-10,89 0 0244 currency
+char164 "
+Ye 556,688,0,193,-31,89 2 0245 yen
+char165 "
+bb 260,737,19,114,-40,89 2 0246 brokenbar
+char166 "
+sc 556,737,191,78,-26,78 2 0247 section
+char167 "
+ad 333,706,0,160,-118,89 2 0250 dieresis
+char168 "
+co 737,737,19,150,-4,89 2 0251 copyright
+char169 "
+Of 370,737,0,129,-50,89 2 0252 ordfeminine
+char170 "
+fo 333,446,0,57,-87,57 0 0253 guilsinglleft
+no 584,390,0,94,-56,89 0 0254 logicalnot
+char172 "
+\- 584,289,0,72,-35,72 0 0255 minus
+rg 737,737,19,150,-4,89 2 0256 registered
+char174 "
+a- 333,684,0,185,-93,89 2 0257 macron
+char175 "
+de 400,703,0,118,-119,89 2 0260 degree
+char176 "
+char177 584,506,0,84,11,84 0 0261 plusminus
+S2 333,703,0,166,-14,89 2 0262 twosuperior
+char178 "
+S3 333,703,0,153,-40,89 2 0263 threesuperior
+char179 "
+aa 333,734,0,192,-198,89 2 0264 acute
+char180 "
+char181 556,523,207,94,26,89 1 0265 mu
+ps 537,718,173,163,-76,89 2 0266 paragraph
+char182 "
+char183 278,315,0,29,-79,29 0 0267 periodcentered
+ac 333,0,225,0,48 1 0270 cedilla
+char184 "
+S1 333,703,0,88,-116,88 2 0271 onesuperior
+char185 "
+Om 365,737,0,153,-50,89 2 0272 ordmasculine
+char186 "
+fc 333,446,0,31,-61,31 0 0273 guilsinglright
+14 834,703,19,18,-100,18 2 0274 onequarter
+char188 "
+12 834,703,19,55,-64,55 2 0275 onehalf
+char189 "
+34 834,703,19,77,-80,77 2 0276 threequarters
+char190 "
+r? 611,525,201,0,-35 0 0277 questiondown
+char191 "
+`A 667,929,0,37,36,37 2 0300 Agrave
+char192 "
+'A 667,929,0,66,36,66 2 0301 Aacute
+char193 "
+^A 667,929,0,37,36,37 2 0302 Acircumflex
+char194 "
+~A 667,917,0,82,36,82 2 0303 Atilde
+char195 "
+:A 667,901,0,37,36,37 2 0304 Adieresis
+char196 "
+oA 667,931,0,37,36,37 2 0305 Aring
+char197 "
+AE 1000,718,0,147,42,89 2 0306 AE
+char198 "
+,C 722,737,225,110,-58,89 3 0307 Ccedilla
+char199 "
+`E 667,929,0,145,-36,89 2 0310 Egrave
+char200 "
+'E 667,929,0,145,-36,89 2 0311 Eacute
+char201 "
+^E 667,929,0,145,-36,89 2 0312 Ecircumflex
+char202 "
+:E 667,901,0,145,-36,89 2 0313 Edieresis
+char203 "
+`I 278,929,0,123,-41,89 2 0314 Igrave
+char204 "
+'I 278,929,0,261,-41,89 2 0315 Iacute
+char205 "
+^I 278,929,0,224,-41,89 2 0316 Icircumflex
+char206 "
+:I 278,901,0,230,-41,89 2 0317 Idieresis
+char207 "
+-D 722,718,0,92,-19,89 2 0320 Eth
+char208 "
+~N 722,917,0,127,-26,89 2 0321 Ntilde
+char209 "
+`O 778,929,19,98,-55,89 2 0322 Ograve
+char210 "
+'O 778,929,19,98,-55,89 2 0323 Oacute
+char211 "
+^O 778,929,19,98,-55,89 2 0324 Ocircumflex
+char212 "
+~O 778,917,19,98,-55,89 2 0325 Otilde
+char213 "
+:O 778,901,19,98,-55,89 2 0326 Odieresis
+char214 "
+char215 584,506,0,108,0,89 0 0327 multiply
+/O 778,737,19,162,7,89 2 0330 Oslash
+char216 "
+`U 722,929,19,125,-73,89 2 0331 Ugrave
+char217 "
+'U 722,929,19,125,-73,89 2 0332 Uacute
+char218 "
+^U 722,929,19,125,-73,89 2 0333 Ucircumflex
+char219 "
+:U 722,901,19,125,-73,89 2 0334 Udieresis
+char220 "
+'Y 667,929,0,189,-117,89 2 0335 Yacute
+char221 "
+TP 667,718,0,95,-36,89 2 0336 Thorn
+char222 "
+ss 611,728,15,97,-17,89 2 0337 germandbls
+char223 "
+`a 556,734,15,53,-11,53 2 0340 agrave
+char224 "
+'a 556,734,15,81,-11,81 2 0341 aacute
+char225 "
+^a 556,734,15,53,-11,53 2 0342 acircumflex
+char226 "
+~a 556,722,15,86,-11,86 2 0343 atilde
+char227 "
+:a 556,706,15,53,-11,53 2 0344 adieresis
+char228 "
+oa 556,756,15,53,-11,53 2 0345 aring
+char229 "
+ae 889,538,15,70,-11,70 0 0346 ae
+char230 "
+,c 500,538,225,103,-24,89 1 0347 ccedilla
+char231 "
+`e 556,734,15,72,-34,72 2 0350 egrave
+char232 "
+'e 556,734,15,81,-34,81 2 0351 eacute
+char233 "
+^e 556,734,15,72,-34,72 2 0352 ecircumflex
+char234 "
+:e 556,706,15,72,-34,72 2 0353 edieresis
+char235 "
+`i 278,734,0,82,-45,82 2 0354 igrave
+char236 "
+'i 278,734,0,220,-45,89 2 0355 iacute
+char237 "
+^i 278,734,0,183,-45,89 2 0356 icircumflex
+char238 "
+:i 278,706,0,188,-45,89 2 0357 idieresis
+char239 "
+Sd 556,737,15,111,-31,89 2 0360 eth
+char240 "
+~n 556,722,0,86,-15,86 2 0361 ntilde
+char241 "
+`o 556,734,14,79,-33,79 2 0362 ograve
+char242 "
+'o 556,734,14,81,-33,81 2 0363 oacute
+char243 "
+^o 556,734,14,79,-33,79 2 0364 ocircumflex
+char244 "
+~o 556,722,14,96,-33,89 2 0365 otilde
+char245 "
+:o 556,706,14,79,-33,79 2 0366 odieresis
+char246 "
+char247 584,524,19,72,-35,72 0 0367 divide
+/o 611,545,22,86,21,86 0 0370 oslash
+char248 "
+`u 556,734,15,94,-44,89 2 0371 ugrave
+char249 "
+'u 556,734,15,94,-44,89 2 0372 uacute
+char250 "
+^u 556,734,15,94,-44,89 2 0373 ucircumflex
+char251 "
+:u 556,706,15,94,-44,89 2 0374 udieresis
+char252 "
+'y 500,734,214,150,35,89 3 0375 yacute
+char253 "
+Tp 556,718,207,78,36,78 3 0376 thorn
+char254 "
+:y 500,706,214,150,35,89 3 0377 ydieresis
+char255 "
diff --git a/devps/HNB b/devps/HNB
new file mode 100644
index 000000000..6e6467427
--- /dev/null
+++ b/devps/HNB
@@ -0,0 +1,546 @@
+name HNB
+internalname Helvetica-Narrow-Bold
+spacewidth 228
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -24
+A w -24
+A v -32
+A u -24
+A Y -89
+A W -48
+A V -65
+A U -40
+A T -73
+A Q -32
+A O -32
+A G -40
+A C -32
+B U -7
+B A -24
+D . -24
+D , -24
+D Y -56
+D W -32
+D V -32
+D A -32
+F . -81
+F , -81
+F a -15
+F A -65
+J u -15
+J . -15
+J , -15
+J A -15
+K y -32
+K u -24
+K o -28
+K e -11
+K O -24
+L y -24
+L ' -114
+L rq -114
+L Y -97
+L W -65
+L V -89
+L T -73
+O . -32
+O , -32
+O Y -56
+O X -40
+O W -40
+O V -40
+O T -32
+O A -40
+P . -97
+P o -32
+P e -24
+P , -97
+P a -24
+P A -81
+Q . 16
+Q , 16
+Q U -7
+R Y -40
+R W -32
+R V -40
+R U -15
+R T -15
+R O -15
+T y -48
+T w -48
+T u -73
+T ; -32
+T r -65
+T . -65
+T o -65
+T - -97
+T hy -97
+T char173 -97
+T e -48
+T , -65
+T : -32
+T a -65
+T O -32
+T A -73
+U . -24
+U , -24
+U A -40
+V u -48
+V ; -32
+V . -97
+V o -73
+V - -65
+V hy -65
+V char173 -65
+V e -40
+V , -97
+V : -32
+V a -48
+V O -40
+V G -40
+V A -65
+W y -15
+W u -36
+W ; -7
+W . -65
+W o -48
+W - -32
+W hy -32
+W char173 -32
+W e -28
+W , -65
+W : -7
+W a -32
+W O -15
+W A -48
+Y u -81
+Y ; -40
+Y . -81
+Y o -81
+Y e -65
+Y , -81
+Y : -40
+Y a -73
+Y O -56
+Y A -89
+a y -15
+a w -11
+a v -11
+a g -7
+b y -15
+b v -15
+b u -15
+b l -7
+c y -7
+c l -15
+c k -15
+c h -7
+, ' -97
+, rq -97
+d y -11
+d w -11
+d v -11
+d d -7
+e y -11
+e x -11
+e w -11
+e v -11
+e . 16
+e , 8
+f ' 25
+f rq 25
+f . -7
+f o -15
+f e -7
+f , -7
+g g -7
+g e 8
+h y -15
+k o -11
+l y -11
+l w -11
+m y -24
+m u -15
+n y -15
+n v -32
+n u -7
+o y -15
+o x -24
+o w -11
+o v -15
+p y -11
+. ' -97
+. rq -97
+` ` -37
+` oq -37
+oq ` -37
+oq oq -37
+' v -15
+' s -48
+' r -32
+' ' -37
+' l -15
+' d -65
+r y 8
+r v 8
+r t 16
+r s -11
+r q -15
+r . -48
+r o -15
+r - -15
+r hy -15
+r char173 -15
+r g -11
+r d -15
+r , -48
+r c -15
+s w -11
+v . -65
+v o -24
+v , -65
+v a -15
+w . -32
+w o -15
+w , -32
+x e -7
+y . -65
+y o -20
+y e -7
+y , -65
+y a -24
+z e 8
+charset
+ha 479,698 2 0000 asciicircum
+ti 479,343 0 0001 asciitilde
+vS 547,936,19 2 0002 Scaron
+vZ 501,936 2 0003 Zcaron
+vs 456,750,14 2 0004 scaron
+vz 410,750 2 0005 zcaron
+:Y 547,915 2 0006 Ydieresis
+tm 820,718 2 0007 trademark
+aq 195,718 2 0010 quotesingle
+space 228 0 0040
+! 273,718 2 0041 exclam
+" 389,718 2 0042 quotedbl
+# 456,698 2 0043 numbersign
+sh "
+$ 456,775,115 2 0044 dollar
+Do "
+% 729,710,19 2 0045 percent
+& 592,718,19 2 0046 ampersand
+' 228,718 2 0047 quoteright
+( 273,734,208 3 0050 parenleft
+) 273,734,208 3 0051 parenright
+* 319,718 2 0052 asterisk
++ 479,506 0 0053 plus
+, 228,146,168 0 0054 comma
+- 273,345 0 0055 hyphen
+hy "
+char173 "
+. 228,146 0 0056 period
+/ 228,737,19 2 0057 slash
+sl "
+0 456,710,19 2 0060 zero
+1 456,710 2 0061 one
+2 456,710 2 0062 two
+3 456,710,19 2 0063 three
+4 456,710 2 0064 four
+5 456,698,19 2 0065 five
+6 456,710,19 2 0066 six
+7 456,698 2 0067 seven
+8 456,710,19 2 0070 eight
+9 456,710,19 2 0071 nine
+: 273,512 0 0072 colon
+; 273,512,168 0 0073 semicolon
+< 479,514,8 0 0074 less
+= 479,419 0 0075 equal
+> 479,514,8 0 0076 greater
+? 501,727 2 0077 question
+@ 800,737,19 2 0100 at
+at "
+A 592,718 2 0101 A
+B 592,718 2 0102 B
+C 592,737,19 2 0103 C
+D 592,718 2 0104 D
+E 547,718 2 0105 E
+F 501,718 2 0106 F
+G 638,737,19 2 0107 G
+H 592,718 2 0110 H
+I 228,718 2 0111 I
+J 456,718,18 2 0112 J
+K 592,718 2 0113 K
+L 501,718 2 0114 L
+M 683,718 2 0115 M
+N 592,718 2 0116 N
+O 638,737,19 2 0117 O
+P 547,718 2 0120 P
+Q 638,737,52 2 0121 Q
+R 592,718 2 0122 R
+S 547,737,19 2 0123 S
+T 501,718 2 0124 T
+U 592,718,19 2 0125 U
+V 547,718 2 0126 V
+W 774,718 2 0127 W
+X 547,718 2 0130 X
+Y 547,718 2 0131 Y
+Z 501,718 2 0132 Z
+[ 273,722,196 2 0133 bracketleft
+lB "
+\ 228,737,19 2 0134 backslash
+rs "
+] 273,722,196 2 0135 bracketright
+rB "
+a^ 273,750 2 0136 circumflex
+^ "
+_ 456,0,125 0 0137 underscore
+` 228,727 2 0140 quoteleft
+oq "
+a 456,546,14 0 0141 a
+b 501,718,14 2 0142 b
+c 456,546,14 0 0143 c
+d 501,718,14 2 0144 d
+e 456,546,14 0 0145 e
+f 273,727 2 0146 f
+g 501,546,217 1 0147 g
+h 501,718 2 0150 h
+i 228,725 2 0151 i
+j 228,725,214 3 0152 j
+k 456,718 2 0153 k
+l 228,718 2 0154 l
+m 729,546 0 0155 m
+n 501,546 0 0156 n
+o 501,546,14 0 0157 o
+p 501,546,207 1 0160 p
+q 501,546,207 1 0161 q
+r 319,546 0 0162 r
+s 456,546,14 0 0163 s
+t 273,676,6 2 0164 t
+u 501,532,14 0 0165 u
+v 456,532 0 0166 v
+w 638,532 0 0167 w
+x 456,532 0 0170 x
+y 456,532,214 1 0171 y
+z 410,532 0 0172 z
+lC 319,722,196 2 0173 braceleft
+{ "
+ba 230,737,19 2 0174 bar
+| "
+rC 319,722,196 2 0175 braceright
+} "
+a~ 273,737 2 0176 tilde
+~ "
+bq 228,127,146 0 0200 quotesinglbase
+Fo 456,484 0 0201 guillemotleft
+char171 "
+Fc 456,484 0 0202 guillemotright
+char187 "
+bu 287,524 0 0203 bullet
+Fn 456,737,210 3 0204 florin
+f/ 137,710,19 2 0205 fraction
+%0 820,710,19 2 0206 perthousand
+dg 456,718,171 2 0207 dagger
+dd 456,718,171 2 0210 daggerdbl
+en 456,333 0 0211 endash
+em 820,333 0 0212 emdash
+fi 501,727 2 0214 fi
+fl 501,727 2 0215 fl
+.i 228,532 0 0220 dotlessi
+ga 273,750 2 0222 grave
+a" 273,750 2 0223 hungarumlaut
+a. 273,729 2 0224 dotaccent
+ab 273,750 2 0225 breve
+ah 273,750 2 0226 caron
+ao 273,776 2 0227 ring
+ho 273,0,228 1 0230 ogonek
+lq 410,727 2 0231 quotedblleft
+rq 410,718 2 0232 quotedblright
+oe 774,546,14 0 0233 oe
+/l 228,718 2 0234 lslash
+Bq 410,127,146 0 0235 quotedblbase
+OE 820,737,19 2 0236 OE
+/L 501,718 2 0237 Lslash
+r! 273,532,186 0 0241 exclamdown
+char161 "
+ct 456,628,118 0 0242 cent
+char162 "
+Po 456,718,16 2 0243 sterling
+char163 "
+Cs 456,636 0 0244 currency
+char164 "
+Ye 456,698 2 0245 yen
+char165 "
+bb 230,737,19 2 0246 brokenbar
+char166 "
+sc 456,727,184 2 0247 section
+char167 "
+ad 273,729 2 0250 dieresis
+char168 "
+co 604,737,19 2 0251 copyright
+char169 "
+Of 303,737 2 0252 ordfeminine
+char170 "
+fo 273,484 0 0253 guilsinglleft
+no 479,419 0 0254 logicalnot
+char172 "
+\- 479,309 0 0255 minus
+rg 604,737,19 2 0256 registered
+char174 "
+a- 273,678 2 0257 macron
+char175 "
+de 328,712 2 0260 degree
+char176 "
+char177 479,506 0 0261 plusminus
+S2 273,710 2 0262 twosuperior
+char178 "
+S3 273,710 2 0263 threesuperior
+char179 "
+aa 273,750 2 0264 acute
+char180 "
+char181 501,532,207 1 0265 mu
+ps 456,700,191 2 0266 paragraph
+char182 "
+char183 228,334 0 0267 periodcentered
+ac 273,0,228 1 0270 cedilla
+char184 "
+S1 273,710 2 0271 onesuperior
+char185 "
+Om 299,737 2 0272 ordmasculine
+char186 "
+fc 273,484 0 0273 guilsinglright
+14 684,710,19 2 0274 onequarter
+char188 "
+12 684,710,19 2 0275 onehalf
+char189 "
+34 684,710,19 2 0276 threequarters
+char190 "
+r? 501,532,195 0 0277 questiondown
+char191 "
+`A 592,936 2 0300 Agrave
+char192 "
+'A 592,936 2 0301 Aacute
+char193 "
+^A 592,936 2 0302 Acircumflex
+char194 "
+~A 592,923 2 0303 Atilde
+char195 "
+:A 592,915 2 0304 Adieresis
+char196 "
+oA 592,962 2 0305 Aring
+char197 "
+AE 820,718 2 0306 AE
+char198 "
+,C 592,737,228 3 0307 Ccedilla
+char199 "
+`E 547,936 2 0310 Egrave
+char200 "
+'E 547,936 2 0311 Eacute
+char201 "
+^E 547,936 2 0312 Ecircumflex
+char202 "
+:E 547,915 2 0313 Edieresis
+char203 "
+`I 228,936 2 0314 Igrave
+char204 "
+'I 228,936 2 0315 Iacute
+char205 "
+^I 228,936 2 0316 Icircumflex
+char206 "
+:I 228,915 2 0317 Idieresis
+char207 "
+-D 592,718 2 0320 Eth
+char208 "
+~N 592,923 2 0321 Ntilde
+char209 "
+`O 638,936,19 2 0322 Ograve
+char210 "
+'O 638,936,19 2 0323 Oacute
+char211 "
+^O 638,936,19 2 0324 Ocircumflex
+char212 "
+~O 638,923,19 2 0325 Otilde
+char213 "
+:O 638,915,19 2 0326 Odieresis
+char214 "
+char215 479,505 0 0327 multiply
+/O 638,745,27 2 0330 Oslash
+char216 "
+`U 592,936,19 2 0331 Ugrave
+char217 "
+'U 592,936,19 2 0332 Uacute
+char218 "
+^U 592,936,19 2 0333 Ucircumflex
+char219 "
+:U 592,915,19 2 0334 Udieresis
+char220 "
+'Y 547,936 2 0335 Yacute
+char221 "
+TP 547,718 2 0336 Thorn
+char222 "
+ss 501,731,14 2 0337 germandbls
+char223 "
+`a 456,750,14 2 0340 agrave
+char224 "
+'a 456,750,14 2 0341 aacute
+char225 "
+^a 456,750,14 2 0342 acircumflex
+char226 "
+~a 456,737,14 2 0343 atilde
+char227 "
+:a 456,729,14 2 0344 adieresis
+char228 "
+oa 456,776,14 2 0345 aring
+char229 "
+ae 729,546,14 0 0346 ae
+char230 "
+,c 456,546,228 1 0347 ccedilla
+char231 "
+`e 456,750,14 2 0350 egrave
+char232 "
+'e 456,750,14 2 0351 eacute
+char233 "
+^e 456,750,14 2 0352 ecircumflex
+char234 "
+:e 456,729,14 2 0353 edieresis
+char235 "
+`i 228,750 2 0354 igrave
+char236 "
+'i 228,750 2 0355 iacute
+char237 "
+^i 228,750 2 0356 icircumflex
+char238 "
+:i 228,729 2 0357 idieresis
+char239 "
+Sd 501,737,14 2 0360 eth
+char240 "
+~n 501,737 2 0361 ntilde
+char241 "
+`o 501,750,14 2 0362 ograve
+char242 "
+'o 501,750,14 2 0363 oacute
+char243 "
+^o 501,750,14 2 0364 ocircumflex
+char244 "
+~o 501,737,14 2 0365 otilde
+char245 "
+:o 501,729,14 2 0366 odieresis
+char246 "
+char247 479,548,42 0 0367 divide
+/o 501,560,29 0 0370 oslash
+char248 "
+`u 501,750,14 2 0371 ugrave
+char249 "
+'u 501,750,14 2 0372 uacute
+char250 "
+^u 501,750,14 2 0373 ucircumflex
+char251 "
+:u 501,729,14 2 0374 udieresis
+char252 "
+'y 456,750,214 3 0375 yacute
+char253 "
+Tp 501,718,208 3 0376 thorn
+char254 "
+:y 456,729,214 3 0377 ydieresis
+char255 "
diff --git a/devps/HNBI b/devps/HNBI
new file mode 100644
index 000000000..c0bb37eea
--- /dev/null
+++ b/devps/HNBI
@@ -0,0 +1,547 @@
+name HNBI
+internalname Helvetica-Narrow-BoldOblique
+slant 12
+spacewidth 228
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -30
+A w -30
+A v -40
+A u -30
+A Y -110
+A W -60
+A V -80
+A U -50
+A T -90
+A Q -40
+A O -40
+A G -50
+A C -40
+B U -10
+B A -30
+D . -30
+D , -30
+D Y -70
+D W -40
+D V -40
+D A -40
+F . -100
+F , -100
+F a -20
+F A -80
+J u -20
+J . -20
+J , -20
+J A -20
+K y -40
+K u -30
+K o -35
+K e -15
+K O -30
+L y -30
+L ' -140
+L rq -140
+L Y -120
+L W -80
+L V -110
+L T -90
+O . -40
+O , -40
+O Y -70
+O X -50
+O W -50
+O V -50
+O T -40
+O A -50
+P . -120
+P o -40
+P e -30
+P , -120
+P a -30
+P A -100
+Q . 20
+Q , 20
+Q U -10
+R Y -50
+R W -40
+R V -50
+R U -20
+R T -20
+R O -20
+T y -60
+T w -60
+T u -90
+T ; -40
+T r -80
+T . -80
+T o -80
+T - -120
+T hy -120
+T char173 -120
+T e -60
+T , -80
+T : -40
+T a -80
+T O -40
+T A -90
+U . -30
+U , -30
+U A -50
+V u -60
+V ; -40
+V . -120
+V o -90
+V - -80
+V hy -80
+V char173 -80
+V e -50
+V , -120
+V : -40
+V a -60
+V O -50
+V G -50
+V A -80
+W y -20
+W u -45
+W ; -10
+W . -80
+W o -60
+W - -40
+W hy -40
+W char173 -40
+W e -35
+W , -80
+W : -10
+W a -40
+W O -20
+W A -60
+Y u -100
+Y ; -50
+Y . -100
+Y o -100
+Y e -80
+Y , -100
+Y : -50
+Y a -90
+Y O -70
+Y A -110
+a y -20
+a w -15
+a v -15
+a g -10
+b y -20
+b v -20
+b u -20
+b l -10
+c y -10
+c l -20
+c k -20
+c h -10
+, ' -120
+, rq -120
+d y -15
+d w -15
+d v -15
+d d -10
+e y -15
+e x -15
+e w -15
+e v -15
+e . 20
+e , 10
+f ' 30
+f rq 30
+f . -10
+f o -20
+f e -10
+f , -10
+g g -10
+g e 10
+h y -20
+k o -15
+l y -15
+l w -15
+m y -30
+m u -20
+n y -20
+n v -40
+n u -10
+o y -20
+o x -30
+o w -15
+o v -20
+p y -15
+. ' -120
+. rq -120
+` ` -46
+` oq -46
+oq ` -46
+oq oq -46
+' v -20
+' s -60
+' r -40
+' ' -46
+' l -20
+' d -80
+r y 10
+r v 10
+r t 20
+r s -15
+r q -20
+r . -60
+r o -20
+r - -20
+r hy -20
+r char173 -20
+r g -15
+r d -20
+r , -60
+r c -20
+s w -15
+v . -80
+v o -30
+v , -80
+v a -20
+w . -40
+w o -20
+w , -40
+x e -10
+y . -80
+y o -25
+y e -10
+y , -80
+y a -30
+z e 10
+charset
+ha 479,698,0,55,-57,55 2 0000 asciicircum
+ti 479,343,0,44,-44,44 0 0001 asciitilde
+vS 547,936,19,91,-16,90 2 0002 Scaron
+vZ 501,936,0,153,30,90 2 0003 Zcaron
+vs 456,750,14,98,-2,90 2 0004 scaron
+vz 410,750,0,121,34,90 2 0005 zcaron
+:Y 547,915,0,164,-87,90 2 0006 Ydieresis
+tm 820,718,0,139,-96,90 2 0007 trademark
+aq 195,718,0,118,-85,90 2 0010 quotesingle
+space 228 0 0040
+! 273,718,0,102,-27,90 2 0041 exclam
+" 389,718,0,94,-108,90 2 0042 quotedbl
+# 456,698,0,122,1,90 2 0043 numbersign
+sh "
+$ 456,775,115,104,-5,90 2 0044 dollar
+Do "
+% 729,710,19,60,-62,60 2 0045 percent
+& 592,718,19,58,-23,58 2 0046 ampersand
+' 228,718,0,119,-87,90 2 0047 quoteright
+( 273,734,208,162,-12,90 3 0050 parenleft
+) 273,734,208,79,71,79 3 0051 parenright
+* 319,718,0,125,-70,90 2 0052 asterisk
++ 479,506,0,71,-17,71 0 0053 plus
+, 228,146,168,23,27,23 0 0054 comma
+- 273,345,0,88,-10,88 0 0055 hyphen
+hy "
+char173 "
+. 228,146,0,23,-2,23 0 0056 period
+/ 228,737,19,205,80,90 2 0057 slash
+sl "
+0 456,710,19,100,-21,90 2 0060 zero
+1 456,710,0,28,-92,28 2 0061 one
+2 456,710,0,102,29,90 2 0062 two
+3 456,710,19,93,-4,90 2 0063 three
+4 456,710,0,84,0,84 2 0064 four
+5 456,698,19,116,-3,90 2 0065 five
+6 456,710,19,101,-20,90 2 0066 six
+7 456,698,0,149,-52,90 2 0067 seven
+8 456,710,19,99,-7,90 2 0070 eight
+9 456,710,19,98,-14,90 2 0071 nine
+: 273,512,0,65,-25,65 0 0072 colon
+; 273,512,168,65,4,65 0 0073 semicolon
+< 479,514,8,108,-17,90 0 0074 less
+= 479,419,0,90,2,90 0 0075 equal
+> 479,514,8,71,20,71 0 0076 greater
+? 501,727,0,99,-85,90 2 0077 question
+@ 800,737,19,32,-102,32 2 0100 at
+at "
+A 592,718,0,34,34,34 2 0101 A
+B 592,718,0,84,-12,84 2 0102 B
+C 592,737,19,105,-38,90 2 0103 C
+D 592,718,0,95,-12,90 2 0104 D
+E 547,718,0,123,-12,90 2 0105 E
+F 501,718,0,155,-12,90 2 0106 F
+G 638,737,19,82,-39,82 2 0107 G
+H 592,718,0,117,-8,90 2 0110 H
+I 228,718,0,123,-2,90 2 0111 I
+J 456,718,18,116,1,90 2 0112 J
+K 592,718,0,161,-21,90 2 0113 K
+L 501,718,0,50,-12,50 2 0114 L
+M 683,718,0,119,-7,90 2 0115 M
+N 592,718,0,119,-7,90 2 0116 N
+O 638,737,19,87,-38,87 2 0117 O
+P 547,718,0,108,-12,90 2 0120 P
+Q 638,737,52,87,-38,87 2 0121 Q
+R 592,718,0,96,-12,90 2 0122 R
+S 547,737,19,91,-16,90 2 0123 S
+T 501,718,0,164,-64,90 2 0124 T
+U 592,718,19,117,-46,90 2 0125 U
+V 547,718,0,159,-91,90 2 0126 V
+W 774,718,0,163,-88,90 2 0127 W
+X 547,718,0,151,39,90 2 0130 X
+Y 547,718,0,164,-87,90 2 0131 Y
+Z 501,718,0,153,30,90 2 0132 Z
+[ 273,722,196,156,33,90 2 0133 bracketleft
+lB "
+\ 228,737,19,74,-51,74 2 0134 backslash
+rs "
+] 273,722,196,124,64,90 2 0135 bracketright
+rB "
+a^ 273,750,0,164,-47,90 2 0136 circumflex
+^ "
+_ 456,0,125,37,72,37 0 0137 underscore
+` 228,727,0,118,-86,90 2 0140 quoteleft
+oq "
+a 456,546,14,72,5,72 0 0141 a
+b 501,718,14,78,0,78 2 0142 b
+c 456,546,14,85,-15,85 0 0143 c
+d 501,718,14,126,-17,90 2 0144 d
+e 456,546,14,80,-8,80 0 0145 e
+f 273,727,0,162,-21,90 2 0146 f
+g 501,546,217,95,19,90 1 0147 g
+h 501,718,0,65,-3,65 2 0150 h
+i 228,725,0,120,-7,90 2 0151 i
+j 228,725,214,120,85,90 3 0152 j
+k 456,718,0,143,-7,90 2 0153 k
+l 228,718,0,119,-7,90 2 0154 l
+m 729,546,0,67,-2,67 0 0155 m
+n 501,546,0,65,-3,65 0 0156 n
+o 501,546,14,76,-17,76 0 0157 o
+p 501,546,207,78,35,78 1 0160 p
+q 501,546,207,94,-16,90 1 0161 q
+r 319,546,0,132,-2,90 0 0162 r
+s 456,546,14,73,-2,73 0 0163 s
+t 273,676,6,123,-32,90 2 0164 t
+u 501,532,14,89,-30,89 0 0165 u
+v 456,532,0,132,-53,90 0 0166 v
+w 638,532,0,135,-51,90 0 0167 w
+x 456,532,0,125,38,90 0 0170 x
+y 456,532,214,129,16,90 1 0171 y
+z 410,532,0,118,34,90 0 0172 z
+lC 319,722,196,156,-27,90 2 0173 braceleft
+{ "
+ba 230,737,19,109,-16,90 2 0174 bar
+| "
+rC 319,722,196,64,64,64 2 0175 braceright
+} "
+a~ 273,737,0,192,-42,90 2 0176 tilde
+~ "
+bq 228,127,146,16,16,16 0 0200 quotesinglbase
+Fo 456,484,0,62,-61,62 0 0201 guillemotleft
+char171 "
+Fc 456,484,0,37,-35,37 0 0202 guillemotright
+char187 "
+bu 287,524,0,108,-18,90 0 0203 bullet
+Fn 456,737,210,142,91,90 3 0204 florin
+f/ 137,710,19,312,193,90 2 0205 fraction
+%0 820,710,19,81,-12,81 2 0206 perthousand
+dg 456,718,171,107,-47,90 2 0207 dagger
+dd 456,718,171,109,12,90 2 0210 daggerdbl
+en 456,333,0,108,10,90 0 0211 endash
+em 820,333,0,108,10,90 0 0212 emdash
+fi 501,727,0,120,-21,90 2 0214 fi
+fl 501,727,0,119,-21,90 2 0215 fl
+.i 228,532,0,86,-7,86 0 0220 dotlessi
+ga 273,750,0,67,-62,67 2 0222 grave
+a" 273,750,0,306,-63,90 2 0223 hungarumlaut
+a. 273,729,0,93,-142,90 2 0224 dotaccent
+ab 273,750,0,182,-78,90 2 0225 breve
+ah 273,750,0,189,-73,90 2 0226 caron
+ao 273,776,0,121,-114,90 2 0227 ring
+ho 273,0,228,0,17 1 0230 ogonek
+lq 410,727,0,122,-82,90 2 0231 quotedblleft
+rq 410,718,0,123,-82,90 2 0232 quotedblright
+oe 774,546,14,77,-17,77 0 0233 oe
+/l 228,718,0,156,17,90 2 0234 lslash
+Bq 410,127,146,20,21,20 0 0235 quotedblbase
+OE 820,737,19,143,-31,90 2 0236 OE
+/L 501,718,0,50,22,50 2 0237 Lslash
+r! 273,532,186,67,9,67 0 0241 exclamdown
+char161 "
+ct 456,628,118,85,-15,85 0 0242 cent
+char162 "
+Po 456,718,16,114,9,90 2 0243 sterling
+char163 "
+Cs 456,636,0,152,28,90 0 0244 currency
+char164 "
+Ye 456,698,0,179,1,90 2 0245 yen
+char165 "
+bb 230,737,19,109,-16,90 2 0246 brokenbar
+char166 "
+sc 456,727,184,85,0,85 2 0247 section
+char167 "
+ad 273,729,0,172,-62,90 2 0250 dieresis
+char168 "
+co 604,737,19,131,4,90 2 0251 copyright
+char169 "
+Of 303,737,0,128,-25,90 2 0252 ordfeminine
+char170 "
+fo 273,484,0,66,-56,66 0 0253 guilsinglleft
+no 479,419,0,90,-36,90 0 0254 logicalnot
+char172 "
+\- 479,309,0,71,-17,71 0 0255 minus
+rg 604,737,19,130,5,90 2 0256 registered
+char174 "
+a- 273,678,0,173,-50,90 2 0257 macron
+char175 "
+de 328,712,0,105,-93,90 2 0260 degree
+char176 "
+char177 479,506,0,83,17,83 0 0261 plusminus
+S2 273,710,0,145,-7,90 2 0262 twosuperior
+char178 "
+S3 273,710,0,138,-25,90 2 0263 threesuperior
+char179 "
+aa 273,750,0,200,-144,90 2 0264 acute
+char180 "
+char181 501,532,207,89,32,89 1 0265 mu
+ps 456,700,191,158,-30,90 2 0266 paragraph
+char182 "
+char183 228,334,0,48,-40,48 0 0267 periodcentered
+ac 273,0,228,0,80 1 0270 cedilla
+char184 "
+S1 273,710,0,95,-71,90 2 0271 onesuperior
+char185 "
+Om 299,737,0,149,-25,90 2 0272 ordmasculine
+char186 "
+fc 273,484,0,41,-31,41 0 0273 guilsinglright
+14 684,710,19,27,-58,27 2 0274 onequarter
+char188 "
+12 684,710,19,70,-58,70 2 0275 onehalf
+char189 "
+34 684,710,19,54,-32,54 2 0276 threequarters
+char190 "
+r? 501,532,195,8,6,8 0 0277 questiondown
+char191 "
+`A 592,936,0,34,34,34 2 0300 Agrave
+char192 "
+'A 592,936,0,73,34,73 2 0301 Aacute
+char193 "
+^A 592,936,0,37,34,37 2 0302 Acircumflex
+char194 "
+~A 592,923,0,66,34,66 2 0303 Atilde
+char195 "
+:A 592,915,0,46,34,46 2 0304 Adieresis
+char196 "
+oA 592,962,0,34,34,34 2 0305 Aring
+char197 "
+AE 820,718,0,132,46,90 2 0306 AE
+char198 "
+,C 592,737,228,105,-38,90 3 0307 Ccedilla
+char199 "
+`E 547,936,0,123,-12,90 2 0310 Egrave
+char200 "
+'E 547,936,0,123,-12,90 2 0311 Eacute
+char201 "
+^E 547,936,0,123,-12,90 2 0312 Ecircumflex
+char202 "
+:E 547,915,0,123,-12,90 2 0313 Edieresis
+char203 "
+`I 228,936,0,123,-2,90 2 0314 Igrave
+char204 "
+'I 228,936,0,255,-2,90 2 0315 Iacute
+char205 "
+^I 228,936,0,219,-2,90 2 0316 Icircumflex
+char206 "
+:I 228,915,0,227,-2,90 2 0317 Idieresis
+char207 "
+-D 592,718,0,95,-1,90 2 0320 Eth
+char208 "
+~N 592,923,0,119,-7,90 2 0321 Ntilde
+char209 "
+`O 638,936,19,87,-38,87 2 0322 Ograve
+char210 "
+'O 638,936,19,87,-38,87 2 0323 Oacute
+char211 "
+^O 638,936,19,87,-38,87 2 0324 Ocircumflex
+char212 "
+~O 638,923,19,87,-38,87 2 0325 Otilde
+char213 "
+:O 638,915,19,87,-38,87 2 0326 Odieresis
+char214 "
+char215 479,505,0,91,3,90 0 0327 multiply
+/O 638,745,27,145,21,90 2 0330 Oslash
+char216 "
+`U 592,936,19,117,-46,90 2 0331 Ugrave
+char217 "
+'U 592,936,19,117,-46,90 2 0332 Uacute
+char218 "
+^U 592,936,19,117,-46,90 2 0333 Ucircumflex
+char219 "
+:U 592,915,19,117,-46,90 2 0334 Udieresis
+char220 "
+'Y 547,936,0,164,-87,90 2 0335 Yacute
+char221 "
+TP 547,718,0,91,-12,90 2 0336 Thorn
+char222 "
+ss 501,731,14,88,-7,88 2 0337 germandbls
+char223 "
+`a 456,750,14,72,5,72 2 0340 agrave
+char224 "
+'a 456,750,14,108,5,90 2 0341 aacute
+char225 "
+^a 456,750,14,72,5,72 2 0342 acircumflex
+char226 "
+~a 456,737,14,101,5,90 2 0343 atilde
+char227 "
+:a 456,729,14,81,5,81 2 0344 adieresis
+char228 "
+oa 456,776,14,72,5,72 2 0345 aring
+char229 "
+ae 729,546,14,78,4,78 0 0346 ae
+char230 "
+,c 456,546,228,85,-15,85 1 0347 ccedilla
+char231 "
+`e 456,750,14,80,-8,80 2 0350 egrave
+char232 "
+'e 456,750,14,108,-8,90 2 0351 eacute
+char233 "
+^e 456,750,14,80,-8,80 2 0352 ecircumflex
+char234 "
+:e 456,729,14,81,-8,81 2 0353 edieresis
+char235 "
+`i 228,750,0,90,-7,90 2 0354 igrave
+char236 "
+'i 228,750,0,222,-7,90 2 0355 iacute
+char237 "
+^i 228,750,0,186,-7,90 2 0356 icircumflex
+char238 "
+:i 228,729,0,195,-7,90 2 0357 idieresis
+char239 "
+Sd 501,737,14,98,-17,90 2 0360 eth
+char240 "
+~n 501,737,0,78,-3,78 2 0361 ntilde
+char241 "
+`o 501,750,14,76,-17,76 2 0362 ograve
+char242 "
+'o 501,750,14,86,-17,86 2 0363 oacute
+char243 "
+^o 501,750,14,76,-17,76 2 0364 ocircumflex
+char244 "
+~o 501,737,14,78,-17,78 2 0365 otilde
+char245 "
+:o 501,729,14,76,-17,76 2 0366 odieresis
+char246 "
+char247 479,548,42,71,-17,71 0 0367 divide
+/o 501,560,29,124,32,90 0 0370 oslash
+char248 "
+`u 501,750,14,89,-30,89 2 0371 ugrave
+char249 "
+'u 501,750,14,89,-30,89 2 0372 uacute
+char250 "
+^u 501,750,14,89,-30,89 2 0373 ucircumflex
+char251 "
+:u 501,729,14,89,-30,89 2 0374 udieresis
+char252 "
+'y 456,750,214,129,16,90 3 0375 yacute
+char253 "
+Tp 501,718,208,78,35,78 3 0376 thorn
+char254 "
+:y 456,729,214,129,16,90 3 0377 ydieresis
+char255 "
diff --git a/devps/HNI b/devps/HNI
new file mode 100644
index 000000000..e9ded2f04
--- /dev/null
+++ b/devps/HNI
@@ -0,0 +1,617 @@
+name HNI
+internalname Helvetica-Narrow-Oblique
+slant 12
+spacewidth 228
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -40
+A w -40
+A v -40
+A u -30
+A Y -100
+A W -50
+A V -70
+A U -50
+A T -120
+A Q -30
+A O -30
+A G -30
+A C -30
+B . -20
+B , -20
+B U -10
+C . -30
+C , -30
+D . -70
+D , -70
+D Y -90
+D W -40
+D V -70
+D A -40
+F r -45
+F . -150
+F o -30
+F e -30
+F , -150
+F a -50
+F A -80
+J u -20
+J . -30
+J , -30
+J a -20
+J A -20
+K y -50
+K u -30
+K o -40
+K e -40
+K O -50
+L y -30
+L ' -160
+L rq -140
+L Y -140
+L W -70
+L V -110
+L T -110
+O . -40
+O , -40
+O Y -70
+O X -60
+O W -30
+O V -50
+O T -40
+O A -20
+P . -180
+P o -50
+P e -50
+P , -180
+P a -40
+P A -120
+Q U -10
+R Y -50
+R W -30
+R V -50
+R U -40
+R T -30
+R O -20
+S . -20
+S , -20
+T y -120
+T w -120
+T u -120
+T ; -20
+T r -120
+T . -120
+T o -120
+T - -140
+T hy -140
+T char173 -140
+T e -120
+T , -120
+T : -20
+T a -120
+T O -40
+T A -120
+U . -40
+U , -40
+U A -40
+V u -70
+V ; -40
+V . -125
+V o -80
+V - -80
+V hy -80
+V char173 -80
+V e -80
+V , -125
+V : -40
+V a -70
+V O -40
+V G -40
+V A -80
+W y -20
+W u -30
+W . -80
+W o -30
+W - -40
+W hy -40
+W char173 -40
+W e -30
+W , -80
+W a -40
+W O -20
+W A -50
+Y u -110
+Y ; -60
+Y . -140
+Y o -140
+Y i -20
+Y - -140
+Y hy -140
+Y char173 -140
+Y e -140
+Y , -140
+Y : -60
+Y a -140
+Y O -85
+Y A -110
+a y -30
+a w -20
+a v -20
+b y -20
+b v -20
+b u -20
+b . -40
+b l -20
+b , -40
+b b -10
+c k -20
+c , -15
+, ' -100
+, rq -100
+e y -20
+e x -30
+e w -20
+e v -30
+e . -15
+e , -15
+f ' 50
+f rq 60
+f . -30
+f o -30
+f e -30
+f .i -28
+f , -30
+f a -30
+g r -10
+h y -30
+k o -20
+k e -20
+m y -15
+m u -10
+n y -15
+n v -20
+n u -10
+o y -30
+o x -30
+o w -15
+o v -15
+o . -40
+o , -40
+/o z -55
+char248 z -55
+/o y -70
+char248 y -70
+/o x -85
+char248 x -85
+/o w -70
+char248 w -70
+/o v -70
+char248 v -70
+/o u -55
+char248 u -55
+/o t -55
+char248 t -55
+/o s -55
+char248 s -55
+/o r -55
+char248 r -55
+/o q -55
+char248 q -55
+/o . -95
+char248 . -95
+/o p -55
+char248 p -55
+/o o -55
+char248 o -55
+/o n -55
+char248 n -55
+/o m -55
+char248 m -55
+/o l -55
+char248 l -55
+/o k -55
+char248 k -55
+/o j -55
+char248 j -55
+/o i -55
+char248 i -55
+/o h -55
+char248 h -55
+/o g -55
+char248 g -55
+/o f -55
+char248 f -55
+/o e -55
+char248 e -55
+/o d -55
+char248 d -55
+/o , -95
+char248 , -95
+/o c -55
+char248 c -55
+/o b -55
+char248 b -55
+/o a -55
+char248 a -55
+p y -30
+p . -35
+p , -35
+. ' -100
+. rq -100
+` ` -57
+` oq -57
+oq ` -57
+oq oq -57
+' s -50
+' r -50
+' ' -57
+' d -50
+r y 30
+r v 30
+r u 15
+r t 40
+r ; 30
+r . -50
+r p 30
+r n 25
+r m 25
+r l 15
+r k 15
+r i 15
+r , -50
+r : 30
+r a -10
+s w -30
+s . -15
+s , -15
+v . -80
+v o -25
+v e -25
+v , -80
+v a -25
+w . -60
+w o -10
+w e -10
+w , -60
+w a -15
+x e -30
+y . -100
+y o -20
+y e -20
+y , -100
+y a -20
+z o -15
+z e -15
+charset
+ha 385,688,0,107,15,89 2 0000 asciicircum
+ti 479,326,0,47,-41,47 0 0001 asciitilde
+vS 547,929,19,87,-24,87 2 0002 Scaron
+vZ 501,929,0,156,31,89 2 0003 Zcaron
+vs 410,734,15,93,-2,89 2 0004 scaron
+vz 410,734,0,108,25,89 2 0005 zcaron
+:Y 547,901,0,164,-87,89 2 0006 Ydieresis
+tm 820,718,0,96,-102,89 2 0007 trademark
+aq 157,718,0,126,-79,89 2 0010 quotesingle
+space 228 0 0040
+! 228,718,0,100,-24,89 2 0041 exclam
+" 291,718,0,118,-88,89 2 0042 quotedbl
+# 456,688,0,111,-10,89 2 0043 numbersign
+sh "
+$ 456,775,115,100,-7,89 2 0044 dollar
+Do "
+% 729,703,19,50,-70,50 2 0045 percent
+& 547,718,15,33,-13,33 2 0046 ampersand
+' 182,718,0,122,-74,89 2 0047 quoteright
+( 273,733,207,149,-39,89 3 0050 parenleft
+) 273,733,207,53,57,53 3 0051 parenright
+* 319,718,0,120,-85,89 2 0052 asterisk
++ 479,505,0,68,-20,68 0 0053 plus
+, 228,106,147,0,4 0 0054 comma
+- 273,322,0,70,-27,70 0 0055 hyphen
+hy "
+char173 "
+. 228,106,0,0,-21 0 0056 period
+/ 228,737,19,192,67,89 2 0057 slash
+sl "
+0 456,703,19,93,-27,89 2 0060 zero
+1 456,703,0,11,-120,11 2 0061 one
+2 456,703,0,100,29,89 2 0062 two
+3 456,703,19,94,-11,89 2 0063 three
+4 456,703,0,66,0,66 2 0064 four
+5 456,688,19,103,-5,89 2 0065 five
+6 456,703,19,98,-24,89 2 0066 six
+7 456,688,0,143,-62,89 2 0067 seven
+8 456,703,19,91,-10,89 2 0070 eight
+9 456,703,19,93,-17,89 2 0071 nine
+: 228,516,0,69,-21,69 0 0072 colon
+; 228,516,147,69,4,69 0 0073 semicolon
+< 479,495,0,97,-27,89 0 0074 less
+= 479,390,0,86,-2,86 0 0075 equal
+> 479,495,0,61,9,61 0 0076 greater
+? 456,727,0,94,-82,89 2 0077 question
+@ 832,737,19,9,-126,9 2 0100 at
+at "
+A 547,718,0,39,39,39 2 0101 A
+B 547,718,0,86,-11,86 2 0102 B
+C 592,737,19,98,-38,89 2 0103 C
+D 592,718,0,84,-16,84 2 0104 D
+E 547,718,0,128,-21,89 2 0105 E
+F 501,718,0,152,-21,89 2 0106 F
+G 638,737,19,67,-41,67 2 0107 G
+H 592,718,0,113,-13,89 2 0110 H
+I 228,718,0,101,-25,89 2 0111 I
+J 410,718,19,116,11,89 2 0112 J
+K 547,718,0,165,-12,89 2 0113 K
+L 456,718,0,49,-12,49 2 0114 L
+M 683,718,0,116,-10,89 2 0115 M
+N 592,718,0,113,-12,89 2 0116 N
+O 638,737,19,89,-36,89 2 0117 O
+P 547,718,0,107,-21,89 2 0120 P
+Q 638,737,56,89,-36,89 2 0121 Q
+R 592,718,0,92,-22,89 2 0122 R
+S 547,737,19,87,-24,87 2 0123 S
+T 501,718,0,164,-72,89 2 0124 T
+U 592,718,19,111,-51,89 2 0125 U
+V 547,718,0,159,-92,89 2 0126 V
+W 774,718,0,162,-88,89 2 0127 W
+X 547,718,0,150,34,89 2 0130 X
+Y 547,718,0,164,-87,89 2 0131 Y
+Z 501,718,0,156,31,89 2 0132 Z
+[ 228,722,196,153,33,89 2 0133 bracketleft
+lB "
+\ 228,737,19,61,-65,61 2 0134 backslash
+rs "
+] 228,722,196,124,61,89 2 0135 bracketright
+rB "
+a^ 273,734,0,136,-71,89 2 0136 circumflex
+^ "
+_ 456,0,125,37,72,37 0 0137 underscore
+` 182,725,0,133,-85,89 2 0140 quoteleft
+oq "
+a 456,538,15,52,0,52 0 0141 a
+b 456,718,15,73,2,73 2 0142 b
+c 410,538,15,94,-11,89 0 0143 c
+d 456,718,15,128,-19,89 2 0144 d
+e 456,538,15,68,-19,68 0 0145 e
+f 228,728,0,163,-21,89 2 0146 f
+g 456,538,220,94,16,89 1 0147 g
+h 456,718,0,64,-3,64 2 0150 h
+i 182,718,0,120,-5,89 2 0151 i
+j 182,718,210,120,99,89 3 0152 j
+k 410,718,0,132,-5,89 2 0153 k
+l 182,718,0,120,-5,89 2 0154 l
+m 683,538,0,66,-3,66 0 0155 m
+n 456,538,0,64,-3,64 0 0156 n
+o 456,538,14,73,-18,73 0 0157 o
+p 456,538,207,73,39,73 1 0160 p
+q 456,538,207,90,-19,89 1 0161 q
+r 273,538,0,142,-13,89 0 0162 r
+s 410,538,15,74,-2,74 0 0163 s
+t 228,669,7,124,-34,89 2 0164 t
+u 456,523,15,86,-27,86 0 0165 u
+v 410,523,0,135,-48,89 0 0166 v
+w 592,523,0,131,-53,89 0 0167 w
+x 410,523,0,127,41,89 0 0170 x
+y 410,523,214,132,38,89 1 0171 y
+z 410,523,0,108,25,89 0 0172 z
+lC 274,722,196,141,-25,89 2 0173 braceleft
+{ "
+ba 213,737,19,102,-24,89 2 0174 bar
+| "
+rC 274,722,196,67,50,67 2 0175 braceright
+} "
+a~ 273,722,0,179,-52,89 2 0176 tilde
+~ "
+bq 182,106,149,15,33,15 0 0200 quotesinglbase
+Fo 456,446,0,48,-70,48 0 0201 guillemotleft
+char171 "
+Fc 456,446,0,27,-48,27 0 0202 guillemotright
+char187 "
+bu 287,517,0,102,-24,89 0 0203 bullet
+Fn 456,737,207,131,93,89 3 0204 florin
+f/ 137,703,19,309,189,89 2 0205 fraction
+%0 820,703,19,74,-22,74 2 0206 perthousand
+dg 456,718,159,104,-60,89 2 0207 dagger
+dd 456,718,159,105,7,89 2 0210 daggerdbl
+en 456,313,0,104,8,89 0 0211 endash
+em 820,313,0,105,8,89 0 0212 emdash
+fi 410,728,0,121,-21,89 2 0214 fi
+fl 410,728,0,119,-21,89 2 0215 fl
+.i 228,523,0,63,-28,63 0 0220 dotlessi
+ga 273,734,0,53,-89,53 2 0222 grave
+a" 273,734,0,240,-79,89 2 0223 hungarumlaut
+a. 273,706,0,74,-154,74 2 0224 dotaccent
+ab 273,731,0,168,-87,89 2 0225 breve
+ah 273,734,0,161,-95,89 2 0226 caron
+ao 273,756,0,107,-125,89 2 0227 ring
+ho 273,0,225,0,15 1 0230 ogonek
+lq 273,725,0,155,-63,89 2 0231 quotedblleft
+rq 273,718,0,144,-52,89 2 0232 quotedblright
+oe 774,538,15,67,-18,67 0 0233 oe
+/l 182,718,0,152,16,89 2 0234 lslash
+Bq 273,106,149,37,55,37 0 0235 quotedblbase
+OE 820,737,19,145,-30,89 2 0236 OE
+/L 456,718,0,49,16,49 2 0237 Lslash
+r! 273,523,195,44,-13,44 0 0241 exclamdown
+char161 "
+ct 456,623,115,73,-28,73 0 0242 cent
+char162 "
+Po 456,718,16,114,10,89 2 0243 sterling
+char163 "
+Cs 456,603,0,124,1,89 0 0244 currency
+char164 "
+Ye 456,688,0,167,-17,89 2 0245 yen
+char165 "
+bb 213,737,19,102,-24,89 2 0246 brokenbar
+char166 "
+sc 456,737,191,73,-13,73 2 0247 section
+char167 "
+ad 273,706,0,140,-88,89 2 0250 dieresis
+char168 "
+co 604,737,19,133,6,89 2 0251 copyright
+char169 "
+Of 303,737,0,115,-32,89 2 0252 ordfeminine
+char170 "
+fo 273,446,0,56,-62,56 0 0253 guilsinglleft
+no 479,390,0,86,-37,86 0 0254 logicalnot
+char172 "
+\- 479,289,0,68,-20,68 0 0255 minus
+rg 604,737,19,133,6,89 2 0256 registered
+char174 "
+a- 273,684,0,161,-67,89 2 0257 macron
+char175 "
+de 328,703,0,106,-88,89 2 0260 degree
+char176 "
+char177 479,506,0,78,18,78 0 0261 plusminus
+S2 273,703,0,145,-2,89 2 0262 twosuperior
+char178 "
+S3 273,703,0,135,-24,89 2 0263 threesuperior
+char179 "
+aa 273,734,0,167,-153,89 2 0264 acute
+char180 "
+char181 456,523,207,86,30,86 1 0265 mu
+ps 440,718,173,143,-53,89 2 0266 paragraph
+char182 "
+char183 228,315,0,33,-56,33 0 0267 periodcentered
+ac 273,0,225,0,48 1 0270 cedilla
+char184 "
+S1 273,703,0,82,-86,82 2 0271 onesuperior
+char185 "
+Om 299,737,0,135,-32,89 2 0272 ordmasculine
+char186 "
+fc 273,446,0,34,-41,34 0 0273 guilsinglright
+14 684,703,19,24,-73,24 2 0274 onequarter
+char188 "
+12 684,703,19,54,-43,54 2 0275 onehalf
+char189 "
+34 684,703,19,72,-56,72 2 0276 threequarters
+char190 "
+r? 501,525,201,0,-20 0 0277 questiondown
+char191 "
+`A 547,929,0,39,39,39 2 0300 Agrave
+char192 "
+'A 547,929,0,63,39,63 2 0301 Aacute
+char193 "
+^A 547,929,0,39,39,39 2 0302 Acircumflex
+char194 "
+~A 547,917,0,76,39,76 2 0303 Atilde
+char195 "
+:A 547,901,0,39,39,39 2 0304 Adieresis
+char196 "
+oA 547,931,0,39,39,39 2 0305 Aring
+char197 "
+AE 820,718,0,129,43,89 2 0306 AE
+char198 "
+,C 592,737,225,98,-38,89 3 0307 Ccedilla
+char199 "
+`E 547,929,0,128,-21,89 2 0310 Egrave
+char200 "
+'E 547,929,0,128,-21,89 2 0311 Eacute
+char201 "
+^E 547,929,0,128,-21,89 2 0312 Ecircumflex
+char202 "
+:E 547,901,0,128,-21,89 2 0313 Edieresis
+char203 "
+`I 228,929,0,110,-25,89 2 0314 Igrave
+char204 "
+'I 228,929,0,223,-25,89 2 0315 Iacute
+char205 "
+^I 228,929,0,193,-25,89 2 0316 Icircumflex
+char206 "
+:I 228,901,0,197,-25,89 2 0317 Idieresis
+char207 "
+-D 592,718,0,84,-7,84 2 0320 Eth
+char208 "
+~N 592,917,0,113,-12,89 2 0321 Ntilde
+char209 "
+`O 638,929,19,89,-36,89 2 0322 Ograve
+char210 "
+'O 638,929,19,89,-36,89 2 0323 Oacute
+char211 "
+^O 638,929,19,89,-36,89 2 0324 Ocircumflex
+char212 "
+~O 638,917,19,89,-36,89 2 0325 Otilde
+char213 "
+:O 638,901,19,89,-36,89 2 0326 Odieresis
+char214 "
+char215 479,506,0,97,9,89 0 0327 multiply
+/O 638,737,19,142,15,89 2 0330 Oslash
+char216 "
+`U 592,929,19,111,-51,89 2 0331 Ugrave
+char217 "
+'U 592,929,19,111,-51,89 2 0332 Uacute
+char218 "
+^U 592,929,19,111,-51,89 2 0333 Ucircumflex
+char219 "
+:U 592,901,19,111,-51,89 2 0334 Udieresis
+char220 "
+'Y 547,929,0,164,-87,89 2 0335 Yacute
+char221 "
+TP 547,718,0,87,-21,87 2 0336 Thorn
+char222 "
+ss 501,728,15,88,-5,88 2 0337 germandbls
+char223 "
+`a 456,734,15,52,0,52 2 0340 agrave
+char224 "
+'a 456,734,15,75,0,75 2 0341 aacute
+char225 "
+^a 456,734,15,52,0,52 2 0342 acircumflex
+char226 "
+~a 456,722,15,80,0,80 2 0343 atilde
+char227 "
+:a 456,706,15,52,0,52 2 0344 adieresis
+char228 "
+oa 456,756,15,52,0,52 2 0345 aring
+char229 "
+ae 729,538,15,67,0,67 0 0346 ae
+char230 "
+,c 410,538,225,94,-11,89 1 0347 ccedilla
+char231 "
+`e 456,734,15,68,-19,68 2 0350 egrave
+char232 "
+'e 456,734,15,75,-19,75 2 0351 eacute
+char233 "
+^e 456,734,15,68,-19,68 2 0352 ecircumflex
+char234 "
+:e 456,706,15,68,-19,68 2 0353 edieresis
+char235 "
+`i 228,734,0,76,-28,76 2 0354 igrave
+char236 "
+'i 228,734,0,189,-28,89 2 0355 iacute
+char237 "
+^i 228,734,0,159,-28,89 2 0356 icircumflex
+char238 "
+:i 228,706,0,163,-28,89 2 0357 idieresis
+char239 "
+Sd 456,737,15,100,-17,89 2 0360 eth
+char240 "
+~n 456,722,0,80,-3,80 2 0361 ntilde
+char241 "
+`o 456,734,14,73,-18,73 2 0362 ograve
+char242 "
+'o 456,734,14,75,-18,75 2 0363 oacute
+char243 "
+^o 456,734,14,73,-18,73 2 0364 ocircumflex
+char244 "
+~o 456,722,14,88,-18,88 2 0365 otilde
+char245 "
+:o 456,706,14,73,-18,73 2 0366 odieresis
+char246 "
+char247 479,524,19,68,-20,68 0 0367 divide
+/o 501,545,22,80,26,80 0 0370 oslash
+char248 "
+`u 456,734,15,86,-27,86 2 0371 ugrave
+char249 "
+'u 456,734,15,86,-27,86 2 0372 uacute
+char250 "
+^u 456,734,15,86,-27,86 2 0373 ucircumflex
+char251 "
+:u 456,706,15,86,-27,86 2 0374 udieresis
+char252 "
+'y 410,734,214,132,38,89 3 0375 yacute
+char253 "
+Tp 456,718,207,73,39,73 3 0376 thorn
+char254 "
+:y 410,706,214,132,38,89 3 0377 ydieresis
+char255 "
diff --git a/devps/HNR b/devps/HNR
new file mode 100644
index 000000000..ecd911561
--- /dev/null
+++ b/devps/HNR
@@ -0,0 +1,616 @@
+name HNR
+internalname Helvetica-Narrow
+spacewidth 228
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -32
+A w -32
+A v -32
+A u -24
+A Y -81
+A W -40
+A V -56
+A U -40
+A T -97
+A Q -24
+A O -24
+A G -24
+A C -24
+B . -15
+B , -15
+B U -7
+C . -24
+C , -24
+D . -56
+D , -56
+D Y -73
+D W -32
+D V -56
+D A -32
+F r -36
+F . -122
+F o -24
+F e -24
+F , -122
+F a -40
+F A -65
+J u -15
+J . -24
+J , -24
+J a -15
+J A -15
+K y -40
+K u -24
+K o -32
+K e -32
+K O -40
+L y -24
+L ' -130
+L rq -114
+L Y -114
+L W -56
+L V -89
+L T -89
+O . -32
+O , -32
+O Y -56
+O X -48
+O W -24
+O V -40
+O T -32
+O A -15
+P . -147
+P o -40
+P e -40
+P , -147
+P a -32
+P A -97
+Q U -7
+R Y -40
+R W -24
+R V -40
+R U -32
+R T -24
+R O -15
+S . -15
+S , -15
+T y -97
+T w -97
+T u -97
+T ; -15
+T r -97
+T . -97
+T o -97
+T - -114
+T hy -114
+T char173 -114
+T e -97
+T , -97
+T : -15
+T a -97
+T O -32
+T A -97
+U . -32
+U , -32
+U A -32
+V u -56
+V ; -32
+V . -102
+V o -65
+V - -65
+V hy -65
+V char173 -65
+V e -65
+V , -102
+V : -32
+V a -56
+V O -32
+V G -32
+V A -65
+W y -15
+W u -24
+W . -65
+W o -24
+W - -32
+W hy -32
+W char173 -32
+W e -24
+W , -65
+W a -32
+W O -15
+W A -40
+Y u -89
+Y ; -48
+Y . -114
+Y o -114
+Y i -15
+Y - -114
+Y hy -114
+Y char173 -114
+Y e -114
+Y , -114
+Y : -48
+Y a -114
+Y O -69
+Y A -89
+a y -24
+a w -15
+a v -15
+b y -15
+b v -15
+b u -15
+b . -32
+b l -15
+b , -32
+b b -7
+c k -15
+c , -11
+, ' -81
+, rq -81
+e y -15
+e x -24
+e w -15
+e v -24
+e . -11
+e , -11
+f ' 41
+f rq 49
+f . -24
+f o -24
+f e -24
+f .i -22
+f , -24
+f a -24
+g r -7
+h y -24
+k o -15
+k e -15
+m y -11
+m u -7
+n y -11
+n v -15
+n u -7
+o y -24
+o x -24
+o w -11
+o v -11
+o . -32
+o , -32
+/o z -44
+char248 z -44
+/o y -56
+char248 y -56
+/o x -69
+char248 x -69
+/o w -56
+char248 w -56
+/o v -56
+char248 v -56
+/o u -44
+char248 u -44
+/o t -44
+char248 t -44
+/o s -44
+char248 s -44
+/o r -44
+char248 r -44
+/o q -44
+char248 q -44
+/o . -77
+char248 . -77
+/o p -44
+char248 p -44
+/o o -44
+char248 o -44
+/o n -44
+char248 n -44
+/o m -44
+char248 m -44
+/o l -44
+char248 l -44
+/o k -44
+char248 k -44
+/o j -44
+char248 j -44
+/o i -44
+char248 i -44
+/o h -44
+char248 h -44
+/o g -44
+char248 g -44
+/o f -44
+char248 f -44
+/o e -44
+char248 e -44
+/o d -44
+char248 d -44
+/o , -77
+char248 , -77
+/o c -44
+char248 c -44
+/o b -44
+char248 b -44
+/o a -44
+char248 a -44
+p y -24
+p . -28
+p , -28
+. ' -81
+. rq -81
+` ` -46
+` oq -46
+oq ` -46
+oq oq -46
+' s -40
+' r -40
+' ' -46
+' d -40
+r y 25
+r v 25
+r u 12
+r t 33
+r ; 25
+r . -40
+r p 25
+r n 21
+r m 21
+r l 12
+r k 12
+r i 12
+r , -40
+r : 25
+r a -7
+s w -24
+s . -11
+s , -11
+v . -65
+v o -20
+v e -20
+v , -65
+v a -20
+w . -48
+w o -7
+w e -7
+w , -48
+w a -11
+x e -24
+y . -81
+y o -15
+y e -15
+y , -81
+y a -15
+z o -11
+z e -11
+charset
+ha 385,688 2 0000 asciicircum
+ti 479,326 0 0001 asciitilde
+vS 547,929,19 2 0002 Scaron
+vZ 501,929 2 0003 Zcaron
+vs 410,734,15 2 0004 scaron
+vz 410,734 2 0005 zcaron
+:Y 547,901 2 0006 Ydieresis
+tm 820,718 2 0007 trademark
+aq 157,718 2 0010 quotesingle
+space 228 0 0040
+! 228,718 2 0041 exclam
+" 291,718 2 0042 quotedbl
+# 456,688 2 0043 numbersign
+sh "
+$ 456,775,115 2 0044 dollar
+Do "
+% 729,703,19 2 0045 percent
+& 547,718,15 2 0046 ampersand
+' 182,718 2 0047 quoteright
+( 273,733,207 3 0050 parenleft
+) 273,733,207 3 0051 parenright
+* 319,718 2 0052 asterisk
++ 479,505 0 0053 plus
+, 228,106,147 0 0054 comma
+- 273,322 0 0055 hyphen
+hy "
+char173 "
+. 228,106 0 0056 period
+/ 228,737,19 2 0057 slash
+sl "
+0 456,703,19 2 0060 zero
+1 456,703 2 0061 one
+2 456,703 2 0062 two
+3 456,703,19 2 0063 three
+4 456,703 2 0064 four
+5 456,688,19 2 0065 five
+6 456,703,19 2 0066 six
+7 456,688 2 0067 seven
+8 456,703,19 2 0070 eight
+9 456,703,19 2 0071 nine
+: 228,516 0 0072 colon
+; 228,516,147 0 0073 semicolon
+< 479,495 0 0074 less
+= 479,390 0 0075 equal
+> 479,495 0 0076 greater
+? 456,727 2 0077 question
+@ 832,737,19 2 0100 at
+at "
+A 547,718 2 0101 A
+B 547,718 2 0102 B
+C 592,737,19 2 0103 C
+D 592,718 2 0104 D
+E 547,718 2 0105 E
+F 501,718 2 0106 F
+G 638,737,19 2 0107 G
+H 592,718 2 0110 H
+I 228,718 2 0111 I
+J 410,718,19 2 0112 J
+K 547,718 2 0113 K
+L 456,718 2 0114 L
+M 683,718 2 0115 M
+N 592,718 2 0116 N
+O 638,737,19 2 0117 O
+P 547,718 2 0120 P
+Q 638,737,56 2 0121 Q
+R 592,718 2 0122 R
+S 547,737,19 2 0123 S
+T 501,718 2 0124 T
+U 592,718,19 2 0125 U
+V 547,718 2 0126 V
+W 774,718 2 0127 W
+X 547,718 2 0130 X
+Y 547,718 2 0131 Y
+Z 501,718 2 0132 Z
+[ 228,722,196 2 0133 bracketleft
+lB "
+\ 228,737,19 2 0134 backslash
+rs "
+] 228,722,196 2 0135 bracketright
+rB "
+a^ 273,734 2 0136 circumflex
+^ "
+_ 456,0,125 0 0137 underscore
+` 182,725 2 0140 quoteleft
+oq "
+a 456,538,15 0 0141 a
+b 456,718,15 2 0142 b
+c 410,538,15 0 0143 c
+d 456,718,15 2 0144 d
+e 456,538,15 0 0145 e
+f 228,728 2 0146 f
+g 456,538,220 1 0147 g
+h 456,718 2 0150 h
+i 182,718 2 0151 i
+j 182,718,210 3 0152 j
+k 410,718 2 0153 k
+l 182,718 2 0154 l
+m 683,538 0 0155 m
+n 456,538 0 0156 n
+o 456,538,14 0 0157 o
+p 456,538,207 1 0160 p
+q 456,538,207 1 0161 q
+r 273,538 0 0162 r
+s 410,538,15 0 0163 s
+t 228,669,7 2 0164 t
+u 456,523,15 0 0165 u
+v 410,523 0 0166 v
+w 592,523 0 0167 w
+x 410,523 0 0170 x
+y 410,523,214 1 0171 y
+z 410,523 0 0172 z
+lC 274,722,196 2 0173 braceleft
+{ "
+ba 213,737,19 2 0174 bar
+| "
+rC 274,722,196 2 0175 braceright
+} "
+a~ 273,722 2 0176 tilde
+~ "
+bq 182,106,149 0 0200 quotesinglbase
+Fo 456,446 0 0201 guillemotleft
+char171 "
+Fc 456,446 0 0202 guillemotright
+char187 "
+bu 287,517 0 0203 bullet
+Fn 456,737,207 3 0204 florin
+f/ 137,703,19 2 0205 fraction
+%0 820,703,19 2 0206 perthousand
+dg 456,718,159 2 0207 dagger
+dd 456,718,159 2 0210 daggerdbl
+en 456,313 0 0211 endash
+em 820,313 0 0212 emdash
+fi 410,728 2 0214 fi
+fl 410,728 2 0215 fl
+.i 228,523 0 0220 dotlessi
+ga 273,734 2 0222 grave
+a" 273,734 2 0223 hungarumlaut
+a. 273,706 2 0224 dotaccent
+ab 273,731 2 0225 breve
+ah 273,734 2 0226 caron
+ao 273,756 2 0227 ring
+ho 273,0,225 1 0230 ogonek
+lq 273,725 2 0231 quotedblleft
+rq 273,718 2 0232 quotedblright
+oe 774,538,15 0 0233 oe
+/l 182,718 2 0234 lslash
+Bq 273,106,149 0 0235 quotedblbase
+OE 820,737,19 2 0236 OE
+/L 456,718 2 0237 Lslash
+r! 273,523,195 0 0241 exclamdown
+char161 "
+ct 456,623,115 0 0242 cent
+char162 "
+Po 456,718,16 2 0243 sterling
+char163 "
+Cs 456,603 0 0244 currency
+char164 "
+Ye 456,688 2 0245 yen
+char165 "
+bb 213,737,19 2 0246 brokenbar
+char166 "
+sc 456,737,191 2 0247 section
+char167 "
+ad 273,706 2 0250 dieresis
+char168 "
+co 604,737,19 2 0251 copyright
+char169 "
+Of 303,737 2 0252 ordfeminine
+char170 "
+fo 273,446 0 0253 guilsinglleft
+no 479,390 0 0254 logicalnot
+char172 "
+\- 479,289 0 0255 minus
+rg 604,737,19 2 0256 registered
+char174 "
+a- 273,684 2 0257 macron
+char175 "
+de 328,703 2 0260 degree
+char176 "
+char177 479,506 0 0261 plusminus
+S2 273,703 2 0262 twosuperior
+char178 "
+S3 273,703 2 0263 threesuperior
+char179 "
+aa 273,734 2 0264 acute
+char180 "
+char181 456,523,207 1 0265 mu
+ps 440,718,173 2 0266 paragraph
+char182 "
+char183 228,315 0 0267 periodcentered
+ac 273,0,225 1 0270 cedilla
+char184 "
+S1 273,703 2 0271 onesuperior
+char185 "
+Om 299,737 2 0272 ordmasculine
+char186 "
+fc 273,446 0 0273 guilsinglright
+14 684,703,19 2 0274 onequarter
+char188 "
+12 684,703,19 2 0275 onehalf
+char189 "
+34 684,703,19 2 0276 threequarters
+char190 "
+r? 501,525,201 0 0277 questiondown
+char191 "
+`A 547,929 2 0300 Agrave
+char192 "
+'A 547,929 2 0301 Aacute
+char193 "
+^A 547,929 2 0302 Acircumflex
+char194 "
+~A 547,917 2 0303 Atilde
+char195 "
+:A 547,901 2 0304 Adieresis
+char196 "
+oA 547,931 2 0305 Aring
+char197 "
+AE 820,718 2 0306 AE
+char198 "
+,C 592,737,225 3 0307 Ccedilla
+char199 "
+`E 547,929 2 0310 Egrave
+char200 "
+'E 547,929 2 0311 Eacute
+char201 "
+^E 547,929 2 0312 Ecircumflex
+char202 "
+:E 547,901 2 0313 Edieresis
+char203 "
+`I 228,929 2 0314 Igrave
+char204 "
+'I 228,929 2 0315 Iacute
+char205 "
+^I 228,929 2 0316 Icircumflex
+char206 "
+:I 228,901 2 0317 Idieresis
+char207 "
+-D 592,718 2 0320 Eth
+char208 "
+~N 592,917 2 0321 Ntilde
+char209 "
+`O 638,929,19 2 0322 Ograve
+char210 "
+'O 638,929,19 2 0323 Oacute
+char211 "
+^O 638,929,19 2 0324 Ocircumflex
+char212 "
+~O 638,917,19 2 0325 Otilde
+char213 "
+:O 638,901,19 2 0326 Odieresis
+char214 "
+char215 479,506 0 0327 multiply
+/O 638,737,19 2 0330 Oslash
+char216 "
+`U 592,929,19 2 0331 Ugrave
+char217 "
+'U 592,929,19 2 0332 Uacute
+char218 "
+^U 592,929,19 2 0333 Ucircumflex
+char219 "
+:U 592,901,19 2 0334 Udieresis
+char220 "
+'Y 547,929 2 0335 Yacute
+char221 "
+TP 547,718 2 0336 Thorn
+char222 "
+ss 501,728,15 2 0337 germandbls
+char223 "
+`a 456,734,15 2 0340 agrave
+char224 "
+'a 456,734,15 2 0341 aacute
+char225 "
+^a 456,734,15 2 0342 acircumflex
+char226 "
+~a 456,722,15 2 0343 atilde
+char227 "
+:a 456,706,15 2 0344 adieresis
+char228 "
+oa 456,756,15 2 0345 aring
+char229 "
+ae 729,538,15 0 0346 ae
+char230 "
+,c 410,538,225 1 0347 ccedilla
+char231 "
+`e 456,734,15 2 0350 egrave
+char232 "
+'e 456,734,15 2 0351 eacute
+char233 "
+^e 456,734,15 2 0352 ecircumflex
+char234 "
+:e 456,706,15 2 0353 edieresis
+char235 "
+`i 228,734 2 0354 igrave
+char236 "
+'i 228,734 2 0355 iacute
+char237 "
+^i 228,734 2 0356 icircumflex
+char238 "
+:i 228,706 2 0357 idieresis
+char239 "
+Sd 456,737,15 2 0360 eth
+char240 "
+~n 456,722 2 0361 ntilde
+char241 "
+`o 456,734,14 2 0362 ograve
+char242 "
+'o 456,734,14 2 0363 oacute
+char243 "
+^o 456,734,14 2 0364 ocircumflex
+char244 "
+~o 456,722,14 2 0365 otilde
+char245 "
+:o 456,706,14 2 0366 odieresis
+char246 "
+char247 479,524,19 0 0367 divide
+/o 501,545,22 0 0370 oslash
+char248 "
+`u 456,734,15 2 0371 ugrave
+char249 "
+'u 456,734,15 2 0372 uacute
+char250 "
+^u 456,734,15 2 0373 ucircumflex
+char251 "
+:u 456,706,15 2 0374 udieresis
+char252 "
+'y 410,734,214 3 0375 yacute
+char253 "
+Tp 456,718,207 3 0376 thorn
+char254 "
+:y 410,706,214 3 0377 ydieresis
+char255 "
diff --git a/devps/HR b/devps/HR
new file mode 100644
index 000000000..9dd2687e3
--- /dev/null
+++ b/devps/HR
@@ -0,0 +1,616 @@
+name HR
+internalname Helvetica
+spacewidth 278
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -40
+A w -40
+A v -40
+A u -30
+A Y -100
+A W -50
+A V -70
+A U -50
+A T -120
+A Q -30
+A O -30
+A G -30
+A C -30
+B . -20
+B , -20
+B U -10
+C . -30
+C , -30
+D . -70
+D , -70
+D Y -90
+D W -40
+D V -70
+D A -40
+F r -45
+F . -150
+F o -30
+F e -30
+F , -150
+F a -50
+F A -80
+J u -20
+J . -30
+J , -30
+J a -20
+J A -20
+K y -50
+K u -30
+K o -40
+K e -40
+K O -50
+L y -30
+L ' -160
+L rq -140
+L Y -140
+L W -70
+L V -110
+L T -110
+O . -40
+O , -40
+O Y -70
+O X -60
+O W -30
+O V -50
+O T -40
+O A -20
+P . -180
+P o -50
+P e -50
+P , -180
+P a -40
+P A -120
+Q U -10
+R Y -50
+R W -30
+R V -50
+R U -40
+R T -30
+R O -20
+S . -20
+S , -20
+T y -120
+T w -120
+T u -120
+T ; -20
+T r -120
+T . -120
+T o -120
+T - -140
+T hy -140
+T char173 -140
+T e -120
+T , -120
+T : -20
+T a -120
+T O -40
+T A -120
+U . -40
+U , -40
+U A -40
+V u -70
+V ; -40
+V . -125
+V o -80
+V - -80
+V hy -80
+V char173 -80
+V e -80
+V , -125
+V : -40
+V a -70
+V O -40
+V G -40
+V A -80
+W y -20
+W u -30
+W . -80
+W o -30
+W - -40
+W hy -40
+W char173 -40
+W e -30
+W , -80
+W a -40
+W O -20
+W A -50
+Y u -110
+Y ; -60
+Y . -140
+Y o -140
+Y i -20
+Y - -140
+Y hy -140
+Y char173 -140
+Y e -140
+Y , -140
+Y : -60
+Y a -140
+Y O -85
+Y A -110
+a y -30
+a w -20
+a v -20
+b y -20
+b v -20
+b u -20
+b . -40
+b l -20
+b , -40
+b b -10
+c k -20
+c , -15
+, ' -100
+, rq -100
+e y -20
+e x -30
+e w -20
+e v -30
+e . -15
+e , -15
+f ' 50
+f rq 60
+f . -30
+f o -30
+f e -30
+f .i -28
+f , -30
+f a -30
+g r -10
+h y -30
+k o -20
+k e -20
+m y -15
+m u -10
+n y -15
+n v -20
+n u -10
+o y -30
+o x -30
+o w -15
+o v -15
+o . -40
+o , -40
+/o z -55
+char248 z -55
+/o y -70
+char248 y -70
+/o x -85
+char248 x -85
+/o w -70
+char248 w -70
+/o v -70
+char248 v -70
+/o u -55
+char248 u -55
+/o t -55
+char248 t -55
+/o s -55
+char248 s -55
+/o r -55
+char248 r -55
+/o q -55
+char248 q -55
+/o . -95
+char248 . -95
+/o p -55
+char248 p -55
+/o o -55
+char248 o -55
+/o n -55
+char248 n -55
+/o m -55
+char248 m -55
+/o l -55
+char248 l -55
+/o k -55
+char248 k -55
+/o j -55
+char248 j -55
+/o i -55
+char248 i -55
+/o h -55
+char248 h -55
+/o g -55
+char248 g -55
+/o f -55
+char248 f -55
+/o e -55
+char248 e -55
+/o d -55
+char248 d -55
+/o , -95
+char248 , -95
+/o c -55
+char248 c -55
+/o b -55
+char248 b -55
+/o a -55
+char248 a -55
+p y -30
+p . -35
+p , -35
+. ' -100
+. rq -100
+` ` -57
+` oq -57
+oq ` -57
+oq oq -57
+' s -50
+' r -50
+' ' -57
+' d -50
+r y 30
+r v 30
+r u 15
+r t 40
+r ; 30
+r . -50
+r p 30
+r n 25
+r m 25
+r l 15
+r k 15
+r i 15
+r , -50
+r : 30
+r a -10
+s w -30
+s . -15
+s , -15
+v . -80
+v o -25
+v e -25
+v , -80
+v a -25
+w . -60
+w o -10
+w e -10
+w , -60
+w a -15
+x e -30
+y . -100
+y o -20
+y e -20
+y , -100
+y a -20
+z o -15
+z e -15
+charset
+ha 469,688 2 0000 asciicircum
+ti 584,326 0 0001 asciitilde
+vS 667,929,19 2 0002 Scaron
+vZ 611,929 2 0003 Zcaron
+vs 500,734,15 2 0004 scaron
+vz 500,734 2 0005 zcaron
+:Y 667,901 2 0006 Ydieresis
+tm 1000,718 2 0007 trademark
+aq 191,718 2 0010 quotesingle
+space 278 0 0040
+! 278,718 2 0041 exclam
+" 355,718 2 0042 quotedbl
+# 556,688 2 0043 numbersign
+sh "
+$ 556,775,115 2 0044 dollar
+Do "
+% 889,703,19 2 0045 percent
+& 667,718,15 2 0046 ampersand
+' 222,718 2 0047 quoteright
+( 333,733,207 3 0050 parenleft
+) 333,733,207 3 0051 parenright
+* 389,718 2 0052 asterisk
++ 584,505 0 0053 plus
+, 278,106,147 0 0054 comma
+- 333,322 0 0055 hyphen
+hy "
+char173 "
+. 278,106 0 0056 period
+/ 278,737,19 2 0057 slash
+sl "
+0 556,703,19 2 0060 zero
+1 556,703 2 0061 one
+2 556,703 2 0062 two
+3 556,703,19 2 0063 three
+4 556,703 2 0064 four
+5 556,688,19 2 0065 five
+6 556,703,19 2 0066 six
+7 556,688 2 0067 seven
+8 556,703,19 2 0070 eight
+9 556,703,19 2 0071 nine
+: 278,516 0 0072 colon
+; 278,516,147 0 0073 semicolon
+< 584,495 0 0074 less
+= 584,390 0 0075 equal
+> 584,495 0 0076 greater
+? 556,727 2 0077 question
+@ 1015,737,19 2 0100 at
+at "
+A 667,718 2 0101 A
+B 667,718 2 0102 B
+C 722,737,19 2 0103 C
+D 722,718 2 0104 D
+E 667,718 2 0105 E
+F 611,718 2 0106 F
+G 778,737,19 2 0107 G
+H 722,718 2 0110 H
+I 278,718 2 0111 I
+J 500,718,19 2 0112 J
+K 667,718 2 0113 K
+L 556,718 2 0114 L
+M 833,718 2 0115 M
+N 722,718 2 0116 N
+O 778,737,19 2 0117 O
+P 667,718 2 0120 P
+Q 778,737,56 2 0121 Q
+R 722,718 2 0122 R
+S 667,737,19 2 0123 S
+T 611,718 2 0124 T
+U 722,718,19 2 0125 U
+V 667,718 2 0126 V
+W 944,718 2 0127 W
+X 667,718 2 0130 X
+Y 667,718 2 0131 Y
+Z 611,718 2 0132 Z
+[ 278,722,196 2 0133 bracketleft
+lB "
+\ 278,737,19 2 0134 backslash
+rs "
+] 278,722,196 2 0135 bracketright
+rB "
+a^ 333,734 2 0136 circumflex
+^ "
+_ 556,0,125 0 0137 underscore
+` 222,725 2 0140 quoteleft
+oq "
+a 556,538,15 0 0141 a
+b 556,718,15 2 0142 b
+c 500,538,15 0 0143 c
+d 556,718,15 2 0144 d
+e 556,538,15 0 0145 e
+f 278,728 2 0146 f
+g 556,538,220 1 0147 g
+h 556,718 2 0150 h
+i 222,718 2 0151 i
+j 222,718,210 3 0152 j
+k 500,718 2 0153 k
+l 222,718 2 0154 l
+m 833,538 0 0155 m
+n 556,538 0 0156 n
+o 556,538,14 0 0157 o
+p 556,538,207 1 0160 p
+q 556,538,207 1 0161 q
+r 333,538 0 0162 r
+s 500,538,15 0 0163 s
+t 278,669,7 2 0164 t
+u 556,523,15 0 0165 u
+v 500,523 0 0166 v
+w 722,523 0 0167 w
+x 500,523 0 0170 x
+y 500,523,214 1 0171 y
+z 500,523 0 0172 z
+lC 334,722,196 2 0173 braceleft
+{ "
+ba 260,737,19 2 0174 bar
+| "
+rC 334,722,196 2 0175 braceright
+} "
+a~ 333,722 2 0176 tilde
+~ "
+bq 222,106,149 0 0200 quotesinglbase
+Fo 556,446 0 0201 guillemotleft
+char171 "
+Fc 556,446 0 0202 guillemotright
+char187 "
+bu 350,517 0 0203 bullet
+Fn 556,737,207 3 0204 florin
+f/ 167,703,19 2 0205 fraction
+%0 1000,703,19 2 0206 perthousand
+dg 556,718,159 2 0207 dagger
+dd 556,718,159 2 0210 daggerdbl
+en 556,313 0 0211 endash
+em 1000,313 0 0212 emdash
+fi 500,728 2 0214 fi
+fl 500,728 2 0215 fl
+.i 278,523 0 0220 dotlessi
+ga 333,734 2 0222 grave
+a" 333,734 2 0223 hungarumlaut
+a. 333,706 2 0224 dotaccent
+ab 333,731 2 0225 breve
+ah 333,734 2 0226 caron
+ao 333,756 2 0227 ring
+ho 333,0,225 1 0230 ogonek
+lq 333,725 2 0231 quotedblleft
+rq 333,718 2 0232 quotedblright
+oe 944,538,15 0 0233 oe
+/l 222,718 2 0234 lslash
+Bq 333,106,149 0 0235 quotedblbase
+OE 1000,737,19 2 0236 OE
+/L 556,718 2 0237 Lslash
+r! 333,523,195 0 0241 exclamdown
+char161 "
+ct 556,623,115 0 0242 cent
+char162 "
+Po 556,718,16 2 0243 sterling
+char163 "
+Cs 556,603 0 0244 currency
+char164 "
+Ye 556,688 2 0245 yen
+char165 "
+bb 260,737,19 2 0246 brokenbar
+char166 "
+sc 556,737,191 2 0247 section
+char167 "
+ad 333,706 2 0250 dieresis
+char168 "
+co 737,737,19 2 0251 copyright
+char169 "
+Of 370,737 2 0252 ordfeminine
+char170 "
+fo 333,446 0 0253 guilsinglleft
+no 584,390 0 0254 logicalnot
+char172 "
+\- 584,289 0 0255 minus
+rg 737,737,19 2 0256 registered
+char174 "
+a- 333,684 2 0257 macron
+char175 "
+de 400,703 2 0260 degree
+char176 "
+char177 584,506 0 0261 plusminus
+S2 333,703 2 0262 twosuperior
+char178 "
+S3 333,703 2 0263 threesuperior
+char179 "
+aa 333,734 2 0264 acute
+char180 "
+char181 556,523,207 1 0265 mu
+ps 537,718,173 2 0266 paragraph
+char182 "
+char183 278,315 0 0267 periodcentered
+ac 333,0,225 1 0270 cedilla
+char184 "
+S1 333,703 2 0271 onesuperior
+char185 "
+Om 365,737 2 0272 ordmasculine
+char186 "
+fc 333,446 0 0273 guilsinglright
+14 834,703,19 2 0274 onequarter
+char188 "
+12 834,703,19 2 0275 onehalf
+char189 "
+34 834,703,19 2 0276 threequarters
+char190 "
+r? 611,525,201 0 0277 questiondown
+char191 "
+`A 667,929 2 0300 Agrave
+char192 "
+'A 667,929 2 0301 Aacute
+char193 "
+^A 667,929 2 0302 Acircumflex
+char194 "
+~A 667,917 2 0303 Atilde
+char195 "
+:A 667,901 2 0304 Adieresis
+char196 "
+oA 667,931 2 0305 Aring
+char197 "
+AE 1000,718 2 0306 AE
+char198 "
+,C 722,737,225 3 0307 Ccedilla
+char199 "
+`E 667,929 2 0310 Egrave
+char200 "
+'E 667,929 2 0311 Eacute
+char201 "
+^E 667,929 2 0312 Ecircumflex
+char202 "
+:E 667,901 2 0313 Edieresis
+char203 "
+`I 278,929 2 0314 Igrave
+char204 "
+'I 278,929 2 0315 Iacute
+char205 "
+^I 278,929 2 0316 Icircumflex
+char206 "
+:I 278,901 2 0317 Idieresis
+char207 "
+-D 722,718 2 0320 Eth
+char208 "
+~N 722,917 2 0321 Ntilde
+char209 "
+`O 778,929,19 2 0322 Ograve
+char210 "
+'O 778,929,19 2 0323 Oacute
+char211 "
+^O 778,929,19 2 0324 Ocircumflex
+char212 "
+~O 778,917,19 2 0325 Otilde
+char213 "
+:O 778,901,19 2 0326 Odieresis
+char214 "
+char215 584,506 0 0327 multiply
+/O 778,737,19 2 0330 Oslash
+char216 "
+`U 722,929,19 2 0331 Ugrave
+char217 "
+'U 722,929,19 2 0332 Uacute
+char218 "
+^U 722,929,19 2 0333 Ucircumflex
+char219 "
+:U 722,901,19 2 0334 Udieresis
+char220 "
+'Y 667,929 2 0335 Yacute
+char221 "
+TP 667,718 2 0336 Thorn
+char222 "
+ss 611,728,15 2 0337 germandbls
+char223 "
+`a 556,734,15 2 0340 agrave
+char224 "
+'a 556,734,15 2 0341 aacute
+char225 "
+^a 556,734,15 2 0342 acircumflex
+char226 "
+~a 556,722,15 2 0343 atilde
+char227 "
+:a 556,706,15 2 0344 adieresis
+char228 "
+oa 556,756,15 2 0345 aring
+char229 "
+ae 889,538,15 0 0346 ae
+char230 "
+,c 500,538,225 1 0347 ccedilla
+char231 "
+`e 556,734,15 2 0350 egrave
+char232 "
+'e 556,734,15 2 0351 eacute
+char233 "
+^e 556,734,15 2 0352 ecircumflex
+char234 "
+:e 556,706,15 2 0353 edieresis
+char235 "
+`i 278,734 2 0354 igrave
+char236 "
+'i 278,734 2 0355 iacute
+char237 "
+^i 278,734 2 0356 icircumflex
+char238 "
+:i 278,706 2 0357 idieresis
+char239 "
+Sd 556,737,15 2 0360 eth
+char240 "
+~n 556,722 2 0361 ntilde
+char241 "
+`o 556,734,14 2 0362 ograve
+char242 "
+'o 556,734,14 2 0363 oacute
+char243 "
+^o 556,734,14 2 0364 ocircumflex
+char244 "
+~o 556,722,14 2 0365 otilde
+char245 "
+:o 556,706,14 2 0366 odieresis
+char246 "
+char247 584,524,19 0 0367 divide
+/o 611,545,22 0 0370 oslash
+char248 "
+`u 556,734,15 2 0371 ugrave
+char249 "
+'u 556,734,15 2 0372 uacute
+char250 "
+^u 556,734,15 2 0373 ucircumflex
+char251 "
+:u 556,706,15 2 0374 udieresis
+char252 "
+'y 500,734,214 3 0375 yacute
+char253 "
+Tp 556,718,207 3 0376 thorn
+char254 "
+:y 500,706,214 3 0377 ydieresis
+char255 "
diff --git a/devps/Makefile.sub b/devps/Makefile.sub
new file mode 100644
index 000000000..e1525b447
--- /dev/null
+++ b/devps/Makefile.sub
@@ -0,0 +1,26 @@
+DEV=ps
+DISTFILES=symbolsl.ps zapfdr.ps text.enc prologue download \
+ S ZD ZDR SS 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
+DEVGENFILES=generate/Makefile generate/afmname generate/dingbatsmap \
+ generate/dingbatsrmap generate/lgreekmap generate/symbol.sed \
+ generate/symbolchars generate/symbolsl.afm generate/textmap
+DEVFILES=DESC $(DISTFILES) $(DEVGENFILES)
+
+CLEANADD=DESC
+
+DESC: DESC.in
+ -rm -f DESC
+ cat $(srcdir)/DESC.in >DESC
+ echo broken $(BROKEN_SPOOLER_FLAGS) >>DESC
+ if test "$(PAGE)" = A4; then \
+ echo "paperlength 841890" >>DESC; \
+ else \
+ echo "paperlength 792000" >>DESC; \
+ fi
+ test -z '$(PSPRINT)' || echo print '$(PSPRINT)' >>DESC
+
+fonts: DESC
+ $(MAKE) -f $(srcdir)/generate/Makefile \
+ srcdir=$(srcdir)/generate DESC=$(srcdir)/DESC.in
diff --git a/ps/devps/NB b/devps/NB
index 5347d8cdd..2805367ab 100644
--- a/ps/devps/NB
+++ b/devps/NB
@@ -2,6 +2,7 @@ name NB
internalname NewCenturySchlbk-Bold
spacewidth 287
encoding text.enc
+ligatures fi fl 0
kernpairs
A y -74
A w -74
@@ -114,27 +115,28 @@ y , -111
charset
ha 606,722 2 0000 asciicircum
ti 606,347 0 0001 asciitilde
-vS 667,969,15 2 0002 Scaron
-vZ 667,969 2 0003 Zcaron
-vs 500,722,15 2 0004 scaron
-vz 537,722 2 0005 zcaron
+vS 667,970,15 2 0002 Scaron
+vZ 667,970 2 0003 Zcaron
+vs 500,723,15 2 0004 scaron
+vz 537,723 2 0005 zcaron
:Y 722,940 2 0006 Ydieresis
tm 1000,722 2 0007 trademark
+aq 241,737 2 0010 quotesingle
space 287 0 0040
! 296,737,15 2 0041 exclam
" 333,737 2 0042 quotedbl
# 574,705 2 0043 numbersign
sh "
-$ 574,801,140 3 0044 dollar
+$ 574,801,140 2 0044 dollar
Do "
-% 833,704,17 2 0045 percent
+% 833,704,18 2 0045 percent
& 852,737,15 2 0046 ampersand
' 241,737 2 0047 quoteright
-( 389,737,122 3 0050 parenleft
-) 389,737,122 3 0051 parenright
+( 389,737,122 2 0050 parenleft
+) 389,737,122 2 0051 parenright
* 500,738 2 0052 asterisk
+ 606,514 0 0053 plus
-, 278,169,189 1 0054 comma
+, 278,169,189 0 0054 comma
- 333,309 0 0055 hyphen
hy "
char173 "
@@ -152,10 +154,10 @@ sl "
8 574,705,15 2 0070 eight
9 574,705,15 2 0071 nine
: 278,485,15 0 0072 colon
-; 278,485,189 1 0073 semicolon
-< 606,538,13 2 0074 less
+; 278,485,189 0 0073 semicolon
+< 606,538,13 0 0074 less
= 606,399 0 0075 equal
-> 606,538,13 2 0076 greater
+> 606,538,13 0 0076 greater
? 500,737,15 2 0077 question
@ 747,737,15 2 0100 at
at "
@@ -175,7 +177,7 @@ M 981,722 2 0115 M
N 833,722,8 2 0116 N
O 833,737,15 2 0117 O
P 759,722 2 0120 P
-Q 833,737,189 3 0121 Q
+Q 833,737,189 2 0121 Q
R 815,722,15 2 0122 R
S 667,737,15 2 0123 S
T 722,722 2 0124 T
@@ -185,15 +187,15 @@ W 981,722,15 2 0127 W
X 722,722 2 0130 X
Y 722,722 2 0131 Y
Z 667,722 2 0132 Z
-[ 389,722,113 3 0133 bracketleft
+[ 389,722,113 2 0133 bracketleft
lB "
\ 606,737 2 0134 backslash
rs "
-] 389,722,113 3 0135 bracketright
+] 389,722,113 2 0135 bracketright
rB "
-a^ 333,722 2 0136 circumflex
+a^ 333,723 2 0136 circumflex
^ "
-_ 500,0,148 1 0137 underscore
+_ 500,0,148 0 0137 underscore
` 241,747 2 0140 quoteleft
oq "
a 611,485,15 0 0141 a
@@ -202,10 +204,10 @@ c 556,485,15 0 0143 c
d 667,737,15 2 0144 d
e 574,485,15 0 0145 e
f 389,737 2 0146 f
-g 611,536,205 3 0147 g
+g 611,536,205 1 0147 g
h 685,737 2 0150 h
i 370,737 2 0151 i
-j 352,736,205 3 0152 j
+j 352,737,205 3 0152 j
k 667,737 2 0153 k
l 352,737 2 0154 l
m 963,485 0 0155 m
@@ -220,27 +222,27 @@ u 685,475,15 0 0165 u
v 611,475,8 0 0166 v
w 889,475,8 0 0167 w
x 611,475 0 0170 x
-y 611,475,208 1 0171 y
+y 611,475,207 1 0171 y
z 537,475 0 0172 z
-lC 389,723,111 3 0173 braceleft
+lC 389,723,111 2 0173 braceleft
{ "
ba 606,737 2 0174 bar
| "
-rC 389,723,111 3 0175 braceright
+rC 389,723,111 2 0175 braceright
} "
a~ 333,704 2 0176 tilde
~ "
---- 241,169,189 1 0200 quotesinglbase
+bq 241,169,189 0 0200 quotesinglbase
Fo 500,405 0 0201 guillemotleft
char171 "
Fc 500,405 0 0202 guillemotright
char187 "
bu 606,511 0 0203 bullet
---- 574,737,205 3 0204 florin
+Fn 574,737,205 3 0204 florin
f/ 167,705 2 0205 fraction
%0 1000,694,27 2 0206 perthousand
-dg 500,737,88 3 0207 dagger
-dd 500,735,89 3 0210 daggerdbl
+dg 500,737,88 2 0207 dagger
+dd 500,736,89 2 0210 daggerdbl
en 500,296 0 0211 endash
em 1000,296 0 0212 emdash
fi 685,737 2 0214 fi
@@ -250,27 +252,29 @@ ga 333,734 2 0222 grave
a" 333,737 2 0223 hungarumlaut
a. 333,693 2 0224 dotaccent
ab 333,712 2 0225 breve
-ah 333,722 2 0226 caron
+ah 333,723 2 0226 caron
ao 333,760 2 0227 ring
-ho 333,0,163 1 0230 ogonek
+ho 333,0,163 0 0230 ogonek
lq 481,747 2 0231 quotedblleft
rq 481,737 2 0232 quotedblright
oe 907,485,15 0 0233 oe
/l 352,737 2 0234 lslash
---- 481,169,189 1 0235 quotedblbase
+Bq 481,169,189 0 0235 quotedblbase
OE 1000,722 2 0236 OE
/L 722,722 2 0237 Lslash
-r! 296,547,205 3 0241 exclamdown
+r! 296,547,205 1 0241 exclamdown
char161 "
-ct 574,566,108 3 0242 cent
+ct 574,566,108 0 0242 cent
char162 "
Po 574,705,15 2 0243 sterling
char163 "
-Cs 606,591 2 0244 currency
+Cs 574,591 0 0244 currency
char164 "
-Ye 722,705 2 0245 yen
+Ye 574,705 2 0245 yen
char165 "
-sc 500,737,86 3 0247 section
+bb 606,737 2 0246 brokenbar
+char166 "
+sc 500,737,86 2 0247 section
char167 "
ad 333,693 2 0250 dieresis
char168 "
@@ -284,25 +288,41 @@ char172 "
\- 606,302 0 0255 minus
rg 747,737,15 2 0256 registered
char174 "
-a- 333,663 2 0257 macron
+a- 333,663 0 0257 macron
char175 "
+de 400,705 2 0260 degree
+char176 "
+char177 606,514 0 0261 plusminus
+S2 344,705 2 0262 twosuperior
+char178 "
+S3 344,705 2 0263 threesuperior
+char179 "
aa 333,737 2 0264 acute
char180 "
+char181 685,475,205 1 0265 mu
ps 747,722 2 0266 paragraph
char182 "
char183 278,338 0 0267 periodcentered
ac 333,0,221 1 0270 cedilla
char184 "
+S1 344,705 2 0271 onesuperior
+char185 "
Om 367,737 2 0272 ordmasculine
char186 "
fc 333,408 0 0273 guilsinglright
-r? 500,547,205 3 0277 questiondown
+14 861,705 2 0274 onequarter
+char188 "
+12 861,705,2 2 0275 onehalf
+char189 "
+34 861,705 2 0276 threequarters
+char190 "
+r? 500,547,205 1 0277 questiondown
char191 "
`A 759,981 2 0300 Agrave
char192 "
'A 759,984 2 0301 Aacute
char193 "
-^A 759,969 2 0302 Acircumflex
+^A 759,970 2 0302 Acircumflex
char194 "
~A 759,951 2 0303 Atilde
char195 "
@@ -318,7 +338,7 @@ char199 "
char200 "
'E 759,984 2 0311 Eacute
char201 "
-^E 759,969 2 0312 Ecircumflex
+^E 759,970 2 0312 Ecircumflex
char202 "
:E 759,940 2 0313 Edieresis
char203 "
@@ -326,39 +346,46 @@ char203 "
char204 "
'I 444,984 2 0315 Iacute
char205 "
-^I 444,969 2 0316 Icircumflex
+^I 444,970 2 0316 Icircumflex
char206 "
:I 444,940 2 0317 Idieresis
char207 "
+-D 833,722 2 0320 Eth
+char208 "
~N 833,951,8 2 0321 Ntilde
char209 "
`O 833,981,15 2 0322 Ograve
char210 "
'O 833,984,15 2 0323 Oacute
char211 "
-^O 833,969,15 2 0324 Ocircumflex
+^O 833,970,15 2 0324 Ocircumflex
char212 "
~O 833,951,15 2 0325 Otilde
char213 "
:O 833,940,15 2 0326 Odieresis
char214 "
+char215 606,504 0 0327 multiply
/O 833,768,60 2 0330 Oslash
char216 "
`U 833,981,15 2 0331 Ugrave
char217 "
'U 833,984,15 2 0332 Uacute
char218 "
-^U 833,969,15 2 0333 Ucircumflex
+^U 833,970,15 2 0333 Ucircumflex
char219 "
:U 833,940,15 2 0334 Udieresis
char220 "
+'Y 722,984 2 0335 Yacute
+char221 "
+TP 759,722 2 0336 Thorn
+char222 "
ss 611,737,15 2 0337 germandbls
char223 "
`a 611,734,15 2 0340 agrave
char224 "
'a 611,737,15 2 0341 aacute
char225 "
-^a 611,722,15 2 0342 acircumflex
+^a 611,723,15 2 0342 acircumflex
char226 "
~a 611,704,15 2 0343 atilde
char227 "
@@ -374,7 +401,7 @@ char231 "
char232 "
'e 574,737,15 2 0351 eacute
char233 "
-^e 574,722,15 2 0352 ecircumflex
+^e 574,723,15 2 0352 ecircumflex
char234 "
:e 574,693,15 2 0353 edieresis
char235 "
@@ -382,31 +409,38 @@ char235 "
char236 "
'i 370,737 2 0355 iacute
char237 "
-^i 370,722 2 0356 icircumflex
+^i 370,723 2 0356 icircumflex
char238 "
:i 370,693 2 0357 idieresis
char239 "
+Sd 611,737,15 2 0360 eth
+char240 "
~n 685,704 2 0361 ntilde
char241 "
`o 611,734,15 2 0362 ograve
char242 "
'o 611,737,15 2 0363 oacute
char243 "
-^o 611,722,15 2 0364 ocircumflex
+^o 611,723,15 2 0364 ocircumflex
char244 "
~o 611,704,15 2 0365 otilde
char245 "
:o 611,693,15 2 0366 odieresis
char246 "
-/o 611,565,111 3 0370 oslash
+char247 606,514 0 0367 divide
+/o 611,565,111 0 0370 oslash
char248 "
`u 685,734,15 2 0371 ugrave
char249 "
'u 685,737,15 2 0372 uacute
char250 "
-^u 685,722,15 2 0373 ucircumflex
+^u 685,723,15 2 0373 ucircumflex
char251 "
:u 685,693,15 2 0374 udieresis
char252 "
-:y 611,693,208 3 0377 ydieresis
+'y 611,737,207 3 0375 yacute
+char253 "
+Tp 667,675,205 3 0376 thorn
+char254 "
+:y 611,693,207 3 0377 ydieresis
char255 "
diff --git a/ps/devps/NBI b/devps/NBI
index 52ffeaecc..3471b41e7 100644
--- a/ps/devps/NBI
+++ b/devps/NBI
@@ -105,9 +105,7 @@ oq oq -18
' s -37
' ' -18
r ' 55
-r . -18
r . -129
-r , -18
r , -129
v . -37
v , -37
@@ -124,21 +122,22 @@ vs 481,709,15,46,48,46 2 0004 scaron
vz 519,709,15,27,69,27 2 0005 zcaron
:Y 704,930,0,123,35,109 2 0006 Ydieresis
tm 950,722,0,82,8,82 2 0007 trademark
+aq 287,736,0,32,-50,32 2 0010 quotesingle
space 287 0 0040
! 333,737,15,53,47,53 2 0041 exclam
-" 400,736,0,157,-50,109 2 0042 quotedbl
-# 606,705,0,0,-7 2 0043 numbersign
+" 400,737,0,157,-50,109 2 0042 quotedbl
+# 574,705,0,9,9,9 2 0043 numbersign
sh "
-$ 574,799,143,35,47,35 3 0044 dollar
+$ 574,799,143,35,47,35 2 0044 dollar
Do "
% 889,721,34,0,-1 2 0045 percent
& 889,737,15,0,19 2 0046 ampersand
' 259,739,0,92,-20,92 2 0047 quoteright
-( 407,740,123,95,-21,95 3 0050 parenleft
-) 407,740,123,0,120 3 0051 parenright
+( 407,740,123,95,-21,95 2 0050 parenleft
+) 407,740,123,0,120 2 0051 parenright
* 500,704,0,22,18,22 2 0052 asterisk
+ 606,505,0,0,9 0 0053 plus
-, 287,159,190,0,98 1 0054 comma
+, 287,159,190,0,98 0 0054 comma
- 333,297,0,0,40 0 0055 hyphen
hy "
char173 "
@@ -156,10 +155,10 @@ sl "
8 574,705,15,27,50,27 2 0070 eight
9 574,705,15,20,49,20 2 0071 nine
: 287,477,15,20,52,20 0 0072 colon
-; 287,477,190,20,89,20 1 0073 semicolon
-< 606,524,15,0,36 0 0074 less
+; 287,477,190,20,89,20 0 0073 semicolon
+< 606,524,14,0,36 0 0074 less
= 606,402,0,0,9 0 0075 equal
-> 606,524,15,0,12 0 0076 greater
+> 606,524,14,0,12 0 0076 greater
? 481,737,15,21,-29,21 2 0077 question
@ 747,737,15,25,28,25 2 0100 at
at "
@@ -179,7 +178,7 @@ M 944,722,0,94,74,94 2 0115 M
N 852,722,16,110,107,109 2 0116 N
O 833,737,15,14,14,14 2 0117 O
P 741,722,0,40,88,40 2 0120 P
-Q 833,737,186,13,15,13 3 0121 Q
+Q 833,737,186,13,15,13 2 0121 Q
R 796,722,15,5,91,5 2 0122 R
S 685,737,15,31,49,31 2 0123 S
T 722,722,0,90,6,90 2 0124 T
@@ -189,15 +188,15 @@ W 944,722,15,100,10,100 2 0127 W
X 741,722,0,120,122,109 2 0130 X
Y 704,722,0,123,35,109 2 0131 Y
Z 704,722,0,61,79,61 2 0132 Z
-[ 407,737,110,75,81,75 3 0133 bracketleft
+[ 407,737,110,75,81,75 2 0133 bracketleft
lB "
\ 606,737,0,0,-31 2 0134 backslash
rs "
-] 407,737,110,57,99,57 3 0135 bracketright
+] 407,737,110,57,99,57 2 0135 bracketright
rB "
a^ 333,709,0,82,27,82 2 0136 circumflex
^ "
-_ 500,0,129,50,50,50 1 0137 underscore
+_ 500,0,129,50,50,50 0 0137 underscore
` 259,747,0,61,11,61 2 0140 quoteleft
oq "
a 667,477,15,29,35,29 0 0141 a
@@ -206,7 +205,7 @@ c 537,477,15,0,47 0 0143 c
d 667,737,15,46,50,46 2 0144 d
e 519,477,15,9,52,9 0 0145 e
f 389,737,205,211,98,109 3 0146 f
-g 611,529,205,41,116,41 3 0147 g
+g 611,529,205,41,116,41 1 0147 g
h 685,737,15,2,50,2 2 0150 h
i 389,737,15,4,22,4 2 0151 i
j 370,737,205,61,220,61 3 0152 j
@@ -226,25 +225,25 @@ w 833,477,15,5,28,5 0 0167 w
x 574,477,15,47,99,47 0 0170 x
y 519,477,205,23,116,23 1 0171 y
z 519,477,15,2,69,2 0 0172 z
-lC 407,738,115,45,-2,45 3 0173 braceleft
+lC 407,738,115,45,-2,45 2 0173 braceleft
{ "
ba 606,737,0,0,-212 2 0174 bar
| "
-rC 407,738,115,0,80 3 0175 braceright
+rC 407,738,115,0,80 2 0175 braceright
} "
a~ 333,683,0,121,16,109 2 0176 tilde
~ "
---- 259,159,191,0,93 1 0200 quotesinglbase
+bq 259,159,191,0,93 0 0200 quotesinglbase
Fo 481,409,0,0,85 0 0201 guillemotleft
char171 "
Fc 481,408,0,25,56,25 0 0202 guillemotright
char187 "
-bu 606,537,0,0,-59 2 0203 bullet
---- 574,737,205,64,77,64 3 0204 florin
+bu 606,537,0,0,-59 0 0203 bullet
+Fn 574,737,205,64,77,64 3 0204 florin
f/ 167,705,15,216,216,109 2 0205 fraction
%0 1167,721,34,34,24,34 2 0206 perthousand
-dg 500,737,146,60,0,60 3 0207 dagger
-dd 500,737,147,64,98,64 3 0210 daggerdbl
+dg 500,737,146,60,0,60 2 0207 dagger
+dd 500,737,147,64,98,64 2 0210 daggerdbl
en 500,286,0,68,68,68 0 0211 endash
em 1000,286,0,68,68,68 0 0212 emdash
fi 685,737,205,11,120,11 3 0214 fi
@@ -256,25 +255,27 @@ a. 333,685,0,5,-95,5 2 0224 dotaccent
ab 333,698,0,107,-17,107 2 0225 breve
ah 333,709,0,120,-10,109 2 0226 caron
ao 333,745,0,149,-167,109 2 0227 ring
-ho 333,0,155,0,-18 1 0230 ogonek
+ho 333,0,155,0,-18 0 0230 ogonek
lq 481,747,0,91,-2,91 2 0231 quotedblleft
rq 481,739,0,102,-11,102 2 0232 quotedblright
oe 852,477,15,8,55,8 0 0233 oe
/l 389,737,15,58,24,58 2 0234 lslash
---- 481,159,191,0,120 1 0235 quotedblbase
+Bq 481,159,191,0,120 0 0235 quotedblbase
OE 963,722,0,67,31,67 2 0236 OE
/L 704,722,0,16,91,16 2 0237 Lslash
-r! 333,544,205,6,89,6 3 0241 exclamdown
+r! 333,544,205,6,89,6 1 0241 exclamdown
char161 "
-ct 574,600,124,0,20 3 0242 cent
+ct 574,600,124,0,20 0 0242 cent
char162 "
Po 574,705,15,42,68,42 2 0243 sterling
char163 "
-Cs 574,612,0,22,10,22 2 0244 currency
+Cs 574,612,0,22,10,22 0 0244 currency
char164 "
Ye 574,705,0,111,27,109 2 0245 yen
char165 "
-sc 500,737,145,55,90,55 3 0247 section
+bb 606,737,0,0,-212 2 0246 brokenbar
+char166 "
+sc 500,737,145,55,90,55 2 0247 section
char167 "
ad 333,685,0,109,16,109 2 0250 dieresis
char168 "
@@ -290,17 +291,33 @@ rg 747,737,15,26,27,26 2 0256 registered
char174 "
a- 333,649,0,104,18,104 2 0257 macron
char175 "
+de 400,705,0,20,-20,20 2 0260 degree
+char176 "
+char177 606,505,0,0,9 0 0261 plusminus
+S2 344,705,0,66,66,66 2 0262 twosuperior
+char178 "
+S3 344,705,0,54,54,54 2 0263 threesuperior
+char179 "
aa 333,719,0,88,-73,88 2 0264 acute
char180 "
+char181 685,477,205,4,140,4 1 0265 mu
ps 650,737,0,61,-17,61 2 0266 paragraph
char182 "
char183 287,342,0,0,9 0 0267 periodcentered
ac 333,3,220,0,137 1 0270 cedilla
char184 "
+S1 344,705,0,29,29,29 2 0271 onesuperior
+char185 "
Om 356,737,0,77,21,77 2 0272 ordmasculine
char186 "
fc 278,408,0,25,56,25 0 0273 guilsinglright
-r? 481,544,205,0,49 3 0277 questiondown
+14 861,705,15,15,29,15 2 0274 onequarter
+char188 "
+12 861,705,15,46,29,46 2 0275 onehalf
+char189 "
+34 861,705,15,15,54,15 2 0276 threequarters
+char190 "
+r? 481,544,205,0,49 1 0277 questiondown
char191 "
`A 741,964,0,25,125,25 2 0300 Agrave
char192 "
@@ -314,7 +331,7 @@ char195 "
char196 "
oA 741,990,0,25,125,25 2 0305 Aring
char197 "
-AE 889,722,0,67,131,67 2 0306 AE
+AE 889,722,0,64,131,64 2 0306 AE
char198 "
,C 759,737,220,50,15,50 3 0307 Ccedilla
char199 "
@@ -334,6 +351,8 @@ char205 "
char206 "
:I 444,930,0,104,91,104 2 0317 Idieresis
char207 "
+-D 833,722,0,13,99,13 2 0320 Eth
+char208 "
~N 852,928,16,110,107,109 2 0321 Ntilde
char209 "
`O 833,964,15,14,14,14 2 0322 Ograve
@@ -346,7 +365,8 @@ char212 "
char213 "
:O 833,930,15,14,14,14 2 0326 Odieresis
char214 "
-/O 833,775,82,14,33,14 3 0330 Oslash
+char215 606,507,0,0,9 0 0327 multiply
+/O 833,775,82,14,33,14 2 0330 Oslash
char216 "
`U 833,964,15,112,-38,109 2 0331 Ugrave
char217 "
@@ -356,6 +376,10 @@ char218 "
char219 "
:U 833,930,15,112,-38,109 2 0334 Udieresis
char220 "
+'Y 704,964,0,123,35,109 2 0335 Yacute
+char221 "
+TP 741,722,0,0,88 2 0336 Thorn
+char222 "
ss 574,737,205,0,116 3 0337 germandbls
char223 "
`a 667,719,15,29,35,29 2 0340 agrave
@@ -390,6 +414,8 @@ char237 "
char238 "
:i 389,685,15,71,12,71 2 0357 idieresis
char239 "
+Sd 574,737,15,16,40,16 2 0360 eth
+char240 "
~n 685,683,15,7,47,7 2 0361 ntilde
char241 "
`o 574,719,15,16,40,16 2 0362 ograve
@@ -402,7 +428,8 @@ char244 "
char245 "
:o 574,685,15,16,40,16 2 0366 odieresis
char246 "
-/o 574,578,126,16,40,16 3 0370 oslash
+char247 606,505,0,0,9 0 0367 divide
+/o 574,578,126,16,40,16 0 0370 oslash
char248 "
`u 685,719,15,4,12,4 2 0371 ugrave
char249 "
@@ -412,5 +439,9 @@ char250 "
char251 "
:u 685,685,15,4,12,4 2 0374 udieresis
char252 "
+'y 519,719,205,23,116,23 3 0375 yacute
+char253 "
+Tp 648,650,205,0,168 3 0376 thorn
+char254 "
:y 519,685,205,23,116,23 3 0377 ydieresis
char255 "
diff --git a/ps/devps/NI b/devps/NI
index c8d1e9379..eb250d77d 100644
--- a/ps/devps/NI
+++ b/devps/NI
@@ -60,6 +60,7 @@ V - -74
V hy -74
V char173 -74
V e -129
+V , -140
V : -74
V a -129
V A -111
@@ -104,9 +105,7 @@ oq oq -18
' s -37
' ' -18
r ' 55
-r . -18
r . -129
-r , -18
r , -129
v . -37
v , -37
@@ -123,26 +122,27 @@ vs 444,688,15,40,51,40 2 0004 scaron
vz 463,688,15,30,83,30 2 0005 zcaron
:Y 685,900,0,123,18,107 2 0006 Ydieresis
tm 950,722,0,71,2,71 2 0007 trademark
+aq 278,737,0,34,-64,34 2 0010 quotesingle
space 278 0 0040
! 333,737,15,33,20,33 2 0041 exclam
" 400,737,0,45,-50,45 2 0042 quotedbl
-# 606,705,0,0,-7 2 0043 numbersign
+# 556,705,0,18,17,18 2 0043 numbersign
sh "
-$ 556,800,133,30,47,30 3 0044 dollar
+$ 556,800,133,30,47,30 2 0044 dollar
Do "
% 833,705,17,9,4,9 2 0045 percent
& 852,737,15,0,26 2 0046 ampersand
' 204,737,0,76,11,76 2 0047 quoteright
-( 333,737,124,116,10,107 3 0050 parenleft
-) 333,737,124,0,143 3 0051 parenright
-* 500,705,0,2,17,2 2 0052 asterisk
+( 333,737,124,116,10,107 2 0050 parenleft
+) 333,737,124,0,143 2 0051 parenright
+* 500,705,0,2,16,2 2 0052 asterisk
+ 606,504,0,0,13 0 0053 plus
-, 278,109,165,0,89 1 0054 comma
+, 278,109,165,0,89 0 0054 comma
- 333,273,0,0,18 0 0055 hyphen
hy "
char173 "
. 278,109,15,0,33 0 0056 period
-/ 606,737,102,0,-90 3 0057 slash
+/ 606,737,102,0,-90 2 0057 slash
sl "
0 556,705,15,21,21,21 2 0060 zero
1 556,705 2 0061 one
@@ -155,10 +155,10 @@ sl "
8 556,705,15,21,42,21 2 0070 eight
9 556,705,15,13,43,13 2 0071 nine
: 278,466,15,26,8,26 0 0072 colon
-; 278,466,165,33,64,33 1 0073 semicolon
-< 606,518,10,0,16 2 0074 less
+; 278,466,165,33,64,33 0 0073 semicolon
+< 606,518,10,0,16 0 0074 less
= 606,381,0,0,14 0 0075 equal
-> 606,518,10,6,-3,6 2 0076 greater
+> 606,518,10,6,-3,6 0 0076 greater
? 444,737,15,23,-52,23 2 0077 question
@ 747,737,15,31,22,31 2 0100 at
at "
@@ -178,7 +178,7 @@ M 944,722,0,79,76,79 2 0115 M
N 815,722,17,94,98,94 2 0116 N
O 778,737,15,7,10,7 2 0117 O
P 667,722,0,46,83,46 2 0120 P
-Q 778,737,190,7,10,7 3 0121 Q
+Q 778,737,190,7,10,7 2 0121 Q
R 741,722,17,0,91 2 0122 R
S 667,737,15,15,50,15 2 0123 S
T 685,722,0,91,10,91 2 0124 T
@@ -188,15 +188,15 @@ W 926,722,15,97,-3,97 2 0127 W
X 704,722,0,116,123,107 2 0130 X
Y 685,722,0,123,18,107 2 0131 Y
Z 667,722,0,50,75,50 2 0132 Z
-[ 333,737,109,127,83,107 3 0133 bracketleft
+[ 333,737,109,127,83,107 2 0133 bracketleft
lB "
\ 606,737,0,0,-39 2 0134 backslash
rs "
-] 333,737,109,76,133,76 3 0135 bracketright
+] 333,737,109,76,133,76 2 0135 bracketright
rB "
a^ 333,688,0,48,13,48 2 0136 circumflex
^ "
-_ 500,0,123,50,50,50 1 0137 underscore
+_ 500,0,123,50,50,50 0 0137 underscore
` 204,749,0,98,-11,98 2 0140 quoteleft
oq "
a 574,466,15,0,49 0 0141 a
@@ -212,7 +212,7 @@ j 315,715,205,52,216,52 3 0152 j
k 556,737,15,0,55 2 0153 k
l 333,737,15,11,34,11 2 0154 l
m 889,466,15,0,35 0 0155 m
-n 611,466,15,2,36,2 0 0156 n
+n 611,466,15,1,36,1 0 0156 n
o 500,466,15,0,45 0 0157 o
p 574,466,205,0,151 1 0160 p
q 556,466,205,0,50 1 0161 q
@@ -225,25 +225,25 @@ w 778,466,15,0,18 0 0167 w
x 500,466,15,21,83,21 0 0170 x
y 500,466,205,4,129,4 1 0171 y
z 463,466,15,4,83,4 0 0172 z
-lC 333,737,116,98,-2,98 3 0173 braceleft
+lC 333,737,116,98,-2,98 2 0173 braceleft
{ "
ba 606,737,0,0,-219 2 0174 bar
| "
-rC 333,737,116,0,148 3 0175 braceright
+rC 333,737,116,0,148 2 0175 braceright
} "
a~ 333,650,0,97,-2,97 2 0176 tilde
~ "
---- 204,109,167,0,129 1 0200 quotesinglbase
+bq 204,109,167,0,129 0 0200 quotesinglbase
Fo 426,399,0,26,65,26 0 0201 guillemotleft
char171 "
Fc 426,394,0,24,67,24 0 0202 guillemotright
char187 "
-bu 606,537,0,0,-64 2 0203 bullet
---- 556,737,205,57,107,57 3 0204 florin
+bu 606,537,0,0,-64 0 0203 bullet
+Fn 556,737,205,57,107,57 3 0204 florin
f/ 167,705,17,216,154,107 2 0205 fraction
%0 1000,705,15,53,56,53 2 0206 perthousand
-dg 500,737,147,68,-14,68 3 0207 dagger
-dd 500,737,148,78,80,78 3 0210 daggerdbl
+dg 500,737,147,68,-14,68 2 0207 dagger
+dd 500,737,148,78,80,78 2 0210 daggerdbl
en 500,260,0,68,68,68 0 0211 endash
em 1000,260,0,68,68,68 0 0212 emdash
fi 611,737,205,3,110,3 3 0214 fi
@@ -255,25 +255,27 @@ a. 333,644,0,0,-68 2 0224 dotaccent
ab 333,677,0,87,-19,87 2 0225 breve
ah 333,688,0,95,-23,95 2 0226 caron
ao 333,712,0,146,-180,107 2 0227 ring
-ho 333,0,155,0,-18 1 0230 ogonek
+ho 333,0,155,0,-18 0 0230 ogonek
lq 389,749,0,93,-13,93 2 0231 quotedblleft
rq 389,737,0,68,12,68 2 0232 quotedblright
oe 778,466,17,0,50 0 0233 oe
/l 333,737,15,59,34,59 2 0234 lslash
---- 389,109,167,0,129 1 0235 quotedblbase
+Bq 389,109,167,0,129 0 0235 quotedblbase
OE 981,722,0,32,14,32 2 0236 OE
/L 667,722,0,13,87,13 2 0237 Lslash
-r! 333,542,205,0,57 3 0241 exclamdown
+r! 333,542,205,0,57 1 0241 exclamdown
char161 "
-ct 556,595,129,0,-11 3 0242 cent
+ct 556,595,129,0,-11 0 0242 cent
char162 "
Po 556,705,15,39,58,39 2 0243 sterling
char163 "
-Cs 606,603 2 0244 currency
+Cs 556,603,0,24,25,24 0 0244 currency
char164 "
Ye 556,705,0,117,10,107 2 0245 yen
char165 "
-sc 500,737,147,30,61,30 3 0247 section
+bb 606,737,0,0,-219 2 0246 brokenbar
+char166 "
+sc 500,737,147,30,61,30 2 0247 section
char167 "
ad 333,644,0,76,-9,76 2 0250 dieresis
char168 "
@@ -287,19 +289,35 @@ char172 "
\- 606,287,0,0,9 0 0255 minus
rg 747,737,15,26,27,26 2 0256 registered
char174 "
-a- 333,610,0,80,-1,80 2 0257 macron
+a- 333,610,0,80,-1,80 0 0257 macron
char175 "
+de 400,705,0,20,-20,20 2 0260 degree
+char176 "
+char177 606,504,0,0,13 0 0261 plusminus
+S2 333,705,0,70,50,70 2 0262 twosuperior
+char178 "
+S3 333,705,0,48,49,48 2 0263 threesuperior
+char179 "
aa 333,689,0,72,-82,72 2 0264 acute
char180 "
+char181 611,466,205,0,120 1 0265 mu
ps 650,737,0,45,-38,45 2 0266 paragraph
char182 "
char183 278,316,0,0,-27 0 0267 periodcentered
ac 333,0,227,0,47 1 0270 cedilla
char184 "
-Om 372,737,0,50,-33,50 2 0272 ordmasculine
+S1 333,705,0,26,7,26 2 0271 onesuperior
+char185 "
+Om 372,738,0,50,-33,50 2 0272 ordmasculine
char186 "
fc 333,394,0,0,10 0 0273 guilsinglright
-r? 444,542,205,0,43 3 0277 questiondown
+14 834,705,17,49,17,49 2 0274 onequarter
+char188 "
+12 834,705,17,60,17,60 2 0275 onehalf
+char189 "
+34 834,705,17,49,49,49 2 0276 threequarters
+char190 "
+r? 444,542,205,0,43 1 0277 questiondown
char191 "
`A 704,947,0,14,132,14 2 0300 Agrave
char192 "
@@ -333,6 +351,8 @@ char205 "
char206 "
:I 407,900,0,89,83,89 2 0317 Idieresis
char207 "
+-D 778,722,0,7,88,7 2 0320 Eth
+char208 "
~N 815,906,17,94,98,94 2 0321 Ntilde
char209 "
`O 778,947,15,7,10,7 2 0322 Ograve
@@ -345,7 +365,8 @@ char212 "
char213 "
:O 778,900,15,7,10,7 2 0326 Odieresis
char214 "
-/O 778,755,87,7,49,7 3 0330 Oslash
+char215 606,504,0,0,13 0 0327 multiply
+/O 778,755,87,7,49,7 2 0330 Oslash
char216 "
`U 815,947,15,95,-43,95 2 0331 Ugrave
char217 "
@@ -355,6 +376,10 @@ char218 "
char219 "
:U 815,900,15,95,-43,95 2 0334 Udieresis
char220 "
+'Y 685,945,0,123,18,107 2 0335 Yacute
+char221 "
+TP 667,722,0,7,83,7 2 0336 Thorn
+char222 "
ss 556,737,205,19,126,19 3 0337 germandbls
char223 "
`a 574,691,15,0,49 2 0340 agrave
@@ -389,7 +414,9 @@ char237 "
char238 "
:i 333,644,15,66,23,66 2 0357 idieresis
char239 "
-~n 611,650,15,2,36,2 2 0361 ntilde
+Sd 500,737,15,0,45 2 0360 eth
+char240 "
+~n 611,650,15,1,36,1 2 0361 ntilde
char241 "
`o 500,691,15,0,45 2 0362 ograve
char242 "
@@ -401,7 +428,8 @@ char244 "
char245 "
:o 500,644,15,0,45 2 0366 odieresis
char246 "
-/o 500,549,121,0,55 3 0370 oslash
+char247 606,504,0,0,13 0 0367 divide
+/o 500,549,121,0,55 0 0370 oslash
char248 "
`u 611,691,15,0,9 2 0371 ugrave
char249 "
@@ -411,5 +439,9 @@ char250 "
char251 "
:u 611,644,15,0,9 2 0374 udieresis
char252 "
+'y 500,689,205,4,129,4 3 0375 yacute
+char253 "
+Tp 574,656,205,0,151 3 0376 thorn
+char254 "
:y 500,644,205,4,129,4 3 0377 ydieresis
char255 "
diff --git a/ps/devps/NR b/devps/NR
index b8d862e43..d545b2ab8 100644
--- a/ps/devps/NR
+++ b/devps/NR
@@ -122,21 +122,22 @@ vs 463,694,15 2 0004 scaron
vz 481,694 2 0005 zcaron
:Y 704,902 2 0006 Ydieresis
tm 1000,737 2 0007 trademark
+aq 204,737 2 0010 quotesingle
space 278 0 0040
! 296,737,15 2 0041 exclam
" 389,737 2 0042 quotedbl
# 556,690 2 0043 numbersign
sh "
-$ 556,804,129 3 0044 dollar
+$ 556,804,129 2 0044 dollar
Do "
-% 833,707,17 2 0045 percent
+% 833,707,18 2 0045 percent
& 815,737,15 2 0046 ampersand
' 204,737 2 0047 quoteright
-( 333,737,124 3 0050 parenleft
-) 333,737,124 3 0051 parenright
+( 333,737,124 2 0050 parenleft
+) 333,737,124 2 0051 parenright
* 500,737 2 0052 asterisk
+ 606,492,13 0 0053 plus
-, 278,109,184 1 0054 comma
+, 278,109,184 0 0054 comma
- 333,279 0 0055 hyphen
hy "
char173 "
@@ -154,7 +155,7 @@ sl "
8 556,705,15 2 0070 eight
9 556,705,15 2 0071 nine
: 278,475,15 0 0072 colon
-; 278,475,189 1 0073 semicolon
+; 278,475,189 0 0073 semicolon
< 606,503,25 0 0074 less
= 606,374 0 0075 equal
> 606,503,25 0 0076 greater
@@ -177,7 +178,7 @@ M 944,722 2 0115 M
N 815,722,15 2 0116 N
O 778,737,15 2 0117 O
P 667,722 2 0120 P
-Q 778,737,189 3 0121 Q
+Q 778,737,189 2 0121 Q
R 722,722,15 2 0122 R
S 630,737,15 2 0123 S
T 667,722 2 0124 T
@@ -187,15 +188,15 @@ W 981,722,15 2 0127 W
X 704,722 2 0130 X
Y 704,722 2 0131 Y
Z 611,722 2 0132 Z
-[ 333,722,109 3 0133 bracketleft
+[ 333,722,109 2 0133 bracketleft
lB "
\ 606,737 2 0134 backslash
rs "
-] 333,723,108 3 0135 bracketright
+] 333,723,108 2 0135 bracketright
rB "
a^ 333,694 2 0136 circumflex
^ "
-_ 500,0,134 1 0137 underscore
+_ 500,0,134 0 0137 underscore
` 204,737 2 0140 quoteleft
oq "
a 556,479,15 0 0141 a
@@ -224,25 +225,25 @@ w 778,464,15 0 0167 w
x 537,464 0 0170 x
y 537,464,205 1 0171 y
z 481,464 0 0172 z
-lC 333,722,109 3 0173 braceleft
+lC 333,722,109 2 0173 braceleft
{ "
ba 606,737 2 0174 bar
| "
-rC 333,722,109 3 0175 braceright
+rC 333,722,109 2 0175 braceright
} "
-a~ 333,659 2 0176 tilde
+a~ 333,659 0 0176 tilde
~ "
---- 204,104,189 1 0200 quotesinglbase
-Fo 426,398 0 0201 guillemotleft
+bq 204,104,189 0 0200 quotesinglbase
+Fo 426,397 0 0201 guillemotleft
char171 "
Fc 426,399 0 0202 guillemotright
char187 "
-bu 606,554 2 0203 bullet
---- 556,737,205 3 0204 florin
+bu 606,554 0 0203 bullet
+Fn 556,737,205 3 0204 florin
f/ 167,705 2 0205 fraction
-%0 1000,699 2 0206 perthousand
-dg 500,737,147 3 0207 dagger
-dd 500,737,151 3 0210 daggerdbl
+%0 1000,699,1 2 0206 perthousand
+dg 500,737,147 2 0207 dagger
+dd 500,737,151 2 0210 daggerdbl
en 556,269 0 0211 endash
em 1000,269 0 0212 emdash
fi 611,737 2 0214 fi
@@ -250,55 +251,73 @@ fl 611,737 2 0215 fl
.i 315,464 0 0220 dotlessi
ga 333,699 2 0222 grave
a" 333,714 2 0223 hungarumlaut
-a. 333,644 2 0224 dotaccent
+a. 333,644 0 0224 dotaccent
ab 333,685 2 0225 breve
ah 333,694 2 0226 caron
ao 333,722 2 0227 ring
-ho 333,0,163 1 0230 ogonek
+ho 333,0,163 0 0230 ogonek
lq 389,737 2 0231 quotedblleft
rq 389,737 2 0232 quotedblright
oe 833,479,15 0 0233 oe
/l 315,737 2 0234 lslash
---- 389,104,189 1 0235 quotedblbase
+Bq 389,104,189 0 0235 quotedblbase
OE 1000,722 2 0236 OE
/L 667,722 2 0237 Lslash
-r! 296,547,205 3 0241 exclamdown
+r! 296,547,205 1 0241 exclamdown
char161 "
-ct 556,584,141 3 0242 cent
+ct 556,584,141 0 0242 cent
char162 "
Po 556,705,15 2 0243 sterling
char163 "
-Cs 606,603 2 0244 currency
+Cs 556,603 0 0244 currency
char164 "
-Ye 704,690 2 0245 yen
+Ye 556,705 2 0245 yen
char165 "
-sc 500,737,147 3 0247 section
+bb 606,737 2 0246 brokenbar
+char166 "
+sc 500,737,147 2 0247 section
char167 "
-ad 333,644 2 0250 dieresis
+ad 333,644 0 0250 dieresis
char168 "
co 737,737,15 2 0251 copyright
char169 "
Of 334,722 2 0252 ordfeminine
char170 "
-fo 259,398 0 0253 guilsinglleft
+fo 259,397 0 0253 guilsinglleft
no 606,374 0 0254 logicalnot
char172 "
\- 606,277 0 0255 minus
rg 737,737,15 2 0256 registered
char174 "
-a- 333,622 2 0257 macron
+a- 333,622 0 0257 macron
char175 "
+de 400,705 2 0260 degree
+char176 "
+char177 606,492 0 0261 plusminus
+S2 333,705 2 0262 twosuperior
+char178 "
+S3 333,705 2 0263 threesuperior
+char179 "
aa 333,699 2 0264 acute
char180 "
-ps 606,722,147 3 0266 paragraph
+char181 611,464,205 1 0265 mu
+ps 606,722,147 2 0266 paragraph
char182 "
char183 278,302 0 0267 periodcentered
ac 333,0,215 1 0270 cedilla
char184 "
+S1 333,705 2 0271 onesuperior
+char185 "
Om 300,722 2 0272 ordmasculine
char186 "
fc 259,399 0 0273 guilsinglright
-r? 444,547,205 3 0277 questiondown
+14 834,705 2 0274 onequarter
+char188 "
+12 834,705,2 2 0275 onehalf
+char189 "
+34 834,705 2 0276 threequarters
+char190 "
+r? 444,547,205 1 0277 questiondown
char191 "
`A 722,957 2 0300 Agrave
char192 "
@@ -332,6 +351,8 @@ char205 "
char206 "
:I 407,902 2 0317 Idieresis
char207 "
+-D 778,722 2 0320 Eth
+char208 "
~N 815,917,15 2 0321 Ntilde
char209 "
`O 778,957,15 2 0322 Ograve
@@ -344,7 +365,8 @@ char212 "
char213 "
:O 778,902,15 2 0326 Odieresis
char214 "
-/O 778,760,74 3 0330 Oslash
+char215 606,491,13 0 0327 multiply
+/O 778,760,74 2 0330 Oslash
char216 "
`U 815,957,15 2 0331 Ugrave
char217 "
@@ -354,6 +376,10 @@ char218 "
char219 "
:U 815,902,15 2 0334 Udieresis
char220 "
+'Y 704,957 2 0335 Yacute
+char221 "
+TP 667,722 2 0336 Thorn
+char222 "
ss 574,737,15 2 0337 germandbls
char223 "
`a 556,699,15 2 0340 agrave
@@ -362,9 +388,9 @@ char224 "
char225 "
^a 556,694,15 2 0342 acircumflex
char226 "
-~a 556,659,15 2 0343 atilde
+~a 556,659,15 0 0343 atilde
char227 "
-:a 556,644,15 2 0344 adieresis
+:a 556,644,15 0 0344 adieresis
char228 "
oa 556,722,15 2 0345 aring
char229 "
@@ -378,7 +404,7 @@ char232 "
char233 "
^e 500,694,15 2 0352 ecircumflex
char234 "
-:e 500,644,15 2 0353 edieresis
+:e 500,644,15 0 0353 edieresis
char235 "
`i 315,699 2 0354 igrave
char236 "
@@ -386,9 +412,11 @@ char236 "
char237 "
^i 315,694 2 0356 icircumflex
char238 "
-:i 315,644 2 0357 idieresis
+:i 315,644 0 0357 idieresis
char239 "
-~n 611,659 2 0361 ntilde
+Sd 500,740,15 2 0360 eth
+char240 "
+~n 611,659 0 0361 ntilde
char241 "
`o 500,699,15 2 0362 ograve
char242 "
@@ -396,11 +424,12 @@ char242 "
char243 "
^o 500,694,15 2 0364 ocircumflex
char244 "
-~o 500,659,15 2 0365 otilde
+~o 500,659,15 0 0365 otilde
char245 "
-:o 500,644,15 2 0366 odieresis
+:o 500,644,15 0 0366 odieresis
char246 "
-/o 500,556,102 3 0370 oslash
+char247 606,493,11 0 0367 divide
+/o 500,556,102 0 0370 oslash
char248 "
`u 611,699,15 2 0371 ugrave
char249 "
@@ -408,7 +437,11 @@ char249 "
char250 "
^u 611,694,15 2 0373 ucircumflex
char251 "
-:u 611,644,15 2 0374 udieresis
+:u 611,644,15 0 0374 udieresis
char252 "
-:y 537,644,205 3 0377 ydieresis
+'y 537,699,205 3 0375 yacute
+char253 "
+Tp 574,737,205 3 0376 thorn
+char254 "
+:y 537,644,205 1 0377 ydieresis
char255 "
diff --git a/devps/PB b/devps/PB
new file mode 100644
index 000000000..348281ad3
--- /dev/null
+++ b/devps/PB
@@ -0,0 +1,449 @@
+name PB
+internalname Palatino-Bold
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -70
+A w -70
+A v -70
+A ' -92
+A Y -111
+A W -90
+A V -129
+A T -92
+F . -111
+F , -111
+F A -55
+L y -74
+L ' -74
+L Y -92
+L W -92
+L V -92
+L T -74
+P . -129
+P , -129
+P A -74
+R y -30
+R Y -55
+R W -37
+R V -74
+R T -55
+T y -90
+T w -90
+T u -129
+T ; -74
+T s -111
+T r -111
+T . -92
+T o -111
+T i -55
+T - -92
+T hy -92
+T char173 -92
+T e -111
+T , -92
+T : -74
+T c -129
+T a -111
+T A -92
+V y -90
+V u -92
+V ; -74
+V r -111
+V . -129
+V o -111
+V i -55
+V - -92
+V hy -92
+V char173 -92
+V e -111
+V , -129
+V : -74
+V a -111
+V A -129
+W y -74
+W u -74
+W ; -37
+W r -74
+W . -37
+W o -74
+W i -37
+W - -37
+W hy -37
+W char173 -37
+W e -74
+W , -92
+W : -37
+W a -74
+W A -90
+Y v -74
+Y u -74
+Y ; -55
+Y q -92
+Y . -74
+Y p -74
+Y o -74
+Y i -55
+Y - -74
+Y hy -74
+Y char173 -74
+Y e -74
+Y , -74
+Y : -55
+Y a -74
+Y A -55
+f ' 37
+f f -18
+1 1 -37
+` ` -55
+` oq -55
+oq ` -55
+oq oq -55
+' t -18
+' s -55
+' ' -55
+r ' 55
+r . -55
+r - -18
+r hy -18
+r char173 -18
+r , -55
+v . -111
+v , -111
+w . -92
+w , -92
+y . -92
+y , -92
+charset
+ha 606,678 2 0000 asciicircum
+ti 606,342 0 0001 asciitilde
+vS 611,909,17 2 0002 Scaron
+vZ 667,909,3 2 0003 Zcaron
+vs 444,693,17 2 0004 scaron
+vz 500,693,3 2 0005 zcaron
+:Y 667,895,3 2 0006 Ydieresis
+tm 998,678 2 0007 trademark
+aq 227,695 2 0010 quotesingle
+space 250 0 0040
+! 278,688,12 2 0041 exclam
+" 402,695 2 0042 quotedbl
+# 500,673 2 0043 numbersign
+sh "
+$ 500,721,114 2 0044 dollar
+Do "
+% 889,714,9 2 0045 percent
+& 833,684,17 2 0046 ampersand
+' 278,695 2 0047 quoteright
+( 333,723,104 2 0050 parenleft
+) 333,723,104 2 0051 parenright
+* 444,695 2 0052 asterisk
++ 606,505 0 0053 plus
+, 250,141,166 0 0054 comma
+- 333,305 0 0055 hyphen
+hy "
+char173 "
+. 250,144,12 0 0056 period
+/ 296,720,17 2 0057 slash
+sl "
+0 500,660,17 2 0060 zero
+1 500,670,3 2 0061 one
+2 500,660,3 2 0062 two
+3 500,660,17 2 0063 three
+4 500,672,3 2 0064 four
+5 500,656,17 2 0065 five
+6 500,660,17 2 0066 six
+7 500,656,3 2 0067 seven
+8 500,660,17 2 0070 eight
+9 500,660,17 2 0071 nine
+: 250,454,12 0 0072 colon
+; 250,454,166 0 0073 semicolon
+< 606,519,15 0 0074 less
+= 606,396 0 0075 equal
+> 606,519,15 0 0076 greater
+? 444,687,12 2 0077 question
+@ 747,681,12 2 0100 at
+at "
+A 778,686,3 2 0101 A
+B 667,681,3 2 0102 B
+C 722,695,17 2 0103 C
+D 833,681,3 2 0104 D
+E 611,681,4 2 0105 E
+F 556,681,3 2 0106 F
+G 833,695,17 2 0107 G
+H 833,681,3 2 0110 H
+I 389,681,3 2 0111 I
+J 389,681,213 2 0112 J
+K 778,681,3 2 0113 K
+L 611,681,4 2 0114 L
+M 1000,681,10 2 0115 M
+N 833,681,16 2 0116 N
+O 833,695,17 2 0117 O
+P 611,681,3 2 0120 P
+Q 833,695,184 2 0121 Q
+R 722,681,3 2 0122 R
+S 611,695,17 2 0123 S
+T 667,681,3 2 0124 T
+U 778,681,17 2 0125 U
+V 778,681,3 2 0126 V
+W 1000,686,3 2 0127 W
+X 667,695,3 2 0130 X
+Y 667,695,3 2 0131 Y
+Z 667,681,3 2 0132 Z
+[ 333,720,104 2 0133 bracketleft
+lB "
+\ 606,720 2 0134 backslash
+rs "
+] 333,720,104 2 0135 bracketright
+rB "
+a^ 333,681 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 278,695 2 0140 quoteleft
+oq "
+a 500,471,17 0 0141 a
+b 611,720,17 2 0142 b
+c 444,471,17 0 0143 c
+d 611,720,17 2 0144 d
+e 500,471,17 0 0145 e
+f 389,720,3 2 0146 f
+g 556,471,266 1 0147 g
+h 611,720,3 2 0150 h
+i 333,706,3 2 0151 i
+j 333,706,266 3 0152 j
+k 611,720,3 2 0153 k
+l 333,720,3 2 0154 l
+m 889,471,3 0 0155 m
+n 611,471,3 0 0156 n
+o 556,471,17 0 0157 o
+p 611,471,258 1 0160 p
+q 611,471,258 1 0161 q
+r 389,471,3 0 0162 r
+s 444,471,17 0 0163 s
+t 333,632,17 2 0164 t
+u 611,471,17 0 0165 u
+v 556,459,3 0 0166 v
+w 833,471,3 0 0167 w
+x 500,471,3 0 0170 x
+y 556,459,266 1 0171 y
+z 500,459,3 0 0172 z
+lC 310,725,117 2 0173 braceleft
+{ "
+ba 606,720 2 0174 bar
+| "
+rC 310,725,117 2 0175 braceright
+} "
+a~ 333,661 2 0176 tilde
+~ "
+bq 333,130,160 0 0200 quotesinglbase
+Fo 500,438 0 0201 guillemotleft
+char171 "
+Fc 500,438 0 0202 guillemotright
+char187 "
+bu 606,516 0 0203 bullet
+Fn 500,703,242 2 0204 florin
+f/ 167,660 2 0205 fraction
+%0 1000,724,9 2 0206 perthousand
+dg 500,682,6 2 0207 dagger
+dd 500,682,245 2 0210 daggerdbl
+en 500,291 0 0211 endash
+em 1000,291 0 0212 emdash
+fi 611,720,3 2 0214 fi
+fl 611,720,3 2 0215 fl
+.i 333,471,3 0 0220 dotlessi
+ga 333,691 2 0222 grave
+a" 333,691 2 0223 hungarumlaut
+a. 333,671 2 0224 dotaccent
+ab 333,669 2 0225 breve
+ah 333,685 2 0226 caron
+ao 333,700 2 0227 ring
+ho 333,0,246 0 0230 ogonek
+lq 500,695 2 0231 quotedblleft
+rq 500,695 2 0232 quotedblright
+oe 833,471,17 0 0233 oe
+/l 333,720,3 2 0234 lslash
+Bq 500,130,160 0 0235 quotedblbase
+OE 1000,695,17 2 0236 OE
+/L 611,681,4 2 0237 Lslash
+r! 278,471,227 0 0241 exclamdown
+char161 "
+ct 500,554,106 0 0242 cent
+char162 "
+Po 500,676,19 2 0243 sterling
+char163 "
+Cs 500,533 0 0244 currency
+char164 "
+Ye 500,695,3 2 0245 yen
+char165 "
+bb 606,720 2 0246 brokenbar
+char166 "
+sc 500,695,217 2 0247 section
+char167 "
+ad 333,671 2 0250 dieresis
+char168 "
+co 747,695,17 2 0251 copyright
+char169 "
+Of 438,660 2 0252 ordfeminine
+char170 "
+fo 389,438 0 0253 guilsinglleft
+no 606,396 0 0254 logicalnot
+char172 "
+\- 606,298 0 0255 minus
+rg 747,695,17 2 0256 registered
+char174 "
+a- 333,609 0 0257 macron
+char175 "
+de 400,660 2 0260 degree
+char176 "
+char177 606,505 0 0261 plusminus
+S2 300,660 2 0262 twosuperior
+char178 "
+S3 300,667 2 0263 threesuperior
+char179 "
+aa 333,691 2 0264 acute
+char180 "
+char181 611,471,225 0 0265 mu
+ps 641,683,161 2 0266 paragraph
+char182 "
+char183 250,335 0 0267 periodcentered
+ac 333,0,225 0 0270 cedilla
+char184 "
+S1 300,665 2 0271 onesuperior
+char185 "
+Om 488,660 2 0272 ordmasculine
+char186 "
+fc 389,438 0 0273 guilsinglright
+14 750,665,2 2 0274 onequarter
+char188 "
+12 750,665,2 2 0275 onehalf
+char189 "
+34 750,667,2 2 0276 threequarters
+char190 "
+r? 444,471,231 0 0277 questiondown
+char191 "
+`A 778,915,3 2 0300 Agrave
+char192 "
+'A 778,915,3 2 0301 Aacute
+char193 "
+^A 778,905,3 2 0302 Acircumflex
+char194 "
+~A 778,885,3 2 0303 Atilde
+char195 "
+:A 778,895,3 2 0304 Adieresis
+char196 "
+oA 778,924,3 2 0305 Aring
+char197 "
+AE 1000,681,4 2 0306 AE
+char198 "
+,C 722,695,225 2 0307 Ccedilla
+char199 "
+`E 611,915,4 2 0310 Egrave
+char200 "
+'E 611,915,4 2 0311 Eacute
+char201 "
+^E 611,905,4 2 0312 Ecircumflex
+char202 "
+:E 611,895,4 2 0313 Edieresis
+char203 "
+`I 389,915,3 2 0314 Igrave
+char204 "
+'I 389,915,3 2 0315 Iacute
+char205 "
+^I 389,905,3 2 0316 Icircumflex
+char206 "
+:I 389,895,3 2 0317 Idieresis
+char207 "
+-D 833,681,3 2 0320 Eth
+char208 "
+~N 833,885,16 2 0321 Ntilde
+char209 "
+`O 833,915,17 2 0322 Ograve
+char210 "
+'O 833,915,17 2 0323 Oacute
+char211 "
+^O 833,905,17 2 0324 Ocircumflex
+char212 "
+~O 833,885,17 2 0325 Otilde
+char213 "
+:O 833,895,17 2 0326 Odieresis
+char214 "
+char215 606,483 0 0327 multiply
+/O 833,698,20 2 0330 Oslash
+char216 "
+`U 778,915,17 2 0331 Ugrave
+char217 "
+'U 778,915,17 2 0332 Uacute
+char218 "
+^U 778,905,17 2 0333 Ucircumflex
+char219 "
+:U 778,895,17 2 0334 Udieresis
+char220 "
+'Y 667,915,3 2 0335 Yacute
+char221 "
+TP 611,681,3 2 0336 Thorn
+char222 "
+ss 611,720,17 2 0337 germandbls
+char223 "
+`a 500,711,17 2 0340 agrave
+char224 "
+'a 500,711,17 2 0341 aacute
+char225 "
+^a 500,701,17 2 0342 acircumflex
+char226 "
+~a 500,673,17 2 0343 atilde
+char227 "
+:a 500,691,17 2 0344 adieresis
+char228 "
+oa 500,700,17 2 0345 aring
+char229 "
+ae 778,471,17 0 0346 ae
+char230 "
+,c 444,471,225 0 0347 ccedilla
+char231 "
+`e 500,711,17 2 0350 egrave
+char232 "
+'e 500,711,17 2 0351 eacute
+char233 "
+^e 500,701,17 2 0352 ecircumflex
+char234 "
+:e 500,691,17 2 0353 edieresis
+char235 "
+`i 333,711,3 2 0354 igrave
+char236 "
+'i 333,711,3 2 0355 iacute
+char237 "
+^i 333,701,3 2 0356 icircumflex
+char238 "
+:i 333,691,3 2 0357 idieresis
+char239 "
+Sd 556,720,17 2 0360 eth
+char240 "
+~n 611,673,3 2 0361 ntilde
+char241 "
+`o 556,711,17 2 0362 ograve
+char242 "
+'o 556,711,17 2 0363 oacute
+char243 "
+^o 556,701,17 2 0364 ocircumflex
+char244 "
+~o 556,673,17 2 0365 otilde
+char245 "
+:o 556,691,17 2 0366 odieresis
+char246 "
+char247 606,510 0 0367 divide
+/o 556,471,18 0 0370 oslash
+char248 "
+`u 611,711,17 2 0371 ugrave
+char249 "
+'u 611,711,17 2 0372 uacute
+char250 "
+^u 611,701,17 2 0373 ucircumflex
+char251 "
+:u 611,691,17 2 0374 udieresis
+char252 "
+'y 556,711,266 3 0375 yacute
+char253 "
+Tp 611,720,258 3 0376 thorn
+char254 "
+:y 556,691,266 3 0377 ydieresis
+char255 "
diff --git a/devps/PBI b/devps/PBI
new file mode 100644
index 000000000..37facbe94
--- /dev/null
+++ b/devps/PBI
@@ -0,0 +1,451 @@
+name PBI
+internalname Palatino-BoldItalic
+slant 10
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -55
+A w -37
+A v -55
+A ' -55
+A Y -74
+A W -74
+A V -74
+A T -55
+F . -111
+F , -111
+F A -74
+L y -37
+L ' -55
+L Y -74
+L W -74
+L V -74
+L T -74
+P . -129
+P , -129
+P A -92
+R y -20
+R Y -37
+R W -55
+R V -55
+R T -37
+T y -80
+T w -50
+T u -92
+T ; -55
+T s -92
+T r -92
+T . -55
+T o -111
+T i -74
+T - -92
+T hy -92
+T char173 -92
+T e -111
+T , -55
+T : -55
+T c -92
+T a -111
+T O -18
+T A -55
+V y -50
+V u -50
+V ; -37
+V r -74
+V . -111
+V o -74
+V i -50
+V - -37
+V hy -37
+V char173 -37
+V e -74
+V , -111
+V : -37
+V a -92
+V A -74
+W y -30
+W u -30
+W ; -18
+W r -30
+W . -55
+W o -55
+W i -30
+W e -55
+W , -55
+W : -28
+W a -74
+W A -74
+Y v -30
+Y u -50
+Y ; -55
+Y q -92
+Y . -55
+Y p -74
+Y o -111
+Y i -54
+Y - -55
+Y hy -55
+Y char173 -55
+Y e -92
+Y , -55
+Y : -55
+Y a -111
+Y A -55
+f ' 37
+f f -37
+1 1 -55
+` ` -55
+` oq -55
+oq ` -55
+oq oq -55
+' t -18
+' s -37
+' ' -55
+r ' 55
+r q -18
+r . -55
+r o -18
+r h -18
+r g -18
+r e -18
+r , -55
+r c -18
+v . -55
+v , -55
+w . -55
+w , -55
+y . -37
+y , -37
+charset
+ha 606,678,0,0,-13 2 0000 asciicircum
+ti 606,346,0,0,-1 0 0001 asciitilde
+vS 556,896,17,51,0,51 2 0002 Scaron
+vZ 667,896,3,59,49,59 2 0003 Zcaron
+vs 444,692,17,95,25,66 2 0004 scaron
+vz 500,692,17,67,19,66 2 0005 zcaron
+:Y 611,880,3,114,-4,66 2 0006 Ydieresis
+tm 1000,678,0,11,12,11 2 0007 trademark
+aq 250,720,0,93,-77,66 2 0010 quotesingle
+space 250 0 0040
+! 333,695,17,39,-8,39 2 0041 exclam
+" 500,720,0,43,-87,43 2 0042 quotedbl
+# 500,673,0,46,46,46 2 0043 numbersign
+sh "
+$ 500,737,108,27,30,27 2 0044 dollar
+Do "
+% 889,697,17,0,-6 2 0045 percent
+& 833,695,17,28,-24,28 2 0046 ampersand
+' 278,720,0,74,-26,66 2 0047 quoteright
+( 333,723,129,85,-8,66 2 0050 parenleft
+) 333,723,129,15,62,15 2 0051 parenright
+* 444,695,0,45,-34,45 2 0052 asterisk
++ 606,501,5 0 0053 plus
+, 250,147,164,8,83,8 0 0054 comma
+- 389,300,0,23,13,23 0 0055 hyphen
+hy "
+char173 "
+. 250,135,17,0,2 0 0056 period
+/ 315,720,17,50,49,50 2 0057 slash
+sl "
+0 500,683,17,40,8,40 2 0060 zero
+1 500,678,3,0,9 2 0061 one
+2 500,683,3,4,49,4 2 0062 two
+3 500,683,17,0,42 2 0063 three
+4 500,683,3,37,47,37 2 0064 four
+5 500,675,17,31,36,31 2 0065 five
+6 500,683,17,38,11,38 2 0066 six
+7 500,674,3,94,-19,66 2 0067 seven
+8 500,683,17,34,24,34 2 0070 eight
+9 500,683,17,41,23,41 2 0071 nine
+: 250,452,17,36,12,36 0 0072 colon
+; 250,452,164,47,83,47 0 0073 semicolon
+< 606,517,21,2,1,2 0 0074 less
+= 606,390,0,0,-1 0 0075 equal
+> 606,517,21,1,2,1 0 0076 greater
+? 444,695,17,56,-41,56 2 0077 question
+@ 833,681,12,0,-32 2 0100 at
+at "
+A 722,683,3,13,85,13 2 0101 A
+B 667,681,3,12,42,12 2 0102 B
+C 685,695,17,60,-19,60 2 0103 C
+D 778,682,3,19,50,19 2 0104 D
+E 611,681,3,45,39,45 2 0105 E
+F 556,681,3,87,56,66 2 0106 F
+G 778,695,17,22,-22,22 2 0107 G
+H 778,681,3,98,62,66 2 0110 H
+I 389,681,3,73,51,66 2 0111 I
+J 389,681,207,78,79,66 2 0112 J
+K 722,681,3,74,60,66 2 0113 K
+L 611,681,3,17,24,17 2 0114 L
+M 944,681,17,91,73,66 2 0115 M
+N 778,681,3,101,52,66 2 0116 N
+O 833,695,17,11,-26,11 2 0117 O
+P 667,681,3,56,39,56 2 0120 P
+Q 833,695,222,11,-26,11 2 0121 Q
+R 722,681,3,25,46,25 2 0122 R
+S 556,695,17,11,0,11 2 0123 S
+T 611,681,3,113,-6,66 2 0124 T
+U 778,681,17,97,-33,66 2 0125 U
+V 667,681,3,128,-17,66 2 0126 V
+W 1000,689,3,123,-17,66 2 0127 W
+X 722,681,3,100,59,66 2 0130 X
+Y 611,695,3,114,-4,66 2 0131 Y
+Z 667,681,3,59,49,59 2 0132 Z
+[ 333,723,102,98,5,66 2 0133 bracketleft
+lB "
+\ 606,720,0,0,-22 2 0134 backslash
+rs "
+] 333,723,102,32,71,32 2 0135 bracketright
+rB "
+a^ 333,684,0,132,-38,66 2 0136 circumflex
+^ "
+_ 500,0,125,50,50,50 0 0137 underscore
+` 278,720,0,63,-15,63 2 0140 quoteleft
+oq "
+a 556,470,17,13,6,13 0 0141 a
+b 537,726,17,7,6,7 2 0142 b
+c 444,469,17,42,18,42 0 0143 c
+d 556,726,17,44,12,44 2 0144 d
+e 444,469,17,24,22,24 0 0145 e
+f 333,726,271,166,180,66 3 0146 f
+g 500,469,271,79,100,66 1 0147 g
+h 556,726,17,16,28,16 2 0150 h
+i 333,695,17,29,24,29 2 0151 i
+j 333,695,271,40,114,40 3 0152 j
+k 556,726,17,22,16,22 2 0153 k
+l 333,726,17,35,-14,35 2 0154 l
+m 833,469,17,20,31,20 0 0155 m
+n 556,469,17,15,33,15 0 0156 n
+o 556,469,17,0,2 0 0157 o
+p 556,469,271,10,71,10 1 0160 p
+q 537,469,271,26,18,26 1 0161 q
+r 389,469,17,72,30,66 0 0162 r
+s 444,469,17,12,25,12 0 0163 s
+t 389,636,17,70,8,66 2 0164 t
+u 556,469,17,15,28,15 0 0165 u
+v 556,469,17,7,31,7 0 0166 v
+w 833,469,17,19,23,19 0 0167 w
+x 500,469,17,50,58,50 0 0170 x
+y 556,469,271,35,37,35 1 0171 y
+z 500,469,17,20,19,20 0 0172 z
+lC 333,720,105,51,32,51 2 0173 braceleft
+{ "
+ba 606,720,0,0,-209 2 0174 bar
+| "
+rC 333,720,105,32,51,32 2 0175 braceright
+} "
+a~ 333,654,0,158,-32,66 2 0176 tilde
+~ "
+bq 250,145,144,20,53,20 0 0200 quotesinglbase
+Fo 500,446,0,8,15,8 0 0201 guillemotleft
+char171 "
+Fc 500,443,0,8,15,8 0 0202 guillemotright
+char187 "
+bu 606,516,0,0,-81 0 0203 bullet
+Fn 500,690,242,29,42,29 2 0204 florin
+f/ 167,683,0,221,220,66 2 0205 fraction
+%0 1000,691,17,0,-15 2 0206 perthousand
+dg 556,685,3,0,-17 2 0207 dagger
+dd 556,693,153,31,17,31 2 0210 daggerdbl
+en 500,282,0,62,62,62 0 0211 endash
+em 1000,282,0,62,62,62 0 0212 emdash
+fi 611,726,271,27,180,27 3 0214 fi
+fl 611,726,271,70,180,66 3 0215 fl
+.i 333,469,17,10,24,10 0 0220 dotlessi
+ga 333,699,0,39,-60,39 2 0222 grave
+a" 333,699,0,126,78,66 2 0223 hungarumlaut
+a. 333,668,0,42,-152,42 2 0224 dotaccent
+ab 333,680,0,129,-46,66 2 0225 breve
+ah 333,684,0,162,-63,66 2 0226 caron
+ao 556,714,0,0,-227 2 0227 ring
+ho 333,0,206,0,18 0 0230 ogonek
+lq 500,720,0,61,-15,61 2 0231 quotedblleft
+rq 500,720,0,69,-23,66 2 0232 quotedblright
+oe 778,469,17,27,2,27 0 0233 oe
+/l 333,726,17,82,37,66 2 0234 lslash
+Bq 500,145,144,0,68 0 0235 quotedblbase
+OE 944,695,17,67,11,66 2 0236 OE
+/L 611,681,3,17,44,17 2 0237 Lslash
+r! 333,479,225,0,48 0 0241 exclamdown
+char161 "
+ct 500,547,105,6,-2,6 0 0242 cent
+char162 "
+Po 500,683,5,51,29,51 2 0243 sterling
+char163 "
+Cs 500,533,0,18,18,18 0 0244 currency
+char164 "
+Ye 500,695,3,88,39,66 2 0245 yen
+char165 "
+bb 606,720,0,0,-209 2 0246 brokenbar
+char166 "
+sc 556,695,151,0,3 2 0247 section
+char167 "
+ad 333,668,0,143,-40,66 2 0250 dieresis
+char168 "
+co 747,695,17,23,24,23 2 0251 copyright
+char169 "
+Of 333,684,0,72,3,66 2 0252 ordfeminine
+char170 "
+fo 333,446,0,9,-10,9 0 0253 guilsinglleft
+no 606,390,0,0,-1 0 0254 logicalnot
+char172 "
+\- 606,292,0,0,-1 0 0255 minus
+rg 747,695,17,23,24,23 2 0256 registered
+char174 "
+a- 333,608,0,135,-26,66 0 0257 macron
+char175 "
+de 400,683 2 0260 degree
+char176 "
+char177 606,501 0 0261 plusminus
+S2 300,683,0,71,24,66 2 0262 twosuperior
+char178 "
+S3 300,683,0,60,27,60 2 0263 threesuperior
+char179 "
+aa 333,699,0,109,-103,66 2 0264 acute
+char180 "
+char181 556,469,232,15,65,15 0 0265 mu
+ps 556,681,204,123,36,66 2 0266 paragraph
+char182 "
+char183 250,324,0,6,-17,6 0 0267 periodcentered
+ac 333,5,218,0,38 0 0270 cedilla
+char184 "
+S1 300,680,0,48,9,48 2 0271 onesuperior
+char185 "
+Om 333,683,0,63,-1,63 2 0272 ordmasculine
+char186 "
+fc 333,443,0,0,15 0 0273 guilsinglright
+14 750,683,2,32,32,32 2 0274 onequarter
+char188 "
+12 750,683,2,36,36,36 2 0275 onehalf
+char189 "
+34 750,683,2,32,32,32 2 0276 threequarters
+char190 "
+r? 444,479,226,0,62 0 0277 questiondown
+char191 "
+`A 722,911,3,13,85,13 2 0300 Agrave
+char192 "
+'A 722,911,3,13,85,13 2 0301 Aacute
+char193 "
+^A 722,896,3,13,85,13 2 0302 Acircumflex
+char194 "
+~A 722,866,3,13,85,13 2 0303 Atilde
+char195 "
+:A 722,880,3,13,85,13 2 0304 Adieresis
+char196 "
+oA 722,926,3,13,85,13 2 0305 Aring
+char197 "
+AE 944,681,3,33,79,33 2 0306 AE
+char198 "
+,C 685,695,218,60,-19,60 2 0307 Ccedilla
+char199 "
+`E 611,911,3,45,39,45 2 0310 Egrave
+char200 "
+'E 611,911,3,45,39,45 2 0311 Eacute
+char201 "
+^E 611,896,3,45,39,45 2 0312 Ecircumflex
+char202 "
+:E 611,880,3,45,39,45 2 0313 Edieresis
+char203 "
+`I 389,911,3,73,51,66 2 0314 Igrave
+char204 "
+'I 389,911,3,81,51,66 2 0315 Iacute
+char205 "
+^I 389,896,3,104,51,66 2 0316 Icircumflex
+char206 "
+:I 389,880,3,115,51,66 2 0317 Idieresis
+char207 "
+-D 778,682,3,19,50,19 2 0320 Eth
+char208 "
+~N 778,866,3,101,52,66 2 0321 Ntilde
+char209 "
+`O 833,911,17,11,-26,11 2 0322 Ograve
+char210 "
+'O 833,911,17,11,-26,11 2 0323 Oacute
+char211 "
+^O 833,896,17,11,-26,11 2 0324 Ocircumflex
+char212 "
+~O 833,866,17,11,-26,11 2 0325 Otilde
+char213 "
+:O 833,880,17,11,-26,11 2 0326 Odieresis
+char214 "
+char215 606,479,0,0,-22 0 0327 multiply
+/O 833,730,54,14,-7,14 2 0330 Oslash
+char216 "
+`U 778,911,17,97,-33,66 2 0331 Ugrave
+char217 "
+'U 778,911,17,97,-33,66 2 0332 Uacute
+char218 "
+^U 778,896,17,97,-33,66 2 0333 Ucircumflex
+char219 "
+:U 778,880,17,97,-33,66 2 0334 Udieresis
+char220 "
+'Y 611,911,3,114,-4,66 2 0335 Yacute
+char221 "
+TP 667,681,3,27,39,27 2 0336 Thorn
+char222 "
+ss 556,726,271,43,181,43 3 0337 germandbls
+char223 "
+`a 556,719,17,13,6,13 2 0340 agrave
+char224 "
+'a 556,719,17,13,6,13 2 0341 aacute
+char225 "
+^a 556,704,17,21,6,21 2 0342 acircumflex
+char226 "
+~a 556,666,17,47,6,47 2 0343 atilde
+char227 "
+:a 556,688,17,32,6,32 2 0344 adieresis
+char228 "
+oa 556,714,17,13,6,13 2 0345 aring
+char229 "
+ae 738,469,17,23,6,23 0 0346 ae
+char230 "
+,c 444,469,218,42,18,42 0 0347 ccedilla
+char231 "
+`e 444,719,17,24,22,24 2 0350 egrave
+char232 "
+'e 444,719,17,54,22,54 2 0351 eacute
+char233 "
+^e 444,704,17,77,22,66 2 0352 ecircumflex
+char234 "
+:e 444,688,17,88,22,66 2 0353 edieresis
+char235 "
+`i 333,719,17,39,24,39 2 0354 igrave
+char236 "
+'i 333,719,17,109,24,66 2 0355 iacute
+char237 "
+^i 333,704,17,120,24,66 2 0356 icircumflex
+char238 "
+:i 333,688,17,143,24,66 2 0357 idieresis
+char239 "
+Sd 556,726,17,40,2,40 2 0360 eth
+char240 "
+~n 556,666,17,47,33,47 2 0361 ntilde
+char241 "
+`o 556,719,17,0,2 2 0362 ograve
+char242 "
+'o 556,719,17,0,2 2 0363 oacute
+char243 "
+^o 556,704,17,9,2,9 2 0364 ocircumflex
+char244 "
+~o 556,666,17,47,2,47 2 0365 otilde
+char245 "
+:o 556,688,17,32,2,32 2 0366 odieresis
+char246 "
+char247 606,501,5 0 0367 divide
+/o 556,506,50,16,36,16 0 0370 oslash
+char248 "
+`u 556,719,17,15,28,15 2 0371 ugrave
+char249 "
+'u 556,719,17,15,28,15 2 0372 uacute
+char250 "
+^u 556,704,17,15,28,15 2 0373 ucircumflex
+char251 "
+:u 556,688,17,32,28,32 2 0374 udieresis
+char252 "
+'y 556,719,271,35,37,35 3 0375 yacute
+char253 "
+Tp 556,726,271,10,71,10 3 0376 thorn
+char254 "
+:y 556,688,271,35,37,35 3 0377 ydieresis
+char255 "
diff --git a/devps/PI b/devps/PI
new file mode 100644
index 000000000..7839606f4
--- /dev/null
+++ b/devps/PI
@@ -0,0 +1,453 @@
+name PI
+internalname Palatino-Italic
+slant 10
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -55
+A w -37
+A v -37
+A ' -55
+A Y -55
+A W -55
+A V -74
+A T -55
+F . -111
+F , -111
+F A -111
+L y -37
+L ' -37
+L Y -74
+L W -74
+L V -74
+L T -74
+P . -129
+P , -129
+P A -129
+R y -37
+R Y -55
+R W -55
+R V -74
+R T -55
+T y -92
+T w -92
+T u -111
+T ; -74
+T s -111
+T r -111
+T . -74
+T o -111
+T i -55
+T - -55
+T hy -55
+T char173 -55
+T e -111
+T , -74
+T : -74
+T c -111
+T a -111
+T O -18
+T A -92
+V y -74
+V u -74
+V ; -37
+V r -92
+V . -129
+V o -74
+V i -74
+V - -55
+V hy -55
+V char173 -55
+V e -92
+V , -129
+V : -37
+V a -74
+V A -210
+W y -20
+W u -20
+W ; -18
+W r -20
+W . -55
+W o -20
+W i -20
+W - -18
+W hy -18
+W char173 -18
+W e -20
+W , -55
+W : -18
+W a -20
+W A -92
+Y v -74
+Y u -92
+Y ; -74
+Y q -92
+Y . -92
+Y p -74
+Y o -111
+Y i -55
+Y - -74
+Y hy -74
+Y char173 -74
+Y e -111
+Y , -92
+Y : -74
+Y a -92
+Y A -92
+f ' 55
+1 1 -55
+` ` -74
+` oq -74
+oq ` -74
+oq oq -74
+' t -37
+' s -55
+' ' -74
+r ' 37
+r q -18
+r . -74
+r o -18
+r h -18
+r g -18
+r e -18
+r , -74
+r c -18
+v . -55
+v , -55
+w . -55
+w , -55
+y . -37
+y , -37
+charset
+ha 606,689,0,0,-1 2 0000 asciicircum
+ti 606,339,0,0,-1 0 0001 asciitilde
+vS 556,907,18,33,8,33 2 0002 Scaron
+vZ 667,907,3,20,30,20 2 0003 Zcaron
+vs 389,687,11,80,41,68 2 0004 scaron
+vz 444,687,11,53,51,53 2 0005 zcaron
+:Y 667,847,3,58,-2,58 2 0006 Ydieresis
+tm 1000,689,0,1,-2,1 2 0007 trademark
+aq 333,733,0,5,-90,5 2 0010 quotesingle
+space 250 0 0040
+! 333,733,8,9,-26,9 2 0041 exclam
+" 500,733,0,5,-90,5 2 0042 quotedbl
+# 500,692,0,45,46,45 2 0043 numbersign
+sh "
+$ 500,733,113,2,35,2 2 0044 dollar
+Do "
+% 889,710,7,0,-24 2 0045 percent
+& 778,692,18,38,3,38 2 0046 ampersand
+' 278,733,0,30,-28,30 2 0047 quoteright
+( 333,733,106,48,-4,48 2 0050 parenleft
+) 333,733,106,0,48 2 0051 parenright
+* 389,706,0,61,-26,61 2 0052 asterisk
++ 606,504,0,0,-1 0 0053 plus
+, 250,123,143,3,42,3 0 0054 comma
+- 333,281,0,21,31,21 0 0055 hyphen
+hy "
+char173 "
+. 250,112,5,0,-3 0 0056 period
+/ 296,733,119,146,90,68 2 0057 slash
+sl "
+0 500,699,11,30,14,30 2 0060 zero
+1 500,699,3,0,-4 2 0061 one
+2 500,699,3,0,38 2 0062 two
+3 500,699,11,0,28 2 0063 three
+4 500,699,3,28,35,28 2 0064 four
+5 500,693,11,41,36,41 2 0065 five
+6 500,699,11,19,1,19 2 0066 six
+7 500,692,3,52,-3,52 2 0067 seven
+8 500,699,11,19,14,19 2 0070 eight
+9 500,699,11,18,18,18 2 0071 nine
+: 250,458,5,7,6,7 0 0072 colon
+; 250,456,146,19,59,19 0 0073 semicolon
+< 606,516,6,0,-3 0 0074 less
+= 606,378,0,0,-1 0 0075 equal
+> 606,516,6,0,-3 0 0076 greater
+? 500,706,8,0,-64 2 0077 question
+@ 747,706,18,21,23,21 2 0100 at
+at "
+A 722,705,3,5,69,5 2 0101 A
+B 611,692,6,0,24 2 0102 B
+C 667,706,18,34,5,34 2 0103 C
+D 778,692,3,13,22,13 2 0104 D
+E 611,692,3,9,20,9 2 0105 E
+F 556,692,3,42,50,42 2 0106 F
+G 722,706,18,22,0,22 2 0107 G
+H 778,692,3,72,53,68 2 0110 H
+I 333,692,3,71,43,68 2 0111 I
+J 333,692,206,75,85,68 2 0112 J
+K 667,692,3,66,37,66 2 0113 K
+L 556,692,3,17,34,17 2 0114 L
+M 944,692,18,46,69,46 2 0115 M
+N 778,692,11,76,48,68 2 0116 N
+O 778,706,18,20,-3,20 2 0117 O
+P 611,692,3,33,41,33 2 0120 P
+Q 778,706,201,20,-3,20 2 0121 Q
+R 667,692,3,22,41,22 2 0122 R
+S 556,706,18,0,8 2 0123 S
+T 611,692,3,74,-3,68 2 0124 T
+U 778,692,18,70,-38,68 2 0125 U
+V 722,692,8,82,-25,68 2 0126 V
+W 944,700,8,86,-21,68 2 0127 W
+X 722,692,3,62,30,62 2 0130 X
+Y 667,705,3,58,-2,58 2 0131 Y
+Z 667,692,3,20,30,20 2 0132 Z
+[ 333,733,100,43,32,43 2 0133 bracketleft
+lB "
+\ 606,733,0,0,-31 2 0134 backslash
+rs "
+] 333,733,100,32,43,32 2 0135 bracketright
+rB "
+a^ 333,679,0,67,-6,67 2 0136 circumflex
+^ "
+_ 500,0,125,50,50,50 0 0137 underscore
+` 278,733,0,30,-28,30 2 0140 quoteleft
+oq "
+a 444,482,11,12,46,12 0 0141 a
+b 463,733,11,20,13,20 2 0142 b
+c 407,482,11,32,25,32 0 0143 c
+d 500,733,11,33,33,33 2 0144 d
+e 389,482,11,35,35,35 0 0145 e
+f 278,733,276,185,212,68 3 0146 f
+g 500,482,276,48,87,48 1 0147 g
+h 500,733,9,21,40,21 2 0150 h
+i 278,712,9,36,16,36 2 0151 i
+j 278,712,276,37,120,37 3 0152 j
+k 444,733,9,55,42,55 2 0153 k
+l 278,733,9,23,14,23 2 0154 l
+m 778,482,9,12,26,12 0 0155 m
+n 556,482,9,8,26,8 0 0156 n
+o 444,482,11,17,33,17 0 0157 o
+p 500,482,276,15,57,15 1 0160 p
+q 463,482,276,19,26,19 1 0161 q
+r 389,482,9,45,24,45 0 0162 r
+s 389,482,11,6,41,6 0 0163 s
+t 333,646,9,27,9,27 2 0164 t
+u 556,482,11,6,18,6 0 0165 u
+v 500,482,11,27,29,27 0 0166 v
+w 722,482,11,27,29,27 0 0167 w
+x 500,482,11,34,41,34 0 0170 x
+y 500,482,276,40,58,40 1 0171 y
+z 444,482,11,22,51,22 0 0172 z
+lC 333,733,100,36,35,36 2 0173 braceleft
+{ "
+ba 606,733,0,0,-225 2 0174 bar
+| "
+rC 333,733,100,35,36,35 2 0175 braceright
+} "
+a~ 333,638,0,107,-13,68 0 0176 tilde
+~ "
+bq 278,120,122,0,23 0 0200 quotesinglbase
+Fo 500,440,0,0,-7 0 0201 guillemotleft
+char171 "
+Fc 500,440,0,0,-13 0 0202 guillemotright
+char187 "
+bu 500,526,0,0,-36 0 0203 bullet
+Fn 500,708,276,20,45,20 3 0204 florin
+f/ 167,699,0,220,220,68 2 0205 fraction
+%0 1000,717,6,0,-22 2 0206 perthousand
+dg 500,692,0,19,2,19 2 0207 dagger
+dd 500,692,162,44,40,44 2 0210 daggerdbl
+en 500,278,0,60,60,60 0 0211 endash
+em 1000,278,0,60,60,60 0 0212 emdash
+fi 528,733,276,24,212,24 3 0214 fi
+fl 545,733,276,25,212,25 3 0215 fl
+.i 278,482,9,13,16,13 0 0220 dotlessi
+ga 333,687,0,27,-36,27 2 0222 grave
+a" 333,730,0,102,4,68 2 0223 hungarumlaut
+a. 333,645,0,0,-125 2 0224 dotaccent
+ab 333,677,0,110,-42,68 2 0225 breve
+ah 333,679,0,126,-54,68 2 0226 caron
+ao 333,708,0,76,-109,68 2 0227 ring
+ho 333,0,207,0,12 0 0230 ogonek
+lq 500,733,0,25,-48,25 2 0231 quotedblleft
+rq 500,733,0,25,-48,25 2 0232 quotedblright
+oe 669,482,11,35,33,35 0 0233 oe
+/l 278,733,9,74,60,68 2 0234 lslash
+Bq 500,120,122,0,7 0 0235 quotedblbase
+OE 1028,706,18,11,-6,11 2 0236 OE
+/L 556,692,3,17,66,17 2 0237 Lslash
+r! 333,467,276,0,35 1 0241 exclamdown
+char161 "
+ct 500,551,96,0,-6 0 0242 cent
+char162 "
+Po 500,708,18,29,48,29 2 0243 sterling
+char163 "
+Cs 500,577,0,36,36,36 0 0244 currency
+char164 "
+Ye 500,699,3,62,15,62 2 0245 yen
+char165 "
+bb 606,733,0,0,-225 2 0246 brokenbar
+char166 "
+sc 500,706,220,13,36,13 2 0247 section
+char167 "
+ad 333,637,0,95,-28,68 0 0250 dieresis
+char168 "
+co 747,706,18,39,39,39 2 0251 copyright
+char169 "
+Of 333,699,0,38,-10,38 2 0252 ordfeminine
+char170 "
+fo 333,440,0,0,-7 0 0253 guilsinglleft
+no 606,378,0,0,-1 0 0254 logicalnot
+char172 "
+\- 606,280,0,0,-1 0 0255 minus
+rg 747,706,18,39,39,39 2 0256 registered
+char174 "
+a- 333,589,0,103,-24,68 0 0257 macron
+char175 "
+de 400,689,0,40,-40,40 2 0260 degree
+char176 "
+char177 606,504,0,0,-1 0 0261 plusminus
+S2 300,699,0,40,37,40 2 0262 twosuperior
+char178 "
+S3 300,699,0,54,22,54 2 0263 threesuperior
+char179 "
+aa 333,687,0,63,-72,63 2 0264 acute
+char180 "
+char181 556,482,226,6,35,6 0 0265 mu
+ps 500,692,224,161,17,68 2 0266 paragraph
+char182 "
+char183 250,312,0,0,-3 0 0267 periodcentered
+ac 333,0,216,0,59 0 0270 cedilla
+char184 "
+S1 300,699,0,35,-11,35 2 0271 onesuperior
+char185 "
+Om 333,699,0,39,-16,39 2 0272 ordmasculine
+char186 "
+fc 333,440,0,0,-13 0 0273 guilsinglright
+14 750,699,2,15,19,15 2 0274 onequarter
+char188 "
+12 750,699,2,21,19,21 2 0275 onehalf
+char189 "
+34 750,699,2,15,15,15 2 0276 threequarters
+char190 "
+r? 500,467,246,0,-7 0 0277 questiondown
+char191 "
+`A 722,897,3,5,69,5 2 0300 Agrave
+char192 "
+'A 722,897,3,5,69,5 2 0301 Aacute
+char193 "
+^A 722,889,3,5,69,5 2 0302 Acircumflex
+char194 "
+~A 722,866,3,5,69,5 2 0303 Atilde
+char195 "
+:A 722,847,3,5,69,5 2 0304 Adieresis
+char196 "
+oA 722,918,3,5,69,5 2 0305 Aring
+char197 "
+AE 941,692,3,11,54,11 2 0306 AE
+char198 "
+,C 667,706,216,34,5,34 2 0307 Ccedilla
+char199 "
+`E 611,897,3,9,20,9 2 0310 Egrave
+char200 "
+'E 611,897,3,9,20,9 2 0311 Eacute
+char201 "
+^E 611,889,3,9,20,9 2 0312 Ecircumflex
+char202 "
+:E 611,847,3,9,20,9 2 0313 Edieresis
+char203 "
+`I 333,897,3,71,43,68 2 0314 Igrave
+char204 "
+'I 333,897,3,123,43,68 2 0315 Iacute
+char205 "
+^I 333,889,3,107,43,68 2 0316 Icircumflex
+char206 "
+:I 333,847,3,135,43,68 2 0317 Idieresis
+char207 "
+-D 778,692,3,13,31,13 2 0320 Eth
+char208 "
+~N 778,866,11,76,48,68 2 0321 Ntilde
+char209 "
+`O 778,897,18,20,-3,20 2 0322 Ograve
+char210 "
+'O 778,897,18,20,-3,20 2 0323 Oacute
+char211 "
+^O 778,889,18,20,-3,20 2 0324 Ocircumflex
+char212 "
+~O 778,866,18,20,-3,20 2 0325 Otilde
+char213 "
+:O 778,847,18,20,-3,20 2 0326 Odieresis
+char214 "
+char215 606,474,0,0,-33 0 0327 multiply
+/O 778,721,39,34,18,34 2 0330 Oslash
+char216 "
+`U 778,897,18,70,-38,68 2 0331 Ugrave
+char217 "
+'U 778,897,18,70,-38,68 2 0332 Uacute
+char218 "
+^U 778,889,18,70,-38,68 2 0333 Ucircumflex
+char219 "
+:U 778,847,18,70,-38,68 2 0334 Udieresis
+char220 "
+'Y 667,897,3,58,-2,58 2 0335 Yacute
+char221 "
+TP 611,692,3,9,41,9 2 0336 Thorn
+char222 "
+ss 500,733,276,38,210,38 3 0337 germandbls
+char223 "
+`a 444,707,11,12,46,12 2 0340 agrave
+char224 "
+'a 444,707,11,20,46,20 2 0341 aacute
+char225 "
+^a 444,699,11,12,46,12 2 0342 acircumflex
+char226 "
+~a 444,650,11,52,46,52 2 0343 atilde
+char227 "
+:a 444,657,11,40,46,40 2 0344 adieresis
+char228 "
+oa 444,728,11,12,46,12 2 0345 aring
+char229 "
+ae 638,482,11,35,49,35 0 0346 ae
+char230 "
+,c 407,482,216,32,25,32 0 0347 ccedilla
+char231 "
+`e 389,707,11,35,35,35 2 0350 egrave
+char232 "
+'e 389,707,11,55,35,55 2 0351 eacute
+char233 "
+^e 389,699,11,59,35,59 2 0352 ecircumflex
+char234 "
+:e 389,657,11,67,35,67 2 0353 edieresis
+char235 "
+`i 278,707,9,43,16,43 2 0354 igrave
+char236 "
+'i 278,707,9,103,16,68 2 0355 iacute
+char237 "
+^i 278,699,9,95,21,68 2 0356 icircumflex
+char238 "
+:i 278,657,9,123,16,68 2 0357 idieresis
+char239 "
+Sd 444,733,11,84,33,68 2 0360 eth
+char240 "
+~n 556,650,9,8,26,8 2 0361 ntilde
+char241 "
+`o 444,707,11,17,33,17 2 0362 ograve
+char242 "
+'o 444,707,11,20,33,20 2 0363 oacute
+char243 "
+^o 444,699,11,17,33,17 2 0364 ocircumflex
+char244 "
+~o 444,650,11,52,33,52 2 0365 otilde
+char245 "
+:o 444,657,11,40,33,40 2 0366 odieresis
+char246 "
+char247 606,504,0,0,-1 0 0367 divide
+/o 444,510,24,66,68,66 0 0370 oslash
+char248 "
+`u 556,707,11,6,18,6 2 0371 ugrave
+char249 "
+'u 556,707,11,6,18,6 2 0372 uacute
+char250 "
+^u 556,699,11,6,18,6 2 0373 ucircumflex
+char251 "
+:u 556,657,11,6,18,6 2 0374 udieresis
+char252 "
+'y 500,707,276,40,58,40 3 0375 yacute
+char253 "
+Tp 500,733,276,0,89 3 0376 thorn
+char254 "
+:y 500,657,276,40,58,40 3 0377 ydieresis
+char255 "
diff --git a/devps/PR b/devps/PR
new file mode 100644
index 000000000..4dd5626d4
--- /dev/null
+++ b/devps/PR
@@ -0,0 +1,456 @@
+name PR
+internalname Palatino-Roman
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -74
+A w -74
+A v -92
+A ' -74
+A Y -111
+A W -74
+A V -111
+A T -74
+F . -92
+F , -92
+F A -74
+L y -55
+L ' -74
+L Y -92
+L W -74
+L V -92
+L T -74
+P . -129
+P , -129
+P A -92
+R y -37
+R Y -37
+R W -37
+R V -55
+R T -37
+T y -90
+T w -90
+T u -90
+T ; -55
+T s -90
+T r -90
+T . -74
+T o -92
+T i -55
+T - -55
+T hy -55
+T char173 -55
+T e -92
+T , -74
+T : -55
+T c -111
+T a -92
+T O -18
+T A -74
+V y -92
+V u -92
+V ; -55
+V r -92
+V . -129
+V o -111
+V i -55
+V - -74
+V hy -74
+V char173 -74
+V e -111
+V , -129
+V : -55
+V a -92
+V A -111
+W y -50
+W u -50
+W ; -18
+W r -74
+W . -92
+W o -92
+W i -55
+W - -55
+W hy -55
+W char173 -55
+W e -92
+W , -92
+W : -18
+W a -92
+W A -92
+Y v -90
+Y u -90
+Y ; -74
+Y q -90
+Y . -111
+Y p -111
+Y o -92
+Y i -55
+Y - -92
+Y hy -92
+Y char173 -92
+Y e -92
+Y , -111
+Y : -74
+Y a -92
+Y A -92
+f ' 55
+f f -18
+1 1 -55
+` ` -37
+` oq -37
+oq ` -37
+oq oq -37
+' ' -37
+r u -8
+r ' 74
+r q -18
+r . -74
+r o -18
+r - -18
+r hy -18
+r char173 -18
+r h -18
+r g -18
+r e -18
+r d -18
+r , -74
+r c -18
+v . -111
+v , -111
+w . -92
+w , -92
+y . -111
+y , -111
+charset
+ha 606,689 2 0000 asciicircum
+ti 606,347 0 0001 asciitilde
+vS 525,908,20 2 0002 Scaron
+vZ 667,908,3 2 0003 Zcaron
+vs 424,685,20 2 0004 scaron
+vz 500,685,3 2 0005 zcaron
+:Y 667,868,3 2 0006 Ydieresis
+tm 979,689 2 0007 trademark
+aq 208,709 2 0010 quotesingle
+space 250 0 0040
+! 278,694,5 2 0041 exclam
+" 371,709 2 0042 quotedbl
+# 500,684 2 0043 numbersign
+sh "
+$ 500,731,116 2 0044 dollar
+Do "
+% 840,709,20 2 0045 percent
+& 778,689,20 2 0046 ampersand
+' 278,709 2 0047 quoteright
+( 333,726,215 2 0050 parenleft
+) 333,726,215 2 0051 parenright
+* 389,689 2 0052 asterisk
++ 606,512 0 0053 plus
+, 250,123,155 0 0054 comma
+- 333,287 0 0055 hyphen
+hy "
+char173 "
+. 250,111,5 0 0056 period
+/ 606,726,119 2 0057 slash
+sl "
+0 500,689,20 2 0060 zero
+1 500,694,3 2 0061 one
+2 500,689,3 2 0062 two
+3 500,689,20 2 0063 three
+4 500,694,3 2 0064 four
+5 500,689,20 2 0065 five
+6 500,689,20 2 0066 six
+7 500,689,3 2 0067 seven
+8 500,689,20 2 0070 eight
+9 500,689,20 2 0071 nine
+: 250,456,5 0 0072 colon
+; 250,456,153 0 0073 semicolon
+< 606,522 0 0074 less
+= 606,386 0 0075 equal
+> 606,522 0 0076 greater
+? 444,694,5 2 0077 question
+@ 747,694,20 2 0100 at
+at "
+A 778,700,3 2 0101 A
+B 611,692,3 2 0102 B
+C 709,709,20 2 0103 C
+D 774,692,3 2 0104 D
+E 611,692,3 2 0105 E
+F 556,692,3 2 0106 F
+G 763,709,20 2 0107 G
+H 832,692,3 2 0110 H
+I 337,692,3 2 0111 I
+J 333,692,194 2 0112 J
+K 726,692,3 2 0113 K
+L 611,692,3 2 0114 L
+M 946,692,13 2 0115 M
+N 831,692,20 2 0116 N
+O 786,709,20 2 0117 O
+P 604,692,3 2 0120 P
+Q 786,709,176 2 0121 Q
+R 668,692,3 2 0122 R
+S 525,709,20 2 0123 S
+T 613,692,3 2 0124 T
+U 778,692,20 2 0125 U
+V 722,692,9 2 0126 V
+W 1000,700,9 2 0127 W
+X 667,700,3 2 0130 X
+Y 667,704,3 2 0131 Y
+Z 667,692,3 2 0132 Z
+[ 333,726,184 2 0133 bracketleft
+lB "
+\ 606,726 2 0134 backslash
+rs "
+] 333,726,184 2 0135 bracketright
+rB "
+a^ 333,677 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 278,709 2 0140 quoteleft
+oq "
+a 500,469,12 0 0141 a
+b 553,726,12 2 0142 b
+c 444,469,20 0 0143 c
+d 611,726,12 2 0144 d
+e 479,469,20 0 0145 e
+f 333,728,3 2 0146 f
+g 556,469,283 1 0147 g
+h 582,726,3 2 0150 h
+i 291,687,3 2 0151 i
+j 234,688,283 3 0152 j
+k 556,726,12 2 0153 k
+l 291,726,3 2 0154 l
+m 883,469,3 0 0155 m
+n 582,469,3 0 0156 n
+o 546,469,20 0 0157 o
+p 601,469,281 1 0160 p
+q 560,469,281 1 0161 q
+r 395,469,3 0 0162 r
+s 424,469,20 0 0163 s
+t 326,621,12 2 0164 t
+u 603,469,12 0 0165 u
+v 565,459,7 0 0166 v
+w 834,469,7 0 0167 w
+x 516,469,3 0 0170 x
+y 556,459,283 1 0171 y
+z 500,462,3 0 0172 z
+lC 333,726,175 2 0173 braceleft
+{ "
+ba 606,726 2 0174 bar
+| "
+rC 333,726,175 2 0175 braceright
+} "
+a~ 333,640 2 0176 tilde
+~ "
+bq 278,110,153 0 0200 quotesinglbase
+Fo 500,428 0 0201 guillemotleft
+char171 "
+Fc 500,428 0 0202 guillemotright
+char187 "
+bu 606,516 0 0203 bullet
+Fn 500,706,262 2 0204 florin
+f/ 167,689 2 0205 fraction
+%0 1144,709,20 2 0206 perthousand
+dg 500,694,5 2 0207 dagger
+dd 500,694,249 2 0210 daggerdbl
+en 500,277 0 0211 endash
+em 1000,277 0 0212 emdash
+fi 605,728,3 2 0214 fi
+fl 608,728,3 2 0215 fl
+.i 287,469,3 0 0220 dotlessi
+ga 333,677 2 0222 grave
+a" 380,687 2 0223 hungarumlaut
+a. 250,637 2 0224 dotaccent
+ab 333,664 2 0225 breve
+ah 333,677 2 0226 caron
+ao 333,696 2 0227 ring
+ho 313,0,165 0 0230 ogonek
+lq 500,709 2 0231 quotedblleft
+rq 500,709 2 0232 quotedblright
+oe 827,469,20 0 0233 oe
+/l 291,726,3 2 0234 lslash
+Bq 500,110,153 0 0235 quotedblbase
+OE 998,709,20 2 0236 OE
+/L 611,692,3 2 0237 Lslash
+r! 278,469,225 0 0241 exclamdown
+char161 "
+ct 500,562,101 0 0242 cent
+char162 "
+Po 500,694,13 2 0243 sterling
+char163 "
+Cs 500,531 0 0244 currency
+char164 "
+Ye 500,701,3 2 0245 yen
+char165 "
+bb 606,726 2 0246 brokenbar
+char166 "
+sc 500,709,219 2 0247 section
+char167 "
+ad 333,637 2 0250 dieresis
+char168 "
+co 747,706,18 2 0251 copyright
+char169 "
+Of 333,709 2 0252 ordfeminine
+char170 "
+fo 331,428 0 0253 guilsinglleft
+no 606,386 0 0254 logicalnot
+char172 "
+\- 606,289 0 0255 minus
+rg 747,706,18 2 0256 registered
+char174 "
+a- 333,591 0 0257 macron
+char175 "
+de 400,689 2 0260 degree
+char176 "
+char177 606,512 0 0261 plusminus
+S2 300,689 2 0262 twosuperior
+char178 "
+S3 300,689 2 0263 threesuperior
+char179 "
+aa 333,677 2 0264 acute
+char180 "
+char181 603,469,236 0 0265 mu
+ps 628,694,150 2 0266 paragraph
+char182 "
+char183 250,319 0 0267 periodcentered
+ac 333,0,225 0 0270 cedilla
+char184 "
+S1 300,692 2 0271 onesuperior
+char185 "
+Om 333,709 2 0272 ordmasculine
+char186 "
+fc 331,428 0 0273 guilsinglright
+14 750,692,3 2 0274 onequarter
+char188 "
+12 750,692,3 2 0275 onehalf
+char189 "
+34 750,689,3 2 0276 threequarters
+char190 "
+r? 444,469,231 0 0277 questiondown
+char191 "
+`A 778,908,3 2 0300 Agrave
+char192 "
+'A 778,908,3 2 0301 Aacute
+char193 "
+^A 778,908,3 2 0302 Acircumflex
+char194 "
+~A 778,871,3 2 0303 Atilde
+char195 "
+:A 778,868,3 2 0304 Adieresis
+char196 "
+oA 778,927,3 2 0305 Aring
+char197 "
+AE 944,692,3 2 0306 AE
+char198 "
+,C 709,709,225 2 0307 Ccedilla
+char199 "
+`E 611,908,3 2 0310 Egrave
+char200 "
+'E 611,908,3 2 0311 Eacute
+char201 "
+^E 611,908,3 2 0312 Ecircumflex
+char202 "
+:E 611,868,3 2 0313 Edieresis
+char203 "
+`I 337,908,3 2 0314 Igrave
+char204 "
+'I 337,908,3 2 0315 Iacute
+char205 "
+^I 337,908,3 2 0316 Icircumflex
+char206 "
+:I 337,868,3 2 0317 Idieresis
+char207 "
+-D 774,692,3 2 0320 Eth
+char208 "
+~N 831,871,20 2 0321 Ntilde
+char209 "
+`O 786,908,20 2 0322 Ograve
+char210 "
+'O 786,908,20 2 0323 Oacute
+char211 "
+^O 786,908,20 2 0324 Ocircumflex
+char212 "
+~O 786,883,20 2 0325 Otilde
+char213 "
+:O 786,868,20 2 0326 Odieresis
+char214 "
+char215 606,474 0 0327 multiply
+/O 833,709,20 2 0330 Oslash
+char216 "
+`U 778,908,20 2 0331 Ugrave
+char217 "
+'U 778,908,20 2 0332 Uacute
+char218 "
+^U 778,908,20 2 0333 Ucircumflex
+char219 "
+:U 778,868,20 2 0334 Udieresis
+char220 "
+'Y 667,908,3 2 0335 Yacute
+char221 "
+TP 604,692,3 2 0336 Thorn
+char222 "
+ss 556,731,9 2 0337 germandbls
+char223 "
+`a 500,697,12 2 0340 agrave
+char224 "
+'a 500,697,12 2 0341 aacute
+char225 "
+^a 500,697,12 2 0342 acircumflex
+char226 "
+~a 500,652,12 2 0343 atilde
+char227 "
+:a 500,657,12 2 0344 adieresis
+char228 "
+oa 500,716,12 2 0345 aring
+char229 "
+ae 758,469,20 0 0346 ae
+char230 "
+,c 444,469,225 0 0347 ccedilla
+char231 "
+`e 479,697,20 2 0350 egrave
+char232 "
+'e 479,697,20 2 0351 eacute
+char233 "
+^e 479,697,20 2 0352 ecircumflex
+char234 "
+:e 479,657,20 2 0353 edieresis
+char235 "
+`i 287,697,3 2 0354 igrave
+char236 "
+'i 287,697,3 2 0355 iacute
+char237 "
+^i 287,697,3 2 0356 icircumflex
+char238 "
+:i 287,657,3 2 0357 idieresis
+char239 "
+Sd 546,728,20 2 0360 eth
+char240 "
+~n 582,652,3 2 0361 ntilde
+char241 "
+`o 546,697,20 2 0362 ograve
+char242 "
+'o 546,697,20 2 0363 oacute
+char243 "
+^o 546,697,20 2 0364 ocircumflex
+char244 "
+~o 546,652,20 2 0365 otilde
+char245 "
+:o 546,657,20 2 0366 odieresis
+char246 "
+char247 606,512 0 0367 divide
+/o 556,474,23 0 0370 oslash
+char248 "
+`u 603,697,12 2 0371 ugrave
+char249 "
+'u 603,697,12 2 0372 uacute
+char250 "
+^u 603,697,12 2 0373 ucircumflex
+char251 "
+:u 603,657,12 2 0374 udieresis
+char252 "
+'y 556,697,283 3 0375 yacute
+char253 "
+Tp 601,726,281 3 0376 thorn
+char254 "
+:y 556,657,283 3 0377 ydieresis
+char255 "
diff --git a/devps/S b/devps/S
new file mode 100644
index 000000000..4c58752ed
--- /dev/null
+++ b/devps/S
@@ -0,0 +1,227 @@
+name S
+internalname Symbol
+special
+spacewidth 250
+charset
+space 250 0 0040
+! 333,672,17 3 0041 exclam
+fa 713,705 3 0042 universal
+# 500,673,16 3 0043 numbersign
+sh "
+te 549,707 3 0044 existential
+% 833,655,36 3 0045 percent
+& 778,661,18 3 0046 ampersand
+st 439,500,17 3 0047 suchthat
+( 333,673,191 3 0050 parenleft
+) 333,673,191 3 0051 parenright
+** 500,551 3 0052 asteriskmath
++ 549,533 3 0053 plus
+pl "
+, 250,104,152 3 0054 comma
+\- 549,288 3 0055 minus
+mi "
+. 250,95,17 3 0056 period
+/ 278,646,18 3 0057 slash
+sl "
+0 500,685,17 3 0060 zero
+1 500,673 3 0061 one
+2 500,686 3 0062 two
+3 500,685,17 3 0063 three
+4 500,685 3 0064 four
+5 500,685,17 3 0065 five
+6 500,685,17 3 0066 six
+7 500,673,16 3 0067 seven
+8 500,685,18 3 0070 eight
+9 500,685,18 3 0071 nine
+: 278,460,17 3 0072 colon
+; 278,460,152 3 0073 semicolon
+< 549,522 3 0074 less
+= 549,390 3 0075 equal
+eq "
+> 549,522 3 0076 greater
+? 444,686,17 3 0077 question
+=~ 549,475 3 0100 congruent
+*A 722,673 3 0101 Alpha
+*B 667,673 3 0102 Beta
+*X 722,673 3 0103 Chi
+*D 612,688 3 0104 Delta
+*E 611,673 3 0105 Epsilon
+*F 763,673 3 0106 Phi
+*G 603,673 3 0107 Gamma
+*Y 722,673 3 0110 Eta
+*I 333,673 3 0111 Iota
++h 631,689,18 3 0112 theta1
+*K 722,673 3 0113 Kappa
+*L 686,688 3 0114 Lambda
+*M 889,673 3 0115 Mu
+*N 722,673,8 3 0116 Nu
+*O 722,685,17 3 0117 Omicron
+*P 768,673 3 0120 Pi
+*H 741,685,17 3 0121 Theta
+*R 556,673 3 0122 Rho
+*S 592,673 3 0123 Sigma
+*T 611,673 3 0124 Tau
+--- 690,673 3 0125 Upsilon
+ts 439,500,233 3 0126 sigma1
+*W 768,688 3 0127 Omega
+*C 645,673 3 0130 Xi
+*Q 795,684 3 0131 Psi
+*Z 611,673 3 0132 Zeta
+[ 333,674,155 3 0133 bracketleft
+lB "
+3d 863,478 3 0134 therefore
+tf "
+] 333,674,155 3 0135 bracketright
+rB "
+pp 658,674 3 0136 perpendicular
+_ 500,0,252 3 0137 underscore
+rn 500,917 3 0140 radicalex
+*a 631,500,18 3 0141 alpha
+*b 549,741,223 3 0142 beta
+*x 549,499,231 3 0143 chi
+*d 494,740,19 3 0144 delta
+*e 439,502,19 3 0145 epsilon
+*f 521,671,224 3 0146 phi
+*g 411,499,225 3 0147 gamma
+*y 603,514,202 3 0150 eta
+*i 329,503,17 3 0151 iota
++f 603,499,224 3 0152 phi1
+*k 549,501 3 0153 kappa
+*l 549,739,17 3 0154 lambda
+char181 576,500,223 3 0155 mu
+*m "
+*n 521,507,16 3 0156 nu
+*o 549,499,19 3 0157 omicron
+*p 549,487,19 3 0160 pi
+*h 521,690,17 3 0161 theta
+*r 549,499,230 3 0162 rho
+*s 603,500,21 3 0163 sigma
+*t 439,500,19 3 0164 tau
+*u 576,507,18 3 0165 upsilon
++p 713,583,18 3 0166 omega1
+*w 686,500,17 3 0167 omega
+*c 493,766,224 3 0170 xi
+*q 686,500,228 3 0171 psi
+*z 494,756,225 3 0172 zeta
+lC 480,673,183 3 0173 braceleft
+{ "
+ba 200,673,177 3 0174 bar
+| "
+rC 480,673,183 3 0175 braceright
+} "
+ap 549,307 3 0176 similar
+*U 620,685 3 0241 Upsilon1
+fm 247,735 3 0242 minute
+<= 549,639 3 0243 lessequal
+f/ 167,677,12 3 0244 fraction
+if 713,404 3 0245 infinity
+Fn 500,686,193 3 0246 florin
+CL 753,533,26 3 0247 club
+DI 753,550,36 3 0250 diamond
+HE 753,532,33 3 0251 heart
+SP 753,548,36 3 0252 spade
+<> 1042,511,15 3 0253 arrowboth
+<- 987,511,15 3 0254 arrowleft
+ua 603,910 3 0255 arrowup
+arrowverttp "
+-> 987,511,15 3 0256 arrowright
+da 603,888,22 3 0257 arrowdown
+arrowvertbt "
+de 400,685 3 0260 degree
+char176 "
+char177 549,645 3 0261 plusminus
++- "
+sd 411,737 3 0262 second
+>= 549,639 3 0263 greaterequal
+char215 549,524 3 0264 multiply
+mu "
+pt 713,404 3 0265 proportional
+pd 494,746,20 3 0266 partialdiff
+bu 460,473 3 0267 bullet
+char247 549,456 3 0270 divide
+di "
+!= 549,549,25 3 0271 notequal
+== 549,443 3 0272 equivalence
+~~ 549,394 3 0273 approxequal
+~= "
+--- 1000,95,17 3 0274 ellipsis
+arrowvertex 603,1010,120 3 0275 arrowvertex
+--- 1000,276 3 0276 arrowhorizex
+CR 658,629,16 3 0277 carriagereturn
+Ah 823,658,18 3 0300 aleph
+Im 686,740,53 3 0301 Ifraktur
+Re 795,734,15 3 0302 Rfraktur
+wp 987,573,211 3 0303 weierstrass
+c* 768,673,17 3 0304 circlemultiply
+c+ 768,675,15 3 0305 circleplus
+es 823,719,24 3 0306 emptyset
+ca 768,509 3 0307 intersection
+cu 768,492,17 3 0310 union
+sp 713,470 3 0311 propersuperset
+ip 713,470,125 3 0312 reflexsuperset
+--- 713,540,70 3 0313 notsubset
+sb 713,470 3 0314 propersubset
+ib 713,470,125 3 0315 reflexsubset
+mo 713,468 3 0316 element
+nm 713,555,58 3 0317 notelement
+/_ 768,673 3 0320 angle
+gr 713,718,19 3 0321 gradient
+--- 790,673,17 3 0322 registerserif
+--- 790,675,15 3 0323 copyrightserif
+--- 890,673 3 0324 trademarkserif
+product 823,751,101 3 0325 product
+sr 549,917,38 3 0326 radical
+md 250,310 3 0327 dotmath
+no 713,288 3 0330 logicalnot
+char172 "
+AN 603,454 3 0331 logicaland
+OR 603,477 3 0332 logicalor
+hA 1042,510,20 3 0333 arrowdblboth
+lA 987,513,15 3 0334 arrowdblleft
+uA 603,911 3 0335 arrowdblup
+rA 987,508,20 3 0336 arrowdblright
+dA 603,890,19 3 0337 arrowdbldown
+lz 494,745 3 0340 lozenge
+la 329,746,198 3 0341 angleleft
+--- 790,670,20 3 0342 registersans
+--- 790,675,15 3 0343 copyrightsans
+--- 786,673 3 0344 trademarksans
+sum 713,752,108 3 0345 summation
+parenlefttp 384,926,293 3 0346 parenlefttp
+parenleftex 384,920,80 3 0347 parenleftex
+parenleftbt 384,920,293 3 0350 parenleftbt
+bracketlefttp 384,925,75 3 0351 bracketlefttp
+lc "
+bracketleftex 384,925,75 3 0352 bracketleftex
+bracketleftbt 384,925,75 3 0353 bracketleftbt
+lf "
+bracelefttp 494,925,75 3 0354 bracelefttp
+lt "
+braceleftmid 494,925,75 3 0355 braceleftmid
+lk "
+braceleftbt 494,925,75 3 0356 braceleftbt
+lb "
+braceex 494,925,75 3 0357 braceex
+bracerightex "
+braceleftex "
+barex "
+bv "
+ra 329,746,198 3 0361 angleright
+is 274,916,107,67,52,-10 3 0362 integral
+--- 686,921,83 3 0363 integraltp
+--- 686,975,88 3 0364 integralex
+--- 686,921,81 3 0365 integralbt
+parenrighttp 384,926,293 3 0366 parenrighttp
+parenrightex 384,920,80 3 0367 parenrightex
+parenrightbt 384,920,293 3 0370 parenrightbt
+bracketrighttp 384,925,75 3 0371 bracketrighttp
+rc "
+bracketrightex 384,925,75 3 0372 bracketrightex
+bracketrightbt 384,925,75 3 0373 bracketrightbt
+rf "
+bracerighttp 494,925,75 3 0374 bracerighttp
+rt "
+bracerightmid 494,925,75 3 0375 bracerightmid
+rk "
+bracerightbt 494,925,75 3 0376 bracerightbt
+rb "
diff --git a/devps/SS b/devps/SS
new file mode 100644
index 000000000..02b999c17
--- /dev/null
+++ b/devps/SS
@@ -0,0 +1,194 @@
+name SS
+internalname Symbol-Slanted
+special
+slant 15.5
+spacewidth 223
+charset
+space 223 0 0040
+--- 296,599,15,137,-72,99 3 0041 exclam
+--- 635,627,0,216,-173,99 3 0042 universal
+--- 445,599,15,162,-21,99 3 0043 numbersign
+--- 489,629,0,183,28,99 3 0044 existential
+--- 741,583,32,75,-97,75 3 0045 percent
+--- 692,589,16,103,-18,99 3 0046 ampersand
+--- 391,444,15,109,6,99 3 0047 suchthat
+--- 296,599,170,203,-39,99 3 0050 parenleft
+--- 296,600,170,93,72,93 3 0051 parenright
+--- 445,490,0,105,-76,99 3 0052 asteriskmath
+--- 489,474,0,123,-26,99 3 0053 plus
+--- 223,93,136,10,41,10 3 0054 comma
+--- 489,256,0,117,-24,99 3 0055 minus
+--- 223,85,15,1,-20,1 3 0056 period
+--- 247,575,15,208,55,99 3 0057 slash
+--- 445,610,15,142,-40,99 3 0060 zero
+--- 445,599,0,56,-57,56 3 0061 one
+--- 445,611,0,129,28,99 3 0062 two
+--- 445,611,16,115,-6,99 3 0063 three
+--- 445,610,0,135,-8,99 3 0064 four
+--- 445,610,15,188,14,99 3 0065 five
+--- 445,610,16,193,-37,99 3 0066 six
+--- 445,599,15,190,-101,99 3 0067 seven
+--- 445,611,16,141,-32,99 3 0070 eight
+--- 445,609,15,140,-2,99 3 0071 nine
+--- 247,409,15,89,-31,89 3 0072 colon
+--- 247,409,136,99,17,99 3 0073 semicolon
+--- 489,464,0,171,-37,99 3 0074 less
+--- 489,347,0,147,1,99 3 0075 equal
+--- 489,464,0,108,27,99 3 0076 greater
+--- 395,610,15,172,-113,99 3 0077 question
+--- 489,423,0,158,40,99 3 0100 congruent
+--- 643,599,0,21,47,21 3 0101 Alpha
+--- 594,598,0,101,24,99 3 0102 Beta
+--- 643,599,0,205,58,99 3 0103 Chi
+--- 545,612,0,46,45,46 3 0104 Delta
+--- 544,599,0,194,22,99 3 0105 Epsilon
+--- 679,598,0,132,-55,99 3 0106 Phi
+--- 537,599,0,227,19,99 3 0107 Gamma
+--- 643,599,0,243,15,99 3 0110 Eta
+--- 296,599,0,222,22,99 3 0111 Iota
++h 562,614,15,133,-58,99 3 0112 theta1
+--- 643,598,0,185,19,99 3 0113 Kappa
+--- 611,612,0,49,45,49 3 0114 Lambda
+--- 791,599,0,233,22,99 3 0115 Mu
+--- 643,599,7,234,24,99 3 0116 Nu
+--- 643,610,15,154,-62,99 3 0117 Omicron
+--- 684,599,0,213,28,99 3 0120 Pi
+--- 659,610,15,138,-62,99 3 0121 Theta
+--- 495,599,0,200,25,99 3 0122 Rho
+--- 527,599,0,186,45,99 3 0123 Sigma
+--- 544,599,0,229,-109,99 3 0124 Tau
+--- 614,599,0,240,-125,99 3 0125 Upsilon
+ts 391,445,208,151,-28,99 3 0126 sigma1
+--- 684,612,0,126,20,99 3 0127 Omega
+--- 574,598,0,176,14,99 3 0130 Xi
+--- 708,608,0,227,-138,99 3 0131 Psi
+--- 544,599,0,231,11,99 3 0132 Zeta
+--- 296,599,138,207,16,99 3 0133 bracketleft
+--- 768,426,0,0,-110 3 0134 therefore
+--- 296,599,138,159,64,99 3 0135 bracketright
+--- 586,600,0,60,37,60 3 0136 perpendicular
+--- 445,0,224,0,122 3 0137 underscore
+--- 445,816,0,829,-622,99 3 0140 radicalex
+*a 562,445,15,146,-34,99 3 0141 alpha
+*b 489,659,198,139,57,99 3 0142 beta
+*x 489,445,206,134,98,99 3 0143 chi
+*d 440,658,16,181,-33,99 3 0144 delta
+*e 391,447,17,127,1,99 3 0145 epsilon
+*f 464,596,200,103,-28,99 3 0146 phi
+*g 366,444,200,252,-42,99 3 0147 gamma
+*y 537,457,180,68,-50,68 3 0150 eta
+*i 293,448,16,53,-47,53 3 0151 iota
++f 537,444,199,117,-42,99 3 0152 phi1
+*k 489,447,0,182,-56,99 3 0153 kappa
+*l 489,658,16,91,29,91 3 0154 lambda
+*m 513,445,198,70,68,70 3 0155 mu
+*n 464,451,15,134,-69,99 3 0156 nu
+*o 489,444,17,87,-36,87 3 0157 omicron
+*p 489,433,18,160,-8,99 3 0160 pi
+*h 464,614,16,140,-53,99 3 0161 theta
+*r 489,444,205,82,69,82 3 0162 rho
+*s 537,445,19,175,-37,99 3 0163 sigma
+*t 391,445,16,170,-45,99 3 0164 tau
+*u 513,451,15,95,-55,95 3 0165 upsilon
++p 635,519,15,173,-28,99 3 0166 omega1
+*w 611,445,16,126,-35,99 3 0167 omega
+*c 439,681,200,126,-20,99 3 0170 xi
+*q 611,445,203,198,-91,99 3 0171 psi
+*z 440,673,200,190,-50,99 3 0172 zeta
+--- 427,599,163,163,-66,99 3 0173 braceleft
+--- 178,599,158,179,41,99 3 0174 bar
+--- 427,599,163,67,31,67 3 0175 braceright
+--- 489,273,0,110,-28,99 3 0176 similar
+--- 552,609,0,208,-84,99 3 0241 Upsilon1
+--- 220,654,0,223,-106,99 3 0242 minute
+--- 489,569,0,206,24,99 3 0243 lessequal
+--- 149,603,11,391,214,99 3 0244 fraction
+--- 635,360,0,107,-41,99 3 0245 infinity
+--- 445,612,172,219,86,99 3 0246 florin
+--- 670,474,23,25,-69,25 3 0247 club
+--- 670,490,32,0,-148 3 0250 diamond
+--- 670,473,29,59,-155,59 3 0251 heart
+--- 670,488,32,0,-82 3 0252 spade
+--- 927,455,13,103,-40,99 3 0253 arrowboth
+--- 878,455,13,87,-47,87 3 0254 arrowleft
+--- 537,810,0,204,-173,99 3 0255 arrowup
+--- 878,455,13,94,-55,94 3 0256 arrowright
+--- 537,790,20,85,-54,85 3 0257 arrowdown
+--- 356,609,0,160,-137,99 3 0260 degree
+--- 489,574,0,154,41,99 3 0261 plusminus
+--- 366,656,0,244,-100,99 3 0262 second
+--- 489,569,0,143,24,99 3 0263 greaterequal
+--- 489,466,0,170,22,99 3 0264 multiply
+--- 635,360,0,82,-40,82 3 0265 proportional
+--- 440,664,18,152,-12,99 3 0266 partialdiff
+--- 409,421,0,95,-68,95 3 0267 bullet
+--- 489,406,0,119,-24,99 3 0270 divide
+--- 489,489,22,148,-1,99 3 0271 notequal
+--- 489,394,0,163,15,99 3 0272 equivalence
+--- 489,351,0,133,-7,99 3 0273 approxequal
+--- 890,85,15,0,-57 3 0274 ellipsis
+--- 537,899,107,92,-166,92 3 0275 arrowvertex
+--- 890,246,0,171,42,99 3 0276 arrowhorizex
+--- 586,560,14,174,10,99 3 0277 carriagereturn
+--- 732,586,16,58,-109,58 3 0300 aleph
+--- 611,659,47,123,24,99 3 0301 Ifraktur
+--- 708,653,13,175,-21,99 3 0302 Rfraktur
+--- 878,510,188,50,-62,50 3 0303 weierstrass
+--- 684,599,15,124,-64,99 3 0304 circlemultiply
+--- 684,601,13,125,-65,99 3 0305 circleplus
+--- 732,640,21,202,12,99 3 0306 emptyset
+--- 684,453,0,80,14,80 3 0307 intersection
+--- 684,438,15,154,-60,99 3 0310 union
+--- 635,418,0,90,32,90 3 0311 propersuperset
+--- 635,418,111,89,67,89 3 0312 reflexsuperset
+--- 635,481,62,159,-37,99 3 0313 notsubset
+--- 635,418,0,159,-37,99 3 0314 propersubset
+--- 635,418,111,159,34,99 3 0315 reflexsubset
+--- 635,417,0,0,-43 3 0316 element
+--- 635,494,52,0,-24 3 0317 notelement
+--- 684,599,0,199,27,99 3 0320 angle
+--- 635,639,17,220,-181,99 3 0321 gradient
+--- 703,596,18,110,-70,99 3 0322 registerserif
+--- 703,601,13,113,-72,99 3 0323 copyrightserif
+--- 792,599,0,205,-119,99 3 0324 trademarkserif
+--- 732,668,90,238,56,99 3 0325 product
+--- 489,816,34,272,-84,99 3 0326 radical
+--- 223,276,0,52,-81,52 3 0327 dotmath
+--- 635,256,0,100,-28,99 3 0330 logicalnot
+--- 537,404,0,32,29,32 3 0331 logicaland
+--- 537,424,0,152,-101,99 3 0332 logicalor
+--- 927,454,18,101,-42,99 3 0333 arrowdblboth
+--- 878,457,13,114,-46,99 3 0334 arrowdblleft
+--- 537,811,0,201,-102,99 3 0335 arrowdblup
+--- 878,452,18,89,-21,89 3 0336 arrowdblright
+--- 537,792,17,152,-53,99 3 0337 arrowdbldown
+--- 440,663,0,129,-71,99 3 0340 lozenge
+--- 293,664,176,229,-48,99 3 0341 angleleft
+--- 703,596,18,110,-70,99 3 0342 registersans
+--- 703,601,13,111,-70,99 3 0343 copyrightsans
+--- 700,599,0,182,-129,99 3 0344 trademarksans
+--- 635,669,96,171,65,99 3 0345 summation
+--- 342,824,261,350,96,99 3 0346 parenlefttp
+--- 342,823,76,46,38,46 3 0347 parenleftex
+--- 342,824,261,47,-63,47 3 0350 parenleftbt
+--- 342,824,71,268,72,99 3 0351 bracketlefttp
+--- 342,823,70,13,72,13 3 0352 bracketleftex
+--- 342,824,71,14,72,14 3 0353 bracketleftbt
+--- 440,824,67,258,-108,99 3 0354 bracelefttp
+--- 440,832,76,96,-76,96 3 0355 braceleftmid
+--- 440,824,62,94,-169,94 3 0356 braceleftbt
+--- 440,832,71,96,-107,96 3 0357 braceex
+--- 293,664,176,102,79,99 3 0361 angleright
+--- 244,815,95,305,63,99 3 0362 integral
+--- 611,820,74,312,-222,99 3 0363 integraltp
+--- 611,868,78,79,-221,79 3 0364 integralex
+--- 611,820,72,64,20,64 3 0365 integralbt
+--- 342,824,261,206,-223,99 3 0366 parenrighttp
+--- 342,823,76,365,-281,99 3 0367 parenrightex
+--- 342,824,261,365,80,99 3 0370 parenrightbt
+--- 342,824,71,285,-199,99 3 0371 bracketrighttp
+--- 342,823,70,285,-200,99 3 0372 bracketrightex
+--- 342,824,71,285,54,99 3 0373 bracketrightbt
+--- 440,824,67,35,-108,35 3 0374 bracerighttp
+--- 440,832,76,127,-105,99 3 0375 bracerightmid
+--- 440,824,62,94,54,94 3 0376 bracerightbt
diff --git a/devps/TB b/devps/TB
new file mode 100644
index 000000000..9dae3ad18
--- /dev/null
+++ b/devps/TB
@@ -0,0 +1,533 @@
+name TB
+internalname Times-Bold
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -74
+A w -90
+A v -100
+A u -50
+A ' -74
+A p -25
+A Y -100
+A W -130
+A V -145
+A U -50
+A T -95
+A Q -45
+A O -45
+A G -55
+A C -55
+B U -10
+B A -30
+D . -20
+D Y -40
+D W -40
+D V -40
+D A -35
+F . -110
+F o -25
+F e -25
+F , -92
+F a -25
+F A -90
+J u -15
+J . -20
+J o -15
+J e -15
+J a -15
+J A -30
+K y -45
+K u -15
+K o -25
+K e -25
+K O -30
+L y -55
+L ' -110
+L rq -20
+L Y -92
+L W -92
+L V -92
+L T -92
+N A -20
+O Y -50
+O X -40
+O W -50
+O V -50
+O T -40
+O A -40
+P . -110
+P o -20
+P e -20
+P , -92
+P a -10
+P A -74
+Q . -20
+Q U -10
+R Y -35
+R W -35
+R V -55
+R U -30
+R T -40
+R O -30
+T y -74
+T w -74
+T u -92
+T ; -74
+T r -74
+T . -90
+T o -92
+T i -18
+T - -92
+T hy -92
+T char173 -92
+T e -92
+T , -74
+T : -74
+T a -92
+T O -18
+T A -90
+U . -50
+U , -50
+U A -60
+V u -92
+V ; -92
+V . -145
+V o -100
+V i -37
+V - -74
+V hy -74
+V char173 -74
+V e -100
+V , -129
+V : -92
+V a -92
+V O -45
+V G -30
+V A -135
+W y -60
+W u -50
+W ; -55
+W . -92
+W o -75
+W i -18
+W - -37
+W hy -37
+W char173 -37
+W e -65
+W , -92
+W : -55
+W a -65
+W O -10
+W A -120
+Y u -92
+Y ; -92
+Y . -92
+Y o -111
+Y i -37
+Y - -92
+Y hy -92
+Y char173 -92
+Y e -111
+Y , -92
+Y : -92
+Y a -85
+Y O -35
+Y A -110
+a v -25
+b v -15
+b u -20
+b . -40
+b b -10
+, ' -55
+, rq -45
+d w -15
+e v -15
+f ' 55
+f rq 50
+f . -15
+f o -25
+f i -25
+f .i -35
+f , -15
+g . -15
+h y -15
+i v -10
+k y -15
+k o -15
+k e -10
+n v -40
+o w -10
+o v -10
+. ' -55
+. rq -55
+lq A -10
+` ` -63
+` oq -63
+oq ` -63
+oq oq -63
+` A -10
+oq A -10
+' v -20
+' s -37
+' r -20
+' ' -63
+' d -20
+r v -10
+r q -18
+r . -100
+r p -10
+r o -18
+r n -15
+r - -37
+r hy -37
+r char173 -37
+r g -10
+r e -18
+r , -92
+r c -18
+v . -70
+v o -10
+v e -10
+v , -55
+v a -10
+w . -70
+w o -10
+w , -55
+y . -70
+y o -25
+y e -10
+y , -55
+charset
+ha 581,676 2 0000 asciicircum
+ti 520,333 0 0001 asciitilde
+vS 556,914,19 2 0002 Scaron
+vZ 667,914 2 0003 Zcaron
+vs 389,704,14 2 0004 scaron
+vz 444,704 2 0005 zcaron
+:Y 722,877 2 0006 Ydieresis
+tm 1000,676 2 0007 trademark
+aq 278,691 2 0010 quotesingle
+space 250 0 0040
+! 333,691,13 2 0041 exclam
+" 555,691 2 0042 quotedbl
+# 500,700 2 0043 numbersign
+sh "
+$ 500,750,99 2 0044 dollar
+Do "
+% 1000,692,14 2 0045 percent
+& 833,691,16 2 0046 ampersand
+' 333,691 2 0047 quoteright
+( 333,694,168 2 0050 parenleft
+) 333,694,168 2 0051 parenright
+* 500,691 2 0052 asterisk
++ 570,506 0 0053 plus
+, 250,155,180 0 0054 comma
+- 333,287 0 0055 hyphen
+hy "
+char173 "
+. 250,156,13 0 0056 period
+/ 278,691,19 2 0057 slash
+sl "
+0 500,688,13 2 0060 zero
+1 500,688 2 0061 one
+2 500,688 2 0062 two
+3 500,688,14 2 0063 three
+4 500,688 2 0064 four
+5 500,676,8 2 0065 five
+6 500,688,13 2 0066 six
+7 500,676 2 0067 seven
+8 500,688,13 2 0070 eight
+9 500,688,13 2 0071 nine
+: 333,472,13 0 0072 colon
+; 333,472,180 0 0073 semicolon
+< 570,514,8 0 0074 less
+= 570,399 0 0075 equal
+> 570,514,8 0 0076 greater
+? 500,689,13 2 0077 question
+@ 930,691,19 2 0100 at
+at "
+A 722,690 2 0101 A
+B 667,676 2 0102 B
+C 722,691,19 2 0103 C
+D 722,676 2 0104 D
+E 667,676 2 0105 E
+F 611,676 2 0106 F
+G 778,691,19 2 0107 G
+H 778,676 2 0110 H
+I 389,676 2 0111 I
+J 500,676,96 2 0112 J
+K 778,676 2 0113 K
+L 667,676 2 0114 L
+M 944,676 2 0115 M
+N 722,676,18 2 0116 N
+O 778,691,19 2 0117 O
+P 611,676 2 0120 P
+Q 778,691,176 2 0121 Q
+R 722,676 2 0122 R
+S 556,692,19 2 0123 S
+T 667,676 2 0124 T
+U 722,676,19 2 0125 U
+V 722,676,18 2 0126 V
+W 1000,676,15 2 0127 W
+X 722,676 2 0130 X
+Y 722,676 2 0131 Y
+Z 667,676 2 0132 Z
+[ 333,678,149 2 0133 bracketleft
+lB "
+\ 278,691,19 2 0134 backslash
+rs "
+] 333,678,149 2 0135 bracketright
+rB "
+a^ 333,704 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 333,691 2 0140 quoteleft
+oq "
+a 500,473,14 0 0141 a
+b 556,676,14 2 0142 b
+c 444,473,14 0 0143 c
+d 556,676,14 2 0144 d
+e 444,473,14 0 0145 e
+f 333,691 2 0146 f
+g 500,473,206 1 0147 g
+h 556,676 2 0150 h
+i 278,691 2 0151 i
+j 333,691,203 3 0152 j
+k 556,676 2 0153 k
+l 278,676 2 0154 l
+m 833,473 0 0155 m
+n 556,473 0 0156 n
+o 500,473,14 0 0157 o
+p 556,473,205 1 0160 p
+q 556,473,205 1 0161 q
+r 444,473 0 0162 r
+s 389,473,14 0 0163 s
+t 333,630,12 2 0164 t
+u 556,461,14 0 0165 u
+v 500,461,14 0 0166 v
+w 722,461,14 0 0167 w
+x 500,461 0 0170 x
+y 500,461,205 1 0171 y
+z 444,461 0 0172 z
+lC 394,698,175 2 0173 braceleft
+{ "
+ba 220,691,19 2 0174 bar
+| "
+rC 394,698,175 2 0175 braceright
+} "
+a~ 333,674 2 0176 tilde
+~ "
+bq 333,155,180 0 0200 quotesinglbase
+Fo 500,415 0 0201 guillemotleft
+char171 "
+Fc 500,415 0 0202 guillemotright
+char187 "
+bu 350,478 0 0203 bullet
+Fn 500,706,155 2 0204 florin
+f/ 167,688,12 2 0205 fraction
+%0 1000,706,29 2 0206 perthousand
+dg 500,691,134 2 0207 dagger
+dd 500,691,132 2 0210 daggerdbl
+en 500,271 0 0211 endash
+em 1000,271 0 0212 emdash
+fi 556,691 2 0214 fi
+fl 556,691 2 0215 fl
+.i 278,461 0 0220 dotlessi
+ga 333,713 2 0222 grave
+a" 333,713 2 0223 hungarumlaut
+a. 333,667 2 0224 dotaccent
+ab 333,691 2 0225 breve
+ah 333,704 2 0226 caron
+ao 333,740 2 0227 ring
+ho 333,44,173 0 0230 ogonek
+lq 500,691 2 0231 quotedblleft
+rq 500,691 2 0232 quotedblright
+oe 722,473,14 0 0233 oe
+/l 278,676 2 0234 lslash
+Bq 500,155,180 0 0235 quotedblbase
+OE 1000,684,5 2 0236 OE
+/L 667,676 2 0237 Lslash
+r! 333,501,203 1 0241 exclamdown
+char161 "
+ct 500,588,140 0 0242 cent
+char162 "
+Po 500,684,14 2 0243 sterling
+char163 "
+Cs 500,613 0 0244 currency
+char164 "
+Ye 500,676 2 0245 yen
+char165 "
+bb 220,691,19 2 0246 brokenbar
+char166 "
+sc 500,691,132 2 0247 section
+char167 "
+ad 333,667 2 0250 dieresis
+char168 "
+co 747,691,19 2 0251 copyright
+char169 "
+Of 300,688 2 0252 ordfeminine
+char170 "
+fo 333,415 0 0253 guilsinglleft
+no 570,399 0 0254 logicalnot
+char172 "
+\- 570,297 0 0255 minus
+rg 747,691,19 2 0256 registered
+char174 "
+a- 333,637 2 0257 macron
+char175 "
+de 400,688 2 0260 degree
+char176 "
+char177 570,506 0 0261 plusminus
+S2 300,688 2 0262 twosuperior
+char178 "
+S3 300,688 2 0263 threesuperior
+char179 "
+aa 333,713 2 0264 acute
+char180 "
+char181 556,461,206 1 0265 mu
+ps 540,676,186 2 0266 paragraph
+char182 "
+char183 250,417 0 0267 periodcentered
+ac 333,0,218 1 0270 cedilla
+char184 "
+S1 300,688 2 0271 onesuperior
+char185 "
+Om 330,688 2 0272 ordmasculine
+char186 "
+fc 333,415 0 0273 guilsinglright
+14 750,688,12 2 0274 onequarter
+char188 "
+12 750,688,12 2 0275 onehalf
+char189 "
+34 750,688,12 2 0276 threequarters
+char190 "
+r? 500,501,201 0 0277 questiondown
+char191 "
+`A 722,923 2 0300 Agrave
+char192 "
+'A 722,923 2 0301 Aacute
+char193 "
+^A 722,914 2 0302 Acircumflex
+char194 "
+~A 722,884 2 0303 Atilde
+char195 "
+:A 722,877 2 0304 Adieresis
+char196 "
+oA 722,935 2 0305 Aring
+char197 "
+AE 1000,676 2 0306 AE
+char198 "
+,C 722,691,218 3 0307 Ccedilla
+char199 "
+`E 667,923 2 0310 Egrave
+char200 "
+'E 667,923 2 0311 Eacute
+char201 "
+^E 667,914 2 0312 Ecircumflex
+char202 "
+:E 667,877 2 0313 Edieresis
+char203 "
+`I 389,923 2 0314 Igrave
+char204 "
+'I 389,923 2 0315 Iacute
+char205 "
+^I 389,914 2 0316 Icircumflex
+char206 "
+:I 389,877 2 0317 Idieresis
+char207 "
+-D 722,676 2 0320 Eth
+char208 "
+~N 722,884,18 2 0321 Ntilde
+char209 "
+`O 778,923,19 2 0322 Ograve
+char210 "
+'O 778,923,19 2 0323 Oacute
+char211 "
+^O 778,914,19 2 0324 Ocircumflex
+char212 "
+~O 778,884,19 2 0325 Otilde
+char213 "
+:O 778,877,19 2 0326 Odieresis
+char214 "
+char215 570,490 0 0327 multiply
+/O 778,737,74 2 0330 Oslash
+char216 "
+`U 722,923,19 2 0331 Ugrave
+char217 "
+'U 722,923,19 2 0332 Uacute
+char218 "
+^U 722,914,19 2 0333 Ucircumflex
+char219 "
+:U 722,877,19 2 0334 Udieresis
+char220 "
+'Y 722,928 2 0335 Yacute
+char221 "
+TP 611,676 2 0336 Thorn
+char222 "
+ss 556,691,12 2 0337 germandbls
+char223 "
+`a 500,713,14 2 0340 agrave
+char224 "
+'a 500,713,14 2 0341 aacute
+char225 "
+^a 500,704,14 2 0342 acircumflex
+char226 "
+~a 500,674,14 2 0343 atilde
+char227 "
+:a 500,667,14 2 0344 adieresis
+char228 "
+oa 500,740,14 2 0345 aring
+char229 "
+ae 722,473,14 0 0346 ae
+char230 "
+,c 444,473,218 1 0347 ccedilla
+char231 "
+`e 444,713,14 2 0350 egrave
+char232 "
+'e 444,713,14 2 0351 eacute
+char233 "
+^e 444,704,14 2 0352 ecircumflex
+char234 "
+:e 444,667,14 2 0353 edieresis
+char235 "
+`i 278,713 2 0354 igrave
+char236 "
+'i 278,713 2 0355 iacute
+char237 "
+^i 278,704 2 0356 icircumflex
+char238 "
+:i 278,667 2 0357 idieresis
+char239 "
+Sd 500,691,14 2 0360 eth
+char240 "
+~n 556,674 2 0361 ntilde
+char241 "
+`o 500,713,14 2 0362 ograve
+char242 "
+'o 500,713,14 2 0363 oacute
+char243 "
+^o 500,704,14 2 0364 ocircumflex
+char244 "
+~o 500,674,14 2 0365 otilde
+char245 "
+:o 500,667,14 2 0366 odieresis
+char246 "
+char247 570,537,31 0 0367 divide
+/o 500,549,92 0 0370 oslash
+char248 "
+`u 556,713,14 2 0371 ugrave
+char249 "
+'u 556,713,14 2 0372 uacute
+char250 "
+^u 556,704,14 2 0373 ucircumflex
+char251 "
+:u 556,667,14 2 0374 udieresis
+char252 "
+'y 500,713,205 3 0375 yacute
+char253 "
+Tp 556,676,205 3 0376 thorn
+char254 "
+:y 500,667,205 3 0377 ydieresis
+char255 "
diff --git a/devps/TBI b/devps/TBI
new file mode 100644
index 000000000..ba58a3af3
--- /dev/null
+++ b/devps/TBI
@@ -0,0 +1,515 @@
+name TBI
+internalname Times-BoldItalic
+slant 15
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -74
+A w -74
+A v -74
+A u -30
+A ' -74
+A Y -70
+A W -100
+A V -95
+A U -50
+A T -55
+A Q -55
+A O -50
+A G -60
+A C -65
+B U -10
+B A -25
+D Y -50
+D W -40
+D V -50
+D A -25
+F r -50
+F . -129
+F o -70
+F i -40
+F e -100
+F , -129
+F a -95
+F A -100
+J u -40
+J . -10
+J o -40
+J e -40
+J , -10
+J a -40
+J A -25
+K y -20
+K u -20
+K o -25
+K e -25
+K O -30
+L y -37
+L ' -55
+L Y -37
+L W -37
+L V -37
+L T -18
+N A -30
+O Y -50
+O X -40
+O W -50
+O V -50
+O T -40
+O A -40
+P . -129
+P o -55
+P e -50
+P , -129
+P a -40
+P A -85
+Q U -10
+R Y -18
+R W -18
+R V -18
+R U -40
+R T -30
+R O -40
+T y -37
+T w -37
+T u -37
+T ; -74
+T r -37
+T . -92
+T o -95
+T i -37
+T - -92
+T hy -92
+T char173 -92
+T e -92
+T , -92
+T : -74
+T a -92
+T O -18
+T A -55
+U A -45
+V u -55
+V ; -74
+V . -129
+V o -111
+V i -55
+V - -70
+V hy -70
+V char173 -70
+V e -111
+V , -129
+V : -74
+V a -111
+V O -30
+V G -10
+V A -85
+W y -55
+W u -55
+W ; -55
+W . -74
+W o -80
+W i -37
+W - -50
+W hy -50
+W char173 -50
+W e -90
+W , -74
+W : -55
+W a -85
+W O -15
+W A -74
+Y u -92
+Y ; -92
+Y . -74
+Y o -111
+Y i -55
+Y - -92
+Y hy -92
+Y char173 -92
+Y e -111
+Y , -92
+Y : -92
+Y a -92
+Y O -25
+Y A -74
+b u -20
+b . -40
+b b -10
+c k -10
+c h -10
+, ' -95
+, rq -95
+e b -10
+f ' 55
+f . -10
+f o -10
+f f -18
+f e -10
+f .i -30
+f , -10
+k o -10
+k e -30
+n v -40
+o y -10
+o x -10
+o w -25
+o v -15
+. ' -95
+. rq -95
+` ` -74
+` oq -74
+oq ` -74
+oq oq -74
+' v -15
+' t -37
+' s -74
+' r -15
+' ' -74
+' d -15
+r . -65
+r , -65
+v . -37
+v o -15
+v e -15
+v , -37
+w . -37
+w o -15
+w e -10
+w , -37
+w a -10
+x e -10
+y . -37
+y , -37
+charset
+ha 570,669,0,0,-17 2 0000 asciicircum
+ti 570,333,0,0,-4 0 0001 asciitilde
+vS 556,897,18,20,48,20 2 0002 Scaron
+vZ 611,897,0,29,61,29 2 0003 Zcaron
+vs 389,690,13,100,69,99 2 0004 scaron
+vz 389,690,78,85,93,85 2 0005 zcaron
+:Y 611,862,0,98,-23,98 2 0006 Ydieresis
+tm 1000,669,0,18,18,18 2 0007 trademark
+aq 278,685,0,40,-78,40 2 0010 quotesingle
+space 250 0 0040
+! 389,684,13,31,-17,31 2 0041 exclam
+" 555,685,0,31,-86,31 2 0042 quotedbl
+# 500,700,0,83,83,83 2 0043 numbersign
+sh "
+$ 500,733,100,47,70,47 2 0044 dollar
+Do "
+% 833,692,10,10,11,10 2 0045 percent
+& 778,682,19,0,45 2 0046 ampersand
+' 333,685,0,19,-48,19 2 0047 quoteright
+( 333,685,179,61,22,61 2 0050 parenleft
+) 333,685,179,0,94 2 0051 parenright
+* 500,685,0,6,-15,6 2 0052 asterisk
++ 570,506,0,17,17,17 0 0053 plus
+, 250,134,182,0,110 0 0054 comma
+- 333,282,0,0,48 0 0055 hyphen
+hy "
+char173 "
+. 250,135,13,0,59 0 0056 period
+/ 278,685,18,114,114,99 2 0057 slash
+sl "
+0 500,683,14,27,33,27 2 0060 zero
+1 500,683,0,0,45 2 0061 one
+2 500,683,0,0,77 2 0062 two
+3 500,683,13,0,65 2 0063 three
+4 500,683,0,53,65,53 2 0064 four
+5 500,669,13,37,61,37 2 0065 five
+6 500,679,15,59,27,59 2 0066 six
+7 500,669,0,75,-2,75 2 0067 seven
+8 500,683,13,26,47,26 2 0070 eight
+9 500,683,10,25,62,25 2 0071 nine
+: 333,459,13,0,27 0 0072 colon
+; 333,459,183,0,75 0 0073 semicolon
+< 570,514,8,19,19,19 0 0074 less
+= 570,399,0,17,17,17 0 0075 equal
+> 570,514,8,19,19,19 0 0076 greater
+? 500,684,13,20,-29,20 2 0077 question
+@ 832,685,18,0,-13 2 0100 at
+at "
+A 667,683,0,0,117 2 0101 A
+B 667,669,0,7,74,7 2 0102 B
+C 667,685,18,60,18,60 2 0103 C
+D 722,669,0,13,96,13 2 0104 D
+E 667,669,0,36,77,36 2 0105 E
+F 667,669,0,43,63,43 2 0106 F
+G 722,685,18,34,29,34 2 0107 G
+H 778,669,0,71,74,71 2 0110 H
+I 389,669,0,67,82,67 2 0111 I
+J 500,669,99,74,96,74 2 0112 J
+K 667,669,0,85,71,85 2 0113 K
+L 611,669,0,29,72,29 2 0114 L
+M 889,669,12,78,79,78 2 0115 M
+N 722,669,15,76,77,76 2 0116 N
+O 722,685,18,19,23,19 2 0117 O
+P 611,669,0,52,77,52 2 0120 P
+Q 722,685,208,19,23,19 3 0121 Q
+R 667,669,0,6,79,6 2 0122 R
+S 556,685,18,20,48,20 2 0123 S
+T 611,669,0,89,0,89 2 0124 T
+U 722,669,18,72,-17,72 2 0125 U
+V 667,669,18,98,-15,98 2 0126 V
+W 889,669,18,101,-15,99 2 0127 W
+X 667,669,0,77,74,77 2 0130 X
+Y 611,669,0,98,-23,98 2 0131 Y
+Z 611,669,0,29,61,29 2 0132 Z
+[ 333,674,159,79,87,79 2 0133 bracketleft
+lB "
+\ 278,685,18,51,51,51 2 0134 backslash
+rs "
+] 333,674,157,60,106,60 2 0135 bracketright
+rB "
+a^ 333,690,0,84,10,84 2 0136 circumflex
+^ "
+_ 500,0,125,50,50,50 0 0137 underscore
+` 333,685,0,49,-78,49 2 0140 quoteleft
+oq "
+a 500,462,14,5,71,5 0 0141 a
+b 500,699,13,0,64 2 0142 b
+c 444,462,13,0,55 0 0143 c
+d 500,699,13,67,71,67 2 0144 d
+e 444,462,13,4,45,4 0 0145 e
+f 333,698,205,163,219,99 3 0146 f
+g 500,462,203,28,102,28 1 0147 g
+h 556,699,9,0,63 2 0150 h
+i 278,684,9,35,48,35 2 0151 i
+j 278,684,207,51,239,51 3 0152 j
+k 500,699,8,33,73,33 2 0153 k
+l 278,699,9,62,48,62 2 0154 l
+m 778,462,9,0,64 0 0155 m
+n 556,462,9,0,56 0 0156 n
+o 500,462,13,0,53 0 0157 o
+p 500,462,205,0,170 1 0160 p
+q 500,462,205,21,49,21 1 0161 q
+r 389,462,0,50,71,50 0 0162 r
+s 389,462,13,0,69 0 0163 s
+t 278,594,9,53,61,53 2 0164 t
+u 556,462,9,0,35 0 0165 u
+v 444,462,13,7,34,7 0 0166 v
+w 667,462,13,0,34 0 0167 w
+x 500,462,13,19,96,19 0 0170 x
+y 444,462,205,0,144 1 0171 y
+z 389,449,78,29,93,29 0 0172 z
+lC 348,686,187,138,45,99 2 0173 braceleft
+{ "
+ba 220,685,18,0,-16 2 0174 bar
+| "
+rC 348,686,187,4,179,4 2 0175 braceright
+} "
+a~ 333,655,0,124,2,99 2 0176 tilde
+~ "
+bq 333,134,182,0,55 0 0200 quotesinglbase
+Fo 500,415,0,18,38,18 0 0201 guillemotleft
+char171 "
+Fc 500,415,0,18,38,18 0 0202 guillemotright
+char187 "
+bu 350,525,0,50,50,50 0 0203 bullet
+Fn 500,707,156,87,137,87 2 0204 florin
+f/ 167,683,14,207,219,99 2 0205 fraction
+%0 1000,706,29,46,43,46 2 0206 perthousand
+dg 500,685,145,44,-41,44 2 0207 dagger
+dd 500,685,139,43,40,43 2 0210 daggerdbl
+en 500,269,0,27,90,27 0 0211 endash
+em 1000,269,0,27,90,27 0 0212 emdash
+fi 556,703,205,8,238,8 3 0214 fi
+fl 556,704,205,47,236,47 3 0215 fl
+.i 278,462,9,10,48,10 0 0220 dotlessi
+ga 333,697,0,14,-35,14 2 0222 grave
+a" 333,697,0,215,-19,99 2 0223 hungarumlaut
+a. 333,655,0,10,-113,10 2 0224 dotaccent
+ab 333,678,0,104,-21,99 2 0225 breve
+ah 333,690,0,128,-29,99 2 0226 caron
+ao 333,729,0,57,-77,57 2 0227 ring
+ho 333,44,173,0,90 0 0230 ogonek
+lq 500,685,0,63,-3,63 2 0231 quotedblleft
+rq 500,685,0,63,-3,63 2 0232 quotedblright
+oe 722,462,13,2,44,2 0 0233 oe
+/l 278,699,9,73,63,73 2 0234 lslash
+Bq 500,134,182,0,107 0 0235 quotedblbase
+OE 944,677,8,52,27,52 2 0236 OE
+/L 611,669,0,29,72,29 2 0237 Lslash
+r! 389,492,205,0,31 1 0241 exclamdown
+char161 "
+ct 500,576,143,0,8 0 0242 cent
+char162 "
+Po 500,683,12,60,82,60 2 0243 sterling
+char163 "
+Cs 500,586,0,76,76,76 0 0244 currency
+char164 "
+Ye 500,669,0,178,17,99 2 0245 yen
+char165 "
+bb 220,685,18,0,-16 2 0246 brokenbar
+char166 "
+sc 500,685,143,9,14,9 2 0247 section
+char167 "
+ad 333,655,0,114,-5,99 2 0250 dieresis
+char168 "
+co 747,685,18,21,20,21 2 0251 copyright
+char169 "
+Of 266,685,0,114,34,99 2 0252 ordfeminine
+char170 "
+fo 333,415,0,20,18,20 0 0253 guilsinglleft
+no 606,399,0,0,-1 0 0254 logicalnot
+char172 "
+\- 606,297,0,0,-1 0 0255 minus
+rg 747,685,18,21,20,21 2 0256 registered
+char174 "
+a- 333,623,0,110,-1,99 2 0257 macron
+char175 "
+de 400,683,0,19,-33,19 2 0260 degree
+char176 "
+char177 570,506,0,17,17,17 0 0261 plusminus
+S2 300,683,0,63,48,63 2 0262 twosuperior
+char178 "
+S3 300,683,0,71,33,71 2 0263 threesuperior
+char179 "
+aa 333,697,0,96,-89,96 2 0264 acute
+char180 "
+char181 576,449,207,0,110 1 0265 mu
+ps 500,669,193,112,107,99 2 0266 paragraph
+char182 "
+char183 250,405,0,0,-1 0 0267 periodcentered
+ac 333,5,218,0,130 1 0270 cedilla
+char184 "
+S1 300,683,0,51,20,51 2 0271 onesuperior
+char185 "
+Om 300,685,0,97,-6,97 2 0272 ordmasculine
+char186 "
+fc 333,415,0,0,40 0 0273 guilsinglright
+14 750,683,14,21,43,21 2 0274 onequarter
+char188 "
+12 750,683,14,23,59,23 2 0275 onehalf
+char189 "
+34 750,683,14,26,43,26 2 0276 threequarters
+char190 "
+r? 500,492,205,0,20 1 0277 questiondown
+char191 "
+`A 667,904,0,0,117 2 0300 Agrave
+char192 "
+'A 667,904,0,0,117 2 0301 Aacute
+char193 "
+^A 667,897,0,0,117 2 0302 Acircumflex
+char194 "
+~A 667,862,0,0,117 2 0303 Atilde
+char195 "
+:A 667,862,0,0,117 2 0304 Adieresis
+char196 "
+oA 667,921,0,0,117 2 0305 Aring
+char197 "
+AE 944,669,0,24,114,24 2 0306 AE
+char198 "
+,C 667,685,218,60,18,60 3 0307 Ccedilla
+char199 "
+`E 667,904,0,36,77,36 2 0310 Egrave
+char200 "
+'E 667,904,0,36,77,36 2 0311 Eacute
+char201 "
+^E 667,897,0,36,77,36 2 0312 Ecircumflex
+char202 "
+:E 667,862,0,36,77,36 2 0313 Edieresis
+char203 "
+`I 389,904,0,67,82,67 2 0314 Igrave
+char204 "
+'I 389,904,0,73,82,73 2 0315 Iacute
+char205 "
+^I 389,897,0,81,82,81 2 0316 Icircumflex
+char206 "
+:I 389,862,0,106,82,99 2 0317 Idieresis
+char207 "
+-D 722,669,0,28,81,28 2 0320 Eth
+char208 "
+~N 722,862,15,76,77,76 2 0321 Ntilde
+char209 "
+`O 722,904,18,19,23,19 2 0322 Ograve
+char210 "
+'O 722,904,18,19,23,19 2 0323 Oacute
+char211 "
+^O 722,897,18,19,23,19 2 0324 Ocircumflex
+char212 "
+~O 722,862,18,19,23,19 2 0325 Otilde
+char213 "
+:O 722,862,18,19,23,19 2 0326 Odieresis
+char214 "
+char215 570,490,0,2,2,2 0 0327 multiply
+/O 722,764,125,19,23,19 2 0330 Oslash
+char216 "
+`U 722,904,18,72,-17,72 2 0331 Ugrave
+char217 "
+'U 722,904,18,72,-17,72 2 0332 Uacute
+char218 "
+^U 722,897,18,72,-17,72 2 0333 Ucircumflex
+char219 "
+:U 722,862,18,72,-17,72 2 0334 Udieresis
+char220 "
+'Y 611,904,0,98,-23,98 2 0335 Yacute
+char221 "
+TP 611,669,0,12,77,12 2 0336 Thorn
+char222 "
+ss 500,705,200,23,250,23 2 0337 germandbls
+char223 "
+`a 500,697,14,5,71,5 2 0340 agrave
+char224 "
+'a 500,697,14,13,71,13 2 0341 aacute
+char225 "
+^a 500,690,14,5,71,5 2 0342 acircumflex
+char226 "
+~a 500,655,14,41,71,41 2 0343 atilde
+char227 "
+:a 500,655,14,21,71,21 2 0344 adieresis
+char228 "
+oa 500,729,14,5,71,5 2 0345 aring
+char229 "
+ae 722,462,13,1,55,1 0 0346 ae
+char230 "
+,c 444,462,218,0,74 1 0347 ccedilla
+char231 "
+`e 444,697,13,4,45,4 2 0350 egrave
+char232 "
+'e 444,697,13,41,45,41 2 0351 eacute
+char233 "
+^e 444,690,13,29,45,29 2 0352 ecircumflex
+char234 "
+:e 444,655,13,49,45,49 2 0353 edieresis
+char235 "
+`i 278,697,9,32,48,32 2 0354 igrave
+char236 "
+'i 278,697,9,124,48,99 2 0355 iacute
+char237 "
+^i 278,690,9,97,52,97 2 0356 icircumflex
+char238 "
+:i 278,655,9,132,48,99 2 0357 idieresis
+char239 "
+Sd 500,699,13,4,53,4 2 0360 eth
+char240 "
+~n 556,655,9,0,56 2 0361 ntilde
+char241 "
+`o 500,697,13,0,53 2 0362 ograve
+char242 "
+'o 500,697,13,13,53,13 2 0363 oacute
+char243 "
+^o 500,690,13,1,53,1 2 0364 ocircumflex
+char244 "
+~o 500,655,13,41,53,41 2 0365 otilde
+char245 "
+:o 500,655,13,16,53,16 2 0366 odieresis
+char246 "
+char247 570,535,29,17,17,17 0 0367 divide
+/o 500,560,119,0,53 0 0370 oslash
+char248 "
+`u 556,697,9,0,35 2 0371 ugrave
+char249 "
+'u 556,697,9,0,35 2 0372 uacute
+char250 "
+^u 556,690,9,0,35 2 0373 ucircumflex
+char251 "
+:u 556,655,9,0,35 2 0374 udieresis
+char252 "
+'y 444,697,205,41,144,41 3 0375 yacute
+char253 "
+Tp 500,699,205,0,170 3 0376 thorn
+char254 "
+:y 444,655,205,44,144,44 3 0377 ydieresis
+char255 "
diff --git a/devps/TI b/devps/TI
new file mode 100644
index 000000000..156cba796
--- /dev/null
+++ b/devps/TI
@@ -0,0 +1,528 @@
+name TI
+internalname Times-Italic
+slant 7
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -55
+A w -55
+A v -55
+A u -20
+A ' -37
+A Y -55
+A W -95
+A V -105
+A U -50
+A T -37
+A Q -40
+A O -40
+A G -35
+A C -30
+B U -10
+B A -25
+D Y -40
+D W -40
+D V -40
+D A -35
+F r -55
+F . -135
+F o -105
+F i -45
+F e -75
+F , -135
+F a -75
+F A -115
+J u -35
+J . -25
+J o -25
+J e -25
+J , -25
+J a -35
+J A -40
+K y -40
+K u -40
+K o -40
+K e -35
+K O -50
+L y -30
+L ' -37
+L Y -20
+L W -55
+L V -55
+L T -20
+N A -27
+O Y -50
+O X -40
+O W -50
+O V -50
+O T -40
+O A -55
+P . -135
+P o -80
+P e -80
+P , -135
+P a -80
+P A -90
+Q U -10
+R Y -18
+R W -18
+R V -18
+R U -40
+R O -40
+T y -74
+T w -74
+T u -55
+T ; -65
+T r -55
+T . -74
+T o -92
+T i -55
+T - -74
+T hy -74
+T char173 -74
+T e -92
+T , -74
+T : -55
+T a -92
+T O -18
+T A -50
+U . -25
+U , -25
+U A -40
+V u -74
+V ; -74
+V . -129
+V o -111
+V i -74
+V - -55
+V hy -55
+V char173 -55
+V e -111
+V , -129
+V : -65
+V a -111
+V O -30
+V A -60
+W y -70
+W u -55
+W ; -65
+W . -92
+W o -92
+W i -55
+W - -37
+W hy -37
+W char173 -37
+W e -92
+W , -92
+W : -65
+W a -92
+W O -25
+W A -60
+Y u -92
+Y ; -65
+Y . -92
+Y o -92
+Y i -74
+Y - -74
+Y hy -74
+Y char173 -74
+Y e -92
+Y , -92
+Y : -65
+Y a -92
+Y O -15
+Y A -50
+a g -10
+b u -20
+b . -40
+c k -20
+c h -15
+, ' -140
+, rq -140
+e y -30
+e x -20
+e w -15
+e v -15
+e . -15
+e g -40
+e , -10
+f ' 92
+f . -15
+f i -20
+f f -18
+f .i -60
+f , -10
+g . -15
+g g -10
+g e -10
+g , -10
+k y -10
+k o -10
+k e -10
+n v -40
+o v -10
+o g -10
+. ' -140
+. rq -140
+` ` -111
+` oq -111
+oq ` -111
+oq oq -111
+' v -10
+' t -30
+' s -40
+' r -25
+' ' -111
+' d -25
+r s -10
+r q -37
+r . -111
+r o -45
+r - -20
+r hy -20
+r char173 -20
+r g -37
+r e -37
+r d -37
+r , -111
+r c -37
+r a -15
+v . -74
+v , -74
+w . -74
+w , -74
+y . -55
+y , -55
+charset
+ha 422,666,0,50,50,43 2 0000 asciicircum
+ti 541,323,0,11,10,11 0 0001 asciitilde
+vS 500,873,18,70,33,43 2 0002 Scaron
+vZ 556,873,0,100,56,43 2 0003 Zcaron
+vs 389,661,13,115,34,43 2 0004 scaron
+vz 389,661,81,95,52,43 2 0005 zcaron
+:Y 556,818,0,127,-28,43 2 0006 Ydieresis
+tm 980,653,0,27,20,27 2 0007 trademark
+aq 214,666,0,77,-82,43 2 0010 quotesingle
+space 250 0 0040
+! 333,667,11,19,11,19 2 0041 exclam
+" 420,666,0,62,-94,43 2 0042 quotedbl
+# 500,676,0,90,48,43 2 0043 numbersign
+sh "
+$ 500,731,89,47,19,43 2 0044 dollar
+Do "
+% 833,676,13,7,-29,7 2 0045 percent
+& 778,666,18,0,-26 2 0046 ampersand
+' 333,666,0,7,-101,7 2 0047 quoteright
+( 333,669,181,32,8,32 2 0050 parenleft
+) 333,669,180,6,34,6 2 0051 parenright
+* 500,666,0,42,-78,42 2 0052 asterisk
++ 675,506,0,0,-36 0 0053 plus
+, 250,101,129,0,54 0 0054 comma
+- 333,255,0,0,1 0 0055 hyphen
+hy "
+char173 "
+. 250,100,11,0,23 0 0056 period
+/ 278,666,18,158,115,43 2 0057 slash
+sl "
+0 500,676,7,47,18,43 2 0060 zero
+1 500,676,0,0,1 2 0061 one
+2 500,676,0,2,38,2 2 0062 two
+3 500,676,7,15,35,15 2 0063 three
+4 500,676,0,29,49,29 2 0064 four
+5 500,666,7,41,35,41 2 0065 five
+6 500,686,7,71,20,43 2 0066 six
+7 500,666,8,87,-25,43 2 0067 seven
+8 500,676,7,43,20,43 2 0070 eight
+9 500,676,17,42,27,42 2 0071 nine
+: 333,441,11 0 0072 colon
+; 333,441,129,0,23 0 0073 semicolon
+< 675,514,8,0,-34 0 0074 less
+= 675,386,0,0,-36 0 0075 equal
+> 675,514,8,0,-34 0 0076 greater
+? 500,664,12,22,-82,22 2 0077 question
+@ 920,666,18,0,-68 2 0100 at
+at "
+A 611,668,0,3,101,3 2 0101 A
+B 611,653,0,27,58,27 2 0102 B
+C 667,666,18,72,-16,43 2 0103 C
+D 722,653,0,28,58,28 2 0104 D
+E 611,653,0,73,51,43 2 0105 E
+F 611,653,0,84,42,43 2 0106 F
+G 722,666,18,50,-2,43 2 0107 G
+H 722,653,0,95,58,43 2 0110 H
+I 333,653,0,101,58,43 2 0111 I
+J 444,653,18,97,56,43 2 0112 J
+K 667,653,0,105,43,43 2 0113 K
+L 556,653,0,53,58,43 2 0114 L
+M 833,653,0,90,68,43 2 0115 M
+N 667,653,15,110,70,43 2 0116 N
+O 722,666,18,27,-10,27 2 0117 O
+P 611,653,0,44,50,43 2 0120 P
+Q 722,666,182,27,-9,27 2 0121 Q
+R 611,653,0,27,63,27 2 0122 R
+S 500,667,18,58,33,43 2 0123 S
+T 556,653,0,127,-9,43 2 0124 T
+U 722,653,18,93,-52,43 2 0125 U
+V 611,653,18,127,-26,43 2 0126 V
+W 833,653,18,123,-21,43 2 0127 W
+X 611,653,0,94,79,43 2 0130 X
+Y 556,653,0,127,-28,43 2 0131 Y
+Z 556,653,0,100,56,43 2 0132 Z
+[ 389,663,153,52,29,43 2 0133 bracketleft
+lB "
+\ 278,666,18,91,91,43 2 0134 backslash
+rs "
+] 389,663,153,43,38,43 2 0135 bracketright
+rB "
+a^ 333,661,0,102,-41,43 2 0136 circumflex
+^ "
+_ 500,0,125,50,50,43 0 0137 underscore
+` 333,666,0,27,-121,27 2 0140 quoteleft
+oq "
+a 500,441,11,26,33,26 0 0141 a
+b 500,683,11,23,27,23 2 0142 b
+c 444,441,11,31,20,31 0 0143 c
+d 500,683,13,77,35,43 2 0144 d
+e 444,441,11,18,19,18 0 0145 e
+f 278,678,207,196,197,43 3 0146 f
+g 500,441,206,22,42,22 1 0147 g
+h 500,683,9,28,31,28 2 0150 h
+i 278,654,11,36,1,36 2 0151 i
+j 278,654,207,48,174,43 3 0152 j
+k 444,683,11,67,36,43 2 0153 k
+l 278,683,11,51,9,43 2 0154 l
+m 722,441,9,32,38,32 0 0155 m
+n 500,441,9,24,36,24 0 0156 n
+o 500,441,11,18,23,18 0 0157 o
+p 500,441,205,19,125,19 1 0160 p
+q 500,441,209,33,25,33 1 0161 q
+r 389,441,0,73,5,43 0 0162 r
+s 389,442,13,27,34,27 0 0163 s
+t 278,546,11,68,13,43 2 0164 t
+u 500,441,11,25,8,25 0 0165 u
+v 444,441,18,32,29,32 0 0166 v
+w 667,441,18,31,34,31 0 0167 w
+x 444,441,11,53,77,43 0 0170 x
+y 444,441,206,32,74,32 1 0171 y
+z 389,428,81,41,52,41 0 0172 z
+lC 400,687,177,57,-1,43 2 0173 braceleft
+{ "
+ba 275,666,18,0,-55 2 0174 bar
+| "
+rC 400,687,177,0,57 2 0175 braceright
+} "
+a~ 333,624,0,144,-50,43 2 0176 tilde
+~ "
+bq 333,101,129,0,6 0 0200 quotesinglbase
+Fo 500,403,0,0,-3 0 0201 guillemotleft
+char171 "
+Fc 500,403,0,0,-5 0 0202 guillemotright
+char187 "
+bu 350,461,0,10,10,10 0 0203 bullet
+Fn 500,682,182,57,25,43 2 0204 florin
+f/ 167,676,10,220,219,43 2 0205 fraction
+%0 1000,706,19,60,25,43 2 0206 perthousand
+dg 500,666,159,38,-51,38 2 0207 dagger
+dd 500,666,143,41,28,41 2 0210 daggerdbl
+en 500,243,0,55,56,43 0 0211 endash
+em 889,243,0,55,56,43 0 0212 emdash
+fi 500,681,207,31,191,31 3 0214 fi
+fl 500,682,204,68,191,43 3 0215 fl
+.i 278,441,11,7,1,7 0 0220 dotlessi
+ga 333,664,0,28,-71,28 2 0222 grave
+a" 333,664,0,203,-43,43 2 0223 hungarumlaut
+a. 333,606,0,22,-157,22 2 0224 dotaccent
+ab 333,650,0,135,-67,43 2 0225 breve
+ah 333,661,0,143,-71,43 2 0226 caron
+ao 333,691,0,72,-105,43 2 0227 ring
+ho 333,40,169,0,70 0 0230 ogonek
+lq 556,666,0,8,-116,8 2 0231 quotedblleft
+rq 556,666,0,0,-101 2 0232 quotedblright
+oe 667,441,12,29,30,29 0 0233 oe
+/l 278,683,11,79,13,43 2 0234 lslash
+Bq 556,101,129,0,-7 0 0235 quotedblbase
+OE 944,666,8,70,1,43 2 0236 OE
+/L 556,653,0,53,58,43 2 0237 Lslash
+r! 389,473,205,0,-9 1 0241 exclamdown
+char161 "
+ct 500,560,143,22,-27,22 2 0242 cent
+char162 "
+Po 500,670,6,67,40,43 2 0243 sterling
+char163 "
+Cs 500,597,0,72,72,43 2 0244 currency
+char164 "
+Ye 500,653,0,153,23,43 2 0245 yen
+char165 "
+bb 275,666,18,0,-55 2 0246 brokenbar
+char166 "
+sc 500,666,162,11,-3,11 2 0247 section
+char167 "
+ad 333,606,0,122,-57,43 2 0250 dieresis
+char168 "
+co 760,666,18,9,9,9 2 0251 copyright
+char169 "
+Of 276,676,0,126,8,43 2 0252 ordfeminine
+char170 "
+fo 333,403,0,0,-1 0 0253 guilsinglleft
+no 675,386,0,0,-36 0 0254 logicalnot
+char172 "
+\- 675,286,0,0,-36 0 0255 minus
+rg 760,666,18,9,9,9 2 0256 registered
+char174 "
+a- 333,583,0,128,-49,43 2 0257 macron
+char175 "
+de 400,676,0,37,-51,37 2 0260 degree
+char176 "
+char177 675,506,0,0,-36 0 0261 plusminus
+S2 300,676,0,74,17,43 2 0262 twosuperior
+char178 "
+S3 300,676,0,89,7,43 2 0263 threesuperior
+char179 "
+aa 333,664,0,120,-130,43 2 0264 acute
+char180 "
+char181 500,428,209,47,80,43 1 0265 mu
+ps 523,653,123,143,-5,43 2 0266 paragraph
+char182 "
+char183 250,310,0,0,-20 0 0267 periodcentered
+ac 333,0,217,0,80 1 0270 cedilla
+char184 "
+S1 300,676,0,34,7,34 2 0271 onesuperior
+char185 "
+Om 310,676,0,102,-17,43 2 0272 ordmasculine
+char186 "
+fc 333,403,0,0,-2 0 0273 guilsinglright
+14 750,676,10,36,17,36 2 0274 onequarter
+char188 "
+12 750,676,10,49,16,43 2 0275 onehalf
+char189 "
+34 750,676,10,36,27,36 2 0276 threequarters
+char190 "
+r? 500,471,205,0,22 1 0277 questiondown
+char191 "
+`A 611,876,0,3,101,3 2 0300 Agrave
+char192 "
+'A 611,876,0,3,101,3 2 0301 Aacute
+char193 "
+^A 611,873,0,3,101,3 2 0302 Acircumflex
+char194 "
+~A 611,836,0,5,101,5 2 0303 Atilde
+char195 "
+:A 611,818,0,3,101,3 2 0304 Adieresis
+char196 "
+oA 611,883,0,3,101,3 2 0305 Aring
+char197 "
+AE 889,653,0,72,77,43 2 0306 AE
+char198 "
+,C 667,666,217,72,-16,43 3 0307 Ccedilla
+char199 "
+`E 611,876,0,73,51,43 2 0310 Egrave
+char200 "
+'E 611,876,0,73,51,43 2 0311 Eacute
+char201 "
+^E 611,873,0,73,51,43 2 0312 Ecircumflex
+char202 "
+:E 611,818,0,73,51,43 2 0313 Edieresis
+char203 "
+`I 333,876,0,101,58,43 2 0314 Igrave
+char204 "
+'I 333,876,0,130,58,43 2 0315 Iacute
+char205 "
+^I 333,873,0,142,58,43 2 0316 Icircumflex
+char206 "
+:I 333,818,0,152,58,43 2 0317 Idieresis
+char207 "
+-D 722,653,0,28,58,28 2 0320 Eth
+char208 "
+~N 667,836,15,110,70,43 2 0321 Ntilde
+char209 "
+`O 722,876,18,27,-10,27 2 0322 Ograve
+char210 "
+'O 722,876,18,27,-10,27 2 0323 Oacute
+char211 "
+^O 722,873,18,27,-10,27 2 0324 Ocircumflex
+char212 "
+~O 722,836,18,27,-10,27 2 0325 Otilde
+char213 "
+:O 722,818,18,27,-10,27 2 0326 Odieresis
+char214 "
+char215 675,497,0,0,-43 0 0327 multiply
+/O 722,722,105,27,-10,27 2 0330 Oslash
+char216 "
+`U 722,876,18,93,-52,43 2 0331 Ugrave
+char217 "
+'U 722,876,18,93,-52,43 2 0332 Uacute
+char218 "
+^U 722,873,18,93,-52,43 2 0333 Ucircumflex
+char219 "
+:U 722,818,18,93,-52,43 2 0334 Udieresis
+char220 "
+'Y 556,876,0,127,-28,43 2 0335 Yacute
+char221 "
+TP 611,653,0,8,50,8 2 0336 Thorn
+char222 "
+ss 500,679,207,43,218,43 3 0337 germandbls
+char223 "
+`a 500,664,11,26,33,26 2 0340 agrave
+char224 "
+'a 500,664,11,37,33,37 2 0341 aacute
+char225 "
+^a 500,661,11,26,33,26 2 0342 acircumflex
+char226 "
+~a 500,624,11,61,33,43 2 0343 atilde
+char227 "
+:a 500,606,11,39,33,39 2 0344 adieresis
+char228 "
+oa 500,691,11,26,33,26 2 0345 aring
+char229 "
+ae 667,441,11,23,27,23 0 0346 ae
+char230 "
+,c 444,441,217,31,24,31 1 0347 ccedilla
+char231 "
+`e 444,664,11,18,19,18 2 0350 egrave
+char232 "
+'e 444,664,11,65,19,43 2 0351 eacute
+char233 "
+^e 444,661,11,47,19,43 2 0352 ecircumflex
+char234 "
+:e 444,606,11,57,19,43 2 0353 edieresis
+char235 "
+`i 278,664,11,56,1,43 2 0354 igrave
+char236 "
+'i 278,664,11,128,1,43 2 0355 iacute
+char237 "
+^i 278,661,11,100,16,43 2 0356 icircumflex
+char238 "
+:i 278,606,11,125,1,43 2 0357 idieresis
+char239 "
+Sd 500,683,11,32,23,32 2 0360 eth
+char240 "
+~n 500,624,9,26,36,26 2 0361 ntilde
+char241 "
+`o 500,664,11,18,23,18 2 0362 ograve
+char242 "
+'o 500,664,11,37,23,37 2 0363 oacute
+char243 "
+^o 500,661,11,18,23,18 2 0364 ocircumflex
+char244 "
+~o 500,624,11,46,23,43 2 0365 otilde
+char245 "
+:o 500,606,11,39,23,39 2 0366 odieresis
+char246 "
+char247 675,517,11,0,-36 0 0367 divide
+/o 500,554,135,19,22,19 2 0370 oslash
+char248 "
+`u 500,664,11,25,8,25 2 0371 ugrave
+char249 "
+'u 500,664,11,27,8,27 2 0372 uacute
+char250 "
+^u 500,661,11,25,8,25 2 0373 ucircumflex
+char251 "
+:u 500,606,11,29,8,29 2 0374 udieresis
+char252 "
+'y 444,664,206,65,74,43 3 0375 yacute
+char253 "
+Tp 500,683,205,19,125,19 3 0376 thorn
+char254 "
+:y 444,606,206,47,74,43 3 0377 ydieresis
+char255 "
diff --git a/devps/TR b/devps/TR
new file mode 100644
index 000000000..25232c6d1
--- /dev/null
+++ b/devps/TR
@@ -0,0 +1,519 @@
+name TR
+internalname Times-Roman
+spacewidth 250
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A y -92
+A w -92
+A v -74
+A ' -111
+A Y -105
+A W -90
+A V -135
+A U -55
+A T -111
+A Q -55
+A O -55
+A G -40
+A C -40
+B U -10
+B A -35
+D Y -55
+D W -30
+D V -40
+D A -40
+F . -80
+F o -15
+F , -80
+F a -15
+F A -74
+J A -60
+K y -25
+K u -15
+K o -35
+K e -25
+K O -30
+L y -55
+L ' -92
+L Y -100
+L W -74
+L V -100
+L T -92
+N A -35
+O Y -50
+O X -40
+O W -35
+O V -50
+O T -40
+O A -35
+P . -111
+P , -111
+P a -15
+P A -92
+Q U -10
+R Y -65
+R W -55
+R V -80
+R U -40
+R T -60
+R O -40
+T y -80
+T w -80
+T u -45
+T ; -55
+T r -35
+T . -74
+T o -80
+T i -35
+T - -92
+T hy -92
+T char173 -92
+T e -70
+T , -74
+T : -50
+T a -80
+T O -18
+T A -93
+U A -40
+V u -75
+V ; -74
+V . -129
+V o -129
+V i -60
+V - -100
+V hy -100
+V char173 -100
+V e -111
+V , -129
+V : -74
+V a -111
+V O -40
+V G -15
+V A -135
+W y -73
+W u -50
+W ; -37
+W . -92
+W o -80
+W i -40
+W - -65
+W hy -65
+W char173 -65
+W e -80
+W , -92
+W : -37
+W a -80
+W O -10
+W A -120
+Y u -111
+Y ; -92
+Y . -129
+Y o -110
+Y i -55
+Y - -111
+Y hy -111
+Y char173 -111
+Y e -100
+Y , -129
+Y : -92
+Y a -100
+Y O -30
+Y A -120
+a w -15
+a v -20
+b v -15
+b u -20
+b . -40
+c y -15
+, ' -70
+, rq -70
+e y -15
+e x -15
+e w -25
+e v -25
+e g -15
+f ' 55
+f i -20
+f f -25
+f .i -50
+f a -10
+g a -5
+h y -5
+i v -25
+k y -15
+k o -10
+k e -10
+l w -10
+n y -15
+n v -40
+o y -10
+o w -25
+o v -15
+p y -10
+. ' -70
+. rq -70
+lq A -80
+` ` -74
+` oq -74
+oq ` -74
+oq oq -74
+` A -80
+oq A -80
+' v -50
+' t -18
+' s -55
+' r -50
+' ' -74
+' l -10
+' d -50
+r . -55
+r - -20
+r hy -20
+r char173 -20
+r g -18
+r , -40
+v . -65
+v o -20
+v e -15
+v , -65
+v a -25
+w . -65
+w o -10
+w , -65
+w a -10
+x e -15
+y . -65
+y , -65
+charset
+ha 469,662 2 0000 asciicircum
+ti 541,323 0 0001 asciitilde
+vS 556,886,14 2 0002 Scaron
+vZ 611,886 2 0003 Zcaron
+vs 389,674,10 2 0004 scaron
+vz 444,674 2 0005 zcaron
+:Y 722,835 2 0006 Ydieresis
+tm 980,662 2 0007 trademark
+aq 180,676 2 0010 quotesingle
+space 250 0 0040
+! 333,676,9 2 0041 exclam
+" 408,676 2 0042 quotedbl
+# 500,662 2 0043 numbersign
+sh "
+$ 500,727,87 2 0044 dollar
+Do "
+% 833,676,13 2 0045 percent
+& 778,676,13 2 0046 ampersand
+' 333,676 2 0047 quoteright
+( 333,676,177 2 0050 parenleft
+) 333,676,177 2 0051 parenright
+* 500,676 2 0052 asterisk
++ 564,506 0 0053 plus
+, 250,102,141 0 0054 comma
+- 333,257 0 0055 hyphen
+hy "
+char173 "
+. 250,100,11 0 0056 period
+/ 278,676,14 2 0057 slash
+sl "
+0 500,676,14 2 0060 zero
+1 500,676 2 0061 one
+2 500,676 2 0062 two
+3 500,676,14 2 0063 three
+4 500,676 2 0064 four
+5 500,688,14 2 0065 five
+6 500,684,14 2 0066 six
+7 500,662,8 2 0067 seven
+8 500,676,14 2 0070 eight
+9 500,676,22 2 0071 nine
+: 278,459,11 0 0072 colon
+; 278,459,141 0 0073 semicolon
+< 564,514,8 0 0074 less
+= 564,386 0 0075 equal
+> 564,514,8 0 0076 greater
+? 444,676,8 2 0077 question
+@ 921,676,14 2 0100 at
+at "
+A 722,674 2 0101 A
+B 667,662 2 0102 B
+C 667,676,14 2 0103 C
+D 722,662 2 0104 D
+E 611,662 2 0105 E
+F 556,662 2 0106 F
+G 722,676,14 2 0107 G
+H 722,662 2 0110 H
+I 333,662 2 0111 I
+J 389,662,14 2 0112 J
+K 722,662 2 0113 K
+L 611,662 2 0114 L
+M 889,662 2 0115 M
+N 722,662,11 2 0116 N
+O 722,676,14 2 0117 O
+P 556,662 2 0120 P
+Q 722,676,178 2 0121 Q
+R 667,662 2 0122 R
+S 556,676,14 2 0123 S
+T 611,662 2 0124 T
+U 722,662,14 2 0125 U
+V 722,662,11 2 0126 V
+W 944,662,11 2 0127 W
+X 722,662 2 0130 X
+Y 722,662 2 0131 Y
+Z 611,662 2 0132 Z
+[ 333,662,156 2 0133 bracketleft
+lB "
+\ 278,676,14 2 0134 backslash
+rs "
+] 333,662,156 2 0135 bracketright
+rB "
+a^ 333,674 2 0136 circumflex
+^ "
+_ 500,0,125 0 0137 underscore
+` 333,676 2 0140 quoteleft
+oq "
+a 444,460,10 0 0141 a
+b 500,683,10 2 0142 b
+c 444,460,10 0 0143 c
+d 500,683,10 2 0144 d
+e 444,460,10 0 0145 e
+f 333,683 2 0146 f
+g 500,460,218 1 0147 g
+h 500,683 2 0150 h
+i 278,683 2 0151 i
+j 278,683,218 3 0152 j
+k 500,683 2 0153 k
+l 278,683 2 0154 l
+m 778,460 0 0155 m
+n 500,460 0 0156 n
+o 500,460,10 0 0157 o
+p 500,460,217 1 0160 p
+q 500,460,217 1 0161 q
+r 333,460 0 0162 r
+s 389,460,10 0 0163 s
+t 278,579,10 2 0164 t
+u 500,450,10 0 0165 u
+v 500,450,14 0 0166 v
+w 722,450,14 0 0167 w
+x 500,450 0 0170 x
+y 500,450,218 1 0171 y
+z 444,450 0 0172 z
+lC 480,680,181 2 0173 braceleft
+{ "
+ba 200,676,14 2 0174 bar
+| "
+rC 480,680,181 2 0175 braceright
+} "
+a~ 333,638 2 0176 tilde
+~ "
+bq 333,102,141 0 0200 quotesinglbase
+Fo 500,416 0 0201 guillemotleft
+char171 "
+Fc 500,416 0 0202 guillemotright
+char187 "
+bu 350,466 0 0203 bullet
+Fn 500,676,189 2 0204 florin
+f/ 167,676,14 2 0205 fraction
+%0 1000,706,19 2 0206 perthousand
+dg 500,676,149 2 0207 dagger
+dd 500,676,153 2 0210 daggerdbl
+en 500,250 0 0211 endash
+em 1000,250 0 0212 emdash
+fi 556,683 2 0214 fi
+fl 556,683 2 0215 fl
+.i 278,460 0 0220 dotlessi
+ga 333,678 2 0222 grave
+a" 333,678 2 0223 hungarumlaut
+a. 333,623 2 0224 dotaccent
+ab 333,664 2 0225 breve
+ah 333,674 2 0226 caron
+ao 333,711 2 0227 ring
+ho 333,0,165 0 0230 ogonek
+lq 444,676 2 0231 quotedblleft
+rq 444,676 2 0232 quotedblright
+oe 722,460,10 0 0233 oe
+/l 278,683 2 0234 lslash
+Bq 444,102,141 0 0235 quotedblbase
+OE 889,668,6 2 0236 OE
+/L 611,662 2 0237 Lslash
+r! 333,467,218 1 0241 exclamdown
+char161 "
+ct 500,579,138 2 0242 cent
+char162 "
+Po 500,676,8 2 0243 sterling
+char163 "
+Cs 500,602 2 0244 currency
+char164 "
+Ye 500,662 2 0245 yen
+char165 "
+bb 200,676,14 2 0246 brokenbar
+char166 "
+sc 500,676,148 2 0247 section
+char167 "
+ad 333,623 2 0250 dieresis
+char168 "
+co 760,676,14 2 0251 copyright
+char169 "
+Of 276,676 2 0252 ordfeminine
+char170 "
+fo 333,416 0 0253 guilsinglleft
+no 564,386 0 0254 logicalnot
+char172 "
+\- 564,286 0 0255 minus
+rg 760,676,14 2 0256 registered
+char174 "
+a- 333,601 2 0257 macron
+char175 "
+de 400,676 2 0260 degree
+char176 "
+char177 564,506 0 0261 plusminus
+S2 300,676 2 0262 twosuperior
+char178 "
+S3 300,676 2 0263 threesuperior
+char179 "
+aa 333,678 2 0264 acute
+char180 "
+char181 500,450,218 1 0265 mu
+ps 453,662,154 2 0266 paragraph
+char182 "
+char183 250,310 0 0267 periodcentered
+ac 333,0,215 0 0270 cedilla
+char184 "
+S1 300,676 2 0271 onesuperior
+char185 "
+Om 310,676 2 0272 ordmasculine
+char186 "
+fc 333,416 0 0273 guilsinglright
+14 750,676,14 2 0274 onequarter
+char188 "
+12 750,676,14 2 0275 onehalf
+char189 "
+34 750,676,14 2 0276 threequarters
+char190 "
+r? 444,466,218 1 0277 questiondown
+char191 "
+`A 722,890 2 0300 Agrave
+char192 "
+'A 722,890 2 0301 Aacute
+char193 "
+^A 722,886 2 0302 Acircumflex
+char194 "
+~A 722,850 2 0303 Atilde
+char195 "
+:A 722,835 2 0304 Adieresis
+char196 "
+oA 722,898 2 0305 Aring
+char197 "
+AE 889,662 2 0306 AE
+char198 "
+,C 667,676,215 2 0307 Ccedilla
+char199 "
+`E 611,890 2 0310 Egrave
+char200 "
+'E 611,890 2 0311 Eacute
+char201 "
+^E 611,886 2 0312 Ecircumflex
+char202 "
+:E 611,835 2 0313 Edieresis
+char203 "
+`I 333,890 2 0314 Igrave
+char204 "
+'I 333,890 2 0315 Iacute
+char205 "
+^I 333,886 2 0316 Icircumflex
+char206 "
+:I 333,835 2 0317 Idieresis
+char207 "
+-D 722,662 2 0320 Eth
+char208 "
+~N 722,850,11 2 0321 Ntilde
+char209 "
+`O 722,890,14 2 0322 Ograve
+char210 "
+'O 722,890,14 2 0323 Oacute
+char211 "
+^O 722,886,14 2 0324 Ocircumflex
+char212 "
+~O 722,850,14 2 0325 Otilde
+char213 "
+:O 722,835,14 2 0326 Odieresis
+char214 "
+char215 564,497 0 0327 multiply
+/O 722,734,80 2 0330 Oslash
+char216 "
+`U 722,890,14 2 0331 Ugrave
+char217 "
+'U 722,890,14 2 0332 Uacute
+char218 "
+^U 722,886,14 2 0333 Ucircumflex
+char219 "
+:U 722,835,14 2 0334 Udieresis
+char220 "
+'Y 722,890 2 0335 Yacute
+char221 "
+TP 556,662 2 0336 Thorn
+char222 "
+ss 500,683,9 2 0337 germandbls
+char223 "
+`a 444,678,10 2 0340 agrave
+char224 "
+'a 444,678,10 2 0341 aacute
+char225 "
+^a 444,674,10 2 0342 acircumflex
+char226 "
+~a 444,638,10 2 0343 atilde
+char227 "
+:a 444,623,10 2 0344 adieresis
+char228 "
+oa 444,711,10 2 0345 aring
+char229 "
+ae 667,460,10 0 0346 ae
+char230 "
+,c 444,460,215 0 0347 ccedilla
+char231 "
+`e 444,678,10 2 0350 egrave
+char232 "
+'e 444,678,10 2 0351 eacute
+char233 "
+^e 444,674,10 2 0352 ecircumflex
+char234 "
+:e 444,623,10 2 0353 edieresis
+char235 "
+`i 278,678 2 0354 igrave
+char236 "
+'i 278,678 2 0355 iacute
+char237 "
+^i 278,674 2 0356 icircumflex
+char238 "
+:i 278,623 2 0357 idieresis
+char239 "
+Sd 500,686,10 2 0360 eth
+char240 "
+~n 500,638 2 0361 ntilde
+char241 "
+`o 500,678,10 2 0362 ograve
+char242 "
+'o 500,678,10 2 0363 oacute
+char243 "
+^o 500,674,10 2 0364 ocircumflex
+char244 "
+~o 500,638,10 2 0365 otilde
+char245 "
+:o 500,623,10 2 0366 odieresis
+char246 "
+char247 564,516,10 0 0367 divide
+/o 500,551,112 0 0370 oslash
+char248 "
+`u 500,678,10 2 0371 ugrave
+char249 "
+'u 500,678,10 2 0372 uacute
+char250 "
+^u 500,674,10 2 0373 ucircumflex
+char251 "
+:u 500,623,10 2 0374 udieresis
+char252 "
+'y 500,678,218 3 0375 yacute
+char253 "
+Tp 500,683,217 3 0376 thorn
+char254 "
+:y 500,623,218 3 0377 ydieresis
+char255 "
diff --git a/devps/ZCMI b/devps/ZCMI
new file mode 100644
index 000000000..53e56fd71
--- /dev/null
+++ b/devps/ZCMI
@@ -0,0 +1,477 @@
+name ZCMI
+internalname ZapfChancery-MediumItalic
+slant 14
+spacewidth 220
+encoding text.enc
+ligatures fi fl 0
+kernpairs
+A ' -40
+A rq -40
+A U -10
+A T 10
+A Q 10
+A O 10
+A G -30
+A C 20
+D . -30
+D , -20
+D Y 10
+D A -10
+F . -40
+F i 10
+F , -30
+G . -20
+G , -10
+J . -20
+J , -10
+K u -20
+K o -20
+K e -20
+L y -10
+L ' -25
+L rq -25
+L W -10
+L V -20
+O . -20
+O , -10
+O Y 10
+O T 20
+O A -20
+P . -50
+P o -10
+P e -10
+P , -40
+P a -20
+P A -10
+Q U -10
+R Y 10
+R W 10
+R T 20
+T o -20
+T i 20
+T - -20
+T hy -20
+T char173 -20
+T h 20
+T e -20
+T a -20
+T O 30
+T A 10
+V . -100
+V o -20
+V e -20
+V , -90
+V a -20
+V O 10
+V G -20
+W . -50
+W o -20
+W i 10
+W h 10
+W e -20
+W , -40
+W a -20
+W O 10
+Y u -20
+Y . -50
+Y o -50
+Y i 10
+Y e -40
+Y , -40
+Y a -60
+b . -30
+b l -20
+b , -20
+b b -20
+c k -10
+, ' -70
+, rq -70
+d w -20
+d v -10
+d d -40
+e y 10
+f ' 30
+f rq 30
+f . -50
+f f -50
+f e -10
+f , -40
+f a -20
+g y 10
+g . -30
+g i 10
+g e 10
+g , -20
+g a 10
+k y 10
+k o -10
+k e -20
+m y 10
+m u 10
+n y 20
+o . -30
+o , -20
+p . -30
+p p -10
+p , -20
+. ' -80
+. rq -80
+lq ` 20
+lq oq 20
+lq A 10
+` ` -115
+` oq -115
+oq ` -115
+oq oq -115
+` A 10
+oq A 10
+' v 30
+' t 20
+' s -25
+' r 30
+' ' -115
+' rq 20
+' l 20
+r . -50
+r i 10
+r , -40
+s . -20
+s , -10
+v . -30
+v , -20
+w . -30
+w o 10
+w h 20
+w , -20
+charset
+ha 520,594,0,62,-82,62 2 0000 asciicircum
+ti 520,320,0,69,-73,69 0 0001 asciitilde
+vS 460,831,81,184,5,87 2 0002 Scaron
+vZ 620,831,19,99,8,87 2 0003 Zcaron
+vs 320,659,14,194,4,87 2 0004 scaron
+vz 440,659,14,124,24,87 2 0005 zcaron
+:Y 560,762,168,264,9,87 2 0006 Ydieresis
+tm 1000,594,0,96,-77,87 2 0007 trademark
+aq 160,610,0,105,-95,87 2 0010 quotesingle
+space 220 0 0040
+! 280,610,14,123,-69,87 2 0041 exclam
+" 220,610,0,163,-70,87 2 0042 quotedbl
+# 440,594,0,131,-33,87 2 0043 numbersign
+sh "
+$ 440,709,144,118,-10,87 2 0044 dollar
+Do "
+% 680,700,160,80,-82,80 2 0045 percent
+& 780,610,16,185,-76,87 2 0046 ampersand
+' 240,610,0,148,-118,87 2 0047 quoteright
+( 260,664,216,201,-46,87 2 0050 parenleft
+) 220,664,216,132,63,87 2 0051 parenright
+* 420,610,0,109,-89,87 2 0052 asterisk
++ 520,426,0,73,-67,73 0 0053 plus
+, 220,148,140,43,25,43 0 0054 comma
+- 280,248,0,104,-19,87 0 0055 hyphen
+hy "
+char173 "
+. 220,128,14,58,-52,58 0 0056 period
+/ 340,610,16,168,-24,87 2 0057 slash
+sl "
+0 440,610,16,148,-29,87 2 0060 zero
+1 440,610,0,38,9,38 2 0061 one
+2 440,610,16,95,33,87 2 0062 two
+3 440,610,16,95,49,87 2 0063 three
+4 440,610,35,109,-27,87 2 0064 four
+5 440,679,16,205,-10,87 2 0065 five
+6 440,610,16,166,-40,87 2 0066 six
+7 440,645,33,171,-107,87 2 0067 seven
+8 440,610,16,139,-15,87 2 0070 eight
+9 440,610,16,127,18,87 2 0071 nine
+: 260,438,14,86,-48,86 0 0072 colon
+; 240,438,140,109,21,87 0 0073 semicolon
+< 520,468,0,57,-89,57 0 0074 less
+= 520,340,0,73,-67,73 0 0075 equal
+> 520,468,0,57,-89,57 0 0076 greater
+? 380,610,14,125,-100,87 2 0077 question
+@ 700,610,16,103,-77,87 2 0100 at
+at "
+A 620,632,16,127,37,87 2 0101 A
+B 600,640,6,124,-35,87 2 0102 B
+C 520,610,16,161,-43,87 2 0103 C
+D 700,640,6,118,-36,87 2 0104 D
+E 620,618,12,139,-41,87 2 0105 E
+F 580,629,118,263,-70,87 2 0106 F
+G 620,610,242,139,-98,87 2 0107 G
+H 680,708,16,248,32,87 2 0110 H
+I 380,594,0,174,-49,87 2 0111 I
+J 400,594,147,188,64,87 2 0112 J
+K 660,610,153,234,-3,87 2 0113 K
+L 580,610,16,127,-3,87 2 0114 L
+M 840,722,16,230,-8,87 2 0115 M
+N 700,708,168,265,-35,87 2 0116 N
+O 600,610,16,110,-44,87 2 0117 O
+P 540,628,0,168,8,87 2 0120 P
+Q 600,610,177,225,-34,87 2 0121 Q
+R 600,640,168,255,-8,87 2 0122 R
+S 460,610,81,148,5,87 2 0123 S
+T 500,667,0,294,-13,87 2 0124 T
+U 740,617,16,102,-76,87 2 0125 U
+V 640,714,16,220,-74,87 2 0126 V
+W 880,723,16,216,-44,87 2 0127 W
+X 560,610,16,189,80,87 2 0130 X
+Y 560,647,168,264,9,87 2 0131 Y
+Z 620,624,19,99,8,87 2 0132 Z
+[ 240,655,207,215,63,87 2 0133 bracketleft
+lB "
+\ 480,610,16,94,-90,87 2 0134 backslash
+rs "
+] 320,655,207,121,77,87 2 0135 bracketright
+rB "
+a^ 340,649,0,153,-173,87 2 0136 circumflex
+^ "
+_ 500,0,125,50,50,50 0 0137 underscore
+` 240,610,0,149,-119,87 2 0140 quoteleft
+oq "
+a 420,438,15,115,-42,87 0 0141 a
+b 420,714,23,122,-32,87 2 0142 b
+c 340,438,14,116,-37,87 0 0143 c
+d 440,714,14,261,-52,87 2 0144 d
+e 340,438,14,113,-37,87 0 0145 e
+f 320,714,314,277,169,87 3 0146 f
+g 400,438,314,153,158,87 1 0147 g
+h 440,714,14,134,-5,87 2 0150 h
+i 240,635,14,151,-50,87 2 0151 i
+j 220,635,314,162,162,87 3 0152 j
+k 440,714,184,238,-37,87 2 0153 k
+l 240,714,14,290,-52,87 2 0154 l
+m 620,438,14,134,-36,87 0 0155 m
+n 460,438,14,134,-51,87 0 0156 n
+o 400,438,14,99,-37,87 0 0157 o
+p 440,432,314,94,73,87 1 0160 p
+q 400,510,300,140,-37,87 1 0161 q
+r 300,438,14,174,-51,87 0 0162 r
+s 320,438,14,133,4,87 0 0163 s
+t 320,539,14,156,-56,87 2 0164 t
+u 460,438,14,118,-52,87 0 0165 u
+v 440,488,14,143,-37,87 0 0166 v
+w 680,488,14,152,-37,87 0 0167 w
+x 420,438,195,219,-20,87 0 0170 x
+y 400,438,314,133,74,87 1 0171 y
+z 440,445,14,118,24,87 0 0172 z
+lC 240,655,207,193,-5,87 2 0173 braceleft
+{ "
+ba 520,714,16,0,-270 2 0174 bar
+| "
+rC 240,655,207,128,60,87 2 0175 braceright
+} "
+a~ 440,619,0,132,-193,87 2 0176 tilde
+~ "
+bq 180,146,121,61,29,61 0 0200 quotesinglbase
+Fo 340,414,0,66,-48,66 0 0201 guillemotleft
+char171 "
+Fc 380,414,0,45,-67,45 0 0202 guillemotright
+char187 "
+bu 600,445,0,0,-178 0 0203 bullet
+Fn 440,610,314,192,114,87 3 0204 florin
+f/ 60,610,16,310,231,87 2 0205 fraction
+%0 960,700,160,95,-62,87 2 0206 perthousand
+dg 460,610,37,158,-88,87 2 0207 dagger
+dd 480,610,59,103,-88,87 2 0210 daggerdbl
+en 500,239,0,115,-1,87 0 0211 endash
+em 1000,239,0,115,-1,87 0 0212 emdash
+fi 520,714,314,135,174,87 3 0214 fi
+fl 520,714,314,200,174,87 3 0215 fl
+.i 240,438,14,116,-50,87 0 0220 dotlessi
+ga 220,659,0,169,-143,87 2 0222 grave
+a" 400,659,0,145,-158,87 2 0223 hungarumlaut
+a. 220,610,0,158,-186,87 2 0224 dotaccent
+ab 440,631,0,111,-203,87 2 0225 breve
+ah 340,659,0,184,-204,87 2 0226 caron
+ao 300,659,0,166,-190,87 2 0227 ring
+ho 280,6,191,3,12,3 0 0230 ogonek
+lq 340,610,0,174,-119,87 2 0231 quotedblleft
+rq 360,610,0,143,-108,87 2 0232 quotedblright
+oe 560,438,14,118,-28,87 0 0233 oe
+/l 300,714,14,265,-71,87 2 0234 lslash
+Bq 280,146,121,51,64,51 0 0235 quotedblbase
+OE 820,610,16,139,-13,87 2 0236 OE
+/L 580,610,16,127,1,87 2 0237 Lslash
+r! 280,438,186,76,-22,76 0 0241 exclamdown
+char161 "
+ct 440,543,134,86,-72,86 2 0242 cent
+char162 "
+Po 440,610,52,116,66,87 2 0243 sterling
+char163 "
+Cs 440,509,0,84,0,84 0 0244 currency
+char164 "
+Ye 440,647,168,223,51,87 2 0245 yen
+char165 "
+bb 520,714,16,0,-270 2 0246 brokenbar
+char166 "
+sc 420,610,215,144,-3,87 2 0247 section
+char167 "
+ad 360,610,0,159,-193,87 2 0250 dieresis
+char168 "
+co 740,610,16,73,-87,73 2 0251 copyright
+char169 "
+Of 260,610,0,176,-61,87 2 0252 ordfeminine
+char170 "
+fo 240,414,0,68,-48,68 0 0253 guilsinglleft
+no 520,340,0,73,-67,73 0 0254 logicalnot
+char172 "
+\- 520,242,0,73,-67,73 0 0255 minus
+rg 740,610,16,73,-87,73 2 0256 registered
+char174 "
+a- 440,578,0,75,-172,75 2 0257 macron
+char175 "
+de 400,610,0,107,-121,87 2 0260 degree
+char176 "
+char177 520,436,0,73,-67,73 0 0261 plusminus
+S2 264,610,0,140,-22,87 2 0262 twosuperior
+char178 "
+S3 264,610,0,134,-9,87 2 0263 threesuperior
+char179 "
+aa 300,659,0,172,-215,87 2 0264 acute
+char180 "
+char181 460,438,314,113,43,87 1 0265 mu
+ps 500,594,199,188,-55,87 2 0266 paragraph
+char182 "
+char183 220,310,0,71,-89,71 0 0267 periodcentered
+ac 300,6,191,0,38 0 0270 cedilla
+char184 "
+S1 264,610,0,97,-33,87 2 0271 onesuperior
+char185 "
+Om 260,610,0,163,-78,87 2 0272 ordmasculine
+char186 "
+fc 260,414,0,56,-56,56 0 0273 guilsinglright
+14 660,610,16,92,-6,87 2 0274 onequarter
+char188 "
+12 660,610,16,92,-6,87 2 0275 onehalf
+char189 "
+34 660,610,16,96,11,87 2 0276 threequarters
+char190 "
+r? 400,438,186,37,-32,37 0 0277 questiondown
+char191 "
+`A 620,821,16,127,37,87 2 0300 Agrave
+char192 "
+'A 620,821,16,132,37,87 2 0301 Aacute
+char193 "
+^A 620,821,16,127,37,87 2 0302 Acircumflex
+char194 "
+~A 620,771,16,132,37,87 2 0303 Atilde
+char195 "
+:A 620,762,16,139,37,87 2 0304 Adieresis
+char196 "
+oA 620,831,16,127,37,87 2 0305 Aring
+char197 "
+AE 740,594,16,109,71,87 2 0306 AE
+char198 "
+,C 520,610,191,161,-43,87 2 0307 Ccedilla
+char199 "
+`E 620,821,12,139,-41,87 2 0310 Egrave
+char200 "
+'E 620,821,12,139,-41,87 2 0311 Eacute
+char201 "
+^E 620,821,12,139,-41,87 2 0312 Ecircumflex
+char202 "
+:E 620,762,12,139,-41,87 2 0313 Edieresis
+char203 "
+`I 380,821,0,174,-49,87 2 0314 Igrave
+char204 "
+'I 380,821,0,202,-49,87 2 0315 Iacute
+char205 "
+^I 380,821,0,174,-49,87 2 0316 Icircumflex
+char206 "
+:I 380,762,0,189,-49,87 2 0317 Idieresis
+char207 "
+-D 700,640,6,118,-36,87 2 0320 Eth
+char208 "
+~N 700,761,168,265,-35,87 2 0321 Ntilde
+char209 "
+`O 600,821,16,110,-44,87 2 0322 Ograve
+char210 "
+'O 600,821,16,110,-44,87 2 0323 Oacute
+char211 "
+^O 600,821,16,110,-44,87 2 0324 Ocircumflex
+char212 "
+~O 600,761,16,110,-44,87 2 0325 Otilde
+char213 "
+:O 600,762,16,110,-44,87 2 0326 Odieresis
+char214 "
+char215 520,410,0,57,-83,57 0 0327 multiply
+/O 660,672,78,141,-33,87 2 0330 Oslash
+char216 "
+`U 740,821,16,102,-76,87 2 0331 Ugrave
+char217 "
+'U 740,821,16,102,-76,87 2 0332 Uacute
+char218 "
+^U 740,821,16,102,-76,87 2 0333 Ucircumflex
+char219 "
+:U 740,762,16,102,-76,87 2 0334 Udieresis
+char220 "
+'Y 560,821,168,264,9,87 2 0335 Yacute
+char221 "
+TP 540,623,0,157,-2,87 2 0336 Thorn
+char222 "
+ss 420,714,314,172,177,87 3 0337 germandbls
+char223 "
+`a 420,659,15,115,-42,87 2 0340 agrave
+char224 "
+'a 420,659,15,122,-42,87 2 0341 aacute
+char225 "
+^a 420,649,15,115,-42,87 2 0342 acircumflex
+char226 "
+~a 420,619,15,152,-42,87 2 0343 atilde
+char227 "
+:a 420,610,15,115,-42,87 2 0344 adieresis
+char228 "
+oa 420,659,15,115,-42,87 2 0345 aring
+char229 "
+ae 540,468,14,134,-17,87 0 0346 ae
+char230 "
+,c 340,438,191,116,-12,87 0 0347 ccedilla
+char231 "
+`e 340,659,14,113,-37,87 2 0350 egrave
+char232 "
+'e 340,659,14,172,-37,87 2 0351 eacute
+char233 "
+^e 340,649,14,143,-37,87 2 0352 ecircumflex
+char234 "
+:e 340,610,14,159,-37,87 2 0353 edieresis
+char235 "
+`i 240,659,14,116,-50,87 2 0354 igrave
+char236 "
+'i 240,659,14,202,-50,87 2 0355 iacute
+char237 "
+^i 240,649,14,173,-50,87 2 0356 icircumflex
+char238 "
+:i 240,610,14,179,-50,87 2 0357 idieresis
+char239 "
+Sd 400,714,14,172,-37,87 2 0360 eth
+char240 "
+~n 460,619,14,134,-51,87 2 0361 ntilde
+char241 "
+`o 400,659,14,99,-37,87 2 0362 ograve
+char242 "
+'o 400,659,14,132,-37,87 2 0363 oacute
+char243 "
+^o 400,649,14,103,-37,87 2 0364 ocircumflex
+char244 "
+~o 400,619,14,152,-37,87 2 0365 otilde
+char245 "
+:o 400,610,14,129,-37,87 2 0366 odieresis
+char246 "
+char247 520,440,14,73,-67,73 0 0367 divide
+/o 440,488,64,150,4,87 0 0370 oslash
+char248 "
+`u 460,659,14,118,-52,87 2 0371 ugrave
+char249 "
+'u 460,659,14,118,-52,87 2 0372 uacute
+char250 "
+^u 460,649,14,118,-52,87 2 0373 ucircumflex
+char251 "
+:u 460,610,14,118,-52,87 2 0374 udieresis
+char252 "
+'y 400,659,314,133,74,87 3 0375 yacute
+char253 "
+Tp 440,714,314,115,88,87 3 0376 thorn
+char254 "
+:y 400,610,314,133,74,87 3 0377 ydieresis
+char255 "
diff --git a/devps/ZD b/devps/ZD
new file mode 100644
index 000000000..c2bd4eb8f
--- /dev/null
+++ b/devps/ZD
@@ -0,0 +1,193 @@
+name ZD
+internalname ZapfDingbats
+special
+spacewidth 278
+charset
+space 278 0 0040
+--- 974,621 3 0041 a1
+--- 961,611 3 0042 a2
+--- 974,621 3 0043 a202
+--- 980,692 3 0044 a3
+--- 719,566 3 0045 a4
+--- 789,705,14 3 0046 a5
+--- 790,705,14 3 0047 a119
+--- 791,705,13 3 0050 a118
+--- 690,553 3 0051 a117
+--- 960,568 3 0052 a11
+rh 939,559 3 0053 a12
+--- 549,705,11 3 0054 a13
+--- 855,632 3 0055 a14
+--- 911,642 3 0056 a15
+--- 933,550 3 0057 a16
+--- 911,642 3 0060 a105
+--- 945,553 3 0061 a17
+--- 974,587 3 0062 a18
+OK 755,705,13 3 0063 a19
+--- 846,705,14 3 0064 a20
+--- 762,692 3 0065 a21
+--- 761,692 3 0066 a22
+--- 571,661,68 3 0067 a23
+--- 677,705,13 3 0070 a24
+--- 763,692 3 0071 a25
+--- 760,692 3 0072 a26
+--- 759,692 3 0073 a27
+--- 754,692 3 0074 a28
+--- 494,692 3 0075 a6
+--- 552,692 3 0076 a7
+--- 537,692 3 0077 a8
+--- 577,596 3 0100 a9
+--- 692,705,14 3 0101 a10
+--- 786,705,14 3 0102 a29
+--- 788,705,14 3 0103 a30
+--- 788,705,14 3 0104 a31
+--- 790,705,14 3 0105 a32
+--- 793,705,13 3 0106 a33
+--- 794,705,13 3 0107 a34
+--- 816,705,14 3 0110 a35
+--- 823,705,14 3 0111 a36
+--- 789,705,14 3 0112 a37
+--- 841,705,14 3 0113 a38
+--- 823,705,14 3 0114 a39
+--- 833,705,14 3 0115 a40
+--- 816,705,13 3 0116 a41
+--- 831,705,14 3 0117 a42
+--- 923,705,14 3 0120 a43
+--- 744,692 3 0121 a44
+--- 723,692 3 0122 a45
+--- 749,692 3 0123 a46
+--- 790,705,14 3 0124 a47
+--- 792,705,14 3 0125 a48
+--- 695,706,14 3 0126 a49
+--- 776,699,6 3 0127 a50
+--- 768,699,7 3 0130 a51
+--- 792,705,14 3 0131 a52
+--- 759,692 3 0132 a53
+--- 707,704,13 3 0133 a54
+--- 708,705,14 3 0134 a55
+--- 682,705,14 3 0135 a56
+--- 701,705,14 3 0136 a57
+--- 826,705,14 3 0137 a58
+--- 815,705,14 3 0140 a59
+--- 789,705,14 3 0141 a60
+--- 789,705,14 3 0142 a61
+--- 707,705,14 3 0143 a62
+--- 687,692 3 0144 a63
+--- 696,691 3 0145 a64
+--- 689,692 3 0146 a65
+--- 786,705,14 3 0147 a66
+--- 787,705,14 3 0150 a67
+--- 713,705,14 3 0151 a68
+--- 791,705,14 3 0152 a69
+--- 785,705,14 3 0153 a70
+--- 791,705,14 3 0154 a71
+--- 873,705,14 3 0155 a72
+--- 761,692 3 0156 a73
+--- 762,692 3 0157 a74
+--- 762,692 3 0160 a203
+--- 759,692 3 0161 a75
+--- 759,692 3 0162 a204
+--- 892,705 3 0163 a76
+--- 892,692,14 3 0164 a77
+--- 788,705,14 3 0165 a78
+--- 784,705,14 3 0166 a79
+--- 438,705,14 3 0167 a81
+--- 138,692 3 0170 a82
+--- 277,692 3 0171 a83
+--- 415,692 3 0172 a84
+--- 392,705 3 0173 a97
+--- 392,705 3 0174 a98
+--- 668,705 3 0175 a99
+--- 668,705 3 0176 a100
+--- 732,806,143 3 0241 a101
+--- 544,706,14 3 0242 a102
+--- 544,705,14 3 0243 a103
+--- 910,651 3 0244 a104
+--- 667,705,14 3 0245 a106
+--- 760,705,14 3 0246 a107
+--- 760,569 3 0247 a108
+--- 776,705 3 0250 a112
+--- 595,705,14 3 0251 a111
+--- 694,705,14 3 0252 a110
+--- 626,705 3 0253 a109
+--- 788,705,14 3 0254 a120
+--- 788,705,14 3 0255 a121
+--- 788,705,14 3 0256 a122
+--- 788,705,14 3 0257 a123
+--- 788,705,14 3 0260 a124
+--- 788,705,14 3 0261 a125
+--- 788,705,14 3 0262 a126
+--- 788,705,14 3 0263 a127
+--- 788,705,14 3 0264 a128
+--- 788,705,14 3 0265 a129
+--- 788,705,14 3 0266 a130
+--- 788,705,14 3 0267 a131
+--- 788,705,14 3 0270 a132
+--- 788,705,14 3 0271 a133
+--- 788,705,14 3 0272 a134
+--- 788,705,14 3 0273 a135
+--- 788,705,14 3 0274 a136
+--- 788,705,14 3 0275 a137
+--- 788,705,14 3 0276 a138
+--- 788,705,14 3 0277 a139
+--- 788,705,14 3 0300 a140
+--- 788,705,14 3 0301 a141
+--- 788,705,14 3 0302 a142
+--- 788,705,14 3 0303 a143
+--- 788,705,14 3 0304 a144
+--- 788,705,14 3 0305 a145
+--- 788,705,14 3 0306 a146
+--- 788,705,14 3 0307 a147
+--- 788,705,14 3 0310 a148
+--- 788,705,14 3 0311 a149
+--- 788,705,14 3 0312 a150
+--- 788,705,14 3 0313 a151
+--- 788,705,14 3 0314 a152
+--- 788,705,14 3 0315 a153
+--- 788,705,14 3 0316 a154
+--- 788,705,14 3 0317 a155
+--- 788,705,14 3 0320 a156
+--- 788,705,14 3 0321 a157
+--- 788,705,14 3 0322 a158
+--- 788,705,14 3 0323 a159
+--- 894,634 3 0324 a160
+--- 838,540 3 0325 a161
+--- 1016,540 3 0326 a163
+--- 458,820,127 3 0327 a164
+--- 748,597 3 0330 a196
+--- 924,552 3 0331 a165
+--- 748,597 3 0332 a192
+--- 918,526 3 0333 a166
+--- 927,660 3 0334 a167
+--- 928,562 3 0335 a168
+--- 928,563 3 0336 a169
+--- 834,537 3 0337 a170
+--- 873,599 3 0340 a171
+--- 828,588 3 0341 a172
+--- 924,594 3 0342 a173
+--- 924,594 3 0343 a162
+--- 917,692 3 0344 a174
+--- 930,608 3 0345 a175
+--- 931,608 3 0346 a176
+--- 463,791,99 3 0347 a177
+--- 883,623 3 0350 a178
+--- 836,648 3 0351 a179
+--- 836,648 3 0352 a193
+--- 867,591 3 0353 a180
+--- 867,591 3 0354 a199
+--- 696,648 3 0355 a181
+--- 696,648 3 0356 a200
+--- 874,619 3 0357 a182
+--- 874,615 3 0361 a201
+--- 760,692 3 0362 a183
+--- 946,533 3 0363 a184
+--- 771,655 3 0364 a197
+--- 865,481 3 0365 a185
+--- 771,655 3 0366 a194
+--- 888,712,19 3 0367 a198
+--- 967,568 3 0370 a186
+--- 888,712,19 3 0371 a195
+--- 831,579 3 0372 a187
+--- 873,578 3 0373 a188
+--- 927,542 3 0374 a189
+--- 970,616 3 0375 a190
+--- 918,593 3 0376 a191
diff --git a/devps/ZDR b/devps/ZDR
new file mode 100644
index 000000000..3b7f0a64c
--- /dev/null
+++ b/devps/ZDR
@@ -0,0 +1,193 @@
+name ZDR
+internalname ZapfDingbats-Reverse
+special
+spacewidth 278
+charset
+space 278 0 0040
+--- 974,621 3 0041 a1
+--- 961,611 3 0042 a2
+--- 974,621 3 0043 a202
+--- 980,692 3 0044 a3
+--- 719,566 3 0045 a4
+--- 789,705,14 3 0046 a5
+--- 790,705,14 3 0047 a119
+--- 791,705,13 3 0050 a118
+--- 690,553 3 0051 a117
+--- 960,568 3 0052 a11
+lh 939,559 3 0053 a12
+--- 549,705,11 3 0054 a13
+--- 855,632 3 0055 a14
+--- 911,642 3 0056 a15
+--- 933,550 3 0057 a16
+--- 911,642 3 0060 a105
+--- 945,553 3 0061 a17
+--- 974,587 3 0062 a18
+--- 755,705,13 3 0063 a19
+--- 846,705,14 3 0064 a20
+--- 762,692 3 0065 a21
+--- 761,692 3 0066 a22
+--- 571,661,68 3 0067 a23
+--- 677,705,13 3 0070 a24
+--- 763,692 3 0071 a25
+--- 760,692 3 0072 a26
+--- 759,692 3 0073 a27
+--- 754,692 3 0074 a28
+--- 494,692 3 0075 a6
+--- 552,692 3 0076 a7
+--- 537,692 3 0077 a8
+--- 577,596 3 0100 a9
+--- 692,705,14 3 0101 a10
+--- 786,705,14 3 0102 a29
+--- 788,705,14 3 0103 a30
+--- 788,705,14 3 0104 a31
+--- 790,705,14 3 0105 a32
+--- 793,705,13 3 0106 a33
+--- 794,705,13 3 0107 a34
+--- 816,705,14 3 0110 a35
+--- 823,705,14 3 0111 a36
+--- 789,705,14 3 0112 a37
+--- 841,705,14 3 0113 a38
+--- 823,705,14 3 0114 a39
+--- 833,705,14 3 0115 a40
+--- 816,705,13 3 0116 a41
+--- 831,705,14 3 0117 a42
+--- 923,705,14 3 0120 a43
+--- 744,692 3 0121 a44
+--- 723,692 3 0122 a45
+--- 749,692 3 0123 a46
+--- 790,705,14 3 0124 a47
+--- 792,705,14 3 0125 a48
+--- 695,706,14 3 0126 a49
+--- 776,699,6 3 0127 a50
+--- 768,699,7 3 0130 a51
+--- 792,705,14 3 0131 a52
+--- 759,692 3 0132 a53
+--- 707,704,13 3 0133 a54
+--- 708,705,14 3 0134 a55
+--- 682,705,14 3 0135 a56
+--- 701,705,14 3 0136 a57
+--- 826,705,14 3 0137 a58
+--- 815,705,14 3 0140 a59
+--- 789,705,14 3 0141 a60
+--- 789,705,14 3 0142 a61
+--- 707,705,14 3 0143 a62
+--- 687,692 3 0144 a63
+--- 696,691 3 0145 a64
+--- 689,692 3 0146 a65
+--- 786,705,14 3 0147 a66
+--- 787,705,14 3 0150 a67
+--- 713,705,14 3 0151 a68
+--- 791,705,14 3 0152 a69
+--- 785,705,14 3 0153 a70
+--- 791,705,14 3 0154 a71
+--- 873,705,14 3 0155 a72
+--- 761,692 3 0156 a73
+--- 762,692 3 0157 a74
+--- 762,692 3 0160 a203
+--- 759,692 3 0161 a75
+--- 759,692 3 0162 a204
+--- 892,705 3 0163 a76
+--- 892,692,14 3 0164 a77
+--- 788,705,14 3 0165 a78
+--- 784,705,14 3 0166 a79
+--- 438,705,14 3 0167 a81
+--- 138,692 3 0170 a82
+--- 277,692 3 0171 a83
+--- 415,692 3 0172 a84
+--- 392,705 3 0173 a97
+--- 392,705 3 0174 a98
+--- 668,705 3 0175 a99
+--- 668,705 3 0176 a100
+--- 732,806,143 3 0241 a101
+--- 544,706,14 3 0242 a102
+--- 544,705,14 3 0243 a103
+--- 910,651 3 0244 a104
+--- 667,705,14 3 0245 a106
+--- 760,705,14 3 0246 a107
+--- 760,569 3 0247 a108
+--- 776,705 3 0250 a112
+--- 595,705,14 3 0251 a111
+--- 694,705,14 3 0252 a110
+--- 626,705 3 0253 a109
+--- 788,705,14 3 0254 a120
+--- 788,705,14 3 0255 a121
+--- 788,705,14 3 0256 a122
+--- 788,705,14 3 0257 a123
+--- 788,705,14 3 0260 a124
+--- 788,705,14 3 0261 a125
+--- 788,705,14 3 0262 a126
+--- 788,705,14 3 0263 a127
+--- 788,705,14 3 0264 a128
+--- 788,705,14 3 0265 a129
+--- 788,705,14 3 0266 a130
+--- 788,705,14 3 0267 a131
+--- 788,705,14 3 0270 a132
+--- 788,705,14 3 0271 a133
+--- 788,705,14 3 0272 a134
+--- 788,705,14 3 0273 a135
+--- 788,705,14 3 0274 a136
+--- 788,705,14 3 0275 a137
+--- 788,705,14 3 0276 a138
+--- 788,705,14 3 0277 a139
+--- 788,705,14 3 0300 a140
+--- 788,705,14 3 0301 a141
+--- 788,705,14 3 0302 a142
+--- 788,705,14 3 0303 a143
+--- 788,705,14 3 0304 a144
+--- 788,705,14 3 0305 a145
+--- 788,705,14 3 0306 a146
+--- 788,705,14 3 0307 a147
+--- 788,705,14 3 0310 a148
+--- 788,705,14 3 0311 a149
+--- 788,705,14 3 0312 a150
+--- 788,705,14 3 0313 a151
+--- 788,705,14 3 0314 a152
+--- 788,705,14 3 0315 a153
+--- 788,705,14 3 0316 a154
+--- 788,705,14 3 0317 a155
+--- 788,705,14 3 0320 a156
+--- 788,705,14 3 0321 a157
+--- 788,705,14 3 0322 a158
+--- 788,705,14 3 0323 a159
+--- 894,634 3 0324 a160
+--- 838,540 3 0325 a161
+--- 1016,540 3 0326 a163
+--- 458,820,127 3 0327 a164
+--- 748,597 3 0330 a196
+--- 924,552 3 0331 a165
+--- 748,597 3 0332 a192
+--- 918,526 3 0333 a166
+--- 927,660 3 0334 a167
+--- 928,562 3 0335 a168
+--- 928,563 3 0336 a169
+--- 834,537 3 0337 a170
+--- 873,599 3 0340 a171
+--- 828,588 3 0341 a172
+--- 924,594 3 0342 a173
+--- 924,594 3 0343 a162
+--- 917,692 3 0344 a174
+--- 930,608 3 0345 a175
+--- 931,608 3 0346 a176
+--- 463,791,99 3 0347 a177
+--- 883,623 3 0350 a178
+--- 836,648 3 0351 a179
+--- 836,648 3 0352 a193
+--- 867,591 3 0353 a180
+--- 867,591 3 0354 a199
+--- 696,648 3 0355 a181
+--- 696,648 3 0356 a200
+--- 874,619 3 0357 a182
+--- 874,615 3 0361 a201
+--- 760,692 3 0362 a183
+--- 946,533 3 0363 a184
+--- 771,655 3 0364 a197
+--- 865,481 3 0365 a185
+--- 771,655 3 0366 a194
+--- 888,712,19 3 0367 a198
+--- 967,568 3 0370 a186
+--- 888,712,19 3 0371 a195
+--- 831,579 3 0372 a187
+--- 873,578 3 0373 a188
+--- 927,542 3 0374 a189
+--- 970,616 3 0375 a190
+--- 918,593 3 0376 a191
diff --git a/ps/devps/download b/devps/download
index 7da0011e1..7da0011e1 100644
--- a/ps/devps/download
+++ b/devps/download
diff --git a/devps/generate/Makefile b/devps/generate/Makefile
new file mode 100644
index 000000000..3382cc60a
--- /dev/null
+++ b/devps/generate/Makefile
@@ -0,0 +1,224 @@
+#Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# This is set up so you can do
+# make -f generate/Makefile
+# in the parent directory of this directory.
+
+# Directory containing AFM files. Must not be current directory.
+# Either long names (eg Times-Roman.afm) or short names (eg timesr.afm)
+# may be used. See the afmname script.
+afmdir=/usr/local/afm
+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)
+
+DESC=$(srcdir)/../DESC
+AFMTODIT=afmtodit -d$(DESC)
+IFLAG=-i 50
+NOLIGFLAG=-n
+TEXTENC=$(srcdir)/../text.enc
+EFLAG=-e $(TEXTENC)
+TEXTMAP=$(srcdir)/textmap
+SHELL=/bin/sh
+AFMNAME=$(SHELL) $(srcdir)/afmname
+
+all: $(FONTS)
+
+TR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-Roman.afm` $(TEXTMAP) $@
+
+TB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-Bold.afm` $(TEXTMAP) $@
+
+TI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \
+ `$(AFMNAME) $(afmdir)/Times-Italic.afm` $(TEXTMAP) $@
+
+TBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Times-BoldItalic.afm` $(TEXTMAP) $@
+
+HR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica.afm` $(TEXTMAP) $@
+
+HB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Bold.afm` $(TEXTMAP) $@
+
+HI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Oblique.afm` $(TEXTMAP) $@
+
+HBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-BoldOblique.afm` $(TEXTMAP) $@
+
+CR:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier.afm` $(TEXTMAP) $@
+
+CB:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-Bold.afm` $(TEXTMAP) $@
+
+CI:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-Oblique.afm` $(TEXTMAP) $@
+
+CBI:
+ $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Courier-BoldOblique.afm` $(TEXTMAP) $@
+
+PR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Roman.afm` $(TEXTMAP) $@
+
+PB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Bold.afm` $(TEXTMAP) $@
+
+PI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-Italic.afm` $(TEXTMAP) $@
+
+PBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Palatino-BoldItalic.afm` $(TEXTMAP) $@
+
+NR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Roman.afm` $(TEXTMAP) $@
+
+NB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Bold.afm` $(TEXTMAP) $@
+
+NI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Italic.afm` $(TEXTMAP) $@
+
+NBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/NewCenturySchlbk-BoldItalic.afm` $(TEXTMAP) $@
+
+BMR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-Light.afm` $(TEXTMAP) $@
+
+BMB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-Demi.afm` $(TEXTMAP) $@
+
+BMI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-LightItalic.afm` $(TEXTMAP) $@
+
+BMBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Bookman-DemiItalic.afm` $(TEXTMAP) $@
+
+AR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-Book.afm` $(TEXTMAP) $@
+
+AB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-Demi.afm` $(TEXTMAP) $@
+
+AI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-BookOblique.afm` $(TEXTMAP) $@
+
+ABI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/AvantGarde-DemiOblique.afm` $(TEXTMAP) $@
+
+HNR:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow.afm` $(TEXTMAP) $@
+
+HNB:
+ $(AFMTODIT) $(EFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Bold.afm` $(TEXTMAP) $@
+
+HNI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Oblique.afm` $(TEXTMAP) $@
+
+HNBI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/Helvetica-Narrow-BoldOblique.afm` $(TEXTMAP) $@
+
+ZCMI:
+ $(AFMTODIT) $(EFLAG) $(IFLAG) \
+ `$(AFMNAME) $(afmdir)/ZapfChancery-MediumItalic.afm` $(TEXTMAP) $@
+
+ZD:
+ $(AFMTODIT) -s \
+ `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` $(srcdir)/dingbatsmap $@
+
+SS: $(srcdir)/symbolsl.afm
+ $(AFMTODIT) -s $(IFLAG) $(srcdir)/symbolsl.afm $(srcdir)/lgreekmap $@
+
+S: symbol.afm
+ $(AFMTODIT) -s symbol.afm symbolmap $@
+
+ZDR: zapfdr.afm
+ $(AFMTODIT) -s zapfdr.afm $(srcdir)/dingbatsrmap $@
+
+symbol.afm: $(srcdir)/symbol.sed
+ -rm -f $@
+ sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/Symbol.afm` >$@
+
+zapfdr.afm:
+ -rm -f $@
+ sed -e '/^FontName /s/ZapfDingbats/ZapfDingbats-Reverse/' \
+ `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` >$@
+
+ZD: $(srcdir)/dingbatsmap
+ZDR: $(srcdir)/dingbatsrmap
+$(TEXTFONTS): $(TEXTMAP) $(TEXTENC)
+$(SPECIALFONTS): symbolmap
+$(GREEKFONTS): $(srcdir)/lgreekmap
+$(FONTS): $(DESC)
+
+symbolmap: $(TEXTMAP) $(srcdir)/symbolchars
+ cat $(TEXTMAP) $(srcdir)/symbolchars >$@
+
+clean:
+ -rm -f symbolmap symbol.afm zapfdr.afm
+
+realclean: clean
+ -rm -f $(FONTS)
+
+extraclean: realclean
+ -rm -f core *~ \#*
+
+.PHONY: all clean realclean extraclean
+
diff --git a/devps/generate/afmname b/devps/generate/afmname
new file mode 100755
index 000000000..8503d46d8
--- /dev/null
+++ b/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 -e '
+/^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/ps/devps/dingbatsmap b/devps/generate/dingbatsmap
index 3a97fa99b..3a97fa99b 100644
--- a/ps/devps/dingbatsmap
+++ b/devps/generate/dingbatsmap
diff --git a/ps/devps/dingbatsrmap b/devps/generate/dingbatsrmap
index ccc14cb2d..ccc14cb2d 100644
--- a/ps/devps/dingbatsrmap
+++ b/devps/generate/dingbatsrmap
diff --git a/ps/devps/lgreekmap b/devps/generate/lgreekmap
index 7df97581b..0b0c19780 100644
--- a/ps/devps/lgreekmap
+++ b/devps/generate/lgreekmap
@@ -11,14 +11,17 @@ 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
diff --git a/devps/generate/symbol.sed b/devps/generate/symbol.sed
new file mode 100644
index 000000000..b4b02aba6
--- /dev/null
+++ b/devps/generate/symbol.sed
@@ -0,0 +1,33 @@
+#! /bin/sed -f
+# Tweak the AFM file for the Symbol font.
+/^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/devps/generate/symbolchars b/devps/generate/symbolchars
new file mode 100644
index 000000000..41ec3e466
--- /dev/null
+++ b/devps/generate/symbolchars
@@ -0,0 +1,60 @@
+plus pl
+minus mi
+plusminus +-
+equal eq
+divide di
+multiply mu
+arrowup arrowverttp
+arrowdown arrowvertbt
+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
+Omicron *O
+Phi *F
+Pi *P
+Psi *Q
+Rho *R
+Sigma *S
+Tau *T
+Theta *H
+Upsilon1 *U
+Xi *C
+Zeta *Z
+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
+sigma1 ts
+tau *t
+theta *h
+theta1 +h
+upsilon *u
+xi *c
+zeta *z
diff --git a/ps/devps/symbolsl.afm b/devps/generate/symbolsl.afm
index 90939ada9..90939ada9 100644
--- a/ps/devps/symbolsl.afm
+++ b/devps/generate/symbolsl.afm
diff --git a/devps/generate/textmap b/devps/generate/textmap
new file mode 100644
index 000000000..9001d3657
--- /dev/null
+++ b/devps/generate/textmap
@@ -0,0 +1,449 @@
+a a
+b b
+c c
+d d
+e e
+f f
+g g
+h h
+i i
+j j
+k k
+l l
+m m
+n n
+o o
+p p
+q q
+r r
+s s
+t t
+u u
+v v
+w w
+x x
+y y
+z z
+A A
+B B
+C C
+D D
+E E
+F F
+G G
+H H
+I I
+J J
+K K
+L L
+M M
+N N
+O O
+P P
+Q Q
+R R
+S S
+T T
+U U
+V V
+W W
+X X
+Y Y
+Z Z
+AE AE
+Aacute 'A
+Acircumflex ^A
+Adieresis :A
+Agrave `A
+Aring oA
+Atilde ~A
+Cacute 'C
+Ccedilla ,C
+Eacute 'E
+Ecircumflex ^E
+Edieresis :E
+Egrave `E
+Eth -D
+IJ IJ
+Iacute 'I
+Icircumflex ^I
+Idieresis :I
+Ifraktur Im
+Igrave `I
+Lslash /L
+Ntilde ~N
+OE OE
+Oacute 'O
+Ocircumflex ^O
+Odieresis :O
+Ograve `O
+Oslash /O
+Otilde ~O
+Rfraktur Re
+Scaron vS
+Thorn TP
+Uacute 'U
+Ucircumflex ^U
+Udieresis :U
+Ugrave `U
+Yacute 'Y
+Ydieresis :Y
+Zcaron vZ
+aacute 'a
+acircumflex ^a
+acute aa
+adieresis :a
+ae ae
+agrave `a
+angle /_
+angleleft la
+angleright ra
+aleph Ah
+ampersand &
+approxequal ~~
+aring oa
+arrowboth <>
+arrowdblboth hA
+arrowdbldown dA
+arrowdblleft lA
+arrowdblright rA
+arrowdblup uA
+arrowdown da
+arrowleft <-
+arrowright ->
+arrowup ua
+asciicircum ha
+asciitilde ti
+asterisk *
+asteriskmath **
+at @
+at at
+atilde ~a
+backslash \
+backslash rs
+bar ba
+bar |
+bell bs
+braceleft lC
+braceleft {
+braceright rC
+braceright }
+bracketleft [
+bracketleft lB
+bracketright ]
+bracketright rB
+breve ab
+brokenbar bb
+bullet bu
+cacute 'c
+caron ah
+ccedilla ,c
+cedilla ac
+cent ct
+checkmark OK
+circle ci
+circlemultiply c*
+circleplus c+
+circumflex a^
+circumflex ^
+colon :
+comma ,
+congruent =~
+copyright co
+currency Cs
+dagger dg
+daggerdbl dd
+degree de
+dieresis ad
+dollar $
+dollar Do
+dotaccent a.
+dotlessi .i
+dotlessj .j
+dotmath md
+eacute 'e
+ecircumflex ^e
+edieresis :e
+egrave `e
+eight 8
+element mo
+emdash em
+emptyset es
+endash en
+equal =
+equalmath eq
+equivalence ==
+eth Sd
+exclam !
+exclamdown r!
+existential te
+ff ff
+ffi Fi
+ffl Fl
+fi fi
+five 5
+fl fl
+florin Fn
+four 4
+germandbls ss
+gradient gr
+grave ga
+greater >
+greaterequal >=
+guillemotleft Fo
+guillemotright Fc
+guilsinglleft fo
+guilsinglright fc
+handleft lh
+handright rh
+hbar -h
+hungarumlaut a"
+hyphen -
+hyphen hy
+iacute 'i
+icircumflex ^i
+idieresis :i
+igrave `i
+ij ij
+infinity if
+integral is
+intersection ca
+less <
+lessequal <=
+logicaland AN
+logicalnot no
+logicalor OR
+lozenge lz
+lslash /l
+macron a-
+minus \-
+minusplus -+
+minute fm
+nine 9
+notelement nm
+notequal !=
+notequivalence ne
+notpropersuperset nc
+ntilde ~n
+numbersign #
+numbersign sh
+oacute 'o
+ocircumflex ^o
+odieresis :o
+oe oe
+ogonek ho
+ograve `o
+one 1
+onehalf 12
+onequarter 14
+onesuperior S1
+ordfeminine Of
+ordmasculine Om
+oslash /o
+otilde ~o
+paragraph ps
+parenleft (
+parenright )
+partialdiff pd
+percent %
+period .
+perthousand %0
+perpendicular pp
+plus +
+plusmath pl
+propersubset sb
+propersuperset sp
+proportional pt
+question ?
+questiondown r?
+quotedbl "
+quotedblbase Bq
+quotedblleft lq
+quotedblright rq
+quoteleft `
+quoteleft oq
+quoteright '
+quotesingle aq
+quotesinglbase bq
+reflexsubset ib
+reflexsuperset ip
+registered rg
+ring ao
+scaron vs
+second sd
+section sc
+semicolon ;
+seven 7
+similar ap
+similarequal ~=
+six 6
+slash /
+slash sl
+square sq
+sterling Po
+therefore 3d
+therefore tf
+thorn Tp
+three 3
+threequarters 34
+threesuperior S3
+tilde a~
+tilde ~
+trademark tm
+two 2
+twosuperior S2
+uacute 'u
+ucircumflex ^u
+udieresis :u
+ugrave `u
+underscore _
+union cu
+universal fa
+weierstrass wp
+yacute 'y
+ydieresis :y
+yen Ye
+zcaron vz
+zero 0
+exclamdown char161
+cent char162
+sterling char163
+currency char164
+yen char165
+brokenbar char166
+section char167
+dieresis char168
+copyright char169
+ordfeminine char170
+guillemotleft char171
+logicalnot char172
+hyphen char173
+registered char174
+macron char175
+degree char176
+plusminus char177
+twosuperior char178
+threesuperior char179
+acute char180
+mu char181
+paragraph char182
+periodcentered char183
+cedilla char184
+onesuperior char185
+ordmasculine char186
+guillemotright char187
+onequarter char188
+onehalf char189
+threequarters char190
+questiondown char191
+Agrave char192
+Aacute char193
+Acircumflex char194
+Atilde char195
+Adieresis char196
+Aring char197
+AE char198
+Ccedilla char199
+Egrave char200
+Eacute char201
+Ecircumflex char202
+Edieresis char203
+Igrave char204
+Iacute char205
+Icircumflex char206
+Idieresis char207
+Eth char208
+Ntilde char209
+Ograve char210
+Oacute char211
+Ocircumflex char212
+Otilde char213
+Odieresis char214
+multiply char215
+Oslash char216
+Ugrave char217
+Uacute char218
+Ucircumflex char219
+Udieresis char220
+Yacute char221
+Thorn char222
+germandbls char223
+agrave char224
+aacute char225
+acircumflex char226
+atilde char227
+adieresis char228
+aring char229
+ae char230
+ccedilla char231
+egrave char232
+eacute char233
+ecircumflex char234
+edieresis char235
+igrave char236
+iacute char237
+icircumflex char238
+idieresis char239
+eth char240
+ntilde char241
+ograve char242
+oacute char243
+ocircumflex char244
+otilde char245
+odieresis char246
+divide char247
+oslash char248
+ugrave char249
+uacute char250
+ucircumflex char251
+udieresis char252
+yacute char253
+thorn char254
+ydieresis char255
+fraction f/
+club CL
+diamond DI
+heart HE
+spade SP
+carriagereturn CR
+suchthat st
+bracelefttp bracelefttp
+braceleftmid braceleftmid
+braceleftbt braceleftbt
+braceex braceex
+braceex bracerightex
+braceex braceleftex
+braceex barex
+bracerighttp bracerighttp
+bracerightmid bracerightmid
+bracerightbt bracerightbt
+parenlefttp parenlefttp
+parenleftbt parenleftbt
+parenleftex parenleftex
+parenrighttp parenrighttp
+parenrightbt parenrightbt
+parenrightex parenrightex
+bracketlefttp bracketlefttp
+bracketleftbt bracketleftbt
+bracketleftex bracketleftex
+bracketrighttp bracketrighttp
+bracketrightbt bracketrightbt
+bracketrightex bracketrightex
+radical sr
+radicalex rn
+approxequal ~=
+bracketlefttp lc
+bracketleftbt lf
+bracketrighttp rc
+bracketrightbt rf
+bracelefttp lt
+braceleftmid lk
+braceleftbt lb
+braceex bv
+bracerighttp rt
+bracerightmid rk
+bracerightbt rb
+summation sum
+product product
+arrowvertex arrowvertex
+arrowhorizex an
diff --git a/ps/devps/prologue b/devps/prologue
index ff067bb0c..f64554b99 100644
--- a/ps/devps/prologue
+++ b/devps/prologue
@@ -57,6 +57,15 @@
/PL 0 def
/LS 0 def
+% Guess the page length.
+% This assumes that the imageable area is vertically centered on the page.
+% PLG - length
+
+/PLG {
+ gsave newpath clippath pathbbox grestore
+ exch pop add exch pop
+} bind def
+
% BP -
/BP {
diff --git a/devps/symbol.afm b/devps/symbol.afm
new file mode 100644
index 000000000..eccf6c2aa
--- /dev/null
+++ b/devps/symbol.afm
@@ -0,0 +1,215 @@
+(c) 1987, 1988, 1989, 1990, 1991 Adobe Systems Incorporated.
+All rights reserved.
+
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Wed Jan 17 21:48:26 1990
+Comment UniqueID 27004
+Comment VMusage 28489 37622
+FontName Symbol
+FullName Symbol
+FamilyName Symbol
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -180 -293 1090 1010
+UnderlinePosition -98
+UnderlineThickness 54
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+EncodingScheme FontSpecific
+StartCharMetrics 189
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ;
+C 34 ; WX 713 ; N universal ; B 31 0 681 705 ;
+C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ;
+C 36 ; WX 549 ; N existential ; B 25 0 478 707 ;
+C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ;
+C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ;
+C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ;
+C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ;
+C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ;
+C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ;
+C 43 ; WX 549 ; N plus ; B 10 0 539 533 ;
+C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ;
+C 45 ; WX 549 ; N minus ; B 11 233 535 288 ;
+C 46 ; WX 250 ; N period ; B 69 -17 181 95 ;
+C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ;
+C 48 ; WX 500 ; N zero ; B 23 -17 471 685 ;
+C 49 ; WX 500 ; N one ; B 117 0 390 673 ;
+C 50 ; WX 500 ; N two ; B 25 0 475 686 ;
+C 51 ; WX 500 ; N three ; B 39 -17 435 685 ;
+C 52 ; WX 500 ; N four ; B 16 0 469 685 ;
+C 53 ; WX 500 ; N five ; B 29 -17 443 685 ;
+C 54 ; WX 500 ; N six ; B 36 -17 467 685 ;
+C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ;
+C 56 ; WX 500 ; N eight ; B 54 -18 440 685 ;
+C 57 ; WX 500 ; N nine ; B 31 -18 460 685 ;
+C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ;
+C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ;
+C 60 ; WX 549 ; N less ; B 26 0 523 522 ;
+C 61 ; WX 549 ; N equal ; B 11 141 537 390 ;
+C 62 ; WX 549 ; N greater ; B 26 0 523 522 ;
+C 63 ; WX 444 ; N question ; B 70 -17 412 686 ;
+C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ;
+C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ;
+C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ;
+C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ;
+C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ;
+C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ;
+C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ;
+C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ;
+C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ;
+C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ;
+C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ;
+C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ;
+C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ;
+C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ;
+C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ;
+C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ;
+C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ;
+C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ;
+C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ;
+C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ;
+C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ;
+C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ;
+C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ;
+C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ;
+C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ;
+C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ;
+C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ;
+C 92 ; WX 863 ; N therefore ; B 163 0 701 478 ;
+C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ;
+C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ;
+C 95 ; WX 500 ; N underscore ; B -2 -252 502 -206 ;
+C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ;
+C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ;
+C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ;
+C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ;
+C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ;
+C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ;
+C 102 ; WX 521 ; N phi ; B 27 -224 490 671 ;
+C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ;
+C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ;
+C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ;
+C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ;
+C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ;
+C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ;
+C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ;
+C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ;
+C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ;
+C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ;
+C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ;
+C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ;
+C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ;
+C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ;
+C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ;
+C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ;
+C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ;
+C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ;
+C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ;
+C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ;
+C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ;
+C 124 ; WX 200 ; N bar ; B 65 -177 135 673 ;
+C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ;
+C 126 ; WX 549 ; N similar ; B 17 203 529 307 ;
+C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ;
+C 162 ; WX 247 ; N minute ; B 27 459 228 735 ;
+C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ;
+C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ;
+C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ;
+C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ;
+C 167 ; WX 753 ; N club ; B 86 -26 660 533 ;
+C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ;
+C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ;
+C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ;
+C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ;
+C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ;
+C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ;
+C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ;
+C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ;
+C 176 ; WX 400 ; N degree ; B 50 385 350 685 ;
+C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ;
+C 178 ; WX 411 ; N second ; B 20 459 413 737 ;
+C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ;
+C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ;
+C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ;
+C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ;
+C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ;
+C 184 ; WX 549 ; N divide ; B 10 71 536 456 ;
+C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ;
+C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ;
+C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ;
+C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ;
+C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ;
+C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ;
+C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ;
+C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ;
+C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ;
+C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ;
+C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ;
+C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ;
+C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ;
+C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ;
+C 200 ; WX 768 ; N union ; B 40 -17 732 492 ;
+C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ;
+C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ;
+C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ;
+C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ;
+C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ;
+C 206 ; WX 713 ; N element ; B 45 0 505 468 ;
+C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ;
+C 208 ; WX 768 ; N angle ; B 26 0 738 673 ;
+C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ;
+C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ;
+C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ;
+C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ;
+C 213 ; WX 823 ; N product ; B 25 -101 803 751 ;
+C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ;
+C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ;
+C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ;
+C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ;
+C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ;
+C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ;
+C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ;
+C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ;
+C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ;
+C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ;
+C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ;
+C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ;
+C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ;
+C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ;
+C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ;
+C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ;
+C 230 ; WX 384 ; N parenlefttp ; B 40 -293 436 926 ;
+C 231 ; WX 384 ; N parenleftex ; B 40 -80 92 920 ;
+C 232 ; WX 384 ; N parenleftbt ; B 40 -293 436 920 ;
+C 233 ; WX 384 ; N bracketlefttp ; B 0 -75 341 925 ;
+C 234 ; WX 384 ; N bracketleftex ; B 0 -75 55 925 ;
+C 235 ; WX 384 ; N bracketleftbt ; B 0 -75 340 925 ;
+C 236 ; WX 494 ; N bracelefttp ; B 201 -75 439 925 ;
+C 237 ; WX 494 ; N braceleftmid ; B 14 -75 255 925 ;
+C 238 ; WX 494 ; N braceleftbt ; B 201 -75 439 925 ;
+C 239 ; WX 494 ; N braceex ; B 201 -75 255 925 ;
+C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ;
+C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ;
+C 243 ; WX 686 ; N integraltp ; B 332 -83 715 921 ;
+C 244 ; WX 686 ; N integralex ; B 332 -88 415 975 ;
+C 245 ; WX 686 ; N integralbt ; B 39 -81 415 921 ;
+C 246 ; WX 384 ; N parenrighttp ; B 54 -293 450 926 ;
+C 247 ; WX 384 ; N parenrightex ; B 398 -80 450 920 ;
+C 248 ; WX 384 ; N parenrightbt ; B 54 -293 450 920 ;
+C 249 ; WX 384 ; N bracketrighttp ; B 22 -75 360 925 ;
+C 250 ; WX 384 ; N bracketrightex ; B 305 -75 360 925 ;
+C 251 ; WX 384 ; N bracketrightbt ; B 20 -75 360 925 ;
+C 252 ; WX 494 ; N bracerighttp ; B 17 -75 255 925 ;
+C 253 ; WX 494 ; N bracerightmid ; B 201 -75 442 925 ;
+C 254 ; WX 494 ; N bracerightbt ; B 17 -75 255 925 ;
+C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ;
+EndCharMetrics
+italicCorrection integral 67
+leftItalicCorrection integral 52
+subscriptCorrection integral -10
+EndFontMetrics
diff --git a/ps/devps/textmap b/devps/symbolmap
index e71fd58cb..63e9c06ad 100644
--- a/ps/devps/textmap
+++ b/devps/symbolmap
@@ -55,64 +55,40 @@ Aacute 'A
Acircumflex ^A
Adieresis :A
Agrave `A
-Alpha *A
Aring oA
Atilde ~A
-Beta *B
Cacute 'C
Ccedilla ,C
-Chi *X
-Delta *D
Eacute 'E
Ecircumflex ^E
Edieresis :E
Egrave `E
-Epsilon *E
-Eta *Y
Eth -D
-Gamma *G
IJ IJ
Iacute 'I
Icircumflex ^I
Idieresis :I
Ifraktur Im
Igrave `I
-Iota *I
-Kappa *K
-Lambda *L
Lslash /L
-Mu *M
Ntilde ~N
-Nu *N
OE OE
Oacute 'O
Ocircumflex ^O
Odieresis :O
Ograve `O
-Omega *W
-Omicron *O
Oslash /O
Otilde ~O
-Phi *F
-Pi *P
-Psi *Q
Rfraktur Re
-Rho *R
Scaron vS
-Sigma *S
-Tau *T
-Theta *H
Thorn TP
Uacute 'U
Ucircumflex ^U
Udieresis :U
Ugrave `U
-Upsilon1 *U
-Xi *C
Yacute 'Y
Ydieresis :Y
Zcaron vZ
-Zeta *Z
aacute 'a
acircumflex ^a
acute aa
@@ -123,7 +99,6 @@ angle /_
angleleft la
angleright ra
aleph Ah
-alpha *a
ampersand &
approxequal ~~
aring oa
@@ -149,7 +124,6 @@ backslash rs
bar ba
bar |
bell bs
-beta *b
braceleft lC
braceleft {
braceright rC
@@ -167,7 +141,6 @@ ccedilla ,c
cedilla ac
cent ct
checkmark OK
-chi *x
circle ci
circlemultiply c*
circleplus c+
@@ -181,9 +154,7 @@ currency Cs
dagger dg
daggerdbl dd
degree de
-delta *d
dieresis ad
-divide di
dollar $
dollar Do
dotaccent a.
@@ -199,11 +170,9 @@ element mo
emdash em
emptyset es
endash en
-epsilon *e
equal =
equalmath eq
equivalence ==
-eta *y
eth Sd
exclam !
exclamdown r!
@@ -214,8 +183,8 @@ ffl Fl
fi fi
five 5
fl fl
+florin Fn
four 4
-gamma *g
germandbls ss
gradient gr
grave ga
@@ -239,28 +208,23 @@ ij ij
infinity if
integral is
intersection ca
-iota *i
-kappa *k
-lambda *l
less <
lessequal <=
logicaland AN
logicalnot no
logicalor OR
+lozenge lz
lslash /l
macron a-
minus \-
minusplus -+
minute fm
-mu *m
-multiply mu
nine 9
notelement nm
notequal !=
notequivalence ne
notpropersuperset nc
ntilde ~n
-nu *n
numbersign #
numbersign sh
oacute 'o
@@ -269,8 +233,6 @@ odieresis :o
oe oe
ogonek ho
ograve `o
-omega *w
-omicron *o
one 1
onehalf 12
onequarter 14
@@ -287,35 +249,31 @@ percent %
period .
perthousand %0
perpendicular pp
-phi *f
-pi *p
plus +
plusmath pl
-plusminus +-
propersubset sb
propersuperset sp
proportional pt
-psi *q
question ?
questiondown r?
quotedbl "
+quotedblbase Bq
quotedblleft lq
quotedblright rq
quoteleft `
quoteleft oq
quoteright '
+quotesingle aq
+quotesinglbase bq
reflexsubset ib
reflexsuperset ip
registered rg
-rho *r
ring ao
scaron vs
second sd
section sc
semicolon ;
seven 7
-sigma *s
-sigma1 ts
similar ap
similarequal ~=
six 6
@@ -323,10 +281,8 @@ slash /
slash sl
square sq
sterling Po
-tau *t
therefore 3d
therefore tf
-theta *h
thorn Tp
three 3
threequarters 34
@@ -343,15 +299,12 @@ ugrave `u
underscore _
union cu
universal fa
-upsilon *u
weierstrass wp
-xi *c
yacute 'y
ydieresis :y
yen Ye
zcaron vz
zero 0
-zeta *z
exclamdown char161
cent char162
sterling char163
@@ -492,3 +445,64 @@ bracerightmid rk
bracerightbt rb
summation sum
product product
+arrowvertex arrowvertex
+plus pl
+minus mi
+plusminus +-
+equal eq
+divide di
+multiply mu
+arrowup arrowverttp
+arrowdown arrowvertbt
+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
+Omicron *O
+Phi *F
+Pi *P
+Psi *Q
+Rho *R
+Sigma *S
+Tau *T
+Theta *H
+Upsilon1 *U
+Xi *C
+Zeta *Z
+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
+sigma1 ts
+tau *t
+theta *h
+theta1 +h
+upsilon *u
+xi *c
+zeta *z
diff --git a/ps/devps/symbolsl.ps b/devps/symbolsl.ps
index d384203e2..d384203e2 100644
--- a/ps/devps/symbolsl.ps
+++ b/devps/symbolsl.ps
diff --git a/ps/devps/text.enc b/devps/text.enc
index 681a22c1c..dde5bb7c0 100644
--- a/ps/devps/text.enc
+++ b/devps/text.enc
@@ -6,6 +6,7 @@ scaron 4
zcaron 5
Ydieresis 6
trademark 7
+quotesingle 8
space 32
exclam 33
quotedbl 34
diff --git a/devps/zapfdr.afm b/devps/zapfdr.afm
new file mode 100644
index 000000000..ce216de44
--- /dev/null
+++ b/devps/zapfdr.afm
@@ -0,0 +1,222 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1988, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Fri Dec 1 12:57:42 1989
+Comment UniqueID 26200
+Comment VMusage 39281 49041
+FontName ZapfDingbats-Reverse
+FullName ITC Zapf Dingbats
+FamilyName ITC Zapf Dingbats
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -1 -143 981 820
+UnderlinePosition -98
+UnderlineThickness 54
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1988, 1989 Adobe Systems Incorporated. All rights reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
+EncodingScheme FontSpecific
+StartCharMetrics 202
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
+C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
+C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
+C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
+C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
+C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
+C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
+C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
+C 41 ; WX 690 ; N a117 ; B 35 138 655 553 ;
+C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
+C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
+C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
+C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
+C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
+C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
+C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
+C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
+C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
+C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
+C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
+C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
+C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
+C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
+C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
+C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
+C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
+C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
+C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
+C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
+C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
+C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
+C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
+C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
+C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
+C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
+C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
+C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
+C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
+C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
+C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
+C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
+C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
+C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
+C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
+C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
+C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
+C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
+C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
+C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
+C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
+C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
+C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
+C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
+C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
+C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
+C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
+C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
+C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
+C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
+C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
+C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
+C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
+C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
+C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
+C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
+C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
+C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
+C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
+C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
+C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
+C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
+C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
+C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
+C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
+C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
+C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
+C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
+C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
+C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
+C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
+C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
+C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
+C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
+C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
+C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
+C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
+C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
+C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
+C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
+C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
+C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
+C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
+C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
+C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
+C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
+C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
+C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
+C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
+C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
+C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
+C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
+C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
+C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
+C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
+C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
+C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
+C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
+C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
+C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
+C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
+C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
+C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
+C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
+C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
+C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
+C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
+C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
+C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
+C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
+C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
+C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
+C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
+C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
+C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
+C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
+C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
+C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
+C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
+C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
+C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
+C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
+C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
+C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
+C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
+C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
+C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
+C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
+C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
+C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
+C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
+C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
+C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
+C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
+C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
+C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
+C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
+C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
+C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
+C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
+C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
+C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
+C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
+C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
+C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
+C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
+C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
+C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
+C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
+C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
+C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
+C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
+C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
+C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
+C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
+C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
+C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
+C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
+C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
+C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
+C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
+C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
+C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
+C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
+C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
+C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
+C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
+C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
+C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
+C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
+C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
+C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
+C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
+C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
+C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
+C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
+C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
+C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
+C -1 ; WX 410 ; N a86 ; B 35 0 375 692 ;
+C -1 ; WX 509 ; N a85 ; B 35 0 475 692 ;
+C -1 ; WX 334 ; N a95 ; B 35 0 299 692 ;
+C -1 ; WX 509 ; N a205 ; B 35 0 475 692 ;
+C -1 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
+C -1 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
+C -1 ; WX 276 ; N a91 ; B 35 0 242 692 ;
+C -1 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
+C -1 ; WX 410 ; N a206 ; B 35 0 375 692 ;
+C -1 ; WX 317 ; N a94 ; B 35 0 283 692 ;
+C -1 ; WX 317 ; N a93 ; B 35 0 283 692 ;
+C -1 ; WX 276 ; N a92 ; B 35 0 242 692 ;
+C -1 ; WX 334 ; N a96 ; B 35 0 299 692 ;
+C -1 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/ps/devps/zapfdr.ps b/devps/zapfdr.ps
index 8283be26d..8283be26d 100644
--- a/ps/devps/zapfdr.ps
+++ b/devps/zapfdr.ps
diff --git a/doc/Makefile b/doc/Makefile
index 7d1d00a9d..0d4088dec 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,11 +1,11 @@
-#Copyright (C) 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
+#Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+#Software Foundation; either version 2, or (at your option) any later
#version.
#
#groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,33 +14,31 @@
#for more details.
#
#You should have received a copy of the GNU General Public License along
-#with groff; see the file LICENSE. If not, write to the Free Software
+#with groff; see the file COPYING. If not, write to the Free Software
#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-TROFF=../troff/troff
-FFLAG=-F../ps
-GROPS=../ps/grops
-DOCS=chars.PS meref.PS meintro.PS
+FFLAG=-F..
+TROFF=../troff/troff -M../tmac $(FFLAG)
+GROPS=../grops/grops $(FFLAG)
+DOCS=meref.PS meintro.PS
MEMACROS=../macros/tmac.e
-PSMACROS=../ps/tmac.ps
-SOELIM=../etc/soelim
+SOELIM=../soelim/soelim
all: $(DOCS)
.SUFFIXES: .tr .me .PS .dit
.dit.PS:
- $(GROPS) $(FFLAG) $< >$@
+ $(GROPS) $< >$@
.me.dit:
$(SOELIM) $< \
| sed -e "s;@VERSION@;`cat ../VERSION`;" \
- | $(TROFF) -i -Tps $(FFLAG) $(MEMACROS) $(PSMACROS) >$@
+ | $(TROFF) -Tps $(FFLAG) -me >$@
.tr.dit:
- $(TROFF) -Tps $(FFLAG) $(PSMACROS) $< >$@
+ $(TROFF) -Tps $< >$@
-chars.PS: chars.dit
meref.PS: meref.dit
meintro.PS: meintro.dit
@@ -50,4 +48,8 @@ clean:
-rm -f *.PS *.dit core
distclean: clean
+
realclean: distclean
+
+extraclean: clean
+ -rm -f core *~ \#* junk temp grot
diff --git a/doc/meintro.me b/doc/meintro.me
index 3d2640cf7..192edb7b7 100644
--- a/doc/meintro.me
+++ b/doc/meintro.me
@@ -15,7 +15,7 @@
.\"
.\" @(#)intro.me 6.4 (Berkeley) 7/17/89
.\"
-.\" Modified for groff by jjc@jclark.uucp.
+.\" Modified for groff by jjc@jclark.com.
.\"UC 7
.ll 6.5i
.lt 6.5i
diff --git a/doc/meref.me b/doc/meref.me
index 736698a59..9cc2c76e8 100644
--- a/doc/meref.me
+++ b/doc/meref.me
@@ -15,7 +15,7 @@
.\"
.\" @(#)ref.me 6.4 (Berkeley) 7/17/89
.\"
-.\" Modified by jjc@jclark.uucp for groff.
+.\" Modified by jjc@jclark.com for groff.
.\"UC 7
.ll 6.5i
.lt 6.5i
@@ -738,9 +738,9 @@ centered blocks have no default initial or trailing space.
The vertical spacing of all displays except quotes
and centered blocks
is stored in register
-.NR ($R
+.NR ($V
instead of
-.NR ($r .
+.NR ($v .
.TL
.b .(l
.i m
@@ -1128,11 +1128,11 @@ The pointsize is set to
and the line spacing is set proportionally.
The line spacing as a percentage of the pointsize expressed in units
is stored in
-.NR ($r .
+.NR ($v .
The percentage used internally
by displays and annotations
is stored in
-.NR ($R
+.NR ($V
(although this is not used by
.b .sz ).
This size is
@@ -1963,7 +1963,7 @@ NAME TYPE DESCRIPTION
\&.$6 M\(dg invoked before printing depth 6 section
\&.$C M\(dg called at beginning of chapter
\&.$H M\(dg text header
-\en($R R\(dd relative vertical spacing in displays
+\en($V R\(dd relative vertical spacing in displays
\en($c R current column number
\&.$c M\(dd print chapter title
\en($d R delayed text number
@@ -1976,9 +1976,9 @@ NAME TYPE DESCRIPTION
\e*($n S section name
\en($p R numbered paragraph number
\&.$p M\(dd print section heading (internal macro)
-\en($r R\(dd relative vertical spacing in text
\en($s R column indent
\&.$s M\(dd footnote separator (from text)
+\en($v R\(dd relative vertical spacing in text
\en% R\(sc current page number
\e& F\(sc zero width character, useful for hiding controls
\e(\fI\&xx\fP F\(sc interpolate special character \fI\&xx\fP
diff --git a/driver/Makefile b/driver/Makefile
deleted file mode 100644
index 62911bbbe..000000000
--- a/driver/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-CC=g++
-AR=ar
-RANLIB=/bin/ranlib
-INCLUDES=-I../lib
-DEFINES=
-MALLOC=malloc.o
-MALLOCFLAGS=
-OBJECTS=input.o printer.o
-SOURCES=input.c printer.c printer.h driver.h
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $<
-
-all: libdriver.a
-
-libdriver.a: $(OBJECTS)
- $(AR) r libdriver.a $?
- if test "$(RANLIB)" ; then $(RANLIB) libdriver.a ;fi
-
-$(OBJECTS): printer.h driver.h
-
-TAGS : $(SOURCES)
- etags $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o core libdriver.a
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-install.bin:
-install.nobin:
-install:
diff --git a/dvi/Makefile b/dvi/Makefile
deleted file mode 100644
index 5b32f104f..000000000
--- a/dvi/Makefile
+++ /dev/null
@@ -1,81 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-CC=g++
-CFLAGS=-g -O -Wall -Wcast-qual -Wwrite-strings
-LDFLAGS=-g
-OLDCC=gcc
-MLIBS=-lm
-INCLUDES=-I../driver -I../lib
-DEFINES=
-SOURCES=dvi.c
-MISC=Makefile devgps
-BINDIR=/usr/local/bin
-FONTDIR=/usr/local/lib/groff/font
-MACRODIR=/usr/local/lib/groff/tmac
-ETAGS=etags
-ETAGSFLAGS=-p
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $<
-
-all: grodvi tfmtodit devdvi
-
-grodvi: dvi.o ../driver/libdriver.a ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ dvi.o \
- ../driver/libdriver.a ../lib/libgroff.a $(MLIBS)
-
-tfmtodit: tfmtodit.o ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ tfmtodit.o ../lib/libgroff.a $(MLIBS)
-
-dvi.o: ../driver/printer.h ../driver/driver.h ../lib/font.h
-
-install.bin: grodvi tfmtodit
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/grodvi
- cp grodvi $(BINDIR)
- -rm -f $(BINDIR)/tfmtodit
- cp tfmtodit $(BINDIR)
- @echo Making install.bin in devdvi
- @cd devdvi; $(MAKE) "FONTDIR=$(FONTDIR)" install.bin
-
-install.nobin:
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.dvi
- cp tmac.dvi $(MACRODIR)
- @echo Making install.nobin in devdvi
- @cd devdvi; $(MAKE) "FONTDIR=$(FONTDIR)" install.nobin
-
-TAGS: dvi.c
- $(ETAGS) $(ETAGSFLAGS) dvi.c
-
-clean:
- -rm -f *.o core grodvi tfmtodit
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-devdvi: FORCE
- @echo Making all in $@
- @cd $@; $(MAKE) all
-
-FORCE:
diff --git a/dvi/devdvi/FontMakefile b/dvi/devdvi/FontMakefile
deleted file mode 100644
index 31237a691..000000000
--- a/dvi/devdvi/FontMakefile
+++ /dev/null
@@ -1,80 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-TFMDIR=tfm
-GFDIR=gf
-TFMTODIT=../tfmtodit
-FONTS=R I B BI CW MI S EX H HI HB SA SB
-SPECIALFLAG=-s
-
-all: $(FONTS)
-
-# R is special because it contains \(pl \(eq
-
-R: texr.map
- $(TFMTODIT) $(SPECIALFLAG) -g $(GFDIR)/cmr10.300gf \
- $(TFMDIR)/cmr10.tfm texr.map $@
-
-# I is special because it contains \(Po
-
-I: texi.map
- $(TFMTODIT) $(SPECIALFLAG) -g $(GFDIR)/cmti10.300gf \
- $(TFMDIR)/cmti10.tfm texi.map $@
-
-B: texb.map
- $(TFMTODIT) -g $(GFDIR)/cmbx10.300gf \
- $(TFMDIR)/cmbx10.tfm texb.map $@
-
-BI: texi.map
- $(TFMTODIT) -g $(GFDIR)/cmbxti10.300gf \
- $(TFMDIR)/cmbxti10.tfm texi.map $@
-
-# CW is special because it contains "
-
-CW: textt.map
- $(TFMTODIT) $(SPECIALFLAG) $(TFMDIR)/cmtt10.tfm textt.map $@
-
-MI: texmi.map
- $(TFMTODIT) $(SPECIALFLAG) -k 0177 $(TFMDIR)/cmmi10.tfm texmi.map $@
-
-S: texsy.map
- $(TFMTODIT) $(SPECIALFLAG) -k 060 $(TFMDIR)/cmsy10.tfm texsy.map $@
-
-
-EX: texex.map
- $(TFMTODIT) $(SPECIALFLAG) $(TFMDIR)/cmex10.tfm texex.map $@
-
-H: texr.map
- $(TFMTODIT) -g $(GFDIR)/cmss10.300gf $(TFMDIR)/cmss10.tfm texb.map $@
-
-HB: texr.map
- $(TFMTODIT) -g $(GFDIR)/cmssbx10.300gf \
- $(TFMDIR)/cmssbx10.tfm texb.map $@
-
-HI: texr.map
- $(TFMTODIT) -g $(GFDIR)/cmssi10.300gf \
- $(TFMDIR)/cmssi10.tfm texb.map $@
-
-SA: msam.map
- $(TFMTODIT) $(SPECIALFLAG) $(TFMDIR)/msam10.tfm msam.map $@
-
-SB: msbm.map
- $(TFMTODIT) $(SPECIALFLAG) $(TFMDIR)/msbm10.tfm msbm.map $@
-
-$(FONTS): $(TFMTODIT)
diff --git a/dvi/devdvi/Makefile b/dvi/devdvi/Makefile
deleted file mode 100644
index 0ac8544a6..000000000
--- a/dvi/devdvi/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-FONTS=R I B BI CW MI S EX H HI HB SA SB
-FONTDIR=/usr/local/lib/groff/font
-DEVICEDIR=$(FONTDIR)/devdvi
-
-all:
-
-install.nobin:
- -[ -d $(FONTDIR) ] || mkdir $(FONTDIR)
- -[ -d $(DEVICEDIR) ] || mkdir $(DEVICEDIR)
- -cd $(DEVICEDIR); rm -f $(FONTS) DESC eqnchar
- cp $(FONTS) DESC eqnchar $(DEVICEDIR)
-
-install.bin:
-
-install: install.bin install.nobin
-
-fonts: FORCE
- $(MAKE) -f FontMakefile
-
-FORCE:
diff --git a/dvi/tmac.dvi b/dvi/tmac.dvi
deleted file mode 100644
index 213e04da1..000000000
--- a/dvi/tmac.dvi
+++ /dev/null
@@ -1,38 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CR CW
-.ftr C CW
-.ftr TT CW
-.ftr HR H
-.\" We need short names for \[prime] and \[slashnot].
-.tr \[FM]\[prime]
-.tr \[!/]\[slashnot]
-.\" Do it like this to avoid rounding problems.
-.char \[ul] \v'.23m'\D'R .5m .04m'\v'-.04m'\v'-.23m'
-.char _ \v'.23m'\D'R .5m .04m'\v'-.04m'\v'-.23m'
-.char \[rn] \D'R .5m -.04m'\v'.04m'
-.char \[br] \Z'\v'.25m'\D'R .04m -1m''
-.char \[ru] \v'-.02m'\D'R .5m .04m'\v'-.04m'\v'.02m'
-.char \[co] \z\(ci\h'\w'\(ci'u-\w'c'u/2u'c\h'\w'\(ci'u-\w'c'u/2u'
-.char \[rg] \z\(ci\h'\w'\(ci'u-\w'r'u/2u'r\h'\w'\(ci'u-\w'r'u/2u'
-.char \[fm] \v'-.35m'\s[\\n(.s*7u/10u]\(FM\s0\v'.35m'
-.char \[de] \h'.05m'\v'-.54m'\D'c .3m'\v'.54m'\h'.05m'
-.char \[ct] \o'c/'
-.char \[sq] \Z'\h'.05m'\D'R .4m -.04m'\v'.04m'\h'-.04m'\
-\D'R .04m -.4m'\v'.04m'\D'R -.4m -.04m'\D'R .04m .4m''\h'.5m'
-.\"char \[sq] \h'.05m'\D'l .4m 0'\D'l 0 -.4m'\D'l -.4m 0'\D'l 0 .4m'\h'.45m'
-.char \[!=] \(!/\(eq
-.char \[tm] \v'-.3m'\s[\\n(.s/2u]TM\s0\v'.3m'
-.\" Define some fractions.
-.de dvi-frac
-.char \[\\$1\\$2] \v'-.25m'\s[\\\\n(.s*7u/10u]\\$1\s0\v'.25m'\h'-.2m'\
-/\h'-.2m'\v'.25m'\s[\\\\n(.s*7u/10u]\\$2\s0\v'-.25m'
-..
-.dvi-frac 1 2
-.dvi-frac 3 4
-.dvi-frac 1 4
-.dvi-frac 1 8
-.dvi-frac 3 8
-.dvi-frac 5 8
-.dvi-frac 7 8
-.cp \n(_C
diff --git a/eqn/Makefile b/eqn/Makefile
deleted file mode 100644
index 800c4306c..000000000
--- a/eqn/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-# default device
-DEVICE=ps
-CFLAGS=-g -O -Wall
-CC=g++
-INCLUDES=-I../lib
-YACC=bison -y
-YACCFLAGS=-v
-ETAGS=etags
-ETAGSFLAGS=-p
-OBJECTS=eqn.tab.o main.o lex.o box.o limit.o list.o over.o text.o \
- script.o mark.o other.o delim.o sqrt.o pile.o special.o
-SOURCES=main.c lex.c eqn.y box.c limit.c list.c over.c text.c \
- script.c mark.c other.c delim.c sqrt.c pile.c special.c \
- eqn.h box.h pbox.h
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: eqn
-
-eqn: $(OBJECTS) ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) ../lib/libgroff.a $(LIBS)
-
-eqn.tab.c: eqn.y
- $(YACC) $(YACCFLAGS) -d eqn.y
- mv y.tab.c eqn.tab.c
- mv y.tab.h eqn.tab.h
-
-eqn.tab.o: box.h
-box.o: eqn.h box.h pbox.h
-limit.o: eqn.h box.h pbox.h
-text.o: eqn.h box.h pbox.h ../lib/ptable.h
-over.o: eqn.h box.h pbox.h
-list.o: eqn.h box.h pbox.h
-script.o: eqn.h box.h pbox.h
-mark.o: eqn.h box.h pbox.h
-other.o: eqn.h box.h pbox.h
-delim.o: eqn.h box.h pbox.h
-sqrt.o: eqn.h box.h pbox.h
-pile.o: eqn.h box.h pbox.h
-special.o: eqn.h box.h pbox.h
-main.o: device.h eqn.h box.h ../lib/stringclass.h
-lex.o: eqn.h eqn.tab.c box.h ../lib/stringclass.h ../lib/ptable.h
-
-device.h: FORCE
- @$(SHELL) ../gendef $@ "DEVICE=\"$(DEVICE)\""
-
-install.bin: eqn
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/geqn
- cp eqn $(BINDIR)/geqn
-
-install.nobin:
-
-install: install.bin install.nobin
-
-TAGS: $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o core eqn gmon.out device.h
-
-distclean: clean
- -rm -f TAGS eqn.output y.output
-
-realclean: distclean
- -rm -f eqn.tab.c eqn.tab.h
-
-FORCE:
diff --git a/eqn/Makefile.dep b/eqn/Makefile.dep
new file mode 100644
index 000000000..4fccfeec5
--- /dev/null
+++ b/eqn/Makefile.dep
@@ -0,0 +1,31 @@
+main.o : main.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h ../include/stringclass.h \
+ ../include/device.h ../include/searchpath.h ../include/macropath.h
+lex.o : lex.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h eqn.cc \
+ ../include/stringclass.h ../include/ptable.h
+box.o : box.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+limit.o : limit.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+list.o : list.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+over.o : over.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+text.o : text.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h ../include/ptable.h
+script.o : script.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+mark.o : mark.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+other.o : other.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+delim.o : delim.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+sqrt.o : sqrt.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+pile.o : pile.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+special.o : special.cc eqn.h ../include/cset.h ../include/errarg.h \
+ ../include/error.h ../include/lib.h box.h pbox.h
+eqn.o : eqn.cc ../include/lib.h box.h
diff --git a/eqn/Makefile.sub b/eqn/Makefile.sub
new file mode 100644
index 000000000..c87fe23bf
--- /dev/null
+++ b/eqn/Makefile.sub
@@ -0,0 +1,12 @@
+PROG=eqn
+MAN1=eqn.n
+XLIBS=$(LIBGROFF)
+OBJS=eqn.o main.o lex.o box.o limit.o list.o over.o text.o script.o \
+ mark.o other.o delim.o sqrt.o pile.o special.o
+CCSRCS=main.cc lex.cc box.cc limit.cc list.cc over.cc text.cc \
+ script.cc mark.cc other.cc delim.cc sqrt.cc pile.cc special.cc
+HDRS=box.h eqn.h pbox.h
+GRAM=eqn.y
+YTABC=eqn.cc
+YTABH=eqn.tab.h
+NAMEPREFIX=$(g)
diff --git a/eqn/NOTES b/eqn/NOTES
deleted file mode 100644
index 3ccbd4ca5..000000000
--- a/eqn/NOTES
+++ /dev/null
@@ -1,25 +0,0 @@
-Differences between textstyle and displaystyle
-
-superscripts are a little higher in displaystyle
-(does not apply to cramped variants)
-
-operators are bigger in ds
-[not done automatically]
-
-more separation between square-root bar and top of contents
-in displaystyle
-
-fractions are different: in textstyle change to script style;
-also num and denom positions different; also minimum
-separation between bar and contents different.
-[dealt with by smallover]
-
-
- D D' T T' S S'
-sup sup1 sup3 sup2 sup3 sup2 sup3
-sroot xh xh rt rt rt rt
-space yes yes yes yes no no
-
-If we make text-style--->display-style,
-
-too much separation square roots
diff --git a/eqn/TODO b/eqn/TODO
index 7d0deb54c..89b158e8a 100644
--- a/eqn/TODO
+++ b/eqn/TODO
@@ -37,3 +37,5 @@ Vphantom
Smash.
Provide a variant of vec that extends over the length of the accentee.
+
+Support vertical arrow delimiters.
diff --git a/eqn/box.c b/eqn/box.cc
index f66dc07e4..43816a518 100644
--- a/eqn/box.c
+++ b/eqn/box.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
@@ -36,8 +36,8 @@ int negative_space = -1;
int minimum_size = 5;
int fat_offset = 4;
-int body_height = 75;
-int body_depth = 25;
+int body_height = 85;
+int body_depth = 35;
int over_hang = 0;
int accent_width = 31;
@@ -117,6 +117,9 @@ struct {
"shift_down", &shift_down,
"column_sep", &column_sep,
"matrix_side_sep", &matrix_side_sep,
+"draw_lines", &draw_flag,
+"body_height", &body_height,
+"body_depth", &body_depth,
0, 0
};
@@ -274,25 +277,28 @@ void box::top_level()
assert(r == FOUND_NOTHING);
// The problem here is that the argument to \f is read in copy mode,
// so we cannot use \E there; so we hide it in a string instead.
- printf(".ds " RESTORE_FONT_STRING " "
+ // Another problem is that if we use \R directly, then the space will
+ // prevent it working in a macro argument.
+ printf(".ds " SAVE_FONT_STRING " "
+ "\\R'" SAVED_INLINE_FONT_REG " \\\\n[.f]'"
+ "\\fP"
+ "\\R'" SAVED_INLINE_PREV_FONT_REG " \\\\n[.f]'"
+ "\\R'" SAVED_INLINE_SIZE_REG " \\\\n[.s]z'"
+ "\\s0"
+ "\\R'" SAVED_INLINE_PREV_SIZE_REG " \\\\n[.s]z'"
+ "\n"
+ ".ds " RESTORE_FONT_STRING " "
"\\f[\\\\n[" SAVED_INLINE_PREV_FONT_REG "]]"
"\\f[\\\\n[" SAVED_INLINE_FONT_REG "]]"
+ "\\s'\\\\n[" SAVED_INLINE_PREV_SIZE_REG "]u'"
+ "\\s'\\\\n[" SAVED_INLINE_SIZE_REG "]u'"
"\n");
- printf(".as " LINE_STRING " "
- "\\R'" SAVED_INLINE_FONT_REG " \\En[.f]'"
- "\\fP"
- "\\R'" SAVED_INLINE_PREV_FONT_REG " \\En[.f]'"
- "\\R'" SAVED_INLINE_SIZE_REG " \\En[.s]z'"
- "\\s0"
- "\\R'" SAVED_INLINE_PREV_SIZE_REG " \\En[.s]z'");
+ printf(".as " LINE_STRING " \\E*[" SAVE_FONT_STRING "]");
printf("\\f[%s]", get_gfont());
printf("\\s'\\En[" SAVED_SIZE_REG "]u'");
current_roman_font = get_grfont();
b->output();
- printf("\\E*[" RESTORE_FONT_STRING "]"
- "\\s'\\En[" SAVED_INLINE_PREV_SIZE_REG "]u'"
- "\\s'\\En[" SAVED_INLINE_SIZE_REG "]u'"
- "\n");
+ printf("\\E*[" RESTORE_FONT_STRING "]\n");
if (r == FOUND_LINEUP)
printf(".if r" SAVED_MARK_REG " .as " LINE_STRING " \\h'\\n["
MARK_WIDTH_REG "]u-\\n[" SAVED_MARK_REG "]u-(\\n["
diff --git a/eqn/box.h b/eqn/box.h
index 4e2985722..a4874a95b 100644
--- a/eqn/box.h
+++ b/eqn/box.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct list_box;
diff --git a/eqn/delim.c b/eqn/delim.cc
index 7bf2d2a7f..ecf9c557e 100644
--- a/eqn/delim.c
+++ b/eqn/delim.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
@@ -117,6 +117,25 @@ struct delimiter {
{
">", LEFT_DELIM|RIGHT_DELIM, "\\(ra", "\\[angleright%s]",
},
+ {
+ "uparrow", LEFT_DELIM|RIGHT_DELIM, "\\(ua", "\\[arrowup%s]",
+ "\\[arrowvertex]",
+ "\\[arrowverttp]",
+ },
+ {
+ "downarrow", LEFT_DELIM|RIGHT_DELIM, "\\(da", "\\[arrowdown%s]",
+ "\\[arrowvertex]",
+ 0,
+ 0,
+ "\\[arrowvertbt]",
+ },
+ {
+ "updownarrow", LEFT_DELIM|RIGHT_DELIM, "\\(va", "\\[arrowupdown%s]",
+ "\\[arrowvertex]",
+ "\\[arrowverttp]",
+ 0,
+ "\\[arrowvertbt]",
+ },
};
const int DELIM_TABLE_SIZE = int(sizeof(delim_table)/sizeof(delim_table[0]));
@@ -256,8 +275,10 @@ static void define_extensible_string(char *delim, int uid,
{
printf(".ds " DELIM_STRING "\n");
delimiter *d = delim_table;
+ int delim_len = strlen(delim);
for (int i = 0; i < DELIM_TABLE_SIZE; i++, d++)
- if (strcmp(delim, d->name) == 0 && (left_or_right & d->flags) != 0)
+ if (strncmp(delim, d->name, delim_len) == 0
+ && (left_or_right & d->flags) != 0)
break;
if (i >= DELIM_TABLE_SIZE) {
error("there is no `%1' delimiter", delim);
diff --git a/eqn/eqn.tab.c b/eqn/eqn.cc
index 2bd58e2ac..bcd1b439d 100644
--- a/eqn/eqn.tab.c
+++ b/eqn/eqn.cc
@@ -1,6 +1,8 @@
/* A Bison parser, made from eqn.y */
+#define YYBISON 1 /* Identify Bison output. */
+
#define OVER 258
#define SMALLOVER 259
#define SQRT 260
@@ -149,6 +151,7 @@ static const char yytranslate[] = { 0,
56, 57, 58, 59, 60
};
+#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 1, 3, 5, 8, 10, 13, 16, 18, 22,
26, 32, 38, 40, 43, 47, 51, 53, 57, 59,
@@ -160,6 +163,8 @@ static const short yyprhs[] = { 0,
231, 233, 235, 237
};
+#endif
+
static const short yyrhs[] = { -1,
67, 0, 68, 0, 67, 68, 0, 69, 0, 37,
68, 0, 38, 68, 0, 70, 0, 70, 14, 69,
@@ -199,16 +204,16 @@ static const short yyrline[] = { 0,
319, 323, 326, 328
};
-static const char * const yytname[] = { "$",
-"error","$illegal.","OVER","SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE",
-"PILE","LEFT","RIGHT","TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC",
-"FAT","ACCENT","BAR","UNDER","ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN",
-"UP","MATRIX","COL","LCOL","RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER",
-"PRIME","SPLIT","NOSPLIT","UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE",
-"TDEFINE","SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
-"'^'","'~'","'\\t'","'{'","'}'","top","equation","mark","from_to","sqrt_over",
-"script","nonsup","simple","number","pile_element_list","pile_arg","column_list","column_element_list","column_arg","column",
-"text","delim",""
+static const char * const yytname[] = { "$","error","$illegal.","OVER","SMALLOVER",
+"SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT","TO","FROM",
+"SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER","ABOVE","TEXT",
+"QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL","RCOL","CCOL","MARK",
+"LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT","UACCENT","SPECIAL","SPACE",
+"GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE","SDEFINE","UNDEF","IFDEF","INCLUDE",
+"DELIM","CHARTYPE","SET","GRFONT","GBFONT","'^'","'~'","'\\t'","'{'","'}'","top",
+"equation","mark","from_to","sqrt_over","script","nonsup","simple","number",
+"pile_element_list","pile_arg","column_list","column_element_list","column_arg",
+"column","text","delim",""
};
#endif
@@ -373,7 +378,7 @@ static const short yycheck[] = { 0,
This program 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 1, or (at your option)
+ the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
@@ -389,15 +394,20 @@ static const short yycheck[] = { 0,
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
-#else /* Not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc)
#include <alloca.h>
-#else /* Not sparc */
-#ifdef MSDOS
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
#include <malloc.h>
-#endif /* MSDOS */
-#endif /* Not sparc. */
-#endif /* Not GNU C. */
+ #pragma alloca
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser
@@ -488,6 +498,9 @@ int yydebug; /* nonzero means print parse trace */
#define YYMAXDEPTH 10000
#endif
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
#ifndef __cplusplus
/* This is the most reliable way to avoid incompatibilities
@@ -522,8 +535,9 @@ __yy_bcopy (char *from, char *to, int count)
}
#endif
+#endif
-#line 160 "/usr/local/lib/bison.simple"
+#line 169 "/usr/local/lib/bison.simple"
int
yyparse()
{
@@ -541,13 +555,13 @@ yyparse()
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-#define YYPOPSTACK (yyvsp--, yysp--, yylsp--)
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
#else
-#define YYPOPSTACK (yyvsp--, yysp--)
+#define YYPOPSTACK (yyvsp--, yyssp--)
#endif
int yystacksize = YYINITDEPTH;
@@ -706,7 +720,15 @@ yynewstate:
#if YYDEBUG != 0
if (yydebug)
- fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
#endif
}
@@ -1093,7 +1115,7 @@ case 74:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 423 "/usr/local/lib/bison.simple"
+#line 440 "/usr/local/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -1166,23 +1188,28 @@ yyerrlab: /* here on detecting error */
for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
if (yycheck[x + yyn] == x)
size += strlen(yytname[x]) + 15, count++;
- msg = (char *) xmalloc(size + 15);
- strcpy(msg, "parse error");
-
- if (count < 5)
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
{
- count = 0;
- for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
}
- yyerror(msg);
- free(msg);
+ else
+ yyerror ("parse error; also virtual memory exceeded");
}
else
#endif /* YYERROR_VERBOSE */
diff --git a/eqn/eqn.h b/eqn/eqn.h
index 1394e9d64..7a081d626 100644
--- a/eqn/eqn.h
+++ b/eqn/eqn.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/man/geqn.man b/eqn/eqn.man
index c13b82cd3..daecab6a2 100644
--- a/man/geqn.man
+++ b/eqn/eqn.man
@@ -1,31 +1,25 @@
.\" -*- nroff -*-
.ie \n(.V<\n(.v .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
.el .ds tx TeX
-.TH GEQN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" The BSD man macros can't handle " in arguments to font change macros,
+.\" so use \(ts instead of ".
+.tr \(ts"
+.TH @G@EQN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-geqn \- groff equation formatter
+@g@eqn \- format equations for troff
.SH SYNOPSIS
-.B geqn
+.B @g@eqn
[
-.B \-C
-]
-[
-.B \-D
-]
-[
-.B \-N
+.B \-rvCNR
]
[
.BI \-d cc
]
[
-.BI \-T dev
+.BI \-T name
]
[
-.B \-r
-]
-[
-.B \-v
+.BI \-M dir
]
[
.BI \-f F
@@ -43,27 +37,40 @@ geqn \- groff equation formatter
.IR files \|.\|.\|.
]
.SH DESCRIPTION
-.B geqn
-is a preprocessor for
-.B groff
-for formatting equations.
+This manual page describes the GNU version of
+.BR eqn ,
+which is part of the groff document formatting system.
+.B eqn
+compiles descriptions of equations embedded within
+.B troff
+input files into commands that are understood by
+.BR troff .
Normally, it should be invoked using the
.B \-e
option of
.BR groff .
-The syntax is quite compatible with
-.BR eqn .
-The output of
-.B geqn
-cannot be processed with
-.BR ditroff ;
-it must be processed with
-.BR gtroff .
+The syntax is quite compatible with Unix eqn.
+The output of GNU eqn cannot be processed with Unix troff;
+it must be processed with GNU troff.
If no files are given on the command line, the standard input
will be read.
A filename of
.B \-
will cause the standard input to be read.
+.LP
+.B eqn
+searches for the file
+.B eqnrc
+using the path
+.BR @MACROPATH@ .
+If it exists, eqn will process it before the other input files.
+The
+.B \-R
+option prevents this.
+.LP
+GNU eqn does not provide the functionality of neqn:
+it does not support low-resolution, typewriter-like devices
+(although it may work adequately for very simple input).
.SH OPTIONS
.TP
.B \-C
@@ -73,19 +80,10 @@ and
.B .EN
even when followed by a character other than space or newline.
.TP
-.B \-D
-Draw fraction bars using the
-.B \eD
-escape sequence, rather than with the
-.B \el
-escape sequence and the
-.B \e(ru
-character.
-.TP
.B \-N
Don't allow newlines within delimiters.
This option allows
-.B geqn
+.B eqn
to recover better from missing closing delimiters.
.TP
.B \-v
@@ -97,21 +95,34 @@ Only one size reduction.
.BI \-m n
The minimum point-size is
.IR n .
-Geqn will not reduce the size of subscripts or superscripts to
+eqn will not reduce the size of subscripts or superscripts to
a smaller size than
.IR n .
.TP
-.BI \-T dev
+.BI \-T name
The output is for device
-.IR dev .
-A macro whose name is the name of the output device
-is automatically defined with a value of
+.IR name .
+The only effect of this is to define a macro
+.I name
+with a value of
.BR 1 .
-Nothing else depends on what the output device is;
-geqn does not itself read font or device description files.
+Typically
+.B eqnrc
+will use this to provide definitions appropriate for the output device.
The default output device is
.BR @DEVICE@ .
.TP
+.BI \-M dir
+Search
+.I dir
+for
+.B eqnrc
+before the default directories.
+.TP
+.B \-R
+Don't load
+.BR eqnrc .
+.TP
.BI \-f F
This is equivalent to a
.BI gfont\ F
@@ -122,7 +133,7 @@ This is equivalent to a
.BI gsize\ n
command.
This option is deprecated.
-Geqn will normally set equations at whatever the current point size
+eqn will normally set equations at whatever the current point size
is when the equation is encountered.
.TP
.BI \-p n
@@ -133,18 +144,15 @@ This option is deprecated.
Normally eqn makes sets subscripts and superscripts at 70%
of the size of the surrounding text.
.SH USAGE
-Only the differences between geqn and eqn are described here.
+Only the differences between GNU eqn and Unix eqn are described here.
.LP
-Most of the new features of
-.B geqn
+Most of the new features of GNU eqn
are based on \*(tx.
-There are some references to the differences between \*(tx and
-.B geqn
-below;
+There are some references to the differences between \*(tx and GNU eqn below;
these may safely be ignored if you do not know \*(tx.
.SS Automatic spacing
.LP
-.B geqn
+.B eqn
gives each component of an equation a type, and adjusts the spacing
between components using that type.
Possible types are:
@@ -318,7 +326,7 @@ is pre-defined using
.B uaccent
as a tilde accent below the baseline.
.TP
-.BI split\ " text """"
+.BI split\ \(ts text \(ts
This has the same effect as simply
.RS
.IP
@@ -336,7 +344,7 @@ will be adjusted.
This has the same effect as
.RS
.IP
-.BI """" text """"
+.BI \(ts text \(ts
.RE
.IP
but because
@@ -386,7 +394,7 @@ that is not the first character will be treated like
This constructs a new object from
.I e
using a
-.BR gtroff (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@)
macro named
.IR text .
When the macro is called,
@@ -438,6 +446,25 @@ Then you could cancel an expression
.I e
with
.BI cancel\ {\ e\ }
+.LP
+Here's a more complicated construct that draws a box round an expression:
+.IP
+.nf
+.ft B
+.ne 11+\n(.Vu
+\&.EQ
+define box 'special Bx'
+\&.EN
+\&.de Bx
+\&.ds 0s \eZ'\eh'1n'\e\e*(0s'\e
+\eZ'\ev'\e\en(0du+1n'\eD'l \e\en(0wu+2n 0'\eD'l 0 -\e\en(0hu-\e\en(0du-2n'\e
+\eD'l -\e\en(0wu-2n 0'\eD'l 0 \e\en(0hu+\e\en(0du+2n''\eh'\e\en(0wu+2n'
+\&.nr 0w +2n
+\&.nr 0d +1n
+\&.nr 0h +1n
+\&..
+.ft
+.fi
.RE
.SS Customization
The appearance of equations is controlled by
@@ -461,17 +488,17 @@ set x_height 45
.RE
.IP
says that
-.B geqn
+.B eqn
should assume an x height of 0.45 ems.
.RS
.LP
Possible parameters are as follows.
-Values are in units of hundreths of an em unless otherwise stated.
+Values are in units of hundredths of an em unless otherwise stated.
These descriptions are intended to be expository rather than
definitive.
.TP \w'\fBdefault_rule_thickness'u+2n
.B minimum_size
-.B geqn
+.B eqn
will not set anything at a smaller point-size than this.
The value is in points.
.TP
@@ -649,6 +676,29 @@ This much space will be added between columns in a matrix.
.TP
.B matrix_side_sep
This much space will be added at each side of a matrix.
+.TP
+.B draw_lines
+If this is non-zero, lines will be drawn using the
+.B \eD
+escape sequence, rather than with the
+.B \el
+escape sequence and the
+.B \e(ru
+character.
+.TP
+.B body_height
+The amount by which the height of the equation exceeds this
+will be added as extra space before the line containing the equation
+(using
+.BR \ex .)
+The default value is 85.
+.TP
+.B body_depth
+The amount by which the depth of the equation exceeds this
+will be added as extra space after the line containing the equation
+(using
+.BR \ex .)
+The default value is 35.
.LP
A more precise description of the role of many of these
parameters can be found in Appendix H of
@@ -684,7 +734,7 @@ command, but
.I name
will not be recognized if called with arguments.
.TP
-.BI include\ " file """"
+.BI include\ \(ts file \(ts
Include the contents of
.IR file .
Lines of
@@ -711,7 +761,7 @@ otherwise ignore
can be any character not appearing in
.IR anything .
.SS Fonts
-.B geqn
+.B eqn
normally uses at least two fonts to set an equation:
an italic font for letters,
and a roman font for everything else.
@@ -767,11 +817,15 @@ will cause a character to be set in italic type.
A type of
.B digit
will cause a character to be set in roman type.
+.SH FILES
+.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
+.B @MACRODIR@/eqnrc
+Initialization file.
.SH BUGS
Inline equations will be set at the point size that is current at the
beginning of the input line.
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
.BR groff_font (@MAN5EXT@),
.I The\ \*(txbook
diff --git a/eqn/eqn.y b/eqn/eqn.y
index ff5aef60d..1039fdb22 100644
--- a/eqn/eqn.y
+++ b/eqn/eqn.y
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{
#include <stdio.h>
diff --git a/eqn/lex.c b/eqn/lex.cc
index 790c15f9d..d0fa679de 100644
--- a/eqn/lex.c
+++ b/eqn/lex.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
@@ -218,7 +218,7 @@ static struct {
"partial", "\\(pd",
"nothing", "\"\"",
"half", "{1 smallover 2}",
- "hat_def", "\"^\"",
+ "hat_def", "roman \"^\"",
"hat", "accent { hat_def }",
"dot_def", "back 15 \"\\v'-52M'.\\v'52M'\"",
"dot", "accent { dot_def }",
@@ -464,7 +464,8 @@ int top_input::get_location(char **fnp, int *lnp)
return 1;
}
-#define ARG1 11
+// Character respresenting $1. Must be illegal input character.
+#define ARG1 14
argument_macro_input::argument_macro_input(const char *body, int ac,
char **av, input *x)
@@ -1053,14 +1054,14 @@ void do_set()
{
int t = get_token(2);
if (t != TEXT && t != QUOTED_TEXT) {
- lex_error("bad chartype");
+ lex_error("bad set");
return;
}
token_buffer += '\0';
string param = token_buffer;
t = get_token();
if (t != TEXT && t != QUOTED_TEXT) {
- lex_error("bad chartype");
+ lex_error("bad set");
return;
}
token_buffer += '\0';
diff --git a/eqn/limit.c b/eqn/limit.cc
index 6672df01f..04abced89 100644
--- a/eqn/limit.c
+++ b/eqn/limit.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/list.c b/eqn/list.cc
index 682cf9728..7c8d1d617 100644
--- a/eqn/list.c
+++ b/eqn/list.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/main.c b/eqn/main.cc
index 2c10edc33..289b4e11a 100644
--- a/eqn/main.c
+++ b/eqn/main.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,12 +15,16 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
#include "stringclass.h"
#include "device.h"
+#include "searchpath.h"
+#include "macropath.h"
+
+#define STARTUP_FILE "eqnrc"
extern int yyparse();
@@ -52,18 +56,10 @@ int read_line(FILE *fp, string *p)
return p->length() > 0;
}
-void do_file(const char *filename)
+void do_file(FILE *fp, const char *filename)
{
string linebuf;
string str;
- FILE *fp;
- if (strcmp(filename, "-") == 0)
- fp = stdin;
- else {
- fp = fopen(filename, "r");
- if (fp == 0)
- fatal("can't open `%1': %2", filename, strerror(errno));
- }
printf(".lf 1 %s\n", filename);
current_filename = filename;
current_lineno = 0;
@@ -119,8 +115,6 @@ void do_file(const char *filename)
else
put_string(linebuf, stdout);
}
- if (fp != stdin)
- fclose(fp);
current_filename = 0;
current_lineno = 0;
}
@@ -235,8 +229,9 @@ static char *delim_search(char *ptr, int delim)
void usage()
{
- fprintf(stderr, "usage: %s [ -vrDCN ] -dxx -fn -sn -pn -mn -Ts [ files ... ]\n",
- program_name);
+ fprintf(stderr,
+ "usage: %s [ -rvDCNR ] -dxx -fn -sn -pn -mn -Mdir -Ts [ files ... ]\n",
+ program_name);
exit(1);
}
@@ -246,15 +241,18 @@ int main(int argc, char **argv)
static char stderr_buf[BUFSIZ];
setbuf(stderr, stderr_buf);
int opt;
- const char *device = DEVICE;
- const char *tem = getenv("GROFF_TYPESETTER");
- if (tem)
- device = tem;
- while ((opt = getopt(argc, argv, "DCvd:f:p:s:m:T:rN")) != EOF)
+ int load_startup_file = 1;
+ while ((opt = getopt(argc, argv, "DCRvd:f:p:s:m:T:M:rN")) != EOF)
switch (opt) {
case 'C':
compatible_flag = 1;
break;
+ case 'R': // don't load eqnchar
+ load_startup_file = 0;
+ break;
+ case 'M':
+ macro_path.command_line_dir(optarg);
+ break;
case 'v':
{
extern const char *version_string;
@@ -315,6 +313,7 @@ int main(int argc, char **argv)
one_size_reduction_flag = 1;
break;
case 'D':
+ warning("-D option is obsolete: use `set draw_lines 1' instead");
draw_flag = 1;
break;
case 'N':
@@ -328,14 +327,29 @@ int main(int argc, char **argv)
}
init_table(device);
init_char_table();
+ if (load_startup_file) {
+ char *path;
+ FILE *fp = macro_path.open_file(STARTUP_FILE, &path);
+ if (fp) {
+ do_file(fp, path);
+ fclose(fp);
+ a_delete path;
+ }
+ }
if (optind >= argc)
- do_file("-");
+ do_file(stdin, "-");
else
- for (int i = optind; i < argc; i++)
- do_file(argv[i]);
+ for (int i = optind; i < argc; i++) {
+ errno = 0;
+ FILE *fp = fopen(argv[i], "r");
+ if (!fp)
+ fatal("can't open `%1': %2", argv[i], strerror(errno));
+ else {
+ do_file(fp, argv[i]);
+ fclose(fp);
+ }
+ }
if (ferror(stdout) || fflush(stdout) < 0)
fatal("output error");
exit(0);
}
-
-
diff --git a/eqn/mark.c b/eqn/mark.cc
index 27fe29bfe..fa5916d3d 100644
--- a/eqn/mark.c
+++ b/eqn/mark.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/other.c b/eqn/other.cc
index 41f518033..5b8b9c269 100644
--- a/eqn/other.c
+++ b/eqn/other.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/over.c b/eqn/over.cc
index faf3e740d..5ea0121eb 100644
--- a/eqn/over.c
+++ b/eqn/over.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/pbox.h b/eqn/pbox.h
index 45bc79439..adee780cf 100644
--- a/eqn/pbox.h
+++ b/eqn/pbox.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
extern int fat_offset;
@@ -109,6 +109,7 @@ extern int matrix_side_sep;
#define SAVED_SIZE_REG PREFIX "ssize"
#define SAVED_INLINE_SIZE_REG PREFIX "sisize"
#define SAVED_INLINE_PREV_SIZE_REG PREFIX "sipsize"
+#define SAVE_FONT_STRING PREFIX "sfont"
#define RESTORE_FONT_STRING PREFIX "rfont"
#define INDEX_REG PREFIX "i"
#define TEMP_MACRO PREFIX "tempmac"
diff --git a/eqn/pile.c b/eqn/pile.cc
index aae171f1a..9aa43068c 100644
--- a/eqn/pile.c
+++ b/eqn/pile.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
// piles and matrices
@@ -146,18 +146,18 @@ int matrix_box::compute_metrics(int style)
printf(".nr " SUP_RAISE_FORMAT " \\n[" BASELINE_SEP_FORMAT "]*%d/2"
"+%dM\n",
uid, uid, maxlen-1, axis_height - shift_down);
- printf(".nr " HEIGHT_FORMAT " \\n[" SUP_RAISE_FORMAT "]+(0",
+ printf(".nr " HEIGHT_FORMAT " 0\\n[" SUP_RAISE_FORMAT "]+(0",
uid, uid);
for (i = 0; i < len; i++)
printf(">?\\n[" HEIGHT_FORMAT "]", p[i]->p[0]->uid);
- printf(")\n");
+ printf(")>?0\n");
printf(".nr " DEPTH_FORMAT " \\n[" BASELINE_SEP_FORMAT "]*%d-\\n["
SUP_RAISE_FORMAT "]+(0",
uid, uid, maxlen-1, uid);
for (i = 0; i < len; i++)
if (p[i]->len == maxlen)
printf(">?\\n[" DEPTH_FORMAT "]", p[i]->p[maxlen-1]->uid);
- printf(")\n");
+ printf(")>?0\n");
return FOUND_NOTHING;
}
diff --git a/eqn/script.c b/eqn/script.cc
index eeab15836..3ee83ba52 100644
--- a/eqn/script.c
+++ b/eqn/script.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/special.c b/eqn/special.cc
index 175fadc46..be7354365 100644
--- a/eqn/special.c
+++ b/eqn/special.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/sqrt.c b/eqn/sqrt.cc
index f6142dbdb..5ec05a098 100644
--- a/eqn/sqrt.c
+++ b/eqn/sqrt.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/text.c b/eqn/text.cc
index 100148cc3..ee6618f8c 100644
--- a/eqn/text.c
+++ b/eqn/text.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "eqn.h"
diff --git a/eqn/y.output b/eqn/y.output
new file mode 100644
index 000000000..e8265d9eb
--- /dev/null
+++ b/eqn/y.output
@@ -0,0 +1,3225 @@
+
+
+Terminals which are not used:
+
+ SPACE
+ GFONT
+ GSIZE
+ DEFINE
+ NDEFINE
+ TDEFINE
+ SDEFINE
+ UNDEF
+ IFDEF
+ INCLUDE
+ DELIM
+ CHARTYPE
+ SET
+ GRFONT
+ GBFONT
+
+
+Conflict in state 34 between rule 8 and token OVER resolved as shift.
+Conflict in state 34 between rule 8 and token SMALLOVER resolved as shift.
+Conflict in state 34 between rule 8 and token TO resolved as shift.
+Conflict in state 34 between rule 8 and token FROM resolved as shift.
+Conflict in state 37 between rule 19 and token SUB resolved as shift.
+Conflict in state 37 between rule 19 and token SUP resolved as shift.
+Conflict in state 37 between rule 19 and token ACCENT resolved as shift.
+Conflict in state 37 between rule 19 and token BAR resolved as shift.
+Conflict in state 37 between rule 19 and token UNDER resolved as shift.
+Conflict in state 37 between rule 19 and token PRIME resolved as shift.
+Conflict in state 37 between rule 19 and token UACCENT resolved as shift.
+Conflict in state 38 between rule 14 and token OVER resolved as reduce.
+Conflict in state 38 between rule 14 and token SMALLOVER resolved as reduce.
+Conflict in state 54 between rule 42 and token ACCENT resolved as shift.
+Conflict in state 54 between rule 42 and token BAR resolved as shift.
+Conflict in state 54 between rule 42 and token UNDER resolved as shift.
+Conflict in state 54 between rule 42 and token PRIME resolved as shift.
+Conflict in state 54 between rule 42 and token UACCENT resolved as shift.
+Conflict in state 55 between rule 43 and token ACCENT resolved as shift.
+Conflict in state 55 between rule 43 and token BAR resolved as shift.
+Conflict in state 55 between rule 43 and token UNDER resolved as shift.
+Conflict in state 55 between rule 43 and token PRIME resolved as shift.
+Conflict in state 55 between rule 43 and token UACCENT resolved as shift.
+Conflict in state 56 between rule 44 and token ACCENT resolved as shift.
+Conflict in state 56 between rule 44 and token BAR resolved as shift.
+Conflict in state 56 between rule 44 and token UNDER resolved as shift.
+Conflict in state 56 between rule 44 and token PRIME resolved as shift.
+Conflict in state 56 between rule 44 and token UACCENT resolved as shift.
+Conflict in state 57 between rule 45 and token ACCENT resolved as shift.
+Conflict in state 57 between rule 45 and token BAR resolved as shift.
+Conflict in state 57 between rule 45 and token UNDER resolved as shift.
+Conflict in state 57 between rule 45 and token PRIME resolved as shift.
+Conflict in state 57 between rule 45 and token UACCENT resolved as shift.
+Conflict in state 66 between rule 53 and token ACCENT resolved as shift.
+Conflict in state 66 between rule 53 and token BAR resolved as shift.
+Conflict in state 66 between rule 53 and token UNDER resolved as shift.
+Conflict in state 66 between rule 53 and token PRIME resolved as shift.
+Conflict in state 66 between rule 53 and token UACCENT resolved as shift.
+Conflict in state 86 between rule 36 and token SQRT resolved as shift.
+Conflict in state 86 between rule 36 and token LPILE resolved as shift.
+Conflict in state 86 between rule 36 and token RPILE resolved as shift.
+Conflict in state 86 between rule 36 and token CPILE resolved as shift.
+Conflict in state 86 between rule 36 and token PILE resolved as shift.
+Conflict in state 86 between rule 36 and token LEFT resolved as shift.
+Conflict in state 86 between rule 36 and token RIGHT resolved as shift.
+Conflict in state 86 between rule 36 and token SIZE resolved as shift.
+Conflict in state 86 between rule 36 and token FONT resolved as shift.
+Conflict in state 86 between rule 36 and token ROMAN resolved as shift.
+Conflict in state 86 between rule 36 and token BOLD resolved as shift.
+Conflict in state 86 between rule 36 and token ITALIC resolved as shift.
+Conflict in state 86 between rule 36 and token FAT resolved as shift.
+Conflict in state 86 between rule 36 and token TEXT resolved as shift.
+Conflict in state 86 between rule 36 and token QUOTED_TEXT resolved as shift.
+Conflict in state 86 between rule 36 and token FWD resolved as shift.
+Conflict in state 86 between rule 36 and token BACK resolved as shift.
+Conflict in state 86 between rule 36 and token DOWN resolved as shift.
+Conflict in state 86 between rule 36 and token UP resolved as shift.
+Conflict in state 86 between rule 36 and token MATRIX resolved as shift.
+Conflict in state 86 between rule 36 and token MARK resolved as shift.
+Conflict in state 86 between rule 36 and token LINEUP resolved as shift.
+Conflict in state 86 between rule 36 and token TYPE resolved as shift.
+Conflict in state 86 between rule 36 and token VCENTER resolved as shift.
+Conflict in state 86 between rule 36 and token SPLIT resolved as shift.
+Conflict in state 86 between rule 36 and token NOSPLIT resolved as shift.
+Conflict in state 86 between rule 36 and token SPECIAL resolved as shift.
+Conflict in state 86 between rule 36 and token '^' resolved as shift.
+Conflict in state 86 between rule 36 and token '~' resolved as shift.
+Conflict in state 86 between rule 36 and token '\t' resolved as shift.
+Conflict in state 86 between rule 36 and token '{' resolved as shift.
+Conflict in state 87 between rule 47 and token ACCENT resolved as shift.
+Conflict in state 87 between rule 47 and token BAR resolved as shift.
+Conflict in state 87 between rule 47 and token UNDER resolved as shift.
+Conflict in state 87 between rule 47 and token PRIME resolved as shift.
+Conflict in state 87 between rule 47 and token UACCENT resolved as shift.
+Conflict in state 88 between rule 46 and token ACCENT resolved as shift.
+Conflict in state 88 between rule 46 and token BAR resolved as shift.
+Conflict in state 88 between rule 46 and token UNDER resolved as shift.
+Conflict in state 88 between rule 46 and token PRIME resolved as shift.
+Conflict in state 88 between rule 46 and token UACCENT resolved as shift.
+Conflict in state 89 between rule 48 and token ACCENT resolved as shift.
+Conflict in state 89 between rule 48 and token BAR resolved as shift.
+Conflict in state 89 between rule 48 and token UNDER resolved as shift.
+Conflict in state 89 between rule 48 and token PRIME resolved as shift.
+Conflict in state 89 between rule 48 and token UACCENT resolved as shift.
+Conflict in state 90 between rule 49 and token ACCENT resolved as shift.
+Conflict in state 90 between rule 49 and token BAR resolved as shift.
+Conflict in state 90 between rule 49 and token UNDER resolved as shift.
+Conflict in state 90 between rule 49 and token PRIME resolved as shift.
+Conflict in state 90 between rule 49 and token UACCENT resolved as shift.
+Conflict in state 91 between rule 51 and token ACCENT resolved as shift.
+Conflict in state 91 between rule 51 and token BAR resolved as shift.
+Conflict in state 91 between rule 51 and token UNDER resolved as shift.
+Conflict in state 91 between rule 51 and token PRIME resolved as shift.
+Conflict in state 91 between rule 51 and token UACCENT resolved as shift.
+Conflict in state 92 between rule 50 and token ACCENT resolved as shift.
+Conflict in state 92 between rule 50 and token BAR resolved as shift.
+Conflict in state 92 between rule 50 and token UNDER resolved as shift.
+Conflict in state 92 between rule 50 and token PRIME resolved as shift.
+Conflict in state 92 between rule 50 and token UACCENT resolved as shift.
+Conflict in state 99 between rule 52 and token ACCENT resolved as shift.
+Conflict in state 99 between rule 52 and token BAR resolved as shift.
+Conflict in state 99 between rule 52 and token UNDER resolved as shift.
+Conflict in state 99 between rule 52 and token PRIME resolved as shift.
+Conflict in state 99 between rule 52 and token UACCENT resolved as shift.
+Conflict in state 100 between rule 54 and token ACCENT resolved as shift.
+Conflict in state 100 between rule 54 and token BAR resolved as shift.
+Conflict in state 100 between rule 54 and token UNDER resolved as shift.
+Conflict in state 100 between rule 54 and token PRIME resolved as shift.
+Conflict in state 100 between rule 54 and token UACCENT resolved as shift.
+Conflict in state 102 between rule 15 and token OVER resolved as reduce.
+Conflict in state 102 between rule 15 and token SMALLOVER resolved as reduce.
+Conflict in state 103 between rule 16 and token OVER resolved as reduce.
+Conflict in state 103 between rule 16 and token SMALLOVER resolved as reduce.
+Conflict in state 105 between rule 10 and token OVER resolved as shift.
+Conflict in state 105 between rule 10 and token SMALLOVER resolved as shift.
+Conflict in state 105 between rule 10 and token TO resolved as shift.
+Conflict in state 105 between rule 10 and token FROM resolved as shift.
+Conflict in state 107 between rule 19 and token SUB resolved as shift.
+Conflict in state 107 between rule 19 and token SUP resolved as shift.
+Conflict in state 107 between rule 19 and token ACCENT resolved as shift.
+Conflict in state 107 between rule 19 and token BAR resolved as shift.
+Conflict in state 107 between rule 19 and token UNDER resolved as shift.
+Conflict in state 107 between rule 19 and token PRIME resolved as shift.
+Conflict in state 107 between rule 19 and token UACCENT resolved as shift.
+Conflict in state 109 between rule 40 and token ACCENT resolved as reduce.
+Conflict in state 109 between rule 40 and token BAR resolved as reduce.
+Conflict in state 109 between rule 40 and token UNDER resolved as reduce.
+Conflict in state 109 between rule 40 and token PRIME resolved as reduce.
+Conflict in state 109 between rule 40 and token UACCENT resolved as reduce.
+Conflict in state 110 between rule 41 and token ACCENT resolved as reduce.
+Conflict in state 110 between rule 41 and token BAR resolved as reduce.
+Conflict in state 110 between rule 41 and token UNDER resolved as reduce.
+Conflict in state 110 between rule 41 and token PRIME resolved as reduce.
+Conflict in state 110 between rule 41 and token UACCENT resolved as reduce.
+
+Grammar
+rule 1 top -> /* empty */
+rule 2 top -> equation
+rule 3 equation -> mark
+rule 4 equation -> equation mark
+rule 5 mark -> from_to
+rule 6 mark -> MARK mark
+rule 7 mark -> LINEUP mark
+rule 8 from_to -> sqrt_over
+rule 9 from_to -> sqrt_over TO from_to
+rule 10 from_to -> sqrt_over FROM sqrt_over
+rule 11 from_to -> sqrt_over FROM sqrt_over TO from_to
+rule 12 from_to -> sqrt_over FROM sqrt_over FROM from_to
+rule 13 sqrt_over -> script
+rule 14 sqrt_over -> SQRT sqrt_over
+rule 15 sqrt_over -> sqrt_over OVER sqrt_over
+rule 16 sqrt_over -> sqrt_over SMALLOVER sqrt_over
+rule 17 script -> nonsup
+rule 18 script -> simple SUP script
+rule 19 nonsup -> simple
+rule 20 nonsup -> simple SUB nonsup
+rule 21 nonsup -> simple SUB simple SUP script
+rule 22 simple -> TEXT
+rule 23 simple -> QUOTED_TEXT
+rule 24 simple -> SPLIT QUOTED_TEXT
+rule 25 simple -> NOSPLIT TEXT
+rule 26 simple -> '^'
+rule 27 simple -> '~'
+rule 28 simple -> '\t'
+rule 29 simple -> '{' equation '}'
+rule 30 simple -> PILE pile_arg
+rule 31 simple -> LPILE pile_arg
+rule 32 simple -> RPILE pile_arg
+rule 33 simple -> CPILE pile_arg
+rule 34 simple -> MATRIX '{' column_list '}'
+rule 35 simple -> LEFT delim equation RIGHT delim
+rule 36 simple -> LEFT delim equation
+rule 37 simple -> simple BAR
+rule 38 simple -> simple UNDER
+rule 39 simple -> simple PRIME
+rule 40 simple -> simple ACCENT simple
+rule 41 simple -> simple UACCENT simple
+rule 42 simple -> ROMAN simple
+rule 43 simple -> BOLD simple
+rule 44 simple -> ITALIC simple
+rule 45 simple -> FAT simple
+rule 46 simple -> FONT text simple
+rule 47 simple -> SIZE text simple
+rule 48 simple -> FWD number simple
+rule 49 simple -> BACK number simple
+rule 50 simple -> UP number simple
+rule 51 simple -> DOWN number simple
+rule 52 simple -> TYPE text simple
+rule 53 simple -> VCENTER simple
+rule 54 simple -> SPECIAL text simple
+rule 55 number -> text
+rule 56 pile_element_list -> equation
+rule 57 pile_element_list -> pile_element_list ABOVE equation
+rule 58 pile_arg -> '{' pile_element_list '}'
+rule 59 pile_arg -> number '{' pile_element_list '}'
+rule 60 column_list -> column
+rule 61 column_list -> column_list column
+rule 62 column_element_list -> equation
+rule 63 column_element_list -> column_element_list ABOVE equation
+rule 64 column_arg -> '{' column_element_list '}'
+rule 65 column_arg -> number '{' column_element_list '}'
+rule 66 column -> COL column_arg
+rule 67 column -> LCOL column_arg
+rule 68 column -> RCOL column_arg
+rule 69 column -> CCOL column_arg
+rule 70 text -> TEXT
+rule 71 text -> QUOTED_TEXT
+rule 72 delim -> text
+rule 73 delim -> '{'
+rule 74 delim -> '}'
+
+Terminals, with rules where they appear
+
+$ (-1)
+'\t' (9) 28
+'^' (94) 26
+'{' (123) 29 34 58 59 64 65 73
+'}' (125) 29 34 58 59 64 65 74
+'~' (126) 27
+error (256)
+OVER (258) 15
+SMALLOVER (259) 16
+SQRT (260) 14
+SUB (261) 20 21
+SUP (262) 18 21
+LPILE (263) 31
+RPILE (264) 32
+CPILE (265) 33
+PILE (266) 30
+LEFT (267) 35 36
+RIGHT (268) 35
+TO (269) 9 11
+FROM (270) 10 11 12
+SIZE (271) 47
+FONT (272) 46
+ROMAN (273) 42
+BOLD (274) 43
+ITALIC (275) 44
+FAT (276) 45
+ACCENT (277) 40
+BAR (278) 37
+UNDER (279) 38
+ABOVE (280) 57 63
+TEXT (281) 22 25 70
+QUOTED_TEXT (282) 23 24 71
+FWD (283) 48
+BACK (284) 49
+DOWN (285) 51
+UP (286) 50
+MATRIX (287) 34
+COL (288) 66
+LCOL (289) 67
+RCOL (290) 68
+CCOL (291) 69
+MARK (292) 6
+LINEUP (293) 7
+TYPE (294) 52
+VCENTER (295) 53
+PRIME (296) 39
+SPLIT (297) 24
+NOSPLIT (298) 25
+UACCENT (299) 41
+SPECIAL (300) 54
+SPACE (301)
+GFONT (302)
+GSIZE (303)
+DEFINE (304)
+NDEFINE (305)
+TDEFINE (306)
+SDEFINE (307)
+UNDEF (308)
+IFDEF (309)
+INCLUDE (310)
+DELIM (311)
+CHARTYPE (312)
+SET (313)
+GRFONT (314)
+GBFONT (315)
+
+Nonterminals, with rules where they appear
+
+top (66)
+ on left: 1 2
+equation (67)
+ on left: 3 4, on right: 2 4 29 35 36 56 57 62 63
+mark (68)
+ on left: 5 6 7, on right: 3 4 6 7
+from_to (69)
+ on left: 8 9 10 11 12, on right: 5 9 11 12
+sqrt_over (70)
+ on left: 13 14 15 16, on right: 8 9 10 11 12 14 15 16
+script (71)
+ on left: 17 18, on right: 13 18 21
+nonsup (72)
+ on left: 19 20 21, on right: 17 20
+simple (73)
+ on left: 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
+ 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54, on right: 18 19 20
+ 21 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
+number (74)
+ on left: 55, on right: 48 49 50 51 59 65
+pile_element_list (75)
+ on left: 56 57, on right: 57 58 59
+pile_arg (76)
+ on left: 58 59, on right: 30 31 32 33
+column_list (77)
+ on left: 60 61, on right: 34 61
+column_element_list (78)
+ on left: 62 63, on right: 63 64 65
+column_arg (79)
+ on left: 64 65, on right: 66 67 68 69
+column (80)
+ on left: 66 67 68 69, on right: 60 61
+text (81)
+ on left: 70 71, on right: 46 47 52 54 55 72
+delim (82)
+ on left: 72 73 74, on right: 35 36
+
+
+state 0
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 1 (top)
+
+ top go to state 140
+ equation go to state 31
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 1
+
+ sqrt_over -> SQRT . sqrt_over (rule 14)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ sqrt_over go to state 38
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 2
+
+ simple -> LPILE . pile_arg (rule 31)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 41
+
+ number go to state 42
+ pile_arg go to state 43
+ text go to state 44
+
+
+
+state 3
+
+ simple -> RPILE . pile_arg (rule 32)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 41
+
+ number go to state 42
+ pile_arg go to state 45
+ text go to state 44
+
+
+
+state 4
+
+ simple -> CPILE . pile_arg (rule 33)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 41
+
+ number go to state 42
+ pile_arg go to state 46
+ text go to state 44
+
+
+
+state 5
+
+ simple -> PILE . pile_arg (rule 30)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 41
+
+ number go to state 42
+ pile_arg go to state 47
+ text go to state 44
+
+
+
+state 6
+
+ simple -> LEFT . delim equation RIGHT delim (rule 35)
+ simple -> LEFT . delim equation (rule 36)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 48
+ '}' shift, and go to state 49
+
+ text go to state 50
+ delim go to state 51
+
+
+
+state 7
+
+ simple -> SIZE . text simple (rule 47)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ text go to state 52
+
+
+
+state 8
+
+ simple -> FONT . text simple (rule 46)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ text go to state 53
+
+
+
+state 9
+
+ simple -> ROMAN . simple (rule 42)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 54
+
+
+
+state 10
+
+ simple -> BOLD . simple (rule 43)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 55
+
+
+
+state 11
+
+ simple -> ITALIC . simple (rule 44)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 56
+
+
+
+state 12
+
+ simple -> FAT . simple (rule 45)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 57
+
+
+
+state 13
+
+ simple -> TEXT . (rule 22)
+
+ $default reduce using rule 22 (simple)
+
+
+
+state 14
+
+ simple -> QUOTED_TEXT . (rule 23)
+
+ $default reduce using rule 23 (simple)
+
+
+
+state 15
+
+ simple -> FWD . number simple (rule 48)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ number go to state 58
+ text go to state 44
+
+
+
+state 16
+
+ simple -> BACK . number simple (rule 49)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ number go to state 59
+ text go to state 44
+
+
+
+state 17
+
+ simple -> DOWN . number simple (rule 51)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ number go to state 60
+ text go to state 44
+
+
+
+state 18
+
+ simple -> UP . number simple (rule 50)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ number go to state 61
+ text go to state 44
+
+
+
+state 19
+
+ simple -> MATRIX . '{' column_list '}' (rule 34)
+
+ '{' shift, and go to state 62
+
+
+
+state 20
+
+ mark -> MARK . mark (rule 6)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ mark go to state 63
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 21
+
+ mark -> LINEUP . mark (rule 7)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ mark go to state 64
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 22
+
+ simple -> TYPE . text simple (rule 52)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ text go to state 65
+
+
+
+state 23
+
+ simple -> VCENTER . simple (rule 53)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 66
+
+
+
+state 24
+
+ simple -> SPLIT . QUOTED_TEXT (rule 24)
+
+ QUOTED_TEXT shift, and go to state 67
+
+
+
+state 25
+
+ simple -> NOSPLIT . TEXT (rule 25)
+
+ TEXT shift, and go to state 68
+
+
+
+state 26
+
+ simple -> SPECIAL . text simple (rule 54)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+
+ text go to state 69
+
+
+
+state 27
+
+ simple -> '^' . (rule 26)
+
+ $default reduce using rule 26 (simple)
+
+
+
+state 28
+
+ simple -> '~' . (rule 27)
+
+ $default reduce using rule 27 (simple)
+
+
+
+state 29
+
+ simple -> '\t' . (rule 28)
+
+ $default reduce using rule 28 (simple)
+
+
+
+state 30
+
+ simple -> '{' . equation '}' (rule 29)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 70
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 31
+
+ top -> equation . (rule 2)
+ equation -> equation . mark (rule 4)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 2 (top)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 32
+
+ equation -> mark . (rule 3)
+
+ $default reduce using rule 3 (equation)
+
+
+
+state 33
+
+ mark -> from_to . (rule 5)
+
+ $default reduce using rule 5 (mark)
+
+
+
+state 34
+
+ from_to -> sqrt_over . (rule 8)
+ from_to -> sqrt_over . TO from_to (rule 9)
+ from_to -> sqrt_over . FROM sqrt_over (rule 10)
+ from_to -> sqrt_over . FROM sqrt_over TO from_to (rule 11)
+ from_to -> sqrt_over . FROM sqrt_over FROM from_to (rule 12)
+ sqrt_over -> sqrt_over . OVER sqrt_over (rule 15)
+ sqrt_over -> sqrt_over . SMALLOVER sqrt_over (rule 16)
+
+ OVER shift, and go to state 72
+ SMALLOVER shift, and go to state 73
+ TO shift, and go to state 74
+ FROM shift, and go to state 75
+
+ $default reduce using rule 8 (from_to)
+
+
+
+state 35
+
+ sqrt_over -> script . (rule 13)
+
+ $default reduce using rule 13 (sqrt_over)
+
+
+
+state 36
+
+ script -> nonsup . (rule 17)
+
+ $default reduce using rule 17 (script)
+
+
+
+state 37
+
+ script -> simple . SUP script (rule 18)
+ nonsup -> simple . (rule 19)
+ nonsup -> simple . SUB nonsup (rule 20)
+ nonsup -> simple . SUB simple SUP script (rule 21)
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+
+ SUB shift, and go to state 76
+ SUP shift, and go to state 77
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 19 (nonsup)
+
+
+
+state 38
+
+ sqrt_over -> SQRT sqrt_over . (rule 14)
+ sqrt_over -> sqrt_over . OVER sqrt_over (rule 15)
+ sqrt_over -> sqrt_over . SMALLOVER sqrt_over (rule 16)
+
+
+ $default reduce using rule 14 (sqrt_over)
+
+
+
+state 39
+
+ text -> TEXT . (rule 70)
+
+ $default reduce using rule 70 (text)
+
+
+
+state 40
+
+ text -> QUOTED_TEXT . (rule 71)
+
+ $default reduce using rule 71 (text)
+
+
+
+state 41
+
+ pile_arg -> '{' . pile_element_list '}' (rule 58)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 83
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+ pile_element_list go to state 84
+
+
+
+state 42
+
+ pile_arg -> number . '{' pile_element_list '}' (rule 59)
+
+ '{' shift, and go to state 85
+
+
+
+state 43
+
+ simple -> LPILE pile_arg . (rule 31)
+
+ $default reduce using rule 31 (simple)
+
+
+
+state 44
+
+ number -> text . (rule 55)
+
+ $default reduce using rule 55 (number)
+
+
+
+state 45
+
+ simple -> RPILE pile_arg . (rule 32)
+
+ $default reduce using rule 32 (simple)
+
+
+
+state 46
+
+ simple -> CPILE pile_arg . (rule 33)
+
+ $default reduce using rule 33 (simple)
+
+
+
+state 47
+
+ simple -> PILE pile_arg . (rule 30)
+
+ $default reduce using rule 30 (simple)
+
+
+
+state 48
+
+ delim -> '{' . (rule 73)
+
+ $default reduce using rule 73 (delim)
+
+
+
+state 49
+
+ delim -> '}' . (rule 74)
+
+ $default reduce using rule 74 (delim)
+
+
+
+state 50
+
+ delim -> text . (rule 72)
+
+ $default reduce using rule 72 (delim)
+
+
+
+state 51
+
+ simple -> LEFT delim . equation RIGHT delim (rule 35)
+ simple -> LEFT delim . equation (rule 36)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 86
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 52
+
+ simple -> SIZE text . simple (rule 47)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 87
+
+
+
+state 53
+
+ simple -> FONT text . simple (rule 46)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 88
+
+
+
+state 54
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> ROMAN simple . (rule 42)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 42 (simple)
+
+
+
+state 55
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> BOLD simple . (rule 43)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 43 (simple)
+
+
+
+state 56
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> ITALIC simple . (rule 44)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 44 (simple)
+
+
+
+state 57
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> FAT simple . (rule 45)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 45 (simple)
+
+
+
+state 58
+
+ simple -> FWD number . simple (rule 48)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 89
+
+
+
+state 59
+
+ simple -> BACK number . simple (rule 49)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 90
+
+
+
+state 60
+
+ simple -> DOWN number . simple (rule 51)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 91
+
+
+
+state 61
+
+ simple -> UP number . simple (rule 50)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 92
+
+
+
+state 62
+
+ simple -> MATRIX '{' . column_list '}' (rule 34)
+
+ COL shift, and go to state 93
+ LCOL shift, and go to state 94
+ RCOL shift, and go to state 95
+ CCOL shift, and go to state 96
+
+ column_list go to state 97
+ column go to state 98
+
+
+
+state 63
+
+ mark -> MARK mark . (rule 6)
+
+ $default reduce using rule 6 (mark)
+
+
+
+state 64
+
+ mark -> LINEUP mark . (rule 7)
+
+ $default reduce using rule 7 (mark)
+
+
+
+state 65
+
+ simple -> TYPE text . simple (rule 52)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 99
+
+
+
+state 66
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> VCENTER simple . (rule 53)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 53 (simple)
+
+
+
+state 67
+
+ simple -> SPLIT QUOTED_TEXT . (rule 24)
+
+ $default reduce using rule 24 (simple)
+
+
+
+state 68
+
+ simple -> NOSPLIT TEXT . (rule 25)
+
+ $default reduce using rule 25 (simple)
+
+
+
+state 69
+
+ simple -> SPECIAL text . simple (rule 54)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 100
+
+
+
+state 70
+
+ equation -> equation . mark (rule 4)
+ simple -> '{' equation . '}' (rule 29)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+ '}' shift, and go to state 101
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 71
+
+ equation -> equation mark . (rule 4)
+
+ $default reduce using rule 4 (equation)
+
+
+
+state 72
+
+ sqrt_over -> sqrt_over OVER . sqrt_over (rule 15)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ sqrt_over go to state 102
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 73
+
+ sqrt_over -> sqrt_over SMALLOVER . sqrt_over (rule 16)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ sqrt_over go to state 103
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 74
+
+ from_to -> sqrt_over TO . from_to (rule 9)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ from_to go to state 104
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 75
+
+ from_to -> sqrt_over FROM . sqrt_over (rule 10)
+ from_to -> sqrt_over FROM . sqrt_over TO from_to (rule 11)
+ from_to -> sqrt_over FROM . sqrt_over FROM from_to (rule 12)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ sqrt_over go to state 105
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 76
+
+ nonsup -> simple SUB . nonsup (rule 20)
+ nonsup -> simple SUB . simple SUP script (rule 21)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ nonsup go to state 106
+ simple go to state 107
+
+
+
+state 77
+
+ script -> simple SUP . script (rule 18)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ script go to state 108
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 78
+
+ simple -> simple ACCENT . simple (rule 40)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 109
+
+
+
+state 79
+
+ simple -> simple BAR . (rule 37)
+
+ $default reduce using rule 37 (simple)
+
+
+
+state 80
+
+ simple -> simple UNDER . (rule 38)
+
+ $default reduce using rule 38 (simple)
+
+
+
+state 81
+
+ simple -> simple PRIME . (rule 39)
+
+ $default reduce using rule 39 (simple)
+
+
+
+state 82
+
+ simple -> simple UACCENT . simple (rule 41)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ simple go to state 110
+
+
+
+state 83
+
+ equation -> equation . mark (rule 4)
+ pile_element_list -> equation . (rule 56)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 56 (pile_element_list)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 84
+
+ pile_element_list -> pile_element_list . ABOVE equation (rule 57)
+ pile_arg -> '{' pile_element_list . '}' (rule 58)
+
+ ABOVE shift, and go to state 111
+ '}' shift, and go to state 112
+
+
+
+state 85
+
+ pile_arg -> number '{' . pile_element_list '}' (rule 59)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 83
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+ pile_element_list go to state 113
+
+
+
+state 86
+
+ equation -> equation . mark (rule 4)
+ simple -> LEFT delim equation . RIGHT delim (rule 35)
+ simple -> LEFT delim equation . (rule 36)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ RIGHT shift, and go to state 114
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 36 (simple)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 87
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> SIZE text simple . (rule 47)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 47 (simple)
+
+
+
+state 88
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> FONT text simple . (rule 46)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 46 (simple)
+
+
+
+state 89
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> FWD number simple . (rule 48)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 48 (simple)
+
+
+
+state 90
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> BACK number simple . (rule 49)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 49 (simple)
+
+
+
+state 91
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> DOWN number simple . (rule 51)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 51 (simple)
+
+
+
+state 92
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> UP number simple . (rule 50)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 50 (simple)
+
+
+
+state 93
+
+ column -> COL . column_arg (rule 66)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 115
+
+ number go to state 116
+ column_arg go to state 117
+ text go to state 44
+
+
+
+state 94
+
+ column -> LCOL . column_arg (rule 67)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 115
+
+ number go to state 116
+ column_arg go to state 118
+ text go to state 44
+
+
+
+state 95
+
+ column -> RCOL . column_arg (rule 68)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 115
+
+ number go to state 116
+ column_arg go to state 119
+ text go to state 44
+
+
+
+state 96
+
+ column -> CCOL . column_arg (rule 69)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 115
+
+ number go to state 116
+ column_arg go to state 120
+ text go to state 44
+
+
+
+state 97
+
+ simple -> MATRIX '{' column_list . '}' (rule 34)
+ column_list -> column_list . column (rule 61)
+
+ COL shift, and go to state 93
+ LCOL shift, and go to state 94
+ RCOL shift, and go to state 95
+ CCOL shift, and go to state 96
+ '}' shift, and go to state 121
+
+ column go to state 122
+
+
+
+state 98
+
+ column_list -> column . (rule 60)
+
+ $default reduce using rule 60 (column_list)
+
+
+
+state 99
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> TYPE text simple . (rule 52)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 52 (simple)
+
+
+
+state 100
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> SPECIAL text simple . (rule 54)
+
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 54 (simple)
+
+
+
+state 101
+
+ simple -> '{' equation '}' . (rule 29)
+
+ $default reduce using rule 29 (simple)
+
+
+
+state 102
+
+ sqrt_over -> sqrt_over . OVER sqrt_over (rule 15)
+ sqrt_over -> sqrt_over OVER sqrt_over . (rule 15)
+ sqrt_over -> sqrt_over . SMALLOVER sqrt_over (rule 16)
+
+
+ $default reduce using rule 15 (sqrt_over)
+
+
+
+state 103
+
+ sqrt_over -> sqrt_over . OVER sqrt_over (rule 15)
+ sqrt_over -> sqrt_over . SMALLOVER sqrt_over (rule 16)
+ sqrt_over -> sqrt_over SMALLOVER sqrt_over . (rule 16)
+
+
+ $default reduce using rule 16 (sqrt_over)
+
+
+
+state 104
+
+ from_to -> sqrt_over TO from_to . (rule 9)
+
+ $default reduce using rule 9 (from_to)
+
+
+
+state 105
+
+ from_to -> sqrt_over FROM sqrt_over . (rule 10)
+ from_to -> sqrt_over FROM sqrt_over . TO from_to (rule 11)
+ from_to -> sqrt_over FROM sqrt_over . FROM from_to (rule 12)
+ sqrt_over -> sqrt_over . OVER sqrt_over (rule 15)
+ sqrt_over -> sqrt_over . SMALLOVER sqrt_over (rule 16)
+
+ OVER shift, and go to state 72
+ SMALLOVER shift, and go to state 73
+ TO shift, and go to state 123
+ FROM shift, and go to state 124
+
+ $default reduce using rule 10 (from_to)
+
+
+
+state 106
+
+ nonsup -> simple SUB nonsup . (rule 20)
+
+ $default reduce using rule 20 (nonsup)
+
+
+
+state 107
+
+ nonsup -> simple . (rule 19)
+ nonsup -> simple . SUB nonsup (rule 20)
+ nonsup -> simple . SUB simple SUP script (rule 21)
+ nonsup -> simple SUB simple . SUP script (rule 21)
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+
+ SUB shift, and go to state 76
+ SUP shift, and go to state 125
+ ACCENT shift, and go to state 78
+ BAR shift, and go to state 79
+ UNDER shift, and go to state 80
+ PRIME shift, and go to state 81
+ UACCENT shift, and go to state 82
+
+ $default reduce using rule 19 (nonsup)
+
+
+
+state 108
+
+ script -> simple SUP script . (rule 18)
+
+ $default reduce using rule 18 (script)
+
+
+
+state 109
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple ACCENT simple . (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+
+
+ $default reduce using rule 40 (simple)
+
+
+
+state 110
+
+ simple -> simple . BAR (rule 37)
+ simple -> simple . UNDER (rule 38)
+ simple -> simple . PRIME (rule 39)
+ simple -> simple . ACCENT simple (rule 40)
+ simple -> simple . UACCENT simple (rule 41)
+ simple -> simple UACCENT simple . (rule 41)
+
+
+ $default reduce using rule 41 (simple)
+
+
+
+state 111
+
+ pile_element_list -> pile_element_list ABOVE . equation (rule 57)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 126
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 112
+
+ pile_arg -> '{' pile_element_list '}' . (rule 58)
+
+ $default reduce using rule 58 (pile_arg)
+
+
+
+state 113
+
+ pile_element_list -> pile_element_list . ABOVE equation (rule 57)
+ pile_arg -> number '{' pile_element_list . '}' (rule 59)
+
+ ABOVE shift, and go to state 111
+ '}' shift, and go to state 127
+
+
+
+state 114
+
+ simple -> LEFT delim equation RIGHT . delim (rule 35)
+
+ TEXT shift, and go to state 39
+ QUOTED_TEXT shift, and go to state 40
+ '{' shift, and go to state 48
+ '}' shift, and go to state 49
+
+ text go to state 50
+ delim go to state 128
+
+
+
+state 115
+
+ column_arg -> '{' . column_element_list '}' (rule 64)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 129
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+ column_element_list go to state 130
+
+
+
+state 116
+
+ column_arg -> number . '{' column_element_list '}' (rule 65)
+
+ '{' shift, and go to state 131
+
+
+
+state 117
+
+ column -> COL column_arg . (rule 66)
+
+ $default reduce using rule 66 (column)
+
+
+
+state 118
+
+ column -> LCOL column_arg . (rule 67)
+
+ $default reduce using rule 67 (column)
+
+
+
+state 119
+
+ column -> RCOL column_arg . (rule 68)
+
+ $default reduce using rule 68 (column)
+
+
+
+state 120
+
+ column -> CCOL column_arg . (rule 69)
+
+ $default reduce using rule 69 (column)
+
+
+
+state 121
+
+ simple -> MATRIX '{' column_list '}' . (rule 34)
+
+ $default reduce using rule 34 (simple)
+
+
+
+state 122
+
+ column_list -> column_list column . (rule 61)
+
+ $default reduce using rule 61 (column_list)
+
+
+
+state 123
+
+ from_to -> sqrt_over FROM sqrt_over TO . from_to (rule 11)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ from_to go to state 132
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 124
+
+ from_to -> sqrt_over FROM sqrt_over FROM . from_to (rule 12)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ from_to go to state 133
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 125
+
+ nonsup -> simple SUB simple SUP . script (rule 21)
+
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ script go to state 134
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 126
+
+ equation -> equation . mark (rule 4)
+ pile_element_list -> pile_element_list ABOVE equation . (rule 57)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 57 (pile_element_list)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 127
+
+ pile_arg -> number '{' pile_element_list '}' . (rule 59)
+
+ $default reduce using rule 59 (pile_arg)
+
+
+
+state 128
+
+ simple -> LEFT delim equation RIGHT delim . (rule 35)
+
+ $default reduce using rule 35 (simple)
+
+
+
+state 129
+
+ equation -> equation . mark (rule 4)
+ column_element_list -> equation . (rule 62)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 62 (column_element_list)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 130
+
+ column_element_list -> column_element_list . ABOVE equation (rule 63)
+ column_arg -> '{' column_element_list . '}' (rule 64)
+
+ ABOVE shift, and go to state 135
+ '}' shift, and go to state 136
+
+
+
+state 131
+
+ column_arg -> number '{' . column_element_list '}' (rule 65)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 129
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+ column_element_list go to state 137
+
+
+
+state 132
+
+ from_to -> sqrt_over FROM sqrt_over TO from_to . (rule 11)
+
+ $default reduce using rule 11 (from_to)
+
+
+
+state 133
+
+ from_to -> sqrt_over FROM sqrt_over FROM from_to . (rule 12)
+
+ $default reduce using rule 12 (from_to)
+
+
+
+state 134
+
+ nonsup -> simple SUB simple SUP script . (rule 21)
+
+ $default reduce using rule 21 (nonsup)
+
+
+
+state 135
+
+ column_element_list -> column_element_list ABOVE . equation (rule 63)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ equation go to state 138
+ mark go to state 32
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 136
+
+ column_arg -> '{' column_element_list '}' . (rule 64)
+
+ $default reduce using rule 64 (column_arg)
+
+
+
+state 137
+
+ column_element_list -> column_element_list . ABOVE equation (rule 63)
+ column_arg -> number '{' column_element_list . '}' (rule 65)
+
+ ABOVE shift, and go to state 135
+ '}' shift, and go to state 139
+
+
+
+state 138
+
+ equation -> equation . mark (rule 4)
+ column_element_list -> column_element_list ABOVE equation . (rule 63)
+
+ SQRT shift, and go to state 1
+ LPILE shift, and go to state 2
+ RPILE shift, and go to state 3
+ CPILE shift, and go to state 4
+ PILE shift, and go to state 5
+ LEFT shift, and go to state 6
+ SIZE shift, and go to state 7
+ FONT shift, and go to state 8
+ ROMAN shift, and go to state 9
+ BOLD shift, and go to state 10
+ ITALIC shift, and go to state 11
+ FAT shift, and go to state 12
+ TEXT shift, and go to state 13
+ QUOTED_TEXT shift, and go to state 14
+ FWD shift, and go to state 15
+ BACK shift, and go to state 16
+ DOWN shift, and go to state 17
+ UP shift, and go to state 18
+ MATRIX shift, and go to state 19
+ MARK shift, and go to state 20
+ LINEUP shift, and go to state 21
+ TYPE shift, and go to state 22
+ VCENTER shift, and go to state 23
+ SPLIT shift, and go to state 24
+ NOSPLIT shift, and go to state 25
+ SPECIAL shift, and go to state 26
+ '^' shift, and go to state 27
+ '~' shift, and go to state 28
+ '\t' shift, and go to state 29
+ '{' shift, and go to state 30
+
+ $default reduce using rule 63 (column_element_list)
+
+ mark go to state 71
+ from_to go to state 33
+ sqrt_over go to state 34
+ script go to state 35
+ nonsup go to state 36
+ simple go to state 37
+
+
+
+state 139
+
+ column_arg -> number '{' column_element_list '}' . (rule 65)
+
+ $default reduce using rule 65 (column_arg)
+
+
+
+state 140
+
+ $ go to state 141
+
+
+
+state 141
+
+ $ go to state 142
+
+
+
+state 142
+
+ $default accept
diff --git a/etc/Makefile b/etc/Makefile
deleted file mode 100644
index e6733af79..000000000
--- a/etc/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-CC=g++
-CFLAGS=-g -Wall
-INCLUDES=-I../lib
-DEFINES=
-GROG=grog.sh
-SOURCES=addftinfo.c guess.c guess.h
-OBJECTS=addftinfo.o guess.o
-ETAGS=etags
-ETAGSFLAGS=-p
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $<
-
-all: addftinfo soelim
-
-addftinfo: $(OBJECTS) ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) ../lib/libgroff.a $(LIBS)
-
-addftinfo.o: guess.h ../lib/lib.h ../lib/errarg.h ../lib/error.h \
- ../lib/stringclass.h
-
-guess.o: guess.h
-
-soelim: soelim.o ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ soelim.o ../lib/libgroff.a $(LIBS)
-
-soelim.o: ../lib/lib.h ../lib/errarg.h ../lib/error.h \
- ../lib/stringclass.h
-
-TAGS: $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o soelim addftinfo core
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-install.bin: all
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/addftinfo
- cp addftinfo $(BINDIR)/addftinfo
- -rm -f $(BINDIR)/gsoelim
- cp soelim $(BINDIR)/gsoelim
-
-install.nobin:
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/grog
- cp $(GROG) $(BINDIR)/grog
- chmod +x $(BINDIR)/grog
-
-install: install.bin install.nobin
diff --git a/gcc.patch b/gcc.patch
new file mode 100644
index 000000000..e2039685f
--- /dev/null
+++ b/gcc.patch
@@ -0,0 +1,19 @@
+*** cp-parse.y.~1~ Fri Mar 27 00:37:52 1992
+--- cp-parse.y Tue Mar 31 09:01:43 1992
+***************
+*** 1097,1103 ****
+ }
+ $$ = build_delete (type, expr, integer_three_node,
+ LOOKUP_NORMAL|LOOKUP_HAS_IN_CHARGE,
+! TYPE_HAS_DESTRUCTOR (TREE_TYPE (type)) ? $$ : 0, 1);
+ }
+ | delete '[' ']' cast_expr %prec UNARY
+ {
+--- 1097,1103 ----
+ }
+ $$ = build_delete (type, expr, integer_three_node,
+ LOOKUP_NORMAL|LOOKUP_HAS_IN_CHARGE,
+! TYPE_HAS_DESTRUCTOR (TREE_TYPE (type)) ? $$ : 0, 0);
+ }
+ | delete '[' ']' cast_expr %prec UNARY
+ {
diff --git a/gendef b/gendef.sh
index e2b2575ff..e2b2575ff 100644
--- a/gendef
+++ b/gendef.sh
diff --git a/grodvi/Makefile.dep b/grodvi/Makefile.dep
new file mode 100644
index 000000000..6f9489e31
--- /dev/null
+++ b/grodvi/Makefile.dep
@@ -0,0 +1,2 @@
+dvi.o : dvi.cc ../include/driver.h ../include/errarg.h ../include/error.h \
+ ../include/font.h ../include/printer.h ../include/lib.h
diff --git a/grodvi/Makefile.sub b/grodvi/Makefile.sub
new file mode 100644
index 000000000..a63905df9
--- /dev/null
+++ b/grodvi/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=grodvi
+MAN1=grodvi.n
+XLIBS=$(LIBDRIVER) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=dvi.o
+CCSRCS=dvi.cc
diff --git a/dvi/dvi.c b/grodvi/dvi.cc
index ae7707247..ab17f0f01 100644
--- a/dvi/dvi.c
+++ b/grodvi/dvi.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
@@ -48,7 +48,8 @@ public:
int checksum;
int design_size;
~dvi_font();
- void handle_unknown_font_command(int argc, const char **argv);
+ void handle_unknown_font_command(const char *command, const char *arg,
+ const char *filename, int lineno);
static dvi_font *load_dvi_font(const char *);
};
@@ -71,23 +72,27 @@ dvi_font::~dvi_font()
{
}
-void dvi_font::handle_unknown_font_command(int argc, const char **argv)
+void dvi_font::handle_unknown_font_command(const char *command,
+ const char *arg,
+ const char *filename, int lineno)
{
char *ptr;
- if (strcmp(argv[0], "checksum") == 0) {
- if (argc != 2)
- fatal("`checksum' command requires exactly 1 argument");
- checksum = int(strtol(argv[1], &ptr, 10));
- if (checksum == 0 && ptr == argv[1]) {
- fatal("bad checksum");
+ if (strcmp(command, "checksum") == 0) {
+ if (arg == 0)
+ fatal_with_file_and_line(filename, lineno,
+ "`checksum' command requires an argument");
+ checksum = int(strtol(arg, &ptr, 10));
+ if (checksum == 0 && ptr == arg) {
+ fatal_with_file_and_line(filename, lineno, "bad checksum");
}
}
- else if (strcmp(argv[0], "designsize") == 0) {
- if (argc != 2)
- fatal("`designsize' command requires exactly 1 argument");
- design_size = int(strtol(argv[1], &ptr, 10));
- if (design_size == 0 && ptr == argv[1]) {
- fatal("bad design size");
+ else if (strcmp(command, "designsize") == 0) {
+ if (arg == 0)
+ fatal_with_file_and_line(filename, lineno,
+ "`designsize' command requires an argument");
+ design_size = int(strtol(arg, &ptr, 10));
+ if (design_size == 0 && ptr == arg) {
+ fatal_with_file_and_line(filename, lineno, "bad design size");
}
}
}
@@ -142,7 +147,7 @@ protected:
pre = 247,
post = 248,
post_post = 249,
- filler = 223,
+ filler = 223
};
int line_thickness;
@@ -182,7 +187,7 @@ public:
dvi_printer::dvi_printer()
: byte_count(0), last_bop(-1), page_count(0), cur_font(0), fp(stdout),
- max_h(0), max_v(0), pushed(0), line_thickness(-1)
+ max_h(0), max_v(0), pushed(0), line_thickness(-1), cur_point_size(-1)
{
if (font::res != RES)
fatal("resolution must be %1", RES);
diff --git a/man/grodvi.man b/grodvi/grodvi.man
index e3c1ecb00..fe1fced70 100644
--- a/man/grodvi.man
+++ b/grodvi/grodvi.man
@@ -1,6 +1,12 @@
.\" -*- nroff -*-
.ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
.el .ds tx TeX
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH GRODVI @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
grodvi \- convert groff output to TeX dvi format
@@ -23,11 +29,11 @@ that produces \*(tx dvi format.
Normally it should be run by
.BR groff\ \-Tdvi .
This will run
-.BR gtroff\ \-Tdvi ;
+.BR @g@troff\ \-Tdvi ;
it will also input the macros
.BR @MACRODIR@/tmac.dvi ;
if the input is being preprocessed with
-.B geqn
+.B @g@eqn
it will also input
.BR @FONTDIR@/devdvi/eqnchar .
.LP
@@ -67,7 +73,7 @@ can be created from tfm files using
.BR tfmtodit (@MAN1EXT@).
The font description file should contain the following
additional commands:
-.TP \w'\fBinternalname'u+2n
+.Tp \w'\fBinternalname'u+2n
.BI internalname\ name
The name of the tfm file (without the
.B .tfm
@@ -86,7 +92,7 @@ These are automatically generated by
.B tfmtodit.
.LP
In
-.B gtroff
+.B troff
the
.B \eN
escape sequence can be used to access characters by their position
@@ -141,8 +147,8 @@ and widths of rules be rounded.
.SH "SEE ALSO"
.BR tfmtodit (@MAN1EXT@),
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@),
.BR groff_out (@MAN5EXT@),
-.BR groff_font (@MAN5EXT@)
-.br
-.I "Groff Character Names"
+.BR groff_font (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@)
diff --git a/groff.c b/groff.c
deleted file mode 100644
index 8c32a232f..000000000
--- a/groff.c
+++ /dev/null
@@ -1,800 +0,0 @@
-// -*- C++ -*-
-/* Copyright (C) 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
-
-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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-// A C++ implementation of groff.sh.
-
-#include <stdio.h>
-#include <string.h>
-#include <osfcn.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <errno.h>
-#include <sys/types.h>
-#ifndef NO_SYS_WAIT_H
-#include <sys/wait.h>
-#endif /* not NO_SYS_WAIT_H */
-
-#include "lib.h"
-#include "assert.h"
-#include "errarg.h"
-#include "error.h"
-#include "stringclass.h"
-#include "font.h"
-
-#include "device.h"
-
-#ifdef HAVE_PID_T
-typedef pid_t PID_T;
-#else
-typedef int PID_T;
-#endif
-
-#ifdef HAVE_UNION_WAIT
-typedef union wait WAIT_STATUS_T;
-#else
-typedef int WAIT_STATUS_T;
-#endif
-
-#ifdef NO_SYS_WAIT_H
-extern "C" {
- PID_T wait(WAIT_STATUS_T *);
-}
-#endif /* NO_SYS_WAIT_H */
-
-
-#ifdef HAVE_UNION_WAIT
-/* Convert the argument which must be an lvalue of type union wait *
-to an int. */
-#define WTOI(s) (*(int *)&(s))
-#else
-#define WTOI(s) (s)
-#endif
-
-#ifndef WIFEXITED
-#define WIFEXITED(s) ((WTOI(s) & 0377) == 0)
-#define WIFSTOPPED(s) ((WTOI(s) & 0377) == 0177)
-#define WIFSIGNALED(s) ((WTOI(s) & 0377) != 0 && ((WTOI(s) & 0377) != 0177))
-#endif /* WIFEXITED */
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(s) ((WTOI(s) >> 8) & 0377)
-#define WTERMSIG(s) (WTOI(s) & 0177)
-#define WSTOPSIG(s) ((WTOI(s) >> 8) & 0377)
-#endif /* not WEXITSTATUS */
-
-#ifdef WAIT_COREDUMP_0200
-#define WCOREDUMPED(s) (WTOI(s) & 0200)
-#else
-#define WCOREDUMPED(s) 0
-#endif
-
-const char *strsignal(int);
-
-const char *ps_print[] = { PSPRINT 0 };
-
-const char *dvi_print[] = { DVIPRINT 0 };
-
-const char *grops[] = { "grops", 0 };
-const char *grotty[] = { "grotty", 0 };
-const char *grodvi[] = { "grodvi", 0 };
-const char *gxditview[] = { "gxditview", "-", 0 };
-
-struct {
- const char *pseudo_name;
- const char *real_name;
- const char *description; // Description of device (used in help message).
- const char **driver; // Driver argument vector.
- unsigned flags; // Bitwise OR of
-#define EQN_D_OPTION 01 /* Add -D option to eqn. */
-#define PIC_X_OPTION 02 /* Add -x option to pic. */
-#define PIC_P_OPTION 04 /* Add -p option to pic. */
-#define GROFF_OPTIONS 010 /* Driver understands -F and -v options. */
-#define XT_OPTION 020 /* Driver understands -title and -xrm options. */
-#define PRINT_OPTION 040 /* Understands -printCommand. */
- const char *macro_file; // -m option to pass to troff
- const char **spooler; // Spooler argument vector.
-} device_table[] = {
- {
- "ps",
- "ps",
- "PostScript",
- grops,
- EQN_D_OPTION|PIC_X_OPTION|PIC_P_OPTION|GROFF_OPTIONS,
- "ps",
- ps_print,
- },
- {
- "ascii",
- "ascii",
- "ASCII",
- grotty,
- GROFF_OPTIONS,
- "tty",
- 0
- },
- {
- "latin1",
- "latin1",
- "ISO Latin-1",
- grotty,
- GROFF_OPTIONS,
- "tty",
- 0
- },
- {
- "dvi",
- "dvi",
- "TeX dvi format",
- grodvi,
- GROFF_OPTIONS|PIC_X_OPTION,
- "dvi",
- dvi_print,
- },
- {
- "X100",
- "X100",
- "X11 previewer at 100dpi",
- gxditview,
- EQN_D_OPTION|PIC_X_OPTION|XT_OPTION,
- "X",
- 0
- },
- {
- "X75",
- "X75",
- "X11 previewer at 75dpi",
- gxditview,
- EQN_D_OPTION|PIC_X_OPTION|XT_OPTION,
- "X",
- 0
- },
- {
- "X100-12",
- "X100-12",
- "X11 previewer at 100dpi (optimized for 12 point text)",
- gxditview,
- EQN_D_OPTION|PIC_X_OPTION|XT_OPTION,
- "X",
- 0
- },
- {
- "X75-12",
- "X75-12",
- "X11 previewer at 75dpi (optimized for 12 point text)",
- gxditview,
- EQN_D_OPTION|PIC_X_OPTION|XT_OPTION,
- "X",
- 0
- },
- {
- "Xps",
- "ps",
- "X11 previewer with PostScript metrics",
- gxditview,
- EQN_D_OPTION|PIC_X_OPTION|PIC_P_OPTION|XT_OPTION|PRINT_OPTION,
- "Xps",
- 0
- },
-};
-
-const int SOELIM_INDEX = 0;
-const int REFER_INDEX = SOELIM_INDEX + 1;
-const int PIC_INDEX = REFER_INDEX + 1;
-const int TBL_INDEX = PIC_INDEX + 1;
-const int EQN_INDEX = TBL_INDEX + 1;
-const int TROFF_INDEX = EQN_INDEX + 1;
-const int POST_INDEX = TROFF_INDEX + 1;
-const int SPOOL_INDEX = POST_INDEX + 1;
-
-const int NCOMMANDS = SPOOL_INDEX + 1;
-
-// Children exit with this status if the execvp failed.
-const int EXEC_FAILED_EXIT_STATUS = 0xff;
-
-class possible_command {
- char *name;
- string args;
- char **argv;
-public:
- PID_T pid;
-
- possible_command();
- ~possible_command();
- void set_name(const char *);
- const char *get_name();
- void append_arg(const char *, const char * = 0);
- void prepend_arg(const char *, const char * = 0);
- void execp();
- void clear_args();
- void build_argv();
- void print(int is_last, FILE *fp);
-};
-
-int lflag = 0;
-
-possible_command commands[NCOMMANDS];
-
-int run_commands();
-void print_commands();
-void append_arg_to_string(const char *arg, string &str);
-
-void usage();
-void help();
-void devices();
-void sys_fatal(const char *);
-
-int main(int argc, char **argv)
-{
- program_name = argv[0];
- static char stderr_buf[BUFSIZ];
- setbuf(stderr, stderr_buf);
- string Pargs, Largs;
- int Vflag = 0;
- int zflag = 0;
- int iflag = 0;
- int opt;
- const char *device = getenv("GROFF_TYPESETTER");
- if (!device)
- device = DEVICE;
- commands[TROFF_INDEX].set_name("gtroff");
- while ((opt = getopt(argc, argv,
- "itpeRszavVhblCENZH:F:m:T:f:w:W:M:d:r:n:o:P:L:"))
- != EOF) {
- char buf[3];
- buf[0] = '-';
- buf[1] = opt;
- buf[2] = '\0';
- switch (opt) {
- case 'i':
- iflag = 1;
- break;
- case 't':
- commands[TBL_INDEX].set_name("gtbl");
- break;
- case 'p':
- commands[PIC_INDEX].set_name("gpic");
- break;
- case 'e':
- commands[EQN_INDEX].set_name("geqn");
- break;
- case 's':
- commands[SOELIM_INDEX].set_name("gsoelim");
- break;
- case 'R':
- commands[REFER_INDEX].set_name("grefer");
- break;
- case 'z':
- case 'a':
- commands[TROFF_INDEX].append_arg(buf);
- // fall through
- case 'Z':
- zflag++;
- break;
- case 'l':
- lflag++;
- break;
- case 'V':
- Vflag++;
- break;
- case 'v':
- commands[POST_INDEX].append_arg(buf);
- // fall through
- case 'C':
- commands[SOELIM_INDEX].append_arg(buf);
- commands[PIC_INDEX].append_arg(buf);
- commands[TBL_INDEX].append_arg(buf);
- commands[EQN_INDEX].append_arg(buf);
- commands[TROFF_INDEX].append_arg(buf);
- break;
- case 'N':
- commands[EQN_INDEX].append_arg(buf);
- break;
- case 'h':
- help();
- break;
- case 'E':
- case 'b':
- commands[TROFF_INDEX].append_arg(buf);
- break;
- case 'T':
- device = optarg;
- break;
- case 'F':
- font::command_line_font_dir(optarg);
- commands[POST_INDEX].append_arg(buf, optarg);
- // fall through
- case 'f':
- case 'o':
- case 'm':
- case 'r':
- case 'M':
- case 'H':
- case 'd':
- case 'n':
- case 'w':
- case 'W':
- commands[TROFF_INDEX].append_arg(buf, optarg);
- break;
- case 'P':
- Pargs += optarg;
- Pargs += '\0';
- break;
- case 'L':
- Largs += optarg;
- Largs += '\0';
- break;
- case '?':
- usage();
- break;
- default:
- assert(0);
- break;
- }
- }
- int found = 0;
- for (int device_index = 0;
- device_index < sizeof(device_table)/sizeof(device_table[0]);
- device_index++)
- if (strcmp(device, device_table[device_index].pseudo_name) == 0) {
- found = 1;
- break;
- }
- if (!found) {
- error("unknown device `%1'", device);
- devices();
- exit(1);
- }
- device = device_table[device_index].real_name;
- if (device_table[device_index].macro_file != 0)
- commands[TROFF_INDEX].prepend_arg("-m",
- device_table[device_index].macro_file);
- commands[POST_INDEX].set_name(device_table[device_index].driver[0]);
- if (!(device_table[device_index].flags & GROFF_OPTIONS))
- commands[POST_INDEX].clear_args();
- if ((device_table[device_index].flags & XT_OPTION)
- && argc - optind == 1) {
- commands[POST_INDEX].append_arg("-title");
- commands[POST_INDEX].append_arg(argv[optind]);
- commands[POST_INDEX].append_arg("-xrm");
- commands[POST_INDEX].append_arg("*iconName:", argv[optind]);
- }
- if (device_table[device_index].flags & PRINT_OPTION) {
- found = 0;
- for (int di = 0; di < sizeof(device_table)/sizeof(device_table[0]); di++) {
- if (strcmp(device, device_table[di].pseudo_name) == 0) {
- found = 1;
- break;
- }
- }
- assert(found);
- string print_string(device_table[di].driver[0]);
- int i;
- for (i = 1; device_table[di].driver[i]; i++)
- append_arg_to_string(device_table[di].driver[i], print_string);
- if (device_table[di].spooler) {
- print_string += " |";
- for (i = 0; device_table[di].spooler[i]; i++)
- append_arg_to_string(device_table[di].spooler[i], print_string);
- }
- print_string += '\0';
- commands[POST_INDEX].append_arg("-printCommand");
- commands[POST_INDEX].append_arg(print_string.contents());
- }
- const char *p = Pargs.contents();
- const char *end = p + Pargs.length();
- while (p < end) {
- commands[POST_INDEX].append_arg(p);
- p = strchr(p, '\0') + 1;
- }
- int i;
- for (i = 1; device_table[device_index].driver[i]; i++)
- commands[POST_INDEX].append_arg(device_table[device_index].driver[i]);
- if (device_table[device_index].flags & PIC_X_OPTION)
- commands[PIC_INDEX].append_arg("-x");
- if (device_table[device_index].flags & PIC_P_OPTION)
- commands[PIC_INDEX].append_arg("-p");
- if (device_table[device_index].flags & EQN_D_OPTION)
- commands[EQN_INDEX].append_arg("-D");
- if (lflag && device_table[device_index].spooler) {
- commands[SPOOL_INDEX].set_name(device_table[device_index].spooler[0]);
- p = Largs.contents();
- end = p + Largs.length();
- while (p < end) {
- commands[SPOOL_INDEX].append_arg(p);
- p = strchr(p, '\0') + 1;
- }
- for (i = 1; device_table[device_index].spooler[i]; i++)
- commands[SPOOL_INDEX].append_arg(device_table[device_index].spooler[i]);
- }
- if (zflag) {
- commands[POST_INDEX].set_name(0);
- commands[SPOOL_INDEX].set_name(0);
- }
- commands[TROFF_INDEX].append_arg("-T", device);
- int have_eqnchar = 0;
- if (commands[EQN_INDEX].get_name() != 0) {
- commands[EQN_INDEX].append_arg("-T", device);
- font::set_device_name(device);
- char *path = 0;
- FILE *fp = font::open_file("eqnchar", &path);
- if (fp) {
- fclose(fp);
- if (path[0] == '-' && path[1] != '\0')
- commands[EQN_INDEX].append_arg("--");
- commands[EQN_INDEX].append_arg(path);
- delete path;
- have_eqnchar = 1;
- }
- }
- for (int first_index = 0; first_index < TROFF_INDEX; first_index++)
- if (commands[first_index].get_name() != 0)
- break;
- if (optind < argc) {
- if (argv[optind][0] == '-' && argv[optind][1] != '\0'
- && (!have_eqnchar || first_index != EQN_INDEX))
- commands[first_index].append_arg("--");
- for (i = optind; i < argc; i++)
- commands[first_index].append_arg(argv[i]);
- if (iflag)
- commands[first_index].append_arg("-");
- }
- if (have_eqnchar && (first_index != EQN_INDEX || optind >= argc))
- commands[EQN_INDEX].append_arg("-");
- if (Vflag) {
- print_commands();
- exit(0);
- }
- exit(run_commands());
-}
-
-void print_commands()
-{
- for (int last = SPOOL_INDEX; last >= 0; last--)
- if (commands[last].get_name() != 0)
- break;
- for (int i = 0; i <= last; i++)
- if (commands[i].get_name() != 0)
- commands[i].print(i == last, stdout);
-}
-
-// Run the commands. Return the code with which to exit.
-
-int run_commands()
-{
- for (int last = SPOOL_INDEX; last >= 0; last--)
- if (commands[last].get_name() != 0)
- break;
- int last_input = 0;
- int proc_count = 0;
- for (int i = 0; i <= last; i++)
- if (commands[i].get_name() != 0) {
- proc_count++;
- int pdes[2];
- if (i != last) {
- if (pipe(pdes) < 0)
- sys_fatal("pipe");
- }
-#ifdef HAVE_VFORK
- PID_T pid = vfork();
- if (pid < 0)
- sys_fatal("vfork");
-#else /* !HAVE_VFORK */
- PID_T pid = fork();
- if (pid < 0)
- sys_fatal("fork");
-#endif /* !HAVE_VFORK */
- if (pid == 0) {
- // child
- if (last_input != 0) {
- if (close(0) < 0)
- sys_fatal("close");
- if (dup(last_input) < 0)
- sys_fatal("dup");
- if (close(last_input) < 0)
- sys_fatal("close");
- }
- if (i != last) {
- if (close(1) < 0)
- sys_fatal("close");
- if (dup(pdes[1]) < 0)
- sys_fatal("dup");
- if (close(pdes[1]) < 0)
- sys_fatal("close");
- if (close(pdes[0]))
- sys_fatal("close");
- }
- commands[i].execp();
- }
- // in the parent
- if (last_input != 0) {
- if (close(last_input) < 0)
- sys_fatal("close");
- }
- if (i != last) {
- if (close(pdes[1]) < 0)
- sys_fatal("close");
- last_input = pdes[0];
- }
- commands[i].pid = pid;
- }
- int ret = 0;
- while (proc_count > 0) {
- WAIT_STATUS_T status;
- PID_T pid = wait(&status);
- if (pid < 0)
- sys_fatal("wait");
- for (i = 0; i < NCOMMANDS; i++)
- if (commands[i].pid == pid) {
- --proc_count;
- if (WIFSIGNALED(status)) {
- int sig = WTERMSIG(status);
- if (sig != SIGPIPE) {
- error("%1: %2%3",
- commands[i].get_name(),
- strsignal(sig),
- WCOREDUMPED(status) ? " (core dumped)" : "");
- ret |= 2;
- }
- }
- else if (WIFEXITED(status)) {
- int exit_status = WEXITSTATUS(status);
- if (exit_status == EXEC_FAILED_EXIT_STATUS)
- ret |= 4;
- else if (exit_status != 0)
- ret |= 1;
- }
- else
- error("unexpected status %1", WTOI(status));
- break;
- }
- }
- return ret;
-}
-
-possible_command::possible_command()
-: pid(-1), name(0), argv(0)
-{
-}
-
-possible_command::~possible_command()
-{
- delete name;
- delete argv;
-}
-
-void possible_command::set_name(const char *s)
-{
- name = strsave(s);
-}
-
-const char *possible_command::get_name()
-{
- return name;
-}
-
-void possible_command::clear_args()
-{
- args.clear();
-}
-
-void possible_command::append_arg(const char *s, const char *t)
-{
- args += s;
- if (t)
- args += t;
- args += '\0';
-}
-
-void possible_command::prepend_arg(const char *s, const char *t)
-{
- string old(args);
- args = s;
- if (t)
- args += t;
- args += '\0';
- args += old;
-}
-
-void possible_command::build_argv()
-{
- // Count the number of arguments.
- int len = args.length();
- int argc = 1;
- char *p = 0;
- if (len > 0) {
- p = &args[0];
- for (int i = 0; i < len; i++)
- if (p[i] == '\0')
- argc++;
- }
- // Build an argument vector.
- argv = new char *[argc + 1];
- argv[0] = name;
- for (int i = 1; i < argc; i++) {
- argv[i] = p;
- p = strchr(p, '\0') + 1;
- }
- argv[argc] = 0;
-}
-
-void possible_command::print(int is_last, FILE *fp)
-{
- build_argv();
- fputs(argv[0], fp);
- string str;
- for (int i = 1; argv[i] != 0; i++) {
- str.clear();
- append_arg_to_string(argv[i], str);
- put_string(str, fp);
- }
- if (is_last)
- putc('\n', fp);
- else
- fputs(" | ", fp);
-}
-
-void append_arg_to_string(const char *arg, string &str)
-{
- str += ' ';
- int needs_quoting = 0;
- int contains_single_quote = 0;
- for (const char *p = arg; *p != '\0'; p++)
- switch (*p) {
- case ';':
- case '&':
- case '(':
- case ')':
- case '|':
- case '^':
- case '<':
- case '>':
- case '\n':
- case ' ':
- case '\t':
- case '\\':
- case '"':
- case '$':
- needs_quoting = 1;
- break;
- case '\'':
- contains_single_quote = 1;
- break;
- }
- if (contains_single_quote || arg[0] == '\0') {
- str += '"';
- for (p = arg; *p != '\0'; p++)
- switch (*p) {
- case '"':
- case '\\':
- case '$':
- str += '\\';
- // fall through
- default:
- str += *p;
- break;
- }
- str += '"';
- }
- else if (needs_quoting) {
- str += '\'';
- str += arg;
- str += '\'';
- }
- else
- str += arg;
-}
-
-
-void possible_command::execp()
-{
- build_argv();
- execvp(name, argv);
- error("couldn't exec %1: %2", name, strerror(errno));
- fflush(stderr); // just in case
- _exit(EXEC_FAILED_EXIT_STATUS);
-}
-
-void synopsis()
-{
- fprintf(stderr,
-"usage: %s [-abehilpstvzCENRVZ] [-Hfile] [-Fdir] [-mname] [-Tdev] [-ffam]\n"
-" [-wname] [-Wname] [ -Mdir] [-dcs] [-rcn] [-nnum] [-olist] [-Parg]\n"
-" [-Larg] [files...]\n",
- program_name);
-}
-
-void devices()
-{
- fputs("Available devices are:\n", stderr);
- for (int i = 0; i < sizeof(device_table)/sizeof(device_table[0]); i++)
- fprintf(stderr, "%s\t%s\n",
- device_table[i].pseudo_name,
- device_table[i].description);
-}
-
-void help()
-{
- synopsis();
- fputs("\n"
-"-h\tprint this message\n"
-"-t\tpreprocess with tbl\n"
-"-p\tpreprocess with pic\n"
-"-e\tpreprocess with eqn\n"
-"-s\tpreprocess with soelim\n"
-"-R\tpreprocess with refer\n"
-"-Tdev\tuse device dev\n"
-"-mname\tread macros tmac.name\n"
-"-dcs\tdefine a string c as s\n"
-"-rcn\tdefine a number register c as n\n"
-"-nnum\tnumber first page n\n"
-"-olist\toutput only pages in list\n"
-"-ffam\tuse fam as the default font family\n"
-"-Fdir\tsearch directory dir for device directories\n"
-"-Mdir\tsearch dir for macro files\n"
-"-Hfile\tread hyphenation patterns from file\n"
-"-v\tprint version number\n"
-"-z\tsuppress formatted output\n"
-"-Z\tdon't postprocess\n"
-"-a\tproduce ASCII description of output\n"
-"-i\tread standard input after named input files\n"
-"-wname\tenable warning name\n"
-"-Wname\tinhibit warning name\n"
-"-E\tinhibit all errors\n"
-"-b\tprint backtraces with errors or warnings\n"
-"-l\tspool the output\n"
-"-C\tenable compatibility mode\n"
-"-V\tprint commands on stdout instead of running them\n"
-"-Parg\tpass arg to the postprocessor\n"
-"-Larg\tpass arg to the spooler\n"
-"-N\tdon't allow newlines within eqn delimiters\n"
-"\n",
- stderr);
- devices();
- exit(0);
-}
-
-void usage()
-{
- synopsis();
- fprintf(stderr, "%s -h gives more help\n", program_name);
- exit(1);
-}
-
-void sys_fatal(const char *s)
-{
- fatal("%1: %2", s, strerror(errno));
-}
-
-#ifdef HAVE_SYS_SIGLIST
-extern "C" {
- extern char *sys_siglist[];
-}
-#endif /* HAVE_SYS_SIGLIST */
-
-const char *strsignal(int n)
-{
- static char buf[sizeof("Signal ") + 1 + INT_DIGITS];
-#ifdef HAVE_SYS_SIGLIST
- if (n >= 0 && n < NSIG && sys_siglist[n] != 0)
- return sys_siglist[n];
-#endif /* HAVE_SYS_SIGLIST */
- sprintf(buf, "Signal %d", n);
- return buf;
-}
diff --git a/groff.sh b/groff.sh
deleted file mode 100644
index 5c7add2fb..000000000
--- a/groff.sh
+++ /dev/null
@@ -1,354 +0,0 @@
-#!/bin/sh
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# Add new devices below, where it says `Add local devices here.'
-
-prog=`basename $0`
-optF=
-optP=
-optL=
-trflags=
-tflag=
-pflag=
-eflag=
-sflag=
-lflag=
-zflag=
-vflag=
-iflag=
-Cflag=
-Nflag=
-Rflag=
-Vflag=
-dev=${GROFF_TYPESETTER:-@DEVICE@}
-
-synopsis="\
-usage: $prog [-abehilpstvzCENRVZ] [-Hfile] [-Fdir] [-mname] [-Tdev] [-ffam]
- [-wname] [-Wname] [ -Mdir] [-dcs] [-rcn] [-nnum] [-olist] [-Parg]
- [-Larg] [files...]"
-
-devices="Available devices are:
-X100 X11 previewer at 100dpi
-X75 X11 previewer at 75dpi
-X100-12 X11 previewer at 100dpi (optimized for 12 point text)
-X75-12 X11 previewer at 75dpi (optimized for 12 point text)
-ps PostScript
-Xps X11 previewer with PostScript metrics
-dvi TeX dvi format
-latin1 ISO Latin-1
-ascii ASCII"
-
-help="$synopsis
--h print this message
--t preprocess with tbl
--p preprocess with pic
--e preprocess with eqn
--s preprocess with soelim
--R preprocess with refer
--Tdev use device dev
--mname read macros tmac.name
--dcs define a string c as s
--rcn define a number register c as n
--nnum number first page n
--olist output only pages in list
--ffam use fam as the default font family
--Fdir search directory dir for device directories
--Mdir search dir for macro files
--Hfile read hyphenation patterns from file
--v print version number
--z suppress formatted output
--Z don't postprocess
--a produce ASCII description of output
--i read standard input after named input files
--wname enable warning name
--Wname inhibit warning name
--E inhibit all errors
--b print backtraces with errors or warnings
--l spool the output (@PSPRINT@ or @DVIPRINT@)
--C enable compatibility mode
--V print the pipeline on stdout instead of executing it
--Parg pass arg to the postprocessor
--Larg pass arg to the spooler
--N don't allow newlines within eqn delimiters
-
-$devices"
-
-usage="$synopsis
-$prog -h gives more help"
-
-while test $# -gt 0
-do
- case $1 in
- -h*)
- echo "$help" >&2
- exit 0
- ;;
- -[az])
- trflags="$trflags $1"
- zflag=1
- ;;
- -Z)
- zflag=1
- ;;
- -i)
- iflag=1
- ;;
- -V)
- Vflag=1
- ;;
- -t)
- tflag=1
- ;;
- -p)
- pflag=1
- ;;
- -e)
- eflag=1
- ;;
- -s)
- sflag=1
- ;;
- -R)
- Rflag=1
- ;;
- -l)
- lflag=1
- ;;
- -v)
- vflag=-v
- ;;
- -C)
- Cflag=-C
- ;;
- -N)
- Nflag=-N
- ;;
- -[bE])
- trflags="$trflags $1"
- ;;
- -[aiztpeslvbECNRVZ]*)
- first=`expr "$1" : '\(-.\)'`
- rest=`expr "$1" : '-.\(.*\)$'`
- shift
- set "" "$first" "-$rest" "$@"
- ;;
- -F)
- if test $# -lt 2
- then
- echo "$prog: option -F requires an argument" >&2
- exit 1
- else
- optF="$optF -F$2"
- shift
- fi
- ;;
- -F*)
- optF="$optF $1"
- ;;
- -T)
- if test $# -lt 2
- then
- echo "$prog: option -T requires an argument" >&2
- exit 1
- else
- dev="$2"
- shift
- fi
- ;;
-
- -T*)
- dev=`expr "$1" : '-T\(.*\)$'`
- ;;
- -[fomrMHdnwW])
- if test $# -lt 2
- then
- echo "$prog: option $1 requires an argument" >&2
- exit 1
- else
- trflags="$trflags $1$2"
- shift
- fi
- ;;
- -[fomrMHdnwW]*)
- trflags="$trflags $1"
- ;;
- -P)
- if test $# -lt 2
- then
- echo "$prog: option -P requires an argument" >&2
- exit 1
- else
- optP="$optP $2"
- shift
- fi
- ;;
- -P*)
- optP="$optP `expr "$1" : '-.\(.*\)$'`"
- ;;
- -L)
- if test $# -lt 2
- then
- echo "$prog: option -L requires an argument" >&2
- exit 1
- else
- optL="$optL $2"
- shift
- fi
- ;;
- -L*)
- optL="$optL `expr "$1" : '-.\(.*\)$'`"
- ;;
- --)
- shift
- break
- ;;
- -)
- break
- ;;
- -*)
- echo "$prog: unrecognized option $1" >&2
- echo "$usage" >&2
- exit 1
- ;;
- *)
- break
- ;;
- esac
- shift
-done
-
-if test $# -gt 0
-then
- files="$@"
- if test "$iflag"
- then
- files="$files -"
- fi
-else
- files=-
-fi
-
-eqnchar=
-eqnflag=
-picflag=
-postpro=
-
-case $dev in
-ps)
- trflags="-mps $trflags"
- eqnchar=@FONTDIR@/devps/eqnchar
- postpro="| grops $vflag $optF $optP"
- picflag="-x -p"
- eqnflag=-D
- if test "$lflag"
- then
- postpro="$postpro | @PSPRINT@ $optL"
- fi
- ;;
-
-X100|X75|X100-12|X75-12)
- trflags="-mX $trflags"
- picflag=-x
- eqnflag=-D
- postpro="| gxditview $optP -"
- eqnchar=@FONTDIR@/dev$dev/eqnchar
- ;;
-
-Xps)
- trflags="-mXps $trflags"
- eqnchar=@FONTDIR@/devps/eqnchar
- postpro="| gxditview $optP -printCommand 'grops | @PSPRINT@' -"
- picflag="-x -p"
- eqnflag=-D
- dev="ps"
- ;;
-
-ascii|latin1)
- trflags="-mtty $trflags"
- postpro="| grotty $vflag $optF $optP"
- ;;
-
-dvi)
- trflags="-mdvi $trflags"
- eqnchar=@FONTDIR@/devdvi/eqnchar
- picflag=-x
- postpro="| grodvi $vflag $optF $optP"
- if test "$lflag"
- then
- postpro="$postpro | @DVIPRINT@ $optL"
- fi
- ;;
-
-
-# Add local devices here.
-
-*)
- echo "$prog: unknown device \`$dev'" >&2
- echo "$devices" >&2
- exit 1
- ;;
-esac
-
-prepro=
-
-if test "$sflag"
-then
- prepro="$prepro gsoelim $vflag $Cflag $files |"
- files=-
-fi
-
-if test "$Rflag"
-then
- prepro="$prepro grefer $vflag $files |"
- files=-
-fi
-
-if test "$pflag"
-then
- prepro="$prepro gpic $vflag $Cflag $picflag $files |"
- files=-
-fi
-
-if test "$tflag"
-then
- prepro="$prepro gtbl $vflag $Cflag $files |"
- files=-
-fi
-
-if test "$eflag"
-then
- prepro="$prepro geqn $eqnflag $vflag $Cflag $Nflag -T$dev -- $eqnchar $files |"
- files=-
-fi
-
-if test "$zflag"
-then
- postpro=
-fi
-
-pipe="$prepro gtroff -T$dev $vflag $Cflag $trflags $optF -- $files $postpro"
-
-if test "$Vflag"
-then
- echo $pipe
-else
- eval $pipe
-fi
-exit 0
diff --git a/groff/Makefile.dep b/groff/Makefile.dep
new file mode 100644
index 000000000..e333ea276
--- /dev/null
+++ b/groff/Makefile.dep
@@ -0,0 +1,4 @@
+groff.o : groff.cc ../include/lib.h ../include/assert.h ../include/errarg.h \
+ ../include/error.h ../include/stringclass.h ../include/cset.h \
+ ../include/font.h ../include/device.h pipeline.h ../include/defs.h
+pipeline.o : pipeline.c pipeline.h
diff --git a/groff/Makefile.sub b/groff/Makefile.sub
new file mode 100644
index 000000000..0acd882b4
--- /dev/null
+++ b/groff/Makefile.sub
@@ -0,0 +1,8 @@
+PROG=groff
+MAN1=groff.n
+XLIBS=$(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=groff.o pipeline.o
+CCSRCS=groff.cc
+CSRCS=pipeline.c
+HDRS=pipeline.h
diff --git a/groff/groff.cc b/groff/groff.cc
new file mode 100644
index 000000000..c6912ec99
--- /dev/null
+++ b/groff/groff.cc
@@ -0,0 +1,579 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+// A front end for groff.
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "lib.h"
+#include "assert.h"
+#include "errarg.h"
+#include "error.h"
+#include "stringclass.h"
+#include "cset.h"
+#include "font.h"
+#include "device.h"
+#include "pipeline.h"
+#include "defs.h"
+
+#define BSHELL "/bin/sh"
+#define GXDITVIEW "gxditview"
+
+// troff will be passed an argument or -rXREG=1 if the -X option is
+// specified
+#define XREG ".X"
+
+#ifndef STDLIB_H_DECLARES_PUTENV
+extern "C" {
+ int putenv(const char *);
+}
+#endif /* not STDLIB_H_DECLARES_PUTENV */
+
+const char *strsignal(int);
+
+const int SOELIM_INDEX = 0;
+const int REFER_INDEX = SOELIM_INDEX + 1;
+const int PIC_INDEX = REFER_INDEX + 1;
+const int TBL_INDEX = PIC_INDEX + 1;
+const int EQN_INDEX = TBL_INDEX + 1;
+const int TROFF_INDEX = EQN_INDEX + 1;
+const int POST_INDEX = TROFF_INDEX + 1;
+const int SPOOL_INDEX = POST_INDEX + 1;
+
+const int NCOMMANDS = SPOOL_INDEX + 1;
+
+class possible_command {
+ char *name;
+ string args;
+ char **argv;
+
+ void build_argv();
+public:
+ possible_command();
+ ~possible_command();
+ void set_name(const char *);
+ const char *get_name();
+ void append_arg(const char *, const char * = 0);
+ void clear_args();
+ char **get_argv();
+ void print(int is_last, FILE *fp);
+};
+
+int lflag = 0;
+char *spooler = 0;
+char *driver = 0;
+
+possible_command commands[NCOMMANDS];
+
+int run_commands();
+void print_commands();
+void append_arg_to_string(const char *arg, string &str);
+void handle_unknown_desc_command(const char *command, const char *arg,
+ const char *filename, int lineno);
+const char *basename(const char *);
+
+void usage();
+void help();
+
+int main(int argc, char **argv)
+{
+ program_name = argv[0];
+ static char stderr_buf[BUFSIZ];
+ setbuf(stderr, stderr_buf);
+ assert(NCOMMANDS <= MAX_COMMANDS);
+ string Pargs, Largs, Fargs;
+ int Vflag = 0;
+ int zflag = 0;
+ int iflag = 0;
+ int Xflag = 0;
+ int opt;
+ commands[TROFF_INDEX].set_name(PROG_PREFIX "troff");
+ while ((opt = getopt(argc, argv,
+ "itpeRszavVhblCENXZH:F:m:T:f:w:W:M:d:r:n:o:P:L:"))
+ != EOF) {
+ char buf[3];
+ buf[0] = '-';
+ buf[1] = opt;
+ buf[2] = '\0';
+ switch (opt) {
+ case 'i':
+ iflag = 1;
+ break;
+ case 't':
+ commands[TBL_INDEX].set_name(PROG_PREFIX "tbl");
+ break;
+ case 'p':
+ commands[PIC_INDEX].set_name(PROG_PREFIX "pic");
+ break;
+ case 'e':
+ commands[EQN_INDEX].set_name(PROG_PREFIX "eqn");
+ break;
+ case 's':
+ commands[SOELIM_INDEX].set_name(PROG_PREFIX "soelim");
+ break;
+ case 'R':
+ commands[REFER_INDEX].set_name(PROG_PREFIX "refer");
+ break;
+ case 'z':
+ case 'a':
+ commands[TROFF_INDEX].append_arg(buf);
+ // fall through
+ case 'Z':
+ zflag++;
+ break;
+ case 'l':
+ lflag++;
+ break;
+ case 'V':
+ Vflag++;
+ break;
+ case 'v':
+ case 'C':
+ commands[SOELIM_INDEX].append_arg(buf);
+ commands[PIC_INDEX].append_arg(buf);
+ commands[TBL_INDEX].append_arg(buf);
+ commands[EQN_INDEX].append_arg(buf);
+ commands[TROFF_INDEX].append_arg(buf);
+ break;
+ case 'N':
+ commands[EQN_INDEX].append_arg(buf);
+ break;
+ case 'h':
+ help();
+ break;
+ case 'E':
+ case 'b':
+ commands[TROFF_INDEX].append_arg(buf);
+ break;
+ case 'T':
+ if (strcmp(optarg, "Xps") == 0) {
+ warning("-TXps option is obsolete: use -X -Tps instead");
+ device = "ps";
+ Xflag++;
+ }
+ else
+ device = optarg;
+ break;
+ case 'F':
+ font::command_line_font_dir(optarg);
+ if (Fargs.length() > 0) {
+ Fargs += ':';
+ Fargs += optarg;
+ }
+ else
+ Fargs = optarg;
+ break;
+ case 'f':
+ case 'o':
+ case 'm':
+ case 'r':
+ case 'H':
+ case 'd':
+ case 'n':
+ case 'w':
+ case 'W':
+ commands[TROFF_INDEX].append_arg(buf, optarg);
+ break;
+ case 'M':
+ commands[EQN_INDEX].append_arg(buf, optarg);
+ commands[TROFF_INDEX].append_arg(buf, optarg);
+ break;
+ case 'P':
+ Pargs += optarg;
+ Pargs += '\0';
+ break;
+ case 'L':
+ append_arg_to_string(optarg, Largs);
+ break;
+ case 'X':
+ Xflag++;
+ break;
+ case '?':
+ usage();
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ }
+ font::set_unknown_desc_command_handler(handle_unknown_desc_command);
+ if (!font::load_desc())
+ fatal("invalid device `%1'", device);
+ if (!driver)
+ fatal("no `postpro' command in DESC file for device `%1'", device);
+ const char *real_driver = 0;
+ if (Xflag) {
+ real_driver = driver;
+ driver = GXDITVIEW;
+ commands[TROFF_INDEX].append_arg("-r" XREG "=", "1");
+ }
+ if (driver)
+ commands[POST_INDEX].set_name(driver);
+ int gxditview_flag = driver && strcmp(basename(driver), GXDITVIEW) == 0;
+ if (gxditview_flag && argc - optind == 1) {
+ commands[POST_INDEX].append_arg("-title");
+ commands[POST_INDEX].append_arg(argv[optind]);
+ commands[POST_INDEX].append_arg("-xrm");
+ commands[POST_INDEX].append_arg("*iconName:", argv[optind]);
+ string filename_string("|");
+ append_arg_to_string(argv[0], filename_string);
+ append_arg_to_string("-Z", filename_string);
+ for (int i = 1; i < argc; i++)
+ append_arg_to_string(argv[i], filename_string);
+ filename_string += '\0';
+ commands[POST_INDEX].append_arg("-filename");
+ commands[POST_INDEX].append_arg(filename_string.contents());
+ }
+ if (gxditview_flag && Xflag) {
+ string print_string(real_driver);
+ if (spooler) {
+ print_string += " | ";
+ print_string += spooler;
+ print_string += Largs;
+ }
+ print_string += '\0';
+ commands[POST_INDEX].append_arg("-printCommand");
+ commands[POST_INDEX].append_arg(print_string.contents());
+ }
+ const char *p = Pargs.contents();
+ const char *end = p + Pargs.length();
+ while (p < end) {
+ commands[POST_INDEX].append_arg(p);
+ p = strchr(p, '\0') + 1;
+ }
+ if (gxditview_flag)
+ commands[POST_INDEX].append_arg("-");
+ if (lflag && !Xflag && spooler) {
+ commands[SPOOL_INDEX].set_name(BSHELL);
+ commands[SPOOL_INDEX].append_arg("-c");
+ Largs += '\0';
+ Largs = spooler + Largs;
+ commands[SPOOL_INDEX].append_arg(Largs.contents());
+ }
+ if (zflag) {
+ commands[POST_INDEX].set_name(0);
+ commands[SPOOL_INDEX].set_name(0);
+ }
+ commands[TROFF_INDEX].append_arg("-T", device);
+ commands[EQN_INDEX].append_arg("-T", device);
+
+ for (int first_index = 0; first_index < TROFF_INDEX; first_index++)
+ if (commands[first_index].get_name() != 0)
+ break;
+ if (optind < argc) {
+ if (argv[optind][0] == '-' && argv[optind][1] != '\0')
+ commands[first_index].append_arg("--");
+ for (int i = optind; i < argc; i++)
+ commands[first_index].append_arg(argv[i]);
+ if (iflag)
+ commands[first_index].append_arg("-");
+ }
+ if (Fargs.length() > 0) {
+ string e = "GROFF_FONT_PATH";
+ e += '=';
+ e += Fargs;
+ char *fontpath = getenv("GROFF_FONT_PATH");
+ if (fontpath && *fontpath) {
+ e += ':';
+ e += fontpath;
+ }
+ e += '\0';
+ if (putenv(strsave(e.contents())))
+ fatal("putenv failed");
+ }
+ if (Vflag) {
+ print_commands();
+ exit(0);
+ }
+ exit(run_commands());
+}
+
+const char *basename(const char *s)
+{
+ if (!s)
+ return 0;
+ const char *p = strrchr(s, '/');
+ return p ? p + 1 : s;
+}
+
+void handle_unknown_desc_command(const char *command, const char *arg,
+ const char *filename, int lineno)
+{
+ if (strcmp(command, "print") == 0) {
+ if (arg == 0)
+ error_with_file_and_line(filename, lineno,
+ "`print' command requires an argument");
+ else
+ spooler = strsave(arg);
+ }
+ if (strcmp(command, "postpro") == 0) {
+ if (arg == 0)
+ error_with_file_and_line(filename, lineno,
+ "`postpro' command requires an argument");
+ else {
+ for (const char *p = arg; *p; p++)
+ if (csspace(*p)) {
+ error_with_file_and_line(filename, lineno,
+ "invalid `postpro' argument `%1'"
+ ": program name required", arg);
+ return;
+ }
+ driver = strsave(arg);
+ }
+ }
+}
+
+void print_commands()
+{
+ for (int last = SPOOL_INDEX; last >= 0; last--)
+ if (commands[last].get_name() != 0)
+ break;
+ for (int i = 0; i <= last; i++)
+ if (commands[i].get_name() != 0)
+ commands[i].print(i == last, stdout);
+}
+
+// Run the commands. Return the code with which to exit.
+
+int run_commands()
+{
+ char **v[NCOMMANDS];
+ int j = 0;
+ for (int i = 0; i < NCOMMANDS; i++)
+ if (commands[i].get_name() != 0)
+ v[j++] = commands[i].get_argv();
+ return run_pipeline(j, v);
+}
+
+possible_command::possible_command()
+: name(0), argv(0)
+{
+}
+
+possible_command::~possible_command()
+{
+ delete name;
+ delete argv;
+}
+
+void possible_command::set_name(const char *s)
+{
+ name = strsave(s);
+}
+
+const char *possible_command::get_name()
+{
+ return name;
+}
+
+void possible_command::clear_args()
+{
+ args.clear();
+}
+
+void possible_command::append_arg(const char *s, const char *t)
+{
+ args += s;
+ if (t)
+ args += t;
+ args += '\0';
+}
+
+void possible_command::build_argv()
+{
+ if (argv)
+ return;
+ // Count the number of arguments.
+ int len = args.length();
+ int argc = 1;
+ char *p = 0;
+ if (len > 0) {
+ p = &args[0];
+ for (int i = 0; i < len; i++)
+ if (p[i] == '\0')
+ argc++;
+ }
+ // Build an argument vector.
+ argv = new char *[argc + 1];
+ argv[0] = name;
+ for (int i = 1; i < argc; i++) {
+ argv[i] = p;
+ p = strchr(p, '\0') + 1;
+ }
+ argv[argc] = 0;
+}
+
+void possible_command::print(int is_last, FILE *fp)
+{
+ build_argv();
+ if (argv[0] != 0 && strcmp(argv[0], BSHELL) == 0
+ && argv[1] != 0 && strcmp(argv[1], "-c") == 0
+ && argv[2] != 0 && argv[3] == 0)
+ fputs(argv[2], fp);
+ else {
+ fputs(argv[0], fp);
+ string str;
+ for (int i = 1; argv[i] != 0; i++) {
+ str.clear();
+ append_arg_to_string(argv[i], str);
+ put_string(str, fp);
+ }
+ }
+ if (is_last)
+ putc('\n', fp);
+ else
+ fputs(" | ", fp);
+}
+
+void append_arg_to_string(const char *arg, string &str)
+{
+ str += ' ';
+ int needs_quoting = 0;
+ int contains_single_quote = 0;
+ for (const char *p = arg; *p != '\0'; p++)
+ switch (*p) {
+ case ';':
+ case '&':
+ case '(':
+ case ')':
+ case '|':
+ case '^':
+ case '<':
+ case '>':
+ case '\n':
+ case ' ':
+ case '\t':
+ case '\\':
+ case '"':
+ case '$':
+ case '?':
+ case '*':
+ needs_quoting = 1;
+ break;
+ case '\'':
+ contains_single_quote = 1;
+ break;
+ }
+ if (contains_single_quote || arg[0] == '\0') {
+ str += '"';
+ for (p = arg; *p != '\0'; p++)
+ switch (*p) {
+ case '"':
+ case '\\':
+ case '$':
+ str += '\\';
+ // fall through
+ default:
+ str += *p;
+ break;
+ }
+ str += '"';
+ }
+ else if (needs_quoting) {
+ str += '\'';
+ str += arg;
+ str += '\'';
+ }
+ else
+ str += arg;
+}
+
+char **possible_command::get_argv()
+{
+ build_argv();
+ return argv;
+}
+
+void synopsis()
+{
+ fprintf(stderr,
+"usage: %s [-abehilpstvzCENRVXZ] [-Hfile] [-Fdir] [-mname] [-Tdev] [-ffam]\n"
+" [-wname] [-Wname] [ -Mdir] [-dcs] [-rcn] [-nnum] [-olist] [-Parg]\n"
+" [-Larg] [files...]\n",
+ program_name);
+}
+
+void help()
+{
+ synopsis();
+ fputs("\n"
+"-h\tprint this message\n"
+"-t\tpreprocess with tbl\n"
+"-p\tpreprocess with pic\n"
+"-e\tpreprocess with eqn\n"
+"-s\tpreprocess with soelim\n"
+"-R\tpreprocess with refer\n"
+"-Tdev\tuse device dev\n"
+"-X\tuse X11 previewer rather than usual postprocessor\n"
+"-mname\tread macros tmac.name\n"
+"-dcs\tdefine a string c as s\n"
+"-rcn\tdefine a number register c as n\n"
+"-nnum\tnumber first page n\n"
+"-olist\toutput only pages in list\n"
+"-ffam\tuse fam as the default font family\n"
+"-Fdir\tsearch directory dir for device directories\n"
+"-Mdir\tsearch dir for macro files\n"
+"-Hfile\tread hyphenation patterns from file\n"
+"-v\tprint version number\n"
+"-z\tsuppress formatted output\n"
+"-Z\tdon't postprocess\n"
+"-a\tproduce ASCII description of output\n"
+"-i\tread standard input after named input files\n"
+"-wname\tenable warning name\n"
+"-Wname\tinhibit warning name\n"
+"-E\tinhibit all errors\n"
+"-b\tprint backtraces with errors or warnings\n"
+"-l\tspool the output\n"
+"-C\tenable compatibility mode\n"
+"-V\tprint commands on stdout instead of running them\n"
+"-Parg\tpass arg to the postprocessor\n"
+"-Larg\tpass arg to the spooler\n"
+"-N\tdon't allow newlines within eqn delimiters\n"
+"\n",
+ stderr);
+ exit(0);
+}
+
+void usage()
+{
+ synopsis();
+ fprintf(stderr, "%s -h gives more help\n", program_name);
+ exit(1);
+}
+
+extern "C" {
+
+void c_error(const char *format, const char *arg1, const char *arg2,
+ const char *arg3)
+{
+ error(format, arg1, arg2, arg3);
+}
+
+void c_fatal(const char *format, const char *arg1, const char *arg2,
+ const char *arg3)
+{
+ fatal(format, arg1, arg2, arg3);
+}
+
+}
diff --git a/man/groff.man b/groff/groff.man
index 5e8ae5cb1..9ab2acb42 100644
--- a/man/groff.man
+++ b/groff/groff.man
@@ -4,13 +4,19 @@
.ns
.TP \\$1
..
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH GROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
groff \- front end for the groff document formatting system
.SH SYNOPSIS
.B groff
[
-.B \-tpeszaivhblCENRVZ
+.B \-tpeszaivhblCENRVXZ
]
[
.BI \-w name
@@ -56,9 +62,9 @@ groff \- front end for the groff document formatting system
]
.SH DESCRIPTION
.B groff
-is a front-end to the groff document formatting systems.
+is a front-end to the groff document formatting system.
Normally it runs the
-.B gtroff
+.B @g@troff
program and a postprocessor appropriate for the selected
device.
Available devices are:
@@ -75,29 +81,28 @@ For a 75 dpi X11 previewer
.B X100
For a 100dpi X11 previewer
.TP
-.B Xps
-For X11 previewer used with intermediate output for
-.B ps
-device.
-.TP
.B ascii
For typewriter-like devices
.TP
.B latin1
For typewriter-like devices using the ISO Latin-1 character set.
.LP
+The postprocessor to be used for a device is specified by the
+.B postpro
+command in the device description file.
+This can be overridden with the
+.B \-X
+option.
+.LP
The default device is
.BR @DEVICE@ .
It can optionally preprocess with any of
-.BR gpic ,
-.BR geqn ,
-.BR gtbl ,
-.BR grefer ,
+.BR @g@pic ,
+.BR @g@eqn ,
+.BR @g@tbl ,
+.BR @g@refer ,
or
-.B gsoelim.
-It will also load any macros and eqn definitions
-required for a particular device.
-It can also spool the resulting output.
+.B @g@soelim.
.LP
Options without an argument can be grouped behind a single
.BR \- .
@@ -110,25 +115,25 @@ denotes the standard input.
Print a help message.
.TP
.B \-e
-Preprocess with geqn.
+Preprocess with @g@eqn.
.TP
.B \-t
-Preprocess with gtbl.
+Preprocess with @g@tbl.
.TP
.B \-p
-Preprocess with gpic.
+Preprocess with @g@pic.
.TP
.B \-s
-Preprocess with gsoelim.
+Preprocess with @g@soelim.
.TP
.B \-R
-Preprocess with grefer.
+Preprocess with @g@refer.
No mechanism is provided for passing arguments to
-.B grefer
-because most grefer options have equivalent commands
+.B @g@refer
+because most @g@refer options have equivalent commands
which can be included in the file.
See
-.BR grefer (1)
+.BR @g@refer (@MAN1EXT@)
for more details.
.TP
.B \-v
@@ -141,12 +146,12 @@ Print the pipeline on stdout instead of executing it.
.TP
.B \-z
Suppress output from
-.BR gtroff .
+.BR @g@troff .
Only error messages will be printed.
.TP
.B \-Z
Do not postprocess the output of
-.BR gtroff .
+.BR @g@troff .
Normally
.B groff
will automatically run the appropriate postprocessor.
@@ -167,7 +172,10 @@ to
before passing it to the postprocessor.
.TP
.B \-l
-Spool the output.
+Send the output to a printer.
+The command used for this is specified by the
+.B print
+command in the device description file.
.TP
.BI \-L arg
Pass
@@ -190,12 +198,19 @@ Prepare output for device
The default device is
.BR @DEVICE@ .
.TP
+.B \-X
+Preview with
+.B gxditview
+instead of using the usual postprocessor.
+This is unlikely to produce good results except with
+.BR \-Tps .
+.TP
.B \-N
Don't allow newlines with eqn delimiters.
This is the same as the
.B \-N
option in
-.BR geqn .
+.BR @g@eqn .
.TP
.B \-a
.TQ
@@ -229,7 +244,7 @@ option in
.TQ
.BI \-n num
These are as described in
-.BR gtroff (@MAN1EXT@) .
+.BR @g@troff (@MAN1EXT@) .
.SH ENVIRONMENT
.TP
.SM
@@ -268,17 +283,13 @@ Otherwise temporary files will be created in
The
.BR grops (@MAN1EXT@)
and
-.BR grefer (@MAN1EXT@)
+.BR @g@refer (@MAN1EXT@)
commands can create temporary files.
.SH FILES
-.TP \w'\fB@FONTDIR@/dev\fIname\fB/eqnchar'u+3n
+.Tp \w'\fB@FONTDIR@/dev\fIname\fB/DESC'u+3n
.B @HYPHENFILE@
Hyphenation patterns
.TP
-.BI @MACRODIR@/tmac. name
-Macro file used by
-.BI \-m name\fR.
-.TP
.BI @FONTDIR@/dev name /DESC
Device description file for device
.IR name .
@@ -288,25 +299,47 @@ Font file for font
.I F
of device
.IR name .
-.TP
-.BI @FONTDIR@/dev name /eqnchar
-.B geqn
-definitions for device
-.IR name .
+.SH AUTHOR
+James Clark <jjc@jclark.com>
+.SH BUGS
+Report bugs to bug-groff@prep.ai.mit.edu.
+Include a complete, self-contained example
+that will allow the bug to be reproduced,
+and say which version of groff you are using.
+.SH COPYRIGHT
+Copyright \(co 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+.LP
+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 2, or (at your option) any later
+version.
+.LP
+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.
+.LP
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+.SH AVAILABILITY
+The most recent released version of groff is always available for
+anonymous ftp from prep.ai.mit.edu (18.71.0.38) in the directory
+pub/gnu.
.SH "SEE ALSO"
.BR grog (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@),
-.BR gsoelim (@MAN1EXT@) ,
-.BR grefer (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@),
+.BR @g@soelim (@MAN1EXT@) ,
+.BR @g@refer (@MAN1EXT@),
.BR grops (@MAN1EXT@),
.BR grodvi (@MAN1EXT@),
.BR grotty (@MAN1EXT@),
+.BR gxditview (@MAN1EXT@),
.BR groff_font (@MAN5EXT@),
.BR groff_out (@MAN5EXT@),
.BR groff_ms (@MAN7EXT@),
-.BR groff_me (@MAN7EXT@)
-.br
-.I "Groff Character Names"
+.BR groff_me (@MAN7EXT@),
+.BR groff_char (@MAN7EXT@)
diff --git a/groff/pipeline.c b/groff/pipeline.c
new file mode 100644
index 000000000..0172a1745
--- /dev/null
+++ b/groff/pipeline.c
@@ -0,0 +1,240 @@
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+Compile options are:
+
+-DWCOREFLAG=0200 (or whatever)
+-DHAVE_VFORK_H
+-Dvfork=fork
+-DHAVE_SYS_SIGLIST
+-DHAVE_UNISTD_H
+*/
+
+#include <stdio.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_VFORK_H
+#include <vfork.h>
+#endif
+
+#ifndef errno
+extern int errno;
+#endif
+
+extern char *strerror();
+
+#ifdef _POSIX_VERSION
+
+#include <sys/wait.h>
+
+#define PID_T pid_t
+
+#else /* not _POSIX_VERSION */
+
+/* traditional Unix */
+
+#define WIFEXITED(s) (((s) & 0377) == 0)
+#define WIFSTOPPED(s) (((s) & 0377) == 0177)
+#define WIFSIGNALED(s) (((s) & 0377) != 0 && (((s) & 0377) != 0177))
+#define WEXITSTATUS(s) (((s) >> 8) & 0377)
+#define WTERMSIG(s) ((s) & 0177)
+#define WSTOPSIG(s) (((s) >> 8) & 0377)
+
+#ifndef WCOREFLAG
+#define WCOREFLAG 0200
+#endif
+
+#define PID_T int
+
+#endif /* not _POSIX_VERSION */
+
+/* SVR4 uses WCOREFLG; Net 2 uses WCOREFLAG. */
+#ifndef WCOREFLAG
+#ifdef WCOREFLG
+#define WCOREFLAG WCOREFLG
+#endif /* WCOREFLG */
+#endif /* not WCOREFLAG */
+
+#ifndef WCOREDUMP
+#ifdef WCOREFLAG
+#define WCOREDUMP(s) ((s) & WCOREFLAG)
+#else /* not WCOREFLAG */
+#define WCOREDUMP(s) (0)
+#endif /* WCOREFLAG */
+#endif /* not WCOREDUMP */
+
+#include "pipeline.h"
+
+#ifdef __STDC__
+#define P(parms) parms
+#else
+#define P(parms) ()
+#endif
+
+#define error c_error
+extern void error P((char *, char *, char *, char *));
+
+static void sys_fatal P((char *));
+static char *strsignal P((int));
+static char *itoa P((int));
+
+int run_pipeline(ncommands, commands)
+ int ncommands;
+ char ***commands;
+{
+ int i;
+ int last_input = 0;
+ PID_T pids[MAX_COMMANDS];
+ int ret = 0;
+ int proc_count = ncommands;
+
+ for (i = 0; i < ncommands; i++) {
+ int pdes[2];
+ PID_T pid;
+ if (i != ncommands - 1) {
+ if (pipe(pdes) < 0)
+ sys_fatal("pipe");
+ }
+ pid = vfork();
+ if (pid < 0)
+ sys_fatal("fork");
+ if (pid == 0) {
+ /* child */
+ if (last_input != 0) {
+ if (close(0) < 0)
+ sys_fatal("close");
+ if (dup(last_input) < 0)
+ sys_fatal("dup");
+ if (close(last_input) < 0)
+ sys_fatal("close");
+ }
+ if (i != ncommands - 1) {
+ if (close(1) < 0)
+ sys_fatal("close");
+ if (dup(pdes[1]) < 0)
+ sys_fatal("dup");
+ if (close(pdes[1]) < 0)
+ sys_fatal("close");
+ if (close(pdes[0]))
+ sys_fatal("close");
+ }
+ execvp(commands[i][0], commands[i]);
+ error("couldn't exec %1: %2", commands[i][0],
+ strerror(errno), (char *)0);
+ fflush(stderr); /* just in case error() doesn't */
+ _exit(EXEC_FAILED_EXIT_STATUS);
+ }
+ /* in the parent */
+ if (last_input != 0) {
+ if (close(last_input) < 0)
+ sys_fatal("close");
+ }
+ if (i != ncommands - 1) {
+ if (close(pdes[1]) < 0)
+ sys_fatal("close");
+ last_input = pdes[0];
+ }
+ pids[i] = pid;
+ }
+ while (proc_count > 0) {
+ int status;
+ PID_T pid = wait(&status);
+ if (pid < 0)
+ sys_fatal("wait");
+ for (i = 0; i < ncommands; i++)
+ if (pids[i] == pid) {
+ pids[i] = -1;
+ --proc_count;
+ if (WIFSIGNALED(status)) {
+ int sig = WTERMSIG(status);
+#ifdef SIGPIPE
+ if (sig == SIGPIPE) {
+ if (i == ncommands - 1) {
+
+ /* This works around a problem that occurred when using the
+ rerasterize action in gxditview. What seemed to be
+ happening (on SunOS 4.1.1) was that pclose() closed the
+ pipe and waited for groff, gtroff got a SIGPIPE, but
+ gpic blocked writing to gtroff, and so groff blocked
+ waiting for gpic and gxditview blocked waiting for
+ groff. I don't understand why gpic wasn't getting a
+ SIGPIPE. */
+ int j;
+ for (j = 0; j < ncommands; j++)
+ if (pids[j] > 0)
+ (void)kill(pids[j], SIGPIPE);
+ }
+ }
+ else
+#endif /* SIGPIPE */
+ {
+ error("%1: %2%3",
+ commands[i][0],
+ strsignal(sig),
+ WCOREDUMP(status) ? " (core dumped)" : "");
+ ret |= 2;
+ }
+ }
+ else if (WIFEXITED(status)) {
+ int exit_status = WEXITSTATUS(status);
+ if (exit_status == EXEC_FAILED_EXIT_STATUS)
+ ret |= 4;
+ else if (exit_status != 0)
+ ret |= 1;
+ }
+ else
+ error("unexpected status %1",
+ itoa(status), (char *)0, (char *)0);
+ break;
+ }
+ }
+ return ret;
+}
+
+static void sys_fatal(s)
+ char *s;
+{
+ c_fatal("%1: %2", s, strerror(errno), (char *)0);
+}
+
+static char *itoa(n)
+ int n;
+{
+ static char buf[12];
+ sprintf(buf, "%d", n);
+ return buf;
+}
+
+static char *strsignal(n)
+ int n;
+{
+ static char buf[sizeof("Signal ") + 1 + sizeof(int)*3];
+#ifdef HAVE_SYS_SIGLIST
+ extern char *sys_siglist[];
+ if (n >= 0 && n < NSIG && sys_siglist[n] != 0)
+ return sys_siglist[n];
+#endif /* HAVE_SYS_SIGLIST */
+ sprintf(buf, "Signal %d", n);
+ return buf;
+}
diff --git a/groff/pipeline.h b/groff/pipeline.h
new file mode 100644
index 000000000..032b0bba6
--- /dev/null
+++ b/groff/pipeline.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#ifdef __cplusplus
+extern "C" {
+ int run_pipeline(int, char ***);
+}
+#endif
+
+/* run_pipeline can handle at most this many commands */
+#define MAX_COMMANDS 10
+
+/* Children exit with this status if execvp fails. */
+#define EXEC_FAILED_EXIT_STATUS 0xff
diff --git a/grog/Makefile.sub b/grog/Makefile.sub
new file mode 100644
index 000000000..f94822cbe
--- /dev/null
+++ b/grog/Makefile.sub
@@ -0,0 +1,18 @@
+MAN1=grog.n
+CLEANADD=grog
+
+all: grog
+
+grog: grog.pl grog.sh
+ if test -n "$(PERLPATH)" && test -f "$(PERLPATH)"; then \
+ rm -f $@; \
+ sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/grog.pl >$@; \
+ else \
+ cp $(srcdir)/grog.sh grog; \
+ fi
+ chmod +x grog;
+
+install_data: grog
+ -test -d $(bindir) || mkdir $(bindir)
+ -rm -f $(bindir)/grog
+ $(INSTALL_PROGRAM) grog $(bindir)/grog
diff --git a/man/grog.man b/grog/grog.man
index d1f91550e..bf2718325 100644
--- a/man/grog.man
+++ b/grog/grog.man
@@ -47,8 +47,8 @@ option.
.SH "SEE ALSO"
.BR doctype (1),
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@),
-.BR gsoelim (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@),
+.BR @g@soelim (@MAN1EXT@)
diff --git a/etc/grog.pl b/grog/grog.pl
index 6eb171d60..a5dd0ef5d 100644
--- a/etc/grog.pl
+++ b/grog/grog.pl
@@ -48,10 +48,17 @@ sub process {
}
}
elsif (/^\.PS([ 0-9.<].*)?$/) {
- $_ = <FILE>;
- if (!/^\./ || /^\.ps/) {
+ if (/^\.PS\s*<\s*(\S+)/) {
$pic++;
$soelim++ if $level;
+ &process($1, $level);
+ }
+ else {
+ $_ = <FILE>;
+ if (!/^\./ || /^\.ps/) {
+ $pic++;
+ $soelim++ if $level;
+ }
}
}
elsif (/^\.R1/ || /^\.\[/) {
@@ -70,7 +77,7 @@ sub process {
elsif (/^\.SH/) {
$SH++;
}
- elsif (/^\.[pnil]p/) {
+ elsif (/^\.([pnil]p|sh)/) {
$me++;
}
elsif (/^\.Dd/) {
diff --git a/etc/grog.sh b/grog/grog.sh
index ec9fd33d1..94c9f54a8 100644
--- a/etc/grog.sh
+++ b/grog/grog.sh
@@ -20,12 +20,12 @@ do
esac
done
-egrep -h '^\.(P|[LI]P|[pnil]p|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|so|\[|R1)' $* \
+egrep -h '^\.(P|[LI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|so|\[|R1)' $* \
| sed -e '/^\.so/s/^.*$/.SO_START\
&\
.SO_END/' \
| $soelim \
-| egrep '^\.(P|[LI]P|[pnil]p|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|\[|R1|SO_START|SO_END)' \
+| egrep '^\.(P|[LI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|\[|R1|SO_START|SO_END)' \
| awk '
/^\.SO_START$/ { so = 1 }
/^\.SO_END$/ { so = 0 }
@@ -37,7 +37,7 @@ egrep -h '^\.(P|[LI]P|[pnil]p|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|so|\[|R1)' $*
/^\.[PLI]P/ { PP++ }
/^\.P$/ { P++ }
/^\.SH/ { SH++ }
-/^\.[pnil]p/ { me++ }
+/^\.([pnil]p|sh)/ { me++ }
/^\.Dd/ { mdoc++ }
/^\.(Tp|Dp|De|Cx|Cl)/ { mdoc_old++ }
/^\.Oo/ { Oo++ }
diff --git a/grops/Makefile.dep b/grops/Makefile.dep
new file mode 100644
index 000000000..2320a9ecd
--- /dev/null
+++ b/grops/Makefile.dep
@@ -0,0 +1,6 @@
+ps.o : ps.cc ../include/driver.h ../include/errarg.h ../include/error.h \
+ ../include/font.h ../include/printer.h ../include/lib.h \
+ ../include/stringclass.h ../include/cset.h ps.h
+psrm.o : psrm.cc ../include/driver.h ../include/errarg.h ../include/error.h \
+ ../include/font.h ../include/printer.h ../include/lib.h \
+ ../include/stringclass.h ../include/cset.h ps.h
diff --git a/grops/Makefile.sub b/grops/Makefile.sub
new file mode 100644
index 000000000..891472b74
--- /dev/null
+++ b/grops/Makefile.sub
@@ -0,0 +1,7 @@
+PROG=grops
+MAN1=grops.n
+XLIBS=$(LIBDRIVER) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=ps.o psrm.o
+CCSRCS=ps.cc psrm.cc
+HDRS=ps.h
diff --git a/ps/TODO b/grops/TODO
index fb8742445..e051270e3 100644
--- a/ps/TODO
+++ b/grops/TODO
@@ -1,3 +1,7 @@
+Read PFB files directly.
+
+Generate %%DocumentMedia comment.
+
For efficiency it might be better to have the printer interface have
support for the t and u commands.
diff --git a/man/grops.man b/grops/grops.man
index 945315c2b..3659e91f2 100644
--- a/man/grops.man
+++ b/grops/grops.man
@@ -1,11 +1,17 @@
.\" -*- nroff -*-
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH GROPS @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
grops \- PostScript driver for groff
.SH SYNOPSIS
.B grops
[
-.B \-lv
+.B \-glv
] [
.BI \-b n
] [
@@ -19,8 +25,8 @@ grops \- PostScript driver for groff
]
.SH DESCRIPTION
.B grops
-translates the output of
-.B gtroff
+translates the output of GNU
+.B troff
to PostScript.
Normally
.B grops
@@ -89,13 +95,28 @@ don't understand the
and
.B %%EndDocument
comments.
-The default value is @BROKEN_SPOOLER_FLAGS@.
+The default value can be specified by a
+.RS
+.IP
+.BI broken\ n
+.LP
+command in the DESC file.
+Otherwise the default value is 0.
+.RE
.TP
.BI \-c n
Print
.I n
copies of each page.
.TP
+.BI \-g
+Guess the page length.
+This generates PostScript code that guesses the page length.
+The guess will be correct only if the imageable area is vertically
+centered on the page.
+This option allows you to generate documents that can be printed
+both on letter (8.5\(mu11) paper and on A4 paper without change.
+.TP
.BI \-l
Print the document in landscape format.
.TP
@@ -457,7 +478,7 @@ x and y directions so that it has the specified width.
Note that the contents of the
.B \eX
command are not interpreted by
-.BR gtroff ;
+.BR troff ;
so vertical space for the graphic is not automatically added,
and the
.I width
@@ -518,7 +539,7 @@ that are bracketed with these
.B \eX
commands.
These commands are intended for use when output from
-.B gtroff
+.B troff
will be previewed before being processed with
.BR grops ;
if the previewer is unable to display certain characters
@@ -560,7 +581,7 @@ and ignore the line.
The input to
.B grops
must be in the format output by
-.BR gtroff (@MAN1EXT@).
+.BR @g@troff (@MAN1EXT@).
This is described in
.BR groff_out (@MAN1EXT@).
In addition the device and font description files for the device used
@@ -613,7 +634,7 @@ encoding for the font if the PostScript font is not to be reencoded.
This code can be used with the
.B \eN
escape sequence in
-.B gtroff
+.B troff
to select the character,
even if the character does not have a groff name.
Every character in the font file must exist in the PostScript font, and
@@ -722,7 +743,7 @@ and
comments)
should be used.
.SH FILES
-.TP \w'\fB@FONTDIR@/devps/download'u+2n
+.Tp \w'\fB@FONTDIR@/devps/download'u+2n
.B @FONTDIR@/devps/DESC
Device desciption file.
.TP
@@ -738,7 +759,9 @@ Encoding used for text fonts.
.TP
.B @MACRODIR@/tmac.ps
Macros for use with
-.BR grops .
+.BR grops ;
+automatically loaded by
+.BR troffrc
.TP
.B @MACRODIR@/tmac.pspic
Definition of
@@ -747,14 +770,22 @@ macro,
automatically loaded by
.BR tmac.ps .
.TP
+.B @MACRODIR@/tmac.psold
+Macros to disable use of characters not present in older
+PostScript printers; automatically loaded by
+.BR tmac.ps .
+.TP
+.B @MACRODIR@/tmac.psnew
+Macros to undo the effect of
+.BR tmac.psold .
+.TP
.BI /tmp/grops XXXXXX
Temporary file.
.SH "SEE ALSO"
.BR afmtodit (@MAN1EXT@),
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
.BR psbb (@MAN1EXT@),
.BR groff_out (@MAN5EXT@),
-.BR groff_font (@MAN5EXT@)
-.br
-.I "Groff Character Names"
+.BR groff_font (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@)
diff --git a/ps/ps.c b/grops/ps.cc
index 969340904..ea0ff2418 100644
--- a/ps/ps.c
+++ b/grops/ps.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
@@ -23,13 +23,17 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "cset.h"
#include "ps.h"
-#include "broken.h"
static int landscape_flag = 0;
static int ncopies = 1;
static int linewidth = -1;
+// Non-zero means generate PostScript code that guesses the paper
+// length using the imageable area.
+static int guess_flag = 0;
-unsigned broken_flags = BROKEN_SPOOLER_FLAGS;
+// Non-zero if -b was specified on the command line.
+static int bflag = 0;
+unsigned broken_flags = 0;
#define DEFAULT_LINEWIDTH 40 /* in ems/1000 */
#define FILL_MAX 1000
@@ -348,7 +352,8 @@ public:
char *encoding;
char *reencoded_name;
~ps_font();
- void handle_unknown_font_command(int argc, const char **argv);
+ void handle_unknown_font_command(const char *command, const char *arg,
+ const char *filename, int lineno);
static ps_font *load_ps_font(const char *);
};
@@ -373,16 +378,29 @@ ps_font::~ps_font()
a_delete reencoded_name;
}
-void ps_font::handle_unknown_font_command(int argc, const char **argv)
+void ps_font::handle_unknown_font_command(const char *command, const char *arg,
+ const char *filename, int lineno)
{
- if (strcmp(argv[0], "encoding") == 0) {
- if (argc != 2)
- error("`encoding' command requires exactly 1 argument");
+ if (strcmp(command, "encoding") == 0) {
+ if (arg == 0)
+ error_with_file_and_line(filename, lineno,
+ "`encoding' command requires an argument");
else
- encoding = strsave(argv[1]);
+ encoding = strsave(arg);
}
}
+static void handle_unknown_desc_command(const char *command, const char *arg,
+ const char *filename, int lineno)
+{
+ if (strcmp(command, "broken") == 0) {
+ if (arg == 0)
+ error_with_file_and_line(filename, lineno,
+ "`broken' command requires an argument");
+ else if (!bflag)
+ broken_flags = atoi(arg);
+ }
+}
struct style {
font *f;
@@ -656,8 +674,10 @@ void ps_printer::define_encoding(const char *encoding, int encoding_index)
for (i = 0; i < 256; i++) {
if (vec[i] == 0)
out.put_literal_symbol(".notdef");
- else
+ else {
out.put_literal_symbol(vec[i]);
+ a_delete vec[i];
+ }
}
out.put_delimiter(']').put_symbol("def");
}
@@ -989,17 +1009,19 @@ void ps_printer::draw(int code, int *p, int np, const environment *env)
break;
}
set_line_thickness(env);
- int x = p[0] + p[2];
+ // We're given a starting point, a center point and an end point,
+ // and we've got to adjust them so that they all lie on a circle.
+ // We choose to adjust the center.
+ int x = p[0] + p[2]; // (x, y) is the end point
int y = p[1] + p[3];
+ // Start at the current point; go in the direction of the specified
+ // center point until we reach a point that is equidistant between
+ // the specified starting point and the specified end point. Place
+ // the center of the arc there.
double n = p[0]*double(x) + p[1]*double(y);
- if (n == 0)
- out.put_fix_number(x + env->hpos)
- .put_fix_number(y + env->vpos)
- .put_fix_number(env->hpos)
- .put_fix_number(env->vpos)
- .put_symbol("DL");
- else {
+ if (n > 0) {
double k = (double(x)*x + double(y)*y)/(2.0*n);
+ // (cx, cy) is our chosen center
double cx = k*p[0];
double cy = k*p[1];
out.put_fix_number(env->hpos + int(cx))
@@ -1009,6 +1031,35 @@ void ps_printer::draw(int code, int *p, int np, const environment *env)
.put_float(degrees(atan2(y - cy, x - cx)))
.put_symbol("DA");
}
+ else {
+ // We would never reach such a point. So instead start at the
+ // specified end point of the arc. Go towards the specified
+ // center point until we reach a point that is equidistant between
+ // the specified start point and specified end point. Place
+ // the center of the arc there.
+ n = p[2]*double(x) + p[3]*double(y);
+ if (n > 0) {
+ double k = 1 - (double(x)*x + double(y)*y)/(2.0*n);
+ // (cx, cy) is our chosen center
+ double cx = p[0] + k*p[2];
+ double cy = p[1] + k*p[3];
+ out.put_fix_number(env->hpos + int(cx))
+ .put_fix_number(env->vpos + int(cy))
+ .put_fix_number(int(sqrt(cx*cx + cy*cy)))
+ .put_float(degrees(atan2(-cy, -cx)))
+ .put_float(degrees(atan2(y - cy, x - cx)))
+ .put_symbol("DA");
+ }
+ else {
+ // That didn't work out either. So just draw a line between the
+ // specified start and end points. (Can this happen?)
+ out.put_fix_number(x + env->hpos)
+ .put_fix_number(y + env->vpos)
+ .put_fix_number(env->hpos)
+ .put_fix_number(env->vpos)
+ .put_symbol("DL");
+ }
+ }
}
break;
case 't':
@@ -1143,7 +1194,12 @@ ps_printer::~ps_printer()
if (ncopies != 1)
out.put_literal_symbol("#copies").put_number(ncopies).put_symbol("def");
out.put_literal_symbol("RES").put_number(res).put_symbol("def");
- out.put_literal_symbol("PL").put_fix_number(paper_length).put_symbol("def");
+ out.put_literal_symbol("PL");
+ if (guess_flag)
+ out.put_symbol("PLG");
+ else
+ out.put_fix_number(paper_length);
+ out.put_symbol("def");
out.put_literal_symbol("LS")
.put_symbol(landscape_flag ? "true" : "false")
.put_symbol("def");
@@ -1239,6 +1295,8 @@ void ps_printer::do_exec(char *arg, const environment *env)
output_draw_point_size = -1;
output_line_thickness = -1;
ndefined_styles = 0;
+ if (!ndefs)
+ ndefs = 1;
}
void ps_printer::do_file(char *arg, const environment *env)
@@ -1264,6 +1322,8 @@ void ps_printer::do_file(char *arg, const environment *env)
output_draw_point_size = -1;
output_line_thickness = -1;
ndefined_styles = 0;
+ if (!ndefs)
+ ndefs = 1;
}
void ps_printer::do_def(char *arg, const environment *)
@@ -1421,7 +1481,7 @@ int main(int argc, char **argv)
static char stderr_buf[BUFSIZ];
setbuf(stderr, stderr_buf);
int c;
- while ((c = getopt(argc, argv, "F:lc:w:vb:")) != EOF)
+ while ((c = getopt(argc, argv, "F:glc:w:vb:")) != EOF)
switch(c) {
case 'v':
{
@@ -1436,6 +1496,9 @@ int main(int argc, char **argv)
ncopies = 1;
}
break;
+ case 'g':
+ guess_flag = 1;
+ break;
case 'l':
landscape_flag = 1;
break;
@@ -1451,6 +1514,7 @@ int main(int argc, char **argv)
case 'b':
// XXX check this
broken_flags = atoi(optarg);
+ bflag = 1;
break;
case '?':
usage();
@@ -1458,6 +1522,7 @@ int main(int argc, char **argv)
default:
assert(0);
}
+ font::set_unknown_desc_command_handler(handle_unknown_desc_command);
if (optind >= argc)
do_file("-");
else {
@@ -1470,7 +1535,7 @@ int main(int argc, char **argv)
static void usage()
{
- fprintf(stderr, "usage: %s [-blv] [-c n] [-w n] [-F dir] [files ...]\n",
+ fprintf(stderr, "usage: %s [-glv] [-b n] [-c n] [-w n] [-F dir] [files ...]\n",
program_name);
exit(1);
}
diff --git a/ps/ps.h b/grops/ps.h
index ade110570..aa5c73606 100644
--- a/ps/ps.h
+++ b/grops/ps.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class ps_output {
@@ -58,7 +58,7 @@ enum resource_type {
RESOURCE_FILE,
RESOURCE_ENCODING,
RESOURCE_FORM,
- RESOURCE_PATTERN,
+ RESOURCE_PATTERN
};
struct resource;
diff --git a/ps/psrm.c b/grops/psrm.cc
index 2c869bbbf..e26acf4b1 100644
--- a/ps/psrm.c
+++ b/grops/psrm.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
diff --git a/grotty/Makefile.dep b/grotty/Makefile.dep
new file mode 100644
index 000000000..eca128ef1
--- /dev/null
+++ b/grotty/Makefile.dep
@@ -0,0 +1,2 @@
+tty.o : tty.cc ../include/driver.h ../include/errarg.h ../include/error.h \
+ ../include/font.h ../include/printer.h ../include/lib.h
diff --git a/grotty/Makefile.sub b/grotty/Makefile.sub
new file mode 100644
index 000000000..b0002cb88
--- /dev/null
+++ b/grotty/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=grotty
+MAN1=grotty.n
+XLIBS=$(LIBDRIVER) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=tty.o
+CCSRCS=tty.cc
diff --git a/grotty/TODO b/grotty/TODO
new file mode 100644
index 000000000..3f23dc35d
--- /dev/null
+++ b/grotty/TODO
@@ -0,0 +1,3 @@
+Document font and device description file usage of grotty.
+
+With -h avoid using a tab when a single space will do.
diff --git a/man/grotty.man b/grotty/grotty.man
index ba25beb5d..c3ba2d5cd 100644
--- a/man/grotty.man
+++ b/grotty/grotty.man
@@ -13,12 +13,14 @@ grotty \- groff driver for typewriter-like devices
]
.SH DESCRIPTION
.B grotty
-translates the output of
-.B gtroff
+translates the output of GNU
+.B troff
into a form suitable for typewriter-like devices.
Normally
.B grotty
-should invoked by using the groff command
+should invoked by using the
+.B groff
+command
with a
.B \-Tascii
or
@@ -90,7 +92,7 @@ code which will be used to output the character.
This code can also be used in the
.B \eN
escape sequence in
-.BR gtroff .
+.BR troff .
.SH OPTIONS
.TP
.BI \-F dir
@@ -119,10 +121,10 @@ Suppress the use of overstriking for bold characters.
Suppress the use of underlining for italic characters.
.TP
.B \-B
-Use only overstriking for bold, italic characters.
+Use only overstriking for bold-italic characters.
.TP
.B \-U
-Use only underlining for bold, italic characters.
+Use only underlining for bold-italic characters.
.TP
.B \-o
Suppress overstriking (other than for bold or underlined characters).
@@ -173,6 +175,10 @@ of
.B @MACRODIR@/tmac.tty
Macros for use with
.BR grotty .
+.TP
+.B @MACRODIR@/tmac.tty-char
+Additional klugey character definitions for use with
+.BR grotty .
.SH BUGS
.LP
.B grotty
@@ -189,11 +195,10 @@ Characters above the first line (ie with a vertical position of 0)
cannot be printed.
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
.BR groff_out (@MAN5EXT@),
.BR groff_font (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@),
.BR ul (1),
.BR more (1),
.BR less (1)
-.br
-.I "Groff Character Names"
diff --git a/tty/tty.c b/grotty/tty.cc
index 5fdc56c8e..9ecabad5f 100644
--- a/tty/tty.c
+++ b/grotty/tty.cc
@@ -6,7 +6,7 @@ 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
@@ -300,8 +300,6 @@ void tty_printer::end_page()
for (p = g; p; delete p, p = nextp) {
nextp = p->next;
if (nextp && p->hpos == nextp->hpos) {
- if (!overstrike_flag)
- continue;
if (p->draw_mode() == HDRAW_MODE && nextp->draw_mode() == VDRAW_MODE) {
nextp->code = '+';
continue;
@@ -310,6 +308,8 @@ void tty_printer::end_page()
nextp->code = p->code;
continue;
}
+ if (!overstrike_flag)
+ continue;
}
if (hpos > p->hpos) {
putchar('\b');
diff --git a/include/Makefile.sub b/include/Makefile.sub
new file mode 100644
index 000000000..3b57c9503
--- /dev/null
+++ b/include/Makefile.sub
@@ -0,0 +1,20 @@
+HDRS=assert.h cmap.h cset.h device.h driver.h errarg.h error.h font.h index.h \
+ lib.h macropath.h printer.h ptable.h refid.h search.h searchpath.h \
+ stringclass.h
+GENHDRS=defs.h
+CLEANADD=$(GENHDRS)
+
+all depend: $(GENHDRS)
+
+defs.h: FORCE
+ @$(SHELL) $(srcdir)/../gendef.sh defs.h \
+ "PROG_PREFIX=\"$(g)\"" \
+ "HYPHENFILE=\"$(hyphenfile)\"" "DEVICE=\"$(DEVICE)\"" \
+ "FONTPATH=\"$(fontpath)\"" "MACROPATH=\"$(tmacpath)\"" \
+ "INDEX_SUFFIX=\"$(indexext)\"" \
+ "COMMON_WORDS_FILE=\"$(common_words_file)\"" \
+ "DEFAULT_INDEX_DIR=\"$(indexdir)\"" \
+ "DEFAULT_INDEX_NAME=\"$(indexname)\"" \
+ "DEFAULT_INDEX=\"$(indexdir)/$(indexname)\""
+
+FORCE:
diff --git a/lib/assert.h b/include/assert.h
index 41b3ee7cd..3963b4fb4 100644
--- a/lib/assert.h
+++ b/include/assert.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef ASSERT_H
diff --git a/lib/cmap.h b/include/cmap.h
index a19e2fc14..18c88fb26 100644
--- a/lib/cmap.h
+++ b/include/cmap.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef UCHAR_MAX
diff --git a/lib/cset.h b/include/cset.h
index cc8c2e6d3..f454cc511 100644
--- a/lib/cset.h
+++ b/include/cset.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,12 +15,16 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+#ifdef HAVE_CC_LIMITS_H
+#include <limits.h>
+#else /* not HAVE_CC_LIMITS_H */
#ifndef UCHAR_MAX
#define UCHAR_MAX 255
#endif
+#endif /* not HAVE_CC_LIMITS_H */
enum cset_builtin { CSET_BUILTIN };
diff --git a/include/device.h b/include/device.h
new file mode 100644
index 000000000..76be13341
--- /dev/null
+++ b/include/device.h
@@ -0,0 +1,21 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+extern const char *device;
diff --git a/driver/driver.h b/include/driver.h
index 5fdc2727b..be7a6dc6a 100644
--- a/driver/driver.h
+++ b/include/driver.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
@@ -23,7 +23,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <stdlib.h>
#include <stddef.h>
-#include <osfcn.h>
+#include <errno.h>
#include <assert.h>
#include <math.h>
#include "errarg.h"
diff --git a/lib/errarg.h b/include/errarg.h
index e1cf08a54..2f5ea5fc9 100644
--- a/lib/errarg.h
+++ b/include/errarg.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class errarg {
diff --git a/lib/error.h b/include/error.h
index 19250cd0a..7a687127a 100644
--- a/lib/error.h
+++ b/include/error.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
extern void fatal_with_file_and_line(const char *filename, int lineno,
diff --git a/lib/font.h b/include/font.h
index 482b140cc..5d0b935c7 100644
--- a/lib/font.h
+++ b/include/font.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,9 +15,11 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+typedef void (*FONT_COMMAND_HANDLER)(const char *, const char *,
+ const char *, int);
struct font_kern_list;
struct font_char_metric;
@@ -53,13 +55,12 @@ public:
static font *load_font(const char *);
static void command_line_font_dir(const char *path);
- static void forget_command_line_font_dirs();
- static void set_device_name(const char *);
- static const char *get_device_name();
static FILE *open_file(const char *name, char **pathp);
static int load_desc();
static int name_to_index(const char *);
static int number_to_index(int);
+ static FONT_COMMAND_HANDLER
+ set_unknown_desc_command_handler(FONT_COMMAND_HANDLER);
static int res;
static int hor;
@@ -90,9 +91,7 @@ private:
char *internalname;
double slant;
font_widths_cache *widths_cache;
-
- static char *dev_name;
- static char *cl_font_dirs;
+ static FONT_COMMAND_HANDLER unknown_desc_command_handler;
enum { KERN_HASH_TABLE_SIZE = 503 };
@@ -105,7 +104,9 @@ private:
void compact();
static int scale(int w, int pointsize);
- virtual void handle_unknown_font_command(int argc, const char **argv);
+ virtual void handle_unknown_font_command(const char *command,
+ const char *arg,
+ const char *file, int lineno);
protected:
font(const char *);
int load();
diff --git a/refer/index.h b/include/index.h
index 4df7de6be..719b0266b 100644
--- a/refer/index.h
+++ b/include/index.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,14 +15,12 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define INDEX_MAGIC 0x23021964
#define INDEX_VERSION 1
-#include "suffix.h"
-
struct index_header {
int magic;
int version;
diff --git a/lib/lib.h b/include/lib.h
index 9e4350011..c413dc988 100644
--- a/lib/lib.h
+++ b/include/lib.h
@@ -1,11 +1,12 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,12 +15,9 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-/* This file is included in both C and C++ compilations. */
-
-#ifdef __cplusplus
extern "C" {
char *strerror(int);
#ifndef __BORLANDC__
@@ -28,23 +26,36 @@ extern "C" {
#endif /* __BORLANDC__ */
};
+#ifndef STDLIB_H_DECLARES_GETOPT
+extern "C" {
+ int getopt(int, const char **, const char *);
+ extern char *optarg;
+ extern int optind;
+ extern int opterr;
+}
+#endif /* not STDLIB_H_DECLARES_GETOPT */
+
char *strsave(const char *s);
int is_prime(unsigned);
+
#include <stdio.h>
+
FILE *xtmpfile();
int interpret_lf_args(const char *p);
+extern char illegal_char_table[];
+
inline int illegal_input_char(int c)
{
- return c == 000 || (c > 012 && c < 040) || (c >= 0200 && c < 0240);
+ return c >= 0 && illegal_char_table[c];
}
-#endif
-
-#ifndef INT_MAX
+#ifdef HAVE_CC_LIMITS_H
+#include <limits.h>
+#else /* not HAVE_CC_LIMITS_H */
#define INT_MAX 2147483647
-#endif
+#endif /* not HAVE_CC_LIMITS_H */
/* It's not safe to rely on people getting INT_MIN right (ie signed). */
@@ -58,11 +69,11 @@ inline int illegal_input_char(int c)
#define INT_MIN ((long)(-INT_MAX-1))
-#else /* CFRONT_ANSI_BUG */
+#else /* not CFRONT_ANSI_BUG */
#define INT_MIN (-INT_MAX-1)
-#endif /* CFRONT_ANSI_BUG */
+#endif /* not CFRONT_ANSI_BUG */
/* Maximum number of digits in the decimal representation of an int
(not including the -). */
diff --git a/include/macropath.h b/include/macropath.h
new file mode 100644
index 000000000..0b0f5c307
--- /dev/null
+++ b/include/macropath.h
@@ -0,0 +1,21 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+extern search_path macro_path;
diff --git a/include/posix.h b/include/posix.h
new file mode 100644
index 000000000..fc76d90bf
--- /dev/null
+++ b/include/posix.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+/* Copyright (C) 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifdef HAVE_CC_UNISTD_H
+#include <unistd.h>
+#else
+#include <osfcn.h>
+#endif
+
+#ifndef S_IRUSR
+#define S_IRUSR 0400
+#endif
+
+#ifndef S_IRGRP
+#define S_IRGRP 0040
+#endif
+
+#ifndef S_IROTH
+#define S_IROTH 0004
+#endif
+
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#endif
+
+#ifndef O_RDONLY
+#define O_RDONLY 0
+#endif
diff --git a/driver/printer.h b/include/printer.h
index 3654062c1..e064ab181 100644
--- a/driver/printer.h
+++ b/include/printer.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct environment {
diff --git a/lib/ptable.h b/include/ptable.h
index dd180da79..0e7c1996a 100644
--- a/lib/ptable.h
+++ b/include/ptable.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,18 +15,18 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <assert.h>
-#include <generic.h>
#include <string.h>
-#ifdef __BORLANDC__
-#ifndef name2
-#define name2 _Paste2
-#endif
-#endif
+#ifdef TRADITIONAL_CPP
+#define name2(a,b) a/**/b
+#else /* not TRADITIONAL_CPP */
+#define name2(a,b) name2x(a,b)
+#define name2x(a,b) a ## b
+#endif /* not TRADITIONAL_CPP */
#define PTABLE(T) name2(T,_ptable)
#define PASSOC(T) name2(T,_passoc)
@@ -86,6 +86,7 @@ PTABLE(T)::~PTABLE(T)() \
a_delete v[i].key; \
delete v[i].val; \
} \
+ a_delete v; \
} \
\
void PTABLE(T)::define(const char *key, T *val) \
diff --git a/refer/refid.h b/include/refid.h
index d4cf97f66..4c83c5062 100644
--- a/refer/refid.h
+++ b/include/refid.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class reference_id {
diff --git a/refer/search.h b/include/search.h
index e2cf8a3dd..e1fdb8453 100644
--- a/refer/search.h
+++ b/include/search.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct search_item;
diff --git a/include/searchpath.h b/include/searchpath.h
new file mode 100644
index 000000000..14a74f672
--- /dev/null
+++ b/include/searchpath.h
@@ -0,0 +1,29 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+class search_path {
+ char *dirs;
+ unsigned init_len;
+public:
+ search_path(const char *envvar, const char *standard);
+ ~search_path();
+ void command_line_dir(const char *);
+ FILE *open_file(const char *, char **);
+};
diff --git a/lib/stringclass.h b/include/stringclass.h
index db8753c22..371bb443b 100644
--- a/lib/stringclass.h
+++ b/include/stringclass.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
diff --git a/include/unix.h b/include/unix.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/include/unix.h
diff --git a/indxbib/Makefile.dep b/indxbib/Makefile.dep
new file mode 100644
index 000000000..7fe643230
--- /dev/null
+++ b/indxbib/Makefile.dep
@@ -0,0 +1,4 @@
+indxbib.o : indxbib.cc ../include/posix.h ../include/lib.h \
+ ../include/errarg.h ../include/error.h ../include/stringclass.h \
+ ../include/cset.h ../include/cmap.h ../include/defs.h ../include/index.h
+dirnamemax.o : dirnamemax.c
diff --git a/indxbib/Makefile.sub b/indxbib/Makefile.sub
new file mode 100644
index 000000000..853884f89
--- /dev/null
+++ b/indxbib/Makefile.sub
@@ -0,0 +1,21 @@
+PROG=indxbib
+MAN1=indxbib.n
+XLIBS=$(LIBBIB) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=indxbib.o dirnamemax.o
+CCSRCS=indxbib.cc
+CSRCS=dirnamemax.c
+NAMEPREFIX=$(g)
+
+install_data: eign
+ -test -d $(datadir) || mkdir $(datadir)
+ -test -d $(datasubdir) || mkdir $(datasubdir)
+ if test -f /usr/lib/eign; then \
+ rm -f $(common_words_file); \
+ ln -s /usr/lib/eign $(common_words_file) 2>/dev/null \
+ || ln /usr/lib/eign $(common_words_file) 2>/dev/null \
+ || cp /usr/lib/eign $(common_words_file); \
+ else \
+ rm -f $(common_words_file); \
+ $(INSTALL_DATA) $(srcdir)/eign $(common_words_file); \
+ fi
diff --git a/refer/dirnamemax.c b/indxbib/dirnamemax.c
index 201ec76ce..7ecc283b2 100644
--- a/refer/dirnamemax.c
+++ b/indxbib/dirnamemax.c
@@ -1,9 +1,21 @@
/* dir_name_max(dir) does the same as pathconf(dir, _PC_NAME_MAX) */
-#ifdef PATHCONF_MISSING
-
#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#ifdef _POSIX_VERSION
+
+long dir_name_max(dir)
+ char *dir;
+{
+ return pathconf(dir, _PC_NAME_MAX);
+}
+
+#else /* not _POSIX_VERSION */
+
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif /* HAVE_LIMITS_H */
@@ -34,14 +46,4 @@ long dir_name_max(dir)
return NAME_MAX;
}
-#else /* not PATHCONF_MISSING */
-
-#include <unistd.h>
-
-long dir_name_max(dir)
- char *dir;
-{
- return pathconf(dir, _PC_NAME_MAX);
-}
-
-#endif /* not PATHCONF_MISSING */
+#endif /* not _POSIX_VERSION */
diff --git a/refer/eign b/indxbib/eign
index 7718c8b11..7718c8b11 100644
--- a/refer/eign
+++ b/indxbib/eign
diff --git a/refer/indxbib.c b/indxbib/indxbib.cc
index e28bb5c83..aac5fd097 100644
--- a/refer/indxbib.c
+++ b/indxbib/indxbib.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,15 +15,25 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include <osfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
#include <signal.h>
#include <errno.h>
-#include "refer.h"
+#include "posix.h"
+#include "lib.h"
+#include "errarg.h"
+#include "error.h"
+#include "stringclass.h"
+#include "cset.h"
+#include "cmap.h"
+#include "defs.h"
#include "index.h"
extern "C" {
@@ -208,7 +218,7 @@ int main(int argc, char **argv)
signal(SIGHUP, fatal_signal);
signal(SIGINT, fatal_signal);
signal(SIGTERM, fatal_signal);
- int fd = creat(temp_index_file, 0444);
+ int fd = creat(temp_index_file, S_IRUSR|S_IRGRP|S_IROTH);
if (fd < 0)
fatal("can't create temporary index file: %1", strerror(errno));
indxfp = fdopen(fd, "w");
@@ -425,7 +435,7 @@ static int do_file(const char *filename)
IGNORE_BOL, // at the beginning of a line ignoring a field
KEY, // in the middle of a key
DISCARD, // after truncate_len bytes of a key
- MIDDLE, // in between keys
+ MIDDLE // in between keys
} state = START;
// In states START, BOL, IGNORE_BOL, space_count how many spaces at
diff --git a/man/gindxbib.man b/indxbib/indxbib.man
index e3c32c358..72b8d7972 100644
--- a/man/gindxbib.man
+++ b/indxbib/indxbib.man
@@ -1,15 +1,13 @@
.\" -*- nroff -*-
-.ds g g
-.ds G G
-.TH \*GINDXBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@INDXBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-\*gindxbib \- make inverted index for bibliographic databases
+@g@indxbib \- make inverted index for bibliographic databases
.SH SYNOPSIS
.ad l
.nr i \n(.i
-.in +\w'\fB\*gindxbib 'u
+.in +\w'\fB@g@indxbib 'u
.ti \niu
-.B \*gindxbib
+.B @g@indxbib
.de OP
.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
.el .RB "[\ " "\\$1" "\ ]"
@@ -28,14 +26,14 @@
.RI [\ filename \|.\|.\|.\ ]
.ad b
.SH DESCRIPTION
-.B \*gindxbib
+.B @g@indxbib
makes an inverted index for the bibliographic databases in
.IR filename \|.\|.\|.
for use with
-.BR \*grefer (@MAN1EXT@),
-.BR \*glookbib (@MAN1EXT@),
+.BR @g@refer (@MAN1EXT@),
+.BR @g@lookbib (@MAN1EXT@),
and
-.BR \*glkbib (@MAN1EXT@).
+.BR lkbib (@MAN1EXT@).
The index will be named
.IB filename @INDEX_SUFFIX@\fR;
the index is written to a temporary file which is then renamed to this.
@@ -130,7 +128,7 @@ Larger values of
will usually make searching faster,
but will make the index larger
and
-.B \*gindxbib
+.B @g@indxbib
use more memory.
Initially
.I n
@@ -183,6 +181,6 @@ List of common words.
.BI indxbib XXXXXX
Temporary file.
.SH "SEE ALSO"
-.BR \*grefer (@MAN1EXT@),
-.BR \*glkbib (@MAN1EXT@),
-.BR \*glookbib (@MAN1EXT@)
+.BR @g@refer (@MAN1EXT@),
+.BR lkbib (@MAN1EXT@),
+.BR @g@lookbib (@MAN1EXT@)
diff --git a/lib/Makefile b/lib/Makefile
deleted file mode 100644
index 13a5d6c71..000000000
--- a/lib/Makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# FONTPATH says where to look for dev*/*
-FONTPATH=.:/usr/local/lib/groff/font:/usr/local/lib/font:/usr/lib/font
-OLDCC=gcc
-CC=g++
-AR=ar
-RANLIB=/bin/ranlib
-INCLUDES=-I.
-MALLOC=malloc.o
-MALLOCFLAGS=
-FMOD=#fmod.o
-STRTOL=#strtol.o
-GETCWD=#getcwd.o
-OBJECTS=$(MALLOC) new.o itoa.o strerror.o error.o errarg.o fatal.o prime.o \
- strsave.o matherr.o assert.o iftoa.o string.o cset.o cmap.o \
- ptable.o font.o fontfile.o nametoindex.o filename.o lineno.o \
- progname.o lf.o change_lf.o version.o tmpfile.o \
- $(FMOD) $(STRTOL) $(GETCWD)
-SOURCES=new.c itoa.c strerror.c error.c errarg.c fatal.c prime.c \
- strsave.c matherr.c fmod.c assert.c iftoa.c tmpfile.c getcwd.c \
- string.c cset.c cmap.c ptable.c font.c fontfile.c nametoindex.c \
- filename.c lineno.c progname.c lf.c change_lf.c version.c \
- assert.h cset.h cmap.h errarg.h error.h font.h getpagesize.h \
- lib.h ptable.h stringclass.h
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: libgroff.a
-
-libgroff.a: $(OBJECTS)
- $(AR) r libgroff.a $?
- if test "$(RANLIB)" ; then $(RANLIB) libgroff.a ;fi
-
-version.c: ../VERSION
- @echo Making version.c
- @echo const char \*version_string = \"`cat ../VERSION`\"\; >$@
-
-malloc.o: malloc.c getpagesize.h
- $(OLDCC) $(OLDCFLAGS) $(MALLOCFLAGS) -c malloc.c
-
-itoa.o: itoa.c
- $(OLDCC) $(OLDCFLAGS) -c itoa.c
-
-iftoa.o: iftoa.c
- $(OLDCC) $(OLDCFLAGS) -c iftoa.c
-
-strerror.o: strerror.c
- $(OLDCC) $(OLDCFLAGS) -c strerror.c
-
-matherr.o: matherr.c
- $(OLDCC) $(OLDCFLAGS) -c matherr.c
-
-fmod.o: fmod.c
- $(OLDCC) $(OLDCFLAGS) -c fmod.c
-
-strtol.o: strtol.c
- $(OLDCC) $(OLDCFLAGS) -c strtol.c
-
-getcwd.o: getcwd.c
- $(OLDCC) $(OLDCFLAGS) -c getcwd.c
-
-string.o: stringclass.h
-lf.o: stringclass.h
-fontfile.o: fontpath.h
-tmpfile.o: lib.h errarg.h error.h
-
-fontpath.h: FORCE
- @$(SHELL) ../gendef $@ "FONTPATH=\"$(FONTPATH)\""
-
-TAGS : $(SOURCES)
- etags $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o core libgroff.a version.c fontpath.h
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-install:
-install.bin:
-install.nobin:
-
-FORCE:
diff --git a/lib/fontfile.c b/lib/fontfile.c
deleted file mode 100644
index 77c57c797..000000000
--- a/lib/fontfile.c
+++ /dev/null
@@ -1,131 +0,0 @@
-// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
-
-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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <errno.h>
-#include "font.h"
-#include "lib.h"
-#include "fontpath.h"
-
-const char *const FONT_ENV_VAR = "GROFF_FONT_PATH";
-
-int font::res = 0;
-int font::hor = 1;
-int font::vert = 1;
-int font::unitwidth = 0;
-int font::paperwidth = 0;
-int font::paperlength = 0;
-int font::biggestfont = 0;
-int font::spare2 = 0;
-int font::sizescale = 1;
-int font::tcommand = 0;
-const char **font::font_name_table = 0;
-int *font::sizes = 0;
-char *font::dev_name = 0;
-char *font::cl_font_dirs = 0;
-const char *font::family = 0;
-const char **font::style_table = 0;
-
-void font::command_line_font_dir(const char *dir)
-{
- if (cl_font_dirs == 0) {
- cl_font_dirs = new char[strlen(dir)+1];
- strcpy(cl_font_dirs, dir);
- }
- else {
- int len = strlen(cl_font_dirs);
- int need_colon = 0;
- if (len > 0 && cl_font_dirs[len-1] != ':')
- need_colon = 1;
- char *old_dirs = cl_font_dirs;
- cl_font_dirs = new char[len + need_colon + strlen(dir) + 1];
- strcpy(cl_font_dirs, old_dirs);
- if (need_colon)
- strcat(cl_font_dirs, ":");
- strcat(cl_font_dirs, dir);
- a_delete old_dirs;
- }
-}
-
-void font::forget_command_line_font_dirs()
-{
- a_delete cl_font_dirs;
- cl_font_dirs = 0;
-}
-
-FILE *font::open_file(const char *name, char **pathp)
-{
- assert(dev_name != 0);
- const char *dir_vec[3];
- dir_vec[0] = cl_font_dirs;
- dir_vec[1] = getenv(FONT_ENV_VAR);
- dir_vec[2] = FONTPATH;
- for (int i = 0; i < 3; i++)
- if (dir_vec[i] != 0) {
- const char *dirs = dir_vec[i];
- while (*dirs != '\0') {
- const char *p = strchr(dirs, ':');
- if (p != dirs) {
- if (p == 0)
- p = strchr(dirs, '\0');
- int need_slash = 0;
- if (p > dirs && p[-1] != '/')
- need_slash = 1;
- char *path = new char[(p - dirs) + need_slash + 3
- + strlen(dev_name) + 1
- + strlen(name) + 1];
- memcpy(path, dirs, p - dirs);
- path[p - dirs] = '\0';
- if (need_slash)
- strcat(path, "/");
- strcat(path, "dev");
- strcat(path, dev_name);
- strcat(path, "/");
- strcat(path, name);
- errno = 0;
- FILE *fp = fopen(path, "r");
- if (fp != 0) {
- *pathp = path;
- return fp;
- }
- a_delete path;
- if (*p == '\0')
- break;
- }
- dirs = p + 1;
- }
- }
- return 0;
-}
-
-void font::set_device_name(const char *s)
-{
- dev_name = new char[strlen(s)+1];
- strcpy(dev_name, s);
-}
-
-const char *font::get_device_name()
-{
- return dev_name;
-}
-
diff --git a/lib/getpagesize.h b/lib/getpagesize.h
deleted file mode 100644
index 32adae61e..000000000
--- a/lib/getpagesize.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef BSD
-#ifndef BSD4_1
-#define HAVE_GETPAGESIZE
-#endif
-#endif
-
-#ifndef HAVE_GETPAGESIZE
-
-#include <sys/param.h>
-
-#ifdef EXEC_PAGESIZE
-#define getpagesize() EXEC_PAGESIZE
-#else
-#ifdef NBPG
-#define getpagesize() NBPG * CLSIZE
-#ifndef CLSIZE
-#define CLSIZE 1
-#endif /* no CLSIZE */
-#else /* no NBPG */
-#define getpagesize() NBPC
-#endif /* no NBPG */
-#endif /* no EXEC_PAGESIZE */
-
-#endif /* not HAVE_GETPAGESIZE */
-
diff --git a/lib/malloc.c b/lib/malloc.c
deleted file mode 100644
index b27c27779..000000000
--- a/lib/malloc.c
+++ /dev/null
@@ -1,893 +0,0 @@
-/* dynamic memory allocation for GNU.
- Copyright (C) 1985, 1987 Free Software Foundation, Inc.
-
- NO WARRANTY
-
- BECAUSE THIS PROGRAM IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
-NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
-WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC,
-RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE THIS PROGRAM "AS IS"
-WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
-AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
-DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
-CORRECTION.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
-STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY
-WHO MAY MODIFY AND REDISTRIBUTE THIS PROGRAM AS PERMITTED BELOW, BE
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR
-OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
-DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR
-A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) THIS
-PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
-
- GENERAL PUBLIC LICENSE TO COPY
-
- 1. You may copy and distribute verbatim copies of this source file
-as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy a valid copyright notice "Copyright
-(C) 1985 Free Software Foundation, Inc."; and include following the
-copyright notice a verbatim copy of the above disclaimer of warranty
-and of this License. You may charge a distribution fee for the
-physical act of transferring a copy.
-
- 2. You may modify your copy or copies of this source file or
-any portion of it, and copy and distribute such modifications under
-the terms of Paragraph 1 above, provided that you also do the following:
-
- a) cause the modified files to carry prominent notices stating
- that you changed the files and the date of any change; and
-
- b) cause the whole of any work that you distribute or publish,
- that in whole or in part contains or is a derivative of this
- program or any part thereof, to be licensed at no charge to all
- third parties on terms identical to those contained in this
- License Agreement (except that you may choose to grant more extensive
- warranty protection to some or all third parties, at your option).
-
- c) You may charge a distribution fee for the physical act of
- transferring a copy, and you may at your option offer warranty
- protection in exchange for a fee.
-
-Mere aggregation of another unrelated program with this program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other program under the scope of these terms.
-
- 3. You may copy and distribute this program (or a portion or derivative
-of it, under Paragraph 2) in object code or executable form under the terms
-of Paragraphs 1 and 2 above provided that you also do one of the following:
-
- a) accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- b) accompany it with a written offer, valid for at least three
- years, to give any third party free (except for a nominal
- shipping charge) a complete machine-readable copy of the
- corresponding source code, to be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- c) accompany it with the information you received as to where the
- corresponding source code may be obtained. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form alone.)
-
-For an executable file, complete source code means all the source code for
-all modules it contains; but, as a special exception, it need not include
-source code for modules which are standard libraries that accompany the
-operating system on which the executable file runs.
-
- 4. You may not copy, sublicense, distribute or transfer this program
-except as expressly provided under this License Agreement. Any attempt
-otherwise to copy, sublicense, distribute or transfer this program is void and
-your rights to use the program under this License agreement shall be
-automatically terminated. However, parties who have received computer
-software programs from you with this License Agreement will not have
-their licenses terminated so long as such parties remain in full compliance.
-
- 5. If you wish to incorporate parts of this program into other free
-programs whose distribution conditions are different, write to the Free
-Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not yet
-worked out a simple rule that can be stated here, but we will often permit
-this. We will be guided by the two goals of preserving the free status of
-all derivatives of our free software and of promoting the sharing and reuse of
-software.
-
-
-In other words, you are welcome to use, share and improve this program.
-You are forbidden to forbid anyone else to use, share and improve
-what you give them. Help stamp out software-hoarding! */
-
-
-/*
- * @(#)nmalloc.c 1 (Caltech) 2/21/82
- *
- * U of M Modified: 20 Jun 1983 ACT: strange hacks for Emacs
- *
- * Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD.
- *
- * This is a very fast storage allocator. It allocates blocks of a small
- * number of different sizes, and keeps free lists of each size. Blocks
- * that don't exactly fit are passed up to the next larger size. In this
- * implementation, the available sizes are (2^n)-4 (or -16) bytes long.
- * This is designed for use in a program that uses vast quantities of
- * memory, but bombs when it runs out. To make it a little better, it
- * warns the user when he starts to get near the end.
- *
- * June 84, ACT: modified rcheck code to check the range given to malloc,
- * rather than the range determined by the 2-power used.
- *
- * Jan 85, RMS: calls malloc_warning to issue warning on nearly full.
- * No longer Emacs-specific; can serve as all-purpose malloc for GNU.
- * You should call malloc_init to reinitialize after loading dumped Emacs.
- * Call malloc_stats to get info on memory stats if MSTATS turned on.
- * realloc knows how to return same block given, just changing its size,
- * if the power of 2 is correct.
- */
-
-/*
- * nextf[i] is the pointer to the next free block of size 2^(i+3). The
- * smallest allocatable block is 8 bytes. The overhead information will
- * go in the first int of the block, and the returned pointer will point
- * to the second.
- *
-#ifdef MSTATS
- * nmalloc[i] is the difference between the number of mallocs and frees
- * for a given block size.
-#endif MSTATS
- */
-
-#ifdef emacs
-/* config.h specifies which kind of system this is. */
-#include "config.h"
-#else
-
-/* Determine which kind of system this is. */
-#include <signal.h>
-#ifndef SIGTSTP
-#ifndef VMS
-#ifndef USG
-#define USG
-#endif
-#endif /* not VMS */
-#else /* SIGTSTP */
-#ifdef SIGIO
-#define BSD4_2
-#endif /* SIGIO */
-#endif /* SIGTSTP */
-
-#endif /* not emacs */
-
-/* Define getpagesize () if the system does not. */
-#include "getpagesize.h"
-
-#ifndef BSD4_2
-#ifndef USG
-#include <sys/vlimit.h> /* warn the user when near the end */
-#endif /* not USG */
-#else /* if BSD4_2 */
-#include <sys/time.h>
-#include <sys/resource.h>
-#endif /* BSD4_2 */
-
-#ifdef USG
-#define bcopy(from, to, n) memcpy(to, from, n)
-#endif
-
-extern char *start_of_data ();
-
-#ifdef BSD
-#ifndef DATA_SEG_BITS
-#define start_of_data() &etext
-#endif
-#endif
-
-#ifndef emacs
-#define start_of_data() &etext
-#endif
-
-#define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */
-#define ISFREE ((char) 0x54) /* magic byte that implies free block */
- /* this is for error checking only */
-#define ISMEMALIGN ((char) 0xd6) /* Stored before the value returned by
- memalign, with the rest of the word
- being the distance to the true
- beginning of the block. */
-
-extern char etext;
-
-/* These two are for user programs to look at, when they are interested. */
-
-unsigned int malloc_sbrk_used; /* amount of data space used now */
-unsigned int malloc_sbrk_unused; /* amount more we can have */
-
-/* start of data space; can be changed by calling init_malloc */
-static char *data_space_start;
-
-#ifdef MSTATS
-static int nmalloc[30];
-static int nmal, nfre;
-#endif /* MSTATS */
-
-/* If range checking is not turned on, all we have is a flag indicating
- whether memory is allocated, an index in nextf[], and a size field; to
- realloc() memory we copy either size bytes or 1<<(index+3) bytes depending
- on whether the former can hold the exact size (given the value of
- 'index'). If range checking is on, we always need to know how much space
- is allocated, so the 'size' field is never used. */
-
-struct mhead {
- char mh_alloc; /* ISALLOC or ISFREE */
- char mh_index; /* index in nextf[] */
-/* Remainder are valid only when block is allocated */
- unsigned short mh_size; /* size, if < 0x10000 */
-#ifdef rcheck
- unsigned mh_nbytes; /* number of bytes allocated */
- int mh_magic4; /* should be == MAGIC4 */
-#endif /* rcheck */
-};
-
-/* Access free-list pointer of a block.
- It is stored at block + 4.
- This is not a field in the mhead structure
- because we want sizeof (struct mhead)
- to describe the overhead for when the block is in use,
- and we do not want the free-list pointer to count in that. */
-
-#define CHAIN(a) \
- (*(struct mhead **) (sizeof (char *) + (char *) (a)))
-
-#ifdef rcheck
-
-/* To implement range checking, we write magic values in at the beginning and
- end of each allocated block, and make sure they are undisturbed whenever a
- free or a realloc occurs. */
-/* Written in each of the 4 bytes following the block's real space */
-#define MAGIC1 0x55
-/* Written in the 4 bytes before the block's real space */
-#define MAGIC4 0x55555555
-#define ASSERT(p) if (!(p)) botch("p"); else
-#define EXTRA 4 /* 4 bytes extra for MAGIC1s */
-#else
-#define ASSERT(p)
-#define EXTRA 0
-#endif /* rcheck */
-
-
-/* nextf[i] is free list of blocks of size 2**(i + 3) */
-
-static struct mhead *nextf[30];
-
-/* busy[i] is nonzero while allocation of block size i is in progress. */
-
-static char busy[30];
-
-/* Number of bytes of writable memory we can expect to be able to get */
-static unsigned int lim_data;
-
-/* Level number of warnings already issued.
- 0 -- no warnings issued.
- 1 -- 75% warning already issued.
- 2 -- 85% warning already issued.
-*/
-static int warnlevel;
-
-/* Function to call to issue a warning;
- 0 means don't issue them. */
-static void (*warnfunction) ();
-
-/* nonzero once initial bunch of free blocks made */
-static int gotpool;
-
-char *_malloc_base;
-
-static void getpool ();
-
-/* Cause reinitialization based on job parameters;
- also declare where the end of pure storage is. */
-void
-malloc_init (start, warnfun)
- char *start;
- void (*warnfun) ();
-{
- if (start)
- data_space_start = start;
- lim_data = 0;
- warnlevel = 0;
- warnfunction = warnfun;
-}
-
-/* Return the maximum size to which MEM can be realloc'd
- without actually requiring copying. */
-
-int
-malloc_usable_size (mem)
- char *mem;
-{
- int blocksize = 8 << (((struct mhead *) mem) - 1) -> mh_index;
-
- return blocksize - sizeof (struct mhead) - EXTRA;
-}
-
-static void
-morecore (nu) /* ask system for more memory */
- register int nu; /* size index to get more of */
-{
- char *sbrk ();
- register char *cp;
- register int nblks;
- register unsigned int siz;
- int oldmask;
-
-#ifdef BSD
-#ifndef BSD4_1
- /* ?? There was a suggestion not to block SIGILL, somehow for GDB's sake. */
- oldmask = sigsetmask (-1);
-#endif
-#endif
-
- if (!data_space_start)
- {
- data_space_start = start_of_data ();
- }
-
- if (lim_data == 0)
- get_lim_data ();
-
- /* On initial startup, get two blocks of each size up to 1k bytes */
- if (!gotpool)
- { getpool (); getpool (); gotpool = 1; }
-
- /* Find current end of memory and issue warning if getting near max */
-
-#ifndef VMS
- /* Maximum virtual memory on VMS is difficult to calculate since it
- * depends on several dynmacially changing things. Also, alignment
- * isn't that important. That is why much of the code here is ifdef'ed
- * out for VMS systems.
- */
- cp = sbrk (0);
- siz = cp - data_space_start;
-
- if (warnfunction)
- switch (warnlevel)
- {
- case 0:
- if (siz > (lim_data / 4) * 3)
- {
- warnlevel++;
- (*warnfunction) ("Warning: past 75% of memory limit");
- }
- break;
- case 1:
- if (siz > (lim_data / 20) * 17)
- {
- warnlevel++;
- (*warnfunction) ("Warning: past 85% of memory limit");
- }
- break;
- case 2:
- if (siz > (lim_data / 20) * 19)
- {
- warnlevel++;
- (*warnfunction) ("Warning: past 95% of memory limit");
- }
- break;
- }
-
- if ((int) cp & 0x3ff) /* land on 1K boundaries */
- sbrk (1024 - ((int) cp & 0x3ff));
-#endif /* not VMS */
-
- /* Take at least 2k, and figure out how many blocks of the desired size
- we're about to get */
- nblks = 1;
- if ((siz = nu) < 8)
- nblks = 1 << ((siz = 8) - nu);
-
- if ((cp = sbrk (1 << (siz + 3))) == (char *) -1)
- {
-#ifdef BSD
-#ifndef BSD4_1
- sigsetmask (oldmask);
-#endif
-#endif
- return; /* no more room! */
- }
- malloc_sbrk_used = siz;
- malloc_sbrk_unused = lim_data - siz;
-
-#ifndef VMS
- if ((int) cp & 7)
- { /* shouldn't happen, but just in case */
- cp = (char *) (((int) cp + 8) & ~7);
- nblks--;
- }
-#endif /* not VMS */
-
- /* save new header and link the nblks blocks together */
- nextf[nu] = (struct mhead *) cp;
- siz = 1 << (nu + 3);
- while (1)
- {
- ((struct mhead *) cp) -> mh_alloc = ISFREE;
- ((struct mhead *) cp) -> mh_index = nu;
- if (--nblks <= 0) break;
- CHAIN ((struct mhead *) cp) = (struct mhead *) (cp + siz);
- cp += siz;
- }
- CHAIN ((struct mhead *) cp) = 0;
-
-#ifdef BSD
-#ifndef BSD4_1
- sigsetmask (oldmask);
-#endif
-#endif
-}
-
-static void
-getpool ()
-{
- register int nu;
- char * sbrk ();
- register char *cp = sbrk (0);
-
- if ((int) cp & 0x3ff) /* land on 1K boundaries */
- sbrk (1024 - ((int) cp & 0x3ff));
-
- /* Record address of start of space allocated by malloc. */
- if (_malloc_base == 0)
- _malloc_base = cp;
-
- /* Get 2k of storage */
-
- cp = sbrk (04000);
- if (cp == (char *) -1)
- return;
-
- /* Divide it into an initial 8-word block
- plus one block of size 2**nu for nu = 3 ... 10. */
-
- CHAIN (cp) = nextf[0];
- nextf[0] = (struct mhead *) cp;
- ((struct mhead *) cp) -> mh_alloc = ISFREE;
- ((struct mhead *) cp) -> mh_index = 0;
- cp += 8;
-
- for (nu = 0; nu < 7; nu++)
- {
- CHAIN (cp) = nextf[nu];
- nextf[nu] = (struct mhead *) cp;
- ((struct mhead *) cp) -> mh_alloc = ISFREE;
- ((struct mhead *) cp) -> mh_index = nu;
- cp += 8 << nu;
- }
-}
-
-char *
-malloc (n) /* get a block */
- unsigned n;
-{
- register struct mhead *p;
- register unsigned int nbytes;
- register int nunits = 0;
-
- /* Figure out how many bytes are required, rounding up to the nearest
- multiple of 8, then figure out which nestf[] area to use.
- Both the beginning of the header and the beginning of the
- block should be on an eight byte boundary. */
-#ifdef SUNOS_LOCALTIME_BUG
- /* SunOS 4.1 localtime scribbles on the ninth byte. */
- nbytes = (n + ((sizeof *p + 15) & ~15) + EXTRA + 15) & ~15;
-#else
- nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
-#endif
- {
- register unsigned int shiftr = (nbytes - 1) >> 2;
-
- while (shiftr >>= 1)
- nunits++;
- }
-
- /* In case this is reentrant use of malloc from signal handler,
- pick a block size that no other malloc level is currently
- trying to allocate. That's the easiest harmless way not to
- interfere with the other level of execution. */
- while (busy[nunits]) nunits++;
- busy[nunits] = 1;
-
- /* If there are no blocks of the appropriate size, go get some */
- /* COULD SPLIT UP A LARGER BLOCK HERE ... ACT */
- if (nextf[nunits] == 0)
- morecore (nunits);
-
- /* Get one block off the list, and set the new list head */
- if ((p = nextf[nunits]) == 0)
- {
- busy[nunits] = 0;
- return 0;
- }
- nextf[nunits] = CHAIN (p);
- busy[nunits] = 0;
-
- /* Check for free block clobbered */
- /* If not for this check, we would gobble a clobbered free chain ptr */
- /* and bomb out on the NEXT allocate of this size block */
- if (p -> mh_alloc != ISFREE || p -> mh_index != nunits)
-#ifdef rcheck
- botch ("block on free list clobbered");
-#else /* not rcheck */
- abort ();
-#endif /* not rcheck */
-
- /* Fill in the info, and if range checking, set up the magic numbers */
- p -> mh_alloc = ISALLOC;
-#ifdef rcheck
- p -> mh_nbytes = n;
- p -> mh_magic4 = MAGIC4;
- {
- /* Get the location n after the beginning of the user's space. */
- register char *m = (char *) p + ((sizeof *p + 7) & ~7) + n;
-
- *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
- }
-#else /* not rcheck */
- p -> mh_size = n;
-#endif /* not rcheck */
-#ifdef MSTATS
- nmalloc[nunits]++;
- nmal++;
-#endif /* MSTATS */
- return (char *) p + ((sizeof *p + 7) & ~7);
-}
-
-free (mem)
- char *mem;
-{
- register struct mhead *p;
- {
- register char *ap = mem;
-
- if (ap == 0)
- return;
-
- p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
- if (p -> mh_alloc == ISMEMALIGN)
- {
- ap -= p->mh_size;
- p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
- }
-
-#ifndef rcheck
- if (p -> mh_alloc != ISALLOC)
- abort ();
-
-#else rcheck
- if (p -> mh_alloc != ISALLOC)
- {
- if (p -> mh_alloc == ISFREE)
- botch ("free: Called with already freed block argument\n");
- else
- botch ("free: Called with bad argument\n");
- }
-
- ASSERT (p -> mh_magic4 == MAGIC4);
- ap += p -> mh_nbytes;
- ASSERT (*ap++ == MAGIC1); ASSERT (*ap++ == MAGIC1);
- ASSERT (*ap++ == MAGIC1); ASSERT (*ap == MAGIC1);
-#endif /* rcheck */
- }
- {
- register int nunits = p -> mh_index;
-
- ASSERT (nunits <= 29);
- p -> mh_alloc = ISFREE;
-
- /* Protect against signal handlers calling malloc. */
- busy[nunits] = 1;
- /* Put this block on the free list. */
- CHAIN (p) = nextf[nunits];
- nextf[nunits] = p;
- busy[nunits] = 0;
-
-#ifdef MSTATS
- nmalloc[nunits]--;
- nfre++;
-#endif /* MSTATS */
- }
-}
-
-char *
-realloc (mem, n)
- char *mem;
- register unsigned n;
-{
- register struct mhead *p;
- register unsigned int tocopy;
- register unsigned int nbytes;
- register int nunits;
-
- if (mem == 0)
- return malloc (n);
- p = (struct mhead *) (mem - ((sizeof *p + 7) & ~7));
- nunits = p -> mh_index;
- ASSERT (p -> mh_alloc == ISALLOC);
-#ifdef rcheck
- ASSERT (p -> mh_magic4 == MAGIC4);
- {
- register char *m = mem + (tocopy = p -> mh_nbytes);
- ASSERT (*m++ == MAGIC1); ASSERT (*m++ == MAGIC1);
- ASSERT (*m++ == MAGIC1); ASSERT (*m == MAGIC1);
- }
-#else /* not rcheck */
- if (p -> mh_index >= 13)
- tocopy = (1 << (p -> mh_index + 3)) - ((sizeof *p + 7) & ~7);
- else
- tocopy = p -> mh_size;
-#endif /* not rcheck */
-
- /* See if desired size rounds to same power of 2 as actual size. */
- nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
-
- /* If ok, use the same block, just marking its size as changed. */
- if (nbytes > (4 << nunits) && nbytes <= (8 << nunits))
- {
-#ifdef rcheck
- register char *m = mem + tocopy;
- *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0;
- p-> mh_nbytes = n;
- m = mem + n;
- *m++ = MAGIC1; *m++ = MAGIC1; *m++ = MAGIC1; *m++ = MAGIC1;
-#else /* not rcheck */
- p -> mh_size = n;
-#endif /* not rcheck */
- return mem;
- }
-
- if (n < tocopy)
- tocopy = n;
- {
- register char *new;
-
- if ((new = malloc (n)) == 0)
- return 0;
- bcopy (mem, new, tocopy);
- free (mem);
- return new;
- }
-}
-
-#ifndef VMS
-
-char *
-memalign (alignment, size)
- unsigned alignment, size;
-{
- register char *ptr = malloc (size + alignment);
- register char *aligned;
- register struct mhead *p;
-
- if (ptr == 0)
- return 0;
- /* If entire block has the desired alignment, just accept it. */
- if (((int) ptr & (alignment - 1)) == 0)
- return ptr;
- /* Otherwise, get address of byte in the block that has that alignment. */
- aligned = (char *) (((int) ptr + alignment - 1) & -alignment);
-
- /* Store a suitable indication of how to free the block,
- so that free can find the true beginning of it. */
- p = (struct mhead *) aligned - 1;
- p -> mh_size = aligned - ptr;
- p -> mh_alloc = ISMEMALIGN;
- return aligned;
-}
-
-#ifndef HPUX
-/* This runs into trouble with getpagesize on HPUX.
- Patching out seems cleaner than the ugly fix needed. */
-char *
-valloc (size)
-{
- return memalign (getpagesize (), size);
-}
-#endif /* not HPUX */
-#endif /* not VMS */
-
-#ifdef MSTATS
-/* Return statistics describing allocation of blocks of size 2**n. */
-
-struct mstats_value
- {
- int blocksize;
- int nfree;
- int nused;
- };
-
-struct mstats_value
-malloc_stats (size)
- int size;
-{
- struct mstats_value v;
- register int i;
- register struct mhead *p;
-
- v.nfree = 0;
-
- if (size < 0 || size >= 30)
- {
- v.blocksize = 0;
- v.nused = 0;
- return v;
- }
-
- v.blocksize = 1 << (size + 3);
- v.nused = nmalloc[size];
-
- for (p = nextf[size]; p; p = CHAIN (p))
- v.nfree++;
-
- return v;
-}
-int
-malloc_mem_used ()
-{
- int i;
- int size_used;
-
- size_used = 0;
-
- for (i = 0; i < 30; i++)
- {
- int allocation_size = 1 << (i + 3);
- struct mhead *p;
-
- size_used += nmalloc[i] * allocation_size;
- }
-
- return size_used;
-}
-
-int
-malloc_mem_free ()
-{
- int i;
- int size_unused;
-
- size_unused = 0;
-
- for (i = 0; i < 30; i++)
- {
- int allocation_size = 1 << (i + 3);
- struct mhead *p;
-
- for (p = nextf[i]; p ; p = CHAIN (p))
- size_unused += allocation_size;
- }
-
- return size_unused;
-}
-#endif /* MSTATS */
-
-/*
- * This function returns the total number of bytes that the process
- * will be allowed to allocate via the sbrk(2) system call. On
- * BSD systems this is the total space allocatable to stack and
- * data. On USG systems this is the data space only.
- */
-
-#ifdef USG
-
-get_lim_data ()
-{
- extern long ulimit ();
-
-#ifdef ULIMIT_BREAK_VALUE
- lim_data = ULIMIT_BREAK_VALUE;
-#else
- lim_data = ulimit (3, 0);
-#endif
-
- lim_data -= (long) data_space_start;
-}
-
-#else /* not USG */
-#ifndef BSD4_2
-
-get_lim_data ()
-{
- lim_data = vlimit (LIM_DATA, -1);
-}
-
-#else /* BSD4_2 */
-
-get_lim_data ()
-{
- struct rlimit XXrlimit;
-
- getrlimit (RLIMIT_DATA, &XXrlimit);
-#ifdef RLIM_INFINITY
- lim_data = XXrlimit.rlim_cur & RLIM_INFINITY; /* soft limit */
-#else
- lim_data = XXrlimit.rlim_cur; /* soft limit */
-#endif
-}
-
-#endif /* BSD4_2 */
-#endif /* not USG */
-
-#ifdef VMS
-/* There is a problem when dumping and restoring things on VMS. Calls
- * to SBRK don't necessarily result in contiguous allocation. Dumping
- * doesn't work when it isn't. Therefore, we make the initial
- * allocation contiguous by allocating a big chunk, and do SBRKs from
- * there. Once Emacs has dumped there is no reason to continue
- * contiguous allocation, malloc doesn't depend on it.
- *
- * There is a further problem of using brk and sbrk while using VMS C
- * run time library routines malloc, calloc, etc. The documentation
- * says that this is a no-no, although I'm not sure why this would be
- * a problem. In any case, we remove the necessity to call brk and
- * sbrk, by calling calloc (to assure zero filled data) rather than
- * sbrk.
- *
- * VMS_ALLOCATION_SIZE is the size of the allocation array. This
- * should be larger than the malloc size before dumping. Making this
- * too large will result in the startup procedure slowing down since
- * it will require more space and time to map it in.
- *
- * The value for VMS_ALLOCATION_SIZE in the following define was determined
- * by running emacs linked (and a large allocation) with the debugger and
- * looking to see how much storage was used. The allocation was 201 pages,
- * so I rounded it up to a power of two.
- */
-#ifndef VMS_ALLOCATION_SIZE
-#define VMS_ALLOCATION_SIZE (512*256)
-#endif
-
-/* Use VMS RTL definitions */
-#undef sbrk
-#undef brk
-#undef malloc
-int vms_out_initial = 0;
-char vms_initial_buffer[VMS_ALLOCATION_SIZE];
-static char *vms_current_brk = &vms_initial_buffer;
-static char *vms_end_brk = &vms_initial_buffer[VMS_ALLOCATION_SIZE-1];
-
-#include <stdio.h>
-
-char *
-sys_sbrk (incr)
- int incr;
-{
- char *sbrk(), *temp, *ptr;
-
- if (vms_out_initial)
- {
- /* out of initial allocation... */
- if (!(temp = malloc (incr)))
- temp = (char *) -1;
- }
- else
- {
- /* otherwise, go out of our area */
- ptr = vms_current_brk + incr; /* new current_brk */
- if (ptr <= vms_end_brk)
- {
- temp = vms_current_brk;
- vms_current_brk = ptr;
- }
- else
- {
- vms_out_initial = 1; /* mark as out of initial allocation */
- if (!(temp = malloc (incr)))
- temp = (char *) -1;
- }
- }
- return temp;
-}
-#endif /* VMS */
diff --git a/libbib/Makefile.dep b/libbib/Makefile.dep
new file mode 100644
index 000000000..906a38ad7
--- /dev/null
+++ b/libbib/Makefile.dep
@@ -0,0 +1,12 @@
+common.o : common.cc
+index.o : index.cc ../include/posix.h ../include/lib.h ../include/cset.h \
+ ../include/cmap.h ../include/errarg.h ../include/error.h \
+ ../include/refid.h ../include/search.h ../include/index.h \
+ ../include/defs.h
+linear.o : linear.cc ../include/posix.h ../include/lib.h \
+ ../include/errarg.h ../include/error.h ../include/cset.h \
+ ../include/cmap.h ../include/refid.h ../include/search.h
+search.o : search.cc ../include/posix.h ../include/lib.h \
+ ../include/errarg.h ../include/error.h ../include/refid.h \
+ ../include/search.h
+map.o : map.c
diff --git a/libbib/Makefile.sub b/libbib/Makefile.sub
new file mode 100644
index 000000000..e9418288a
--- /dev/null
+++ b/libbib/Makefile.sub
@@ -0,0 +1,4 @@
+LIB=bib
+OBJS=common.o index.o linear.o search.o map.o
+CCSRCS=common.cc index.cc linear.cc search.cc
+CSRCS=map.c
diff --git a/refer/common.c b/libbib/common.cc
index 86a2b6b0e..25f4078b8 100644
--- a/refer/common.c
+++ b/libbib/common.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
unsigned hash(const char *s, int len)
diff --git a/refer/index.c b/libbib/index.cc
index cd4c564f8..8fe5acdae 100644
--- a/refer/index.c
+++ b/libbib/index.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,34 +15,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#include <osfcn.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <errno.h>
-#ifdef HAVE_MMAP
-#ifdef __GNUG__
-#define mmap _____mmap
-#define munmap _____munmap
-#include <sys/mman.h>
-#undef mmap
-#undef munmap
-extern "C" {
- void *mmap(void *addr, int len, int prot, int flags, int fd, off_t off);
- int munmap(void *addr, int len);
-}
-#else /* not __GNUG__ */
-// Assume the vendor has provided a proper <sys/mman.h>
-#include <sys/mman.h>
-#endif /* not __GNUG__ */
-#endif /* HAVE_MMAP */
-
+#include "posix.h"
#include "lib.h"
#include "cset.h"
#include "cmap.h"
@@ -52,6 +33,13 @@ extern "C" {
#include "refid.h"
#include "search.h"
#include "index.h"
+#include "defs.h"
+
+// Interface to mmap.
+extern "C" {
+ void *mapread(int fd, int len);
+ int unmap(void *, int len);
+}
const int minus_one = -1;
@@ -63,10 +51,8 @@ class index_search_item : public search_item {
search_item *out_of_date_files;
index_header header;
char *buffer;
-#ifdef HAVE_MMAP
- char *map_addr;
- int map_size;
-#endif /* HAVE_MMAP */
+ void *map_addr;
+ int map_len;
tag *tags;
int *table;
int *lists;
@@ -118,10 +104,7 @@ public:
index_search_item::index_search_item(const char *filename, int fid)
: search_item(filename, fid), out_of_date_files(0), key_buffer(0),
filename_buffer(0), filename_buflen(0), common_words_table(0),
-#ifdef HAVE_MMAP
- map_addr((char *)-1), map_size(0),
-#endif /* HAVE_MMAP */
- buffer(0)
+ map_addr(0), map_len(0), buffer(0)
{
}
@@ -129,10 +112,10 @@ index_search_item::~index_search_item()
{
if (buffer)
free(buffer);
-#ifdef HAVE_MMAP
- if (map_addr != (char *)-1 && munmap(map_addr, map_size) < 0)
- error("munmap: %1", strerror(errno));
-#endif /* HAVE_MMAP */
+ if (map_addr) {
+ if (unmap(map_addr, map_len) < 0)
+ error("unmap: %1", strerror(errno));
+ }
while (out_of_date_files) {
search_item *tem = out_of_date_files;
out_of_date_files = out_of_date_files->next;
@@ -162,22 +145,19 @@ int index_search_item::load(int fd)
error("can't fstat `%1': %2", name, strerror(errno));
return 0;
}
- if ((sb.st_mode & S_IFMT) != S_IFREG) {
+ if (!S_ISREG(sb.st_mode)) {
error("`%1' is not a regular file", name);
return 0;
}
mtime = sb.st_mtime;
int size = int(sb.st_size);
char *addr;
-#ifdef HAVE_MMAP
- map_addr = (char *)mmap(0, size, PROT_READ, MAP_SHARED, fd, 0);
- if (map_addr != (char *)-1) {
- addr = map_addr;
- map_size = size;
- }
- else
-#endif /* HAVE_MMAP */
- {
+ map_addr = mapread(fd, size);
+ if (map_addr) {
+ addr = (char *)map_addr;
+ map_len = size;
+ }
+ else {
addr = buffer = (char *)malloc(size);
if (buffer == 0) {
error("can't allocate buffer for `%1'", name);
@@ -287,7 +267,7 @@ search_item *make_index_search_item(const char *filename, int fid)
char *index_filename = new char[strlen(filename) + sizeof(INDEX_SUFFIX)];
strcpy(index_filename, filename);
strcat(index_filename, INDEX_SUFFIX);
- int fd = open(index_filename, 0);
+ int fd = open(index_filename, O_RDONLY);
if (fd < 0)
return 0;
index_search_item *item = new index_search_item(index_filename, fid);
@@ -370,7 +350,7 @@ int index_search_item_iterator::get_tag(int tagno,
}
tag *tp = indx->tags + tagno;
const char *filename = indx->munge_filename(indx->pool + tp->filename_index);
- int fd = open(filename, 0);
+ int fd = open(filename, O_RDONLY);
if (fd < 0) {
error("can't open `%1': %2", filename, strerror(errno));
return 0;
@@ -624,7 +604,7 @@ void index_search_item::check_files()
if (stat(path, &sb) < 0)
error("can't stat `%1': %2", path, strerror(errno));
else if (sb.st_mtime > mtime) {
- int fd = open(path, 0);
+ int fd = open(path, O_RDONLY);
if (fd < 0)
error("can't open `%1': %2", path, strerror(errno));
else
diff --git a/refer/linear.c b/libbib/linear.cc
index afae2d018..079800821 100644
--- a/refer/linear.c
+++ b/libbib/linear.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,18 +15,16 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
#include <stdlib.h>
-#include <osfcn.h>
#include <assert.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <errno.h>
+#include "posix.h"
#include "lib.h"
#include "errarg.h"
#include "error.h"
diff --git a/libbib/map.c b/libbib/map.c
new file mode 100644
index 000000000..9d0f13f89
--- /dev/null
+++ b/libbib/map.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#ifdef HAVE_MMAP
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+/* The Net-2 man pages says that a MAP_FILE flag is required. */
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+
+char *mapread(fd, nbytes)
+ int fd;
+ int nbytes;
+{
+ char *p = (char *)mmap((caddr_t)0, (size_t)nbytes, PROT_READ,
+ MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
+ if (p == (char *)-1)
+ return 0;
+ /* mmap() shouldn't return 0 since MAP_FIXED wasn't specified. */
+ if (p == 0)
+ abort();
+ return p;
+}
+
+int unmap(p, len)
+ char *p;
+ int len;
+{
+ return munmap((caddr_t)p, len);
+}
+
+#else /* not HAVE_MMAP */
+
+#include <errno.h>
+
+#ifndef errno
+extern int errno;
+#endif
+
+char *mapread(fd, nbytes)
+ int fd;
+ int nbytes;
+{
+ errno = ENODEV;
+ return 0;
+}
+
+int unmap(p, len)
+ char *p;
+ int len;
+{
+ errno = EINVAL;
+ return -1;
+}
+
+#endif /* not HAVE_MMAP */
diff --git a/refer/search.c b/libbib/search.cc
index 2cee4e08d..ffdd87212 100644
--- a/refer/search.c
+++ b/libbib/search.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,15 +15,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdlib.h>
-#include <osfcn.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
+#include "posix.h"
#include "lib.h"
#include "errarg.h"
#include "error.h"
@@ -53,7 +53,7 @@ void search_list::add_file(const char *filename, int silent)
{
search_item *p = make_index_search_item(filename, next_fid);
if (!p) {
- int fd = open(filename, 0);
+ int fd = open(filename, O_RDONLY);
if (fd < 0) {
if (!silent)
error("can't open `%1': %2", filename, strerror(errno));
diff --git a/libdriver/Makefile.dep b/libdriver/Makefile.dep
new file mode 100644
index 000000000..0a675855c
--- /dev/null
+++ b/libdriver/Makefile.dep
@@ -0,0 +1,6 @@
+input.o : input.cc ../include/driver.h ../include/errarg.h \
+ ../include/error.h ../include/font.h ../include/printer.h \
+ ../include/lib.h ../include/device.h
+printer.o : printer.cc ../include/driver.h ../include/errarg.h \
+ ../include/error.h ../include/font.h ../include/printer.h \
+ ../include/lib.h
diff --git a/libdriver/Makefile.sub b/libdriver/Makefile.sub
new file mode 100644
index 000000000..1b3c09f1c
--- /dev/null
+++ b/libdriver/Makefile.sub
@@ -0,0 +1,3 @@
+LIB=driver
+OBJS=input.o printer.o
+CCSRCS=input.cc printer.cc
diff --git a/driver/input.c b/libdriver/input.cc
index cde2c34a2..ca0b87117 100644
--- a/driver/input.c
+++ b/libdriver/input.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,13 +15,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
+#include "device.h"
const char *current_filename;
int current_lineno;
+const char *device = 0;
FILE *current_file;
int get_char();
@@ -83,13 +85,12 @@ void do_file(const char *filename)
fatal("the first command must be `x T'");
char *dev = get_string();
if (pr == 0) {
- font::set_device_name(dev);
+ device = strsave(dev);
if (!font::load_desc())
fatal("sorry, I can't continue");
}
else {
- const char *d = font::get_device_name();
- if (d == 0 || strcmp(d, dev) != 0)
+ if (device == 0 || strcmp(device, dev) != 0)
fatal("all files must use the same device");
}
skip_line();
@@ -257,6 +258,7 @@ void do_file(const char *filename)
break;
case '#':
skip_line();
+ break;
case 'D':
{
if (npages == 0)
diff --git a/driver/printer.c b/libdriver/printer.cc
index f498b8cb5..c976ffcdf 100644
--- a/driver/printer.c
+++ b/libdriver/printer.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "driver.h"
@@ -68,6 +68,7 @@ void printer::load_font(int n, const char *nm)
font_table[i] = old_font_table[i];
for (i = old_nfonts; i < nfonts; i++)
font_table[i] = 0;
+ a_delete old_font_table;
}
}
font *f = find_font(nm);
diff --git a/libgroff/Makefile.dep b/libgroff/Makefile.dep
new file mode 100644
index 000000000..ca8dadbd6
--- /dev/null
+++ b/libgroff/Makefile.dep
@@ -0,0 +1,38 @@
+assert.o : assert.cc ../include/assert.h
+change_lf.o : change_lf.cc
+cmap.o : cmap.cc ../include/cmap.h
+cset.o : cset.cc ../include/cset.h
+device.o : device.cc ../include/device.h ../include/defs.h
+errarg.o : errarg.cc ../include/assert.h ../include/errarg.h
+error.o : error.cc ../include/errarg.h ../include/error.h
+fatal.o : fatal.cc
+filename.o : filename.cc
+font.o : font.cc ../include/errarg.h ../include/error.h ../include/cset.h \
+ ../include/font.h ../include/lib.h
+fontfile.o : fontfile.cc ../include/font.h ../include/lib.h \
+ ../include/searchpath.h ../include/device.h ../include/defs.h
+lf.o : lf.cc ../include/cset.h ../include/stringclass.h
+lineno.o : lineno.cc
+macropath.o : macropath.cc ../include/lib.h ../include/searchpath.h \
+ ../include/macropath.h ../include/defs.h
+nametoindex.o : nametoindex.cc ../include/lib.h ../include/errarg.h \
+ ../include/error.h ../include/font.h ../include/ptable.h
+new.o : new.cc ../include/posix.h
+prime.o : prime.cc
+progname.o : progname.cc
+ptable.o : ptable.cc ../include/ptable.h ../include/errarg.h \
+ ../include/error.h
+searchpath.o : searchpath.cc ../include/lib.h ../include/searchpath.h
+string.o : string.cc ../include/stringclass.h ../include/lib.h
+strsave.o : strsave.cc
+tmpfile.o : tmpfile.cc ../include/posix.h ../include/lib.h \
+ ../include/errarg.h ../include/error.h
+version.o : version.cc
+illegal.o : illegal.cc ../include/lib.h
+fmod.o : fmod.c
+getcwd.o : getcwd.c
+iftoa.o : iftoa.c
+itoa.o : itoa.c
+matherr.o : matherr.c
+strerror.o : strerror.c
+strtol.o : strtol.c
diff --git a/libgroff/Makefile.sub b/libgroff/Makefile.sub
new file mode 100644
index 000000000..5d9dd267d
--- /dev/null
+++ b/libgroff/Makefile.sub
@@ -0,0 +1,15 @@
+LIB=groff
+OBJS=assert.o change_lf.o cmap.o cset.o device.o errarg.o error.o fatal.o \
+ filename.o font.o fontfile.o lf.o lineno.o macropath.o nametoindex.o new.o \
+ prime.o progname.o ptable.o searchpath.o string.o strsave.o tmpfile.o \
+ iftoa.o itoa.o matherr.o version.o illegal.o $(LIBOBJS)
+CCSRCS=assert.cc change_lf.cc cmap.cc cset.cc device.cc errarg.cc error.cc \
+ fatal.cc filename.cc font.cc fontfile.cc lf.cc lineno.cc macropath.cc \
+ nametoindex.cc new.cc prime.cc progname.cc ptable.cc searchpath.cc \
+ string.cc strsave.cc tmpfile.cc version.cc illegal.cc
+CSRCS=fmod.c getcwd.c iftoa.c itoa.c matherr.c strerror.c strtol.c
+GENSRCS=version.cc
+
+version.cc: $(srcdir)/../VERSION
+ @echo Making version.cc
+ @echo const char \*version_string = \"`cat $(srcdir)/../VERSION`\"\; >$@
diff --git a/lib/assert.c b/libgroff/assert.cc
index 54b1205e9..39ec2c91d 100644
--- a/lib/assert.c
+++ b/libgroff/assert.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/lib/change_lf.c b/libgroff/change_lf.cc
index 2eb58d438..cc0fb927c 100644
--- a/lib/change_lf.c
+++ b/libgroff/change_lf.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
diff --git a/lib/cmap.c b/libgroff/cmap.cc
index b8bf84dc0..4b1a43e22 100644
--- a/lib/cmap.c
+++ b/libgroff/cmap.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <ctype.h>
diff --git a/lib/cset.c b/libgroff/cset.cc
index 9ca7bac74..9fe44d9b7 100644
--- a/lib/cset.c
+++ b/libgroff/cset.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <ctype.h>
diff --git a/libgroff/device.cc b/libgroff/device.cc
new file mode 100644
index 000000000..b86ef1e35
--- /dev/null
+++ b/libgroff/device.cc
@@ -0,0 +1,36 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdlib.h>
+#include "device.h"
+#include "defs.h"
+
+const char *device = DEVICE;
+
+struct device_init {
+ device_init();
+} _device_init;
+
+device_init::device_init()
+{
+ char *tem = getenv("GROFF_TYPESETTER");
+ if (tem)
+ device = tem;
+}
diff --git a/lib/errarg.c b/libgroff/errarg.cc
index 9ade99954..8bafa29f7 100644
--- a/lib/errarg.c
+++ b/libgroff/errarg.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,14 +15,14 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include "assert.h"
#include "errarg.h"
-errarg::errarg(const char *p) : s(p == 0 ? "(null)" : p), type(STRING)
+errarg::errarg(const char *p) : s(p ? p : "(null)"), type(STRING)
{
}
diff --git a/lib/error.c b/libgroff/error.cc
index a8dec38a0..f0c69980a 100644
--- a/lib/error.c
+++ b/libgroff/error.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/lib/fatal.c b/libgroff/fatal.cc
index 22dc670ff..2087a84ff 100644
--- a/lib/fatal.c
+++ b/libgroff/fatal.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdlib.h>
diff --git a/lib/filename.c b/libgroff/filename.cc
index 1cbaa93dd..1cbaa93dd 100644
--- a/lib/filename.c
+++ b/libgroff/filename.cc
diff --git a/lib/fmod.c b/libgroff/fmod.c
index f850867b7..74c5c36b6 100644
--- a/lib/fmod.c
+++ b/libgroff/fmod.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <math.h>
diff --git a/lib/font.c b/libgroff/font.cc
index c23432779..c91c7ee7a 100644
--- a/lib/font.c
+++ b/libgroff/font.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
@@ -449,6 +449,19 @@ font *font::load_font(const char *s)
return f;
}
+static char *trim_arg(char *p)
+{
+ if (!p)
+ return 0;
+ while (csspace(*p))
+ p++;
+ char *q = strchr(p, '\0');
+ while (q > p && csspace(q[-1]))
+ q--;
+ *q = '\0';
+ return p;
+}
+
int font::load()
{
char *path;
@@ -520,23 +533,9 @@ int font::load()
special = 1;
}
else if (strcmp(p, "kernpairs") != 0 && strcmp(p, "charset") != 0) {
- int nargv = 5;
- const char **argv = new char *[nargv];
- int argc = 0;
- do {
- if (argc < nargv) {
- const char **old_argv = argv;
- int old_nargv = nargv;
- nargv *= 2;
- argv = new char *[nargv];
- memcpy(argv, old_argv, sizeof(char*)*old_nargv);
- a_delete old_argv;
- }
- argv[argc++] = p;
- p = strtok(0, WS);
- } while (p != 0);
- handle_unknown_font_command(argc, argv);
- a_delete argv;
+ char *command = p;
+ p = strtok(0, "\n");
+ handle_unknown_font_command(command, trim_arg(p), t.path, t.lineno);
}
else
break;
@@ -714,7 +713,7 @@ int font::load_desc()
FILE *fp;
char *path;
if ((fp = open_file("DESC", &path)) == 0) {
- error("can't open `DESC'");
+ error("can't find `DESC' file");
return 0;
}
text_file t(fp, path);
@@ -850,6 +849,11 @@ int font::load_desc()
}
else if (strcmp("charset", p) == 0)
break;
+ else if (unknown_desc_command_handler) {
+ char *command = p;
+ p = strtok(0, "\n");
+ (*unknown_desc_command_handler)(command, trim_arg(p), t.path, t.lineno);
+ }
}
if (res == 0) {
t.error("missing `res' command");
@@ -882,7 +886,16 @@ int font::load_desc()
return 1;
}
-void font::handle_unknown_font_command(int, const char **)
+void font::handle_unknown_font_command(const char *, const char *,
+ const char *, int)
+{
+}
+
+FONT_COMMAND_HANDLER
+font::set_unknown_desc_command_handler(FONT_COMMAND_HANDLER func)
{
+ FONT_COMMAND_HANDLER prev = unknown_desc_command_handler;
+ unknown_desc_command_handler = func;
+ return prev;
}
diff --git a/libgroff/fontfile.cc b/libgroff/fontfile.cc
new file mode 100644
index 000000000..5353958db
--- /dev/null
+++ b/libgroff/fontfile.cc
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <errno.h>
+#include "font.h"
+#include "lib.h"
+#include "searchpath.h"
+#include "device.h"
+#include "defs.h"
+
+const char *const FONT_ENV_VAR = "GROFF_FONT_PATH";
+
+static search_path font_path(FONT_ENV_VAR, FONTPATH);
+
+int font::res = 0;
+int font::hor = 1;
+int font::vert = 1;
+int font::unitwidth = 0;
+int font::paperwidth = 0;
+int font::paperlength = 0;
+int font::biggestfont = 0;
+int font::spare2 = 0;
+int font::sizescale = 1;
+int font::tcommand = 0;
+const char **font::font_name_table = 0;
+int *font::sizes = 0;
+const char *font::family = 0;
+const char **font::style_table = 0;
+FONT_COMMAND_HANDLER font::unknown_desc_command_handler = 0;
+
+void font::command_line_font_dir(const char *dir)
+{
+ font_path.command_line_dir(dir);
+}
+
+FILE *font::open_file(const char *name, char **pathp)
+{
+ char *filename = new char[strlen(name) + strlen(device) + 5];
+ sprintf(filename, "dev%s/%s", device, name);
+ FILE *fp = font_path.open_file(filename, pathp);
+ a_delete filename;
+ return fp;
+}
diff --git a/lib/getcwd.c b/libgroff/getcwd.c
index ed1642fe0..208e81118 100644
--- a/lib/getcwd.c
+++ b/libgroff/getcwd.c
@@ -3,6 +3,9 @@
#include <sys/param.h>
#include <string.h>
#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
char *getwd();
diff --git a/lib/iftoa.c b/libgroff/iftoa.c
index a5d1532ee..ac37183a4 100644
--- a/lib/iftoa.c
+++ b/libgroff/iftoa.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,15 +14,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include "lib.h"
+#define INT_DIGITS 19 /* enough for 64-bit integer */
char *iftoa(i, decimal_point)
int i, decimal_point;
{
- /* room for a -, 10 digits, a decimal point, and a terminating '\0' */
+ /* room for a -, INT_DIGITS digits, a decimal point, and a terminating '\0' */
static char buf[INT_DIGITS + 3];
char *p = buf + INT_DIGITS + 2;
int point = 0;
diff --git a/libgroff/illegal.cc b/libgroff/illegal.cc
new file mode 100644
index 000000000..10f4d5bd7
--- /dev/null
+++ b/libgroff/illegal.cc
@@ -0,0 +1,22 @@
+#include "lib.h"
+
+// Table of illegal input characters.
+
+char illegal_char_table[256]= {
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
diff --git a/lib/itoa.c b/libgroff/itoa.c
index b970eb1a6..e10d9dcfb 100644
--- a/lib/itoa.c
+++ b/libgroff/itoa.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,15 +14,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include "lib.h"
+#define INT_DIGITS 19 /* enough for 64 bit integer */
char *itoa(i)
int i;
{
- /* Room for 10 digits, - and '\0' */
+ /* Room for INT_DIGITS digits, - and '\0' */
static char buf[INT_DIGITS + 2];
char *p = buf + INT_DIGITS + 1; /* points to terminating '\0' */
if (i >= 0) {
diff --git a/lib/lf.c b/libgroff/lf.cc
index 263d15cd0..9f1a84882 100644
--- a/lib/lf.c
+++ b/libgroff/lf.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
diff --git a/lib/lineno.c b/libgroff/lineno.cc
index f7138dba0..f7138dba0 100644
--- a/lib/lineno.c
+++ b/libgroff/lineno.cc
diff --git a/libgroff/macropath.cc b/libgroff/macropath.cc
new file mode 100644
index 000000000..d6e6774fe
--- /dev/null
+++ b/libgroff/macropath.cc
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include "lib.h"
+#include "searchpath.h"
+#include "macropath.h"
+#include "defs.h"
+
+#define MACROPATH_ENVVAR "GROFF_TMAC_PATH"
+
+search_path macro_path(MACROPATH_ENVVAR, MACROPATH);
diff --git a/lib/matherr.c b/libgroff/matherr.c
index a2a7b0b74..30cae9c87 100644
--- a/lib/matherr.c
+++ b/libgroff/matherr.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <math.h>
diff --git a/lib/nametoindex.c b/libgroff/nametoindex.cc
index 693f17e59..827e15a1e 100644
--- a/lib/nametoindex.c
+++ b/libgroff/nametoindex.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/lib/new.c b/libgroff/new.cc
index 26ffe1974..dc8f01be3 100644
--- a/lib/new.c
+++ b/libgroff/new.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,14 +14,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stddef.h>
#include <stdlib.h>
-#include <osfcn.h>
#include <string.h>
+#include "posix.h"
+
extern const char *program_name;
static void ewrite(const char *s)
@@ -29,15 +30,19 @@ static void ewrite(const char *s)
write(2, s, strlen(s));
}
-#ifdef __GNUG__
-void *__builtin_new(size_t size)
-#else
void *operator new(size_t size)
-#endif
{
+#ifdef COOKIE_BUG
+ char *p = (char *)malloc(unsigned(size + 8));
+ if (p != 0) {
+ ((unsigned *)p)[1] = 0;
+ return p + 8;
+ }
+#else /* not COOKIE_BUG */
char *p = (char *)malloc(unsigned(size));
if (p != 0)
return p;
+#endif /* not COOKIE_BUG */
if (program_name) {
ewrite(program_name);
ewrite(": ");
@@ -45,3 +50,13 @@ void *operator new(size_t size)
ewrite("out of memory\n");
_exit(-1);
}
+
+#ifdef COOKIE_BUG
+
+void operator delete(void *p)
+{
+ if (p)
+ free((void *)((char *)p - 8));
+}
+
+#endif /* COOKIE_BUG */
diff --git a/lib/prime.c b/libgroff/prime.cc
index f0b1eadcc..f0b1eadcc 100644
--- a/lib/prime.c
+++ b/libgroff/prime.cc
diff --git a/lib/progname.c b/libgroff/progname.cc
index a70e3419c..a70e3419c 100644
--- a/lib/progname.c
+++ b/libgroff/progname.cc
diff --git a/lib/ptable.c b/libgroff/ptable.cc
index d39616c14..a6086de99 100644
--- a/lib/ptable.c
+++ b/libgroff/ptable.cc
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "ptable.h"
diff --git a/libgroff/searchpath.cc b/libgroff/searchpath.cc
new file mode 100644
index 000000000..eb7a6690c
--- /dev/null
+++ b/libgroff/searchpath.cc
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992 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 2, 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 groff; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "lib.h"
+#include "searchpath.h"
+
+search_path::search_path(const char *envvar, const char *standard)
+{
+ char *e = envvar ? getenv(envvar) : 0;
+ if (e && standard) {
+ dirs = new char[strlen(e) + strlen(standard) + 2];
+ strcpy(dirs, e);
+ strcat(dirs, ":");
+ strcat(dirs, standard);
+ }
+ else
+ dirs = strsave(e ? e : standard);
+ init_len = dirs ? strlen(dirs) : 0;
+}
+
+search_path::~search_path()
+{
+ if (dirs)
+ a_delete dirs;
+}
+
+void search_path::command_line_dir(const char *s)
+{
+ if (!dirs)
+ dirs = strsave(s);
+ else {
+ char *old = dirs;
+ unsigned old_len = strlen(old);
+ unsigned slen = strlen(s);
+ dirs = new char[old_len + 1 + slen + 1];
+ memcpy(dirs, old, old_len - init_len);
+ char *p = dirs;
+ p += old_len - init_len;
+ if (init_len == 0)
+ *p++ = ':';
+ memcpy(p, s, slen);
+ p += slen;
+ if (init_len > 0) {
+ *p++ = ':';
+ memcpy(p, old + old_len - init_len, init_len);
+ p += init_len;
+ }
+ *p++ = '\0';
+ a_delete old;
+ }
+}
+
+FILE *search_path::open_file(const char *name, char **pathp)
+{
+ assert(name != 0);
+ if (*name == '/' || dirs == 0 || *dirs == '\0') {
+ FILE *fp = fopen(name, "r");
+ if (fp) {
+ if (pathp)
+ *pathp = strsave(name);
+ return fp;
+ }
+ else
+ return 0;
+ }
+ unsigned namelen = strlen(name);
+ char *p = dirs;
+ for (;;) {
+ char *end = strchr(p, ':');
+ if (!end)
+ end = strchr(p, '\0');
+ int need_slash = end > p && end[-1] != '/';
+ char *path = new char[(end - p) + need_slash + namelen + 1];
+ memcpy(path, p, end - p);
+ if (need_slash)
+ path[end - p] = '/';
+ strcpy(path + (end - p) + need_slash, name);
+#if 0
+ fprintf(stderr, "trying `%s'\n", path);
+#endif
+ FILE *fp = fopen(path, "r");
+ if (fp) {
+ if (pathp)
+ *pathp = path;
+ else
+ a_delete path;
+ return fp;
+ }
+ a_delete path;
+ if (*end == '\0')
+ break;
+ p = end + 1;
+ }
+ return 0;
+}
diff --git a/lib/strerror.c b/libgroff/strerror.c
index eec102df4..de42b8384 100644
--- a/lib/strerror.c
+++ b/libgroff/strerror.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,10 +14,12 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include "lib.h"
+#include <stdio.h>
+
+#define INT_DIGITS 19 /* enough for 64 bit integer */
extern int sys_nerr;
extern char *sys_errlist[];
diff --git a/lib/string.c b/libgroff/string.cc
index 75325ee27..e20e24906 100644
--- a/lib/string.c
+++ b/libgroff/string.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/lib/strsave.c b/libgroff/strsave.cc
index 75121dd11..5a4b5da82 100644
--- a/lib/strsave.c
+++ b/libgroff/strsave.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
diff --git a/lib/strtol.c b/libgroff/strtol.c
index 596899e86..4a1830f68 100644
--- a/lib/strtol.c
+++ b/libgroff/strtol.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,21 +14,26 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <string.h>
#include <ctype.h>
#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
-/* Not everybody has limits.h. Sigh. */
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
-#include "lib.h"
#ifndef LONG_MAX
-#define LONG_MAX INT_MAX
+#define LONG_MAX 2147483647
#endif
+
#ifndef LONG_MIN
-#define LONG_MIN INT_MIN
+#define LONG_MIN (-LONG_MAX-1)
#endif
long strtol(str, ptr, base)
diff --git a/lib/tmpfile.c b/libgroff/tmpfile.cc
index b91893204..bd6f8ad69 100644
--- a/lib/tmpfile.c
+++ b/libgroff/tmpfile.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,15 +15,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
-#include <osfcn.h>
+#include "posix.h"
#include "lib.h"
#include "errarg.h"
#include "error.h"
@@ -31,6 +31,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
extern "C" {
// Sun's stdlib.h fails to declare this.
char *mktemp(char *);
+ int mkstemp(char *);
}
// If this is set, create temporary files there
diff --git a/lkbib/Makefile.dep b/lkbib/Makefile.dep
new file mode 100644
index 000000000..b6845ea50
--- /dev/null
+++ b/lkbib/Makefile.dep
@@ -0,0 +1,2 @@
+lkbib.o : lkbib.cc ../include/lib.h ../include/errarg.h ../include/error.h \
+ ../include/defs.h ../include/refid.h ../include/search.h
diff --git a/lkbib/Makefile.sub b/lkbib/Makefile.sub
new file mode 100644
index 000000000..30035bcf0
--- /dev/null
+++ b/lkbib/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=lkbib
+MAN1=lkbib.n
+XLIBS=$(LIBBIB) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=lkbib.o
+CCSRCS=lkbib.cc
diff --git a/refer/lkbib.c b/lkbib/lkbib.cc
index 5656f04d9..d0946ccae 100644
--- a/refer/lkbib.c
+++ b/lkbib/lkbib.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,11 +15,20 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include "refer.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <assert.h>
+#include "lib.h"
+#include "errarg.h"
+#include "error.h"
+
+#include "defs.h"
#include "refid.h"
#include "search.h"
diff --git a/man/lkbib.man b/lkbib/lkbib.man
index e93d9908d..6450764c3 100644
--- a/man/lkbib.man
+++ b/lkbib/lkbib.man
@@ -1,11 +1,17 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
-.TH \*GLKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.TH LKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-\*glkbib \- search bibliographic databases
+lkbib \- search bibliographic databases
.SH SYNOPSIS
-.B \*glkbib
+.B lkbib
[
.B \-v
]
@@ -20,11 +26,11 @@
]
.IR key \|.\|.\|.
.SH DESCRIPTION
-.B \*glkbib
+.B lkbib
searches bibliographic databases for references that contain the keys
.IR key \|.\|.\|.
and prints any references found on the standard output.
-.B \*glkbib
+.B lkbib
will search any databases given by
.B \-p
options, and then a default database.
@@ -39,7 +45,7 @@ to be searched,
if an index
.IB filename @INDEX_SUFFIX@
created by
-.BR \*gindxbib (@MAN1EXT@)
+.BR @g@indxbib (@MAN1EXT@)
exists, then it will be searched instead;
each index can cover multiple databases.
.SH OPTIONS
@@ -71,7 +77,7 @@ is 6.
.SB REFER
Default database.
.SH FILES
-.TP \w'\fB@DEFAULT_INDEX@'u+2n
+.Tp \w'\fB@DEFAULT_INDEX@'u+2n
.B @DEFAULT_INDEX@
Default database to be used if the
.SB REFER
@@ -79,6 +85,6 @@ environment variable is not set.
.IB filename @INDEX_SUFFIX@
Index files.
.SH "SEE ALSO"
-.BR \*grefer (@MAN1EXT@),
-.BR \*glookbib (@MAN1EXT@),
-.BR \*gindxbib (@MAN1EXT@)
+.BR @g@refer (@MAN1EXT@),
+.BR @g@lookbib (@MAN1EXT@),
+.BR @g@indxbib (@MAN1EXT@)
diff --git a/lookbib/Makefile.dep b/lookbib/Makefile.dep
new file mode 100644
index 000000000..e6597d4ea
--- /dev/null
+++ b/lookbib/Makefile.dep
@@ -0,0 +1,2 @@
+lookbib.o : lookbib.cc ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/cset.h ../include/refid.h ../include/search.h
diff --git a/lookbib/Makefile.sub b/lookbib/Makefile.sub
new file mode 100644
index 000000000..1183812c5
--- /dev/null
+++ b/lookbib/Makefile.sub
@@ -0,0 +1,7 @@
+PROG=lookbib
+MAN1=lookbib.n
+XLIBS=$(LIBBIB) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=lookbib.o
+CCSRCS=lookbib.cc
+NAMEPREFIX=$(g)
diff --git a/refer/lookbib.c b/lookbib/lookbib.cc
index 0429d900b..c38a32b99 100644
--- a/refer/lookbib.c
+++ b/lookbib/lookbib.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/man/glookbib.man b/lookbib/lookbib.man
index 1a01f57f8..641f5bc3c 100644
--- a/man/glookbib.man
+++ b/lookbib/lookbib.man
@@ -1,11 +1,9 @@
.\" -*- nroff -*-
-.ds g g
-.ds G G
-.TH \*GLOOKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@LOOKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-\*glookbib \- search bibliographic databases
+@g@lookbib \- search bibliographic databases
.SH SYNOPSIS
-.B \*glookbib
+.B @g@lookbib
[
.B \-v
]
@@ -17,7 +15,7 @@
]
.IR filename \|.\|.\|.
.SH DESCRIPTION
-\*glookbib prints a prompt on the standard error (unless the standard input is not a terminal),
+@g@lookbib prints a prompt on the standard error (unless the standard input is not a terminal),
reads from the standard input a line containing a set of keywords,
searches the bibliographic databases
.IR filename \|.\|.\|.
@@ -30,7 +28,7 @@ to be searched,
if an index
.IB filename @INDEX_SUFFIX@
created by
-.BR \*gindxbib (@MAN1EXT@)
+.BR @g@indxbib (@MAN1EXT@)
exists, then it will be searched instead;
each index can cover multiple databases.
.SH OPTIONS
@@ -55,6 +53,6 @@ is 6.
.IB filename @INDEX_SUFFIX@
Index files.
.SH "SEE ALSO"
-.BR \*grefer (@MAN1EXT@),
-.BR \*glkbib (@MAN1EXT@),
-.BR \*gindxbib (@MAN1EXT@)
+.BR @g@refer (@MAN1EXT@),
+.BR lkbib (@MAN1EXT@),
+.BR @g@indxbib (@MAN1EXT@)
diff --git a/macros/Makefile b/macros/Makefile
deleted file mode 100644
index e9af24f06..000000000
--- a/macros/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-MACRODIR=/usr/local/lib/groff/tmac
-MACROMODE=444
-TMAC_S=gs
-STRIP=sed -e '/%beginstrip%/,$$s/[ ]*\\".*//' -e '/^\.$$/d'
-
-all:
-clean:
-distclean: clean
-realclean: distclean
-TAGS:
-
-install.nobin: all
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -for file in tmac.an tmac.andoc tmac.pic; do \
- rm -f $(MACRODIR)/$$file; \
- cp $$file $(MACRODIR)/$$file; \
- chmod $(MACROMODE) $(MACRODIR)/$$file; \
- done
- -for file in tmac.e tmac.doc tmac.doc.old; do \
- rm -f $(MACRODIR)/$$file; \
- $(STRIP) $$file >$(MACRODIR)/$$file; \
- chmod $(MACROMODE) $(MACRODIR)/$$file; \
- done
- -rm -f $(MACRODIR)/tmac.$(TMAC_S)
- cp tmac.s $(MACRODIR)/tmac.$(TMAC_S)
- chmod $(MACROMODE) $(MACRODIR)/tmac.$(TMAC_S)
- -[ -d $(MACRODIR)/mdoc ] || mkdir $(MACRODIR)/mdoc
- -for file in doc-common doc-ditroff doc-nroff doc-syms; do \
- rm -f $(MACRODIR)/mdoc/$$file; \
- $(STRIP) $$file >$(MACRODIR)/mdoc/$$file; \
- chmod $(MACROMODE) $(MACRODIR)/mdoc/$$file; \
- done
-
-install.bin:
-install: install.bin install.nobin
diff --git a/man/Makefile b/man/Makefile
deleted file mode 100644
index 296cbdef9..000000000
--- a/man/Makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-#Copyright (C) 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-MANROOT=/usr/local/man
-# MAN1EXT is the man section for user commands
-MAN1EXT=1
-MAN1DIR=$(MANROOT)/man$(MAN1EXT)
-# MAN5EXT is the man section for file formats
-MAN5EXT=5
-MAN5DIR=$(MANROOT)/man$(MAN5EXT)
-# MAN7EXT is the man section for macros
-MAN7EXT=7
-MAN7DIR=$(MANROOT)/man$(MAN7EXT)
-# FONTDIR says where to install dev*/*
-FONTDIR=/usr/local/lib/groff/font
-# FONTPATH says where to look for dev*/*
-FONTPATH=.:$(FONTDIR):/usr/lib/font
-MACRODIR=/usr/local/lib/groff/tmac
-# MACROPATH says where to look for tmac.* macro files
-MACROPATH=.:$(MACRODIR):/usr/lib/tmac
-# DEVICE is the default device
-DEVICE=ps
-# HYPHENFILE is the file containing the hyphenation patterns
-HYPHENFILE=/usr/local/lib/groff/hyphen
-# Suffix to be used for refer index files.
-INDEX_SUFFIX=.i
-# Directory containing the default refer index.
-DEFAULT_INDEX_DIR=/usr/dict/papers
-# The filename (without suffix) of the default refer index.
-DEFAULT_INDEX_NAME=Ind
-# COMMON_WORDS_FILE is a file containing a list of common words.
-COMMON_WORDS_FILE=/usr/local/lib/eign
-TMAC_S=gs
-BROKEN_SPOOLER_FLAGS=0
-SHELL=/bin/sh
-MAN1PAGES=gtroff.n gpic.n grops.n groff.n geqn.n gtbl.n psbb.n gsoelim.n \
- addftinfo.n grodvi.n grotty.n tfmtodit.n afmtodit.n grog.n \
- grefer.n gindxbib.n glookbib.n lkbib.n pfbtops.n
-MAN5PAGES=groff_font.n groff_out.n
-MAN7PAGES=groff_me.n groff_ms.n
-MANPAGES= $(MAN1PAGES) $(MAN5PAGES) $(MAN7PAGES)
-
-.SUFFIXES: .man .n
-
-.man.n:
- @echo Making $@ from $<
- @-rm -f $@
- @sed -e "s;@HYPHENFILE@;$(HYPHENFILE);g" \
- -e "s;@FONTDIR@;$(FONTDIR);g" \
- -e "s;@FONTPATH@;$(FONTPATH);g" \
- -e "s;@MACRODIR@;$(MACRODIR);g" \
- -e "s;@MACROPATH@;$(MACROPATH);g" \
- -e "s;@DEVICE@;$(DEVICE);g" \
- -e "s;@DEFAULT_INDEX@;$(DEFAULT_INDEX_DIR)/$(DEFAULT_INDEX_NAME);g" \
- -e "s;@DEFAULT_INDEX_NAME@;$(DEFAULT_INDEX_NAME);g" \
- -e "s;@INDEX_SUFFIX@;$(INDEX_SUFFIX);g" \
- -e "s;@COMMON_WORDS_FILE@;$(COMMON_WORDS_FILE);g" \
- -e "s;@MAN1EXT@;$(MAN1EXT);g" \
- -e "s;@MAN5EXT@;$(MAN5EXT);g" \
- -e "s;@MAN7EXT@;$(MAN7EXT);g" \
- -e "s;@TMAC_S@;$(TMAC_S);g" \
- -e "s;@BROKEN_SPOOLER_FLAGS@;$(BROKEN_SPOOLER_FLAGS);g" \
- -e "s;@VERSION@;`cat ../VERSION`;g" \
- -e "s;@MDATE@;`$(SHELL) mdate.sh $<`;g" \
- $< >$@
- @chmod 444 $@
-
-all: $(MANPAGES)
-
-install.nobin: $(MANPAGES)
- -[ -d $(MAN1DIR) ] || mkdir $(MAN1DIR)
- -[ -d $(MAN5DIR) ] || mkdir $(MAN5DIR)
- -[ -d $(MAN7DIR) ] || mkdir $(MAN7DIR)
- @for page in $(MAN1PAGES) ; do \
- target=$(MAN1DIR)/`basename $$page .n`.$(MAN1EXT); \
- rm -f $$target ; \
- echo cp $$page $$target ; \
- cp $$page $$target ; \
- done
- @for page in $(MAN5PAGES) ; do \
- target=$(MAN5DIR)/`basename $$page .n`.$(MAN5EXT); \
- rm -f $$target ; \
- echo cp $$page $$target ; \
- cp $$page $$target ; \
- done
- @for page in $(MAN7PAGES) ; do \
- target=$(MAN7DIR)/`basename $$page .n`.$(MAN7EXT); \
- rm -f $$target ; \
- echo cp $$page $$target ; \
- cp $$page $$target ; \
- done
-
-$(MANPAGES): ../VERSION
-
-install.bin:
-
-install: install.bin install.nobin
-
-clean:
- -rm -f $(MANPAGES)
-
-distclean: clean
-
-realclean: clean
-
-TAGS:
diff --git a/man/Makefile.sub b/man/Makefile.sub
new file mode 100644
index 000000000..9b871148e
--- /dev/null
+++ b/man/Makefile.sub
@@ -0,0 +1,2 @@
+MAN5=groff_font.n groff_out.n
+MAN7=groff_char.n
diff --git a/doc/chars.tr b/man/groff_char.man
index df91dcd54..b722f9138 100644
--- a/doc/chars.tr
+++ b/man/groff_char.man
@@ -1,9 +1,14 @@
.\" -*- nroff -*-
-.\" This document describes the standard character names used by
-.\" the groff PostScript driver.
-.if !\n(.g .ab This document requires groff.
-.\" .achar accented-char accent char
-.de achar
+.\" For best results, print this with groff.
+.ds aq \(aq
+.ie !\n(.g .if '\(aq'' .ds aq \'
+.el \{\
+. tr \(aq\(aq
+. if !c\(aq .ds aq \'
+.\}
+.if !\n(.g .ig
+.\" .Ac accented-char accent char
+.de Ac
.char \\$1 \\$3\
\k[acc]\
\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
@@ -13,36 +18,52 @@
\h'|\\\\n[acc]u'
.hcode \\$1\\$3
..
-.achar \[vc] \[ah] c
-.achar \[vC] \[ah] C
-.de HE
-.sp |1i
-.header
-..
-.de FO
-.sp |\\n(.pu-.5i
-.ev 1
-.tl ''-%-''
-.ev
-'bp
-..
-.wh -1i FO
-.br
-.sp |1i
-.wh 0 HE
-.ce 999
-.ps 12
-.vs 14
-.ft B
-Groff Character Names
-.ce 0
-.vs 12
-.ps 10
-.ft R
-.sp 1v
-.nr sep 3n
-.ta \w'\fIOutput'u+\n[sep]u +\w'\fIInput'u+\n[sep]u +\w'\fIInput'u+\n[sep]u \
-+\w'periodcentered'u+\n[sep]u
+.Ac \(vc \(ah c
+.Ac \(vC \(ah C
+.TH GROFF_CHAR @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.SH NAME
+groff_char \- groff character names
+.SH DESCRIPTION
+This manual page lists the standard
+.B groff
+input characters.
+Only the characters that are available for the device that
+is being used to print this manual page will be displayed.
+The
+.I "Input code"
+column applies to characters which can be
+input with a single character, and gives the ISO Latin-1 code
+of that input character.
+The
+.I "PostScript name\"
+column gives the usual PostScript name of the output character.
+.LP
+The ISO Latin-1 no-break space (code 0240 octal) is equivalent to
+.BR \e (space).
+All other ISO Latin-1 characters print as themselves with the following
+exceptions:
+.B \`
+prints as `,
+.B \*(aq
+prints as ';
+the corresponding ISO Latin-1 characters can be obtained with
+.B \e`
+and
+.BR \e(aq .
+The ISO Latin-1 `Hyphen, Minus Sign' (code 45) prints as a hyphen;
+a minus sign can be obtained with
+.BR \e- .
+The ISO Latin-1 `Tilde' (code 126) prints as ~;
+the larger glyph can be obtained with
+.BR \e(ti .
+The ISO Latin-1 `Circumflex Accent' (code 94) prints as ^;
+a larger glyph can be obtained with
+.BR \e(ha .
+.sp
+'nf
+.nr Sp 3n
+.ta \w'\fIOutput'u+\n(Spu +\w'\fIInput'u+\n(Spu +\w'\fIInput'u+\n(Spu \
++\w'periodcentered'u+\n(Spu
.de C0
.C \\$1 "" \\$1 \\$2 "\\$3"
..
@@ -52,56 +73,60 @@ Groff Character Names
.de C2
.C \e(\\$1 "" \\(\\$1 \\$2 "\\$3"
..
-.de C3
-.C \e[\\$1] "" \\[\\$1] \\$2 "\\$3"
-..
+.if !\n(.g .ig
.de CD
.C \[char\\$1] \\$1 \[char\\$1] \\$2 "\\$3"
..
+.do fspecial CR R
.\" input-name decimal-code output-name ps-name description
-.fspecial CR R
+.if !\n(.g .ig
.de C
.if c\\$3 \{\
.ft CR
-.tr -\-^\(ha~\(ti
+.tr `\`'\*(aq
+.in 0
.di CH
\&\\$1
.br
.di
+.in
.ft
.ds CH \\*(CH\
-.tr --^^~~
+.tr ``''
\&\\$3\t\\*(CH\t\\$2\t\\$4\t\\$5
.\}
..
-.de header
-.ft I
-Output\tInput\tInput\tPostScript\tNotes
-\tname\tcode\tname
+.if \n(.g .ig
+.de C
+.if !'\\$3'' \{\
+.ft B
+.tr `\`'\*(aq
+.in 0
+.di CH
+\&\\$1
+.br
+.di
+.in
.ft
-.sp .4v
+.ds CH \\*(CH\
+.tr ``''
+\&\\$3\t\\*(CH\t\\$2\t\\$4\t\\$5
+.\}
..
-This gives a list of the standard \fBgroff\fP input characters.
-The \fIInput code\fP column applies to characters which can be
-input with a single character, and gives the ISO Latin-1 code
-of that input character.
-All ISO Latin-1 characters print as themselves with the following
-exceptions:
-\- prints as -,
-\(ha prints as ^,
-\(ti prints as ~;
-the corresponding ISO Latin-1 characters can be obtained with
-\e\-, \e(ha and \e(ti.
-The \fIPostScript name\fP column gives the usual PostScript name
-of the output character.
-.sp .3v
-The names are based on
-E.G.Keizer, K.J. Simonsen, J. Akkerhuis,
-``An extension to the troff character set for Europe'',
-EUUG Newsletter, Volume 9, No. 2, Summer 1989.
-.sp
+.wh \n(nlu+\n(.tu-\n(.Vu Fo
+.de Fo
+'bp
+.He
+..
+.de He
+.ft I
+Output Input Input PostScript Notes
+ name code name
+.ft
+.LP
'nf
-.header
+..
+.He
.CD 33 exclam
.CD 34 quotedbl
.CD 35 numbersign
@@ -321,6 +346,7 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 Do dollar
.C2 Po sterling
.C2 Ye yen
+.C2 Fn florin
.C2 ct cent
.C2 Fo guillemotleft
.C2 Fc guillemotright
@@ -378,7 +404,7 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 fm minute "footmark, prime"
.C2 sd second
.C2 ha asciicircum "\s-2ASCII\s+2 circumflex, hat, caret"
-.C2 ti asciitilde "\s-2ASCII\s0 tilde"
+.C2 ti asciitilde "\s-2ASCII\s0 tilde, large tilde"
.C2 hy hyphen
.C2 lB bracketleft
.C2 rB bracketright
@@ -388,9 +414,12 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 ra angleright "right angle bracket"
.C2 lh handleft
.C2 rh handright
+.C2 Bq quotedblbase "low double comma quote"
+.C2 bq quotesinglbase "low single comma quote"
.C2 lq quotedblleft
.C2 rq quotedblright
.C2 oq quoteleft "single open quote"
+.C2 aq quotesingle "apostrophe quote"
.C2 or bar
.C2 at at
.C1 - minus "minus sign from current font"
@@ -430,8 +459,10 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 *d delta
.C2 *e epsilon
.C2 *f phi
+.C2 +f phi1 "variant phi"
.C2 *g gamma
.C2 *h theta
+.C2 +h theta1 "variant theta"
.C2 *i iota
.C2 *k kappa
.C2 *l lambda
@@ -439,6 +470,7 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 *n nu
.C2 *o omicron
.C2 *p pi
+.C2 +p omega1 "variant pi, looking like omega"
.C2 *q psi
.C2 *r rho
.C2 *s sigma
@@ -501,3 +533,13 @@ EUUG Newsletter, Volume 9, No. 2, Summer 1989.
.C2 /_ angle
.C2 << "" "much less"
.C2 >> "" "much greater"
+.C2 wp weierstrass "Weierstrass p"
+.C2 lz lozenge
+.C2 an arrowhorizex "horizontal arrow extension"
+.ch Fo
+.SH "SEE ALSO"
+.BR groff (@MAN1EXT@)
+.br
+.IR "An extension to the troff character set for Europe" ,
+E.G. Keizer, K.J. Simonsen, J. Akkerhuis,
+EUUG Newsletter, Volume 9, No. 2, Summer 1989
diff --git a/man/groff_font.man b/man/groff_font.man
index 1caa1c0a2..7073097ad 100644
--- a/man/groff_font.man
+++ b/man/groff_font.man
@@ -4,6 +4,12 @@
.ns
.TP \\$1
..
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH GROFF_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
groff_font \- format of groff device and font description files
@@ -99,6 +105,9 @@ where
.I m
is the number of styles.
This command may extend over more than one line.
+A font name of
+.B 0
+will cause no font to be mounted on the corresponding font position.
.TP
.BI family\ fam
The default font family is
@@ -110,7 +119,7 @@ It is allowed for the sake of backwards compatibility.
.LP
The res, unitwidth, fonts and sizes lines are compulsory.
Other commands are ignored by
-.B gtroff
+.B troff
but may be used by postprocessors to store arbitrary information
about the device in the DESC file.
.SS Font file format
@@ -155,7 +164,7 @@ the current font, it will be searched for in any special fonts that
are mounted.
.LP
Other commands are ignored by
-.B gtroff
+.B troff
but may be used by postprocessors to store arbitrary information
about the font in the font file.
.LP
@@ -221,7 +230,7 @@ is special and indicates that the character is unnamed;
such characters can only be used by means of the
.B \eN
escape sequence in
-.BR gtroff .
+.BR troff .
.LP
The
.I type
@@ -327,7 +336,7 @@ the space between them should be increased by
Most entries in kernpairs section will have a negative value for
.IR n .
.SH FILES
-.TP \w'@FONTDIR@/devname/DESC'u+3n
+.Tp \w'@FONTDIR@/devname/DESC'u+3n
.BI @FONTDIR@/dev name /DESC
Device description file for device
.IR name .
@@ -339,4 +348,4 @@ of device
.IR name .
.SH "SEE ALSO"
.BR groff_out (@MAN5EXT@),
-.BR gtroff (@MAN1EXT@).
+.BR \*gtroff (@MAN1EXT@).
diff --git a/man/groff_out.man b/man/groff_out.man
index c94f04402..9ad5389ba 100644
--- a/man/groff_out.man
+++ b/man/groff_out.man
@@ -5,10 +5,11 @@
.el .ds ic \^
.TH GROFF_OUT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-groff_out \- format of groff output
+groff_out \- groff intermediate output format
.SH DESCRIPTION
-The output format used by groff is very similar to that used
-by device-independent troff. Only the differences are documented
+This manual page describes the format output by GNU troff.
+The output format used by GNU troff is very similar to that used
+by Unix device-independent troff. Only the differences are documented
here.
.LP
The argument to the
@@ -34,7 +35,7 @@ The first three output commands are guaranteed to be:
.LP
If the
.B tcommand
-line is present in the DESC file, gtroff will use the following
+line is present in the DESC file, troff will use the following
two commands
.TP
.BI t xxx
@@ -70,7 +71,7 @@ for drivers to search special fonts to find a character.
The
.B D
drawing command has been extended.
-These extensions will only be used by gpic
+These extensions will only be used by GNU pic if the
.B \-x
option is given.
.TP
@@ -114,7 +115,7 @@ for $i = 1 ,..., n+1$, the
vertex at the current position
$+ sum from j=1 to i-1 ( dx sub j , dy sub j )$.
At the moment,
-gpic only uses this command to generate triangles and rectangles.
+GNU pic only uses this command to generate triangles and rectangles.
.TP
\fBDP\fR $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx sub n$ $dy sub n$\en
Like
@@ -125,7 +126,7 @@ but draw a solid rather than outlined polygon.
Set the current line thickness to
.I n
machine units.
-Traditionally troff drivers use a line thickness proportional to the current
+Traditionally Unix troff drivers use a line thickness proportional to the current
point size; drivers should continue to do this if no
.B Dt
command has been given, or if a
@@ -138,7 +139,7 @@ selects the smallest available line thickness.
.LP
A difficulty arises in how the current position should be changed after
the execution of these commands.
-This is not of great importance since the code generated by gpic
+This is not of great importance since the code generated by GNU pic
does not depend on this.
Given a drawing command of the form
.IP
@@ -153,7 +154,7 @@ is not one of
.B a
or
.BR ~ ,
-troff will treat each of the $x sub i$ as a horizontal quantity,
+Unix troff will treat each of the $x sub i$ as a horizontal quantity,
and each of the $y sub i$ as a vertical quantity and will assume that
the width of the drawn object is $sum from i=1 to n x sub i$,
and that the height is $sum from i=1 to n y sub i$.
@@ -167,7 +168,7 @@ command in a \ew escape sequence.)
This rule also holds for all the original drawing commands
with the exception of
.BR De .
-For the sake of compatibility gtroff also follows this rule,
+For the sake of compatibility GNU troff also follows this rule,
even though it produces an ugly result in the case of the
.BR Df ,
.BR Dt ,
@@ -188,8 +189,7 @@ There is a continuation convention which permits the argument to the
command to contain newlines:
when outputting the argument to the
.B x\ X
-command,
-.B gtroff
+command, GNU troff
will follow each newline in the argument with a
.B +
character
diff --git a/man/mdate.sh b/mdate.sh
index 4d89166be..b7d9b532c 100755
--- a/man/mdate.sh
+++ b/mdate.sh
@@ -6,7 +6,10 @@
LANGUAGE=
-(date; ls -l $1) | awk '
+
+(date;
+if ls -L /dev/null 1>/dev/null 2>&1; then ls -L -l $1; else ls -l $1; fi
+) | awk '
BEGIN {
full["Jan"] = "January"; number["Jan"] = 1;
full["Feb"] = "February"; number["Feb"] = 2;
diff --git a/mm/ChangeLog b/mm/ChangeLog
index d259f5312..cfc72fd0d 100644
--- a/mm/ChangeLog
+++ b/mm/ChangeLog
@@ -1,3 +1,31 @@
+Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.04
+ * page-break in .EQ moved.
+ * changed unit for footer-size and header-size from units to lines.
+ Fixes problems with .S and page-breaks.
+ * \n[%] is now treated as a string, wich makes it possible
+ to assign new formats to it. Unfortunately, it was necessary
+ to change the page-number-variable in GETPN to a string.
+ * Makefile.sub included. (Thank you, James)
+
+Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.03
+ * Typo and centering in DS/DE fixed.
+ Even and odd pageheaders were reversed.
+ Thanks to Paul Eggert.
+ * LI: pad and mark-indent was lost in some earlier versions. Now fixed.
+ * fixed bug in reference to .FG, .TB, ...
+ * APP did not clear headercounters.
+ * Pointsize in titles is now only set at the beginning and
+ when PH, PF, OH, OF, EH and EF are used.
+
+Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.02
+ * OP fixed.
+
Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.01
@@ -6,6 +34,9 @@ Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se)
* figure titles and friends fixed, now possible with many .FG
in a DS/DE. Didn't always position correctly in previous version,
but is now always printed as it should.
+ * Makefile fixed for Ultrix.
+ * DS/DF could not handle empty arguments correct
+ * Missing .br i EQ added.
Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se)
diff --git a/mm/Makefile b/mm/Makefile
deleted file mode 100644
index 4722c3303..000000000
--- a/mm/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-#Copyright (C) 1991 Free Software Foundation, Inc.
-# Written by Joergen Haegg (jh@efd.lth.se)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-MACRODIR=/usr/local/lib/groff/tmac
-MMDIR=$(MACRODIR)/mm
-#TMAC_M=gm
-TMAC_M=m
-# MAN7EXT is the man section for macros
-MAN7EXT=7
-MAN7DIR=/usr/local/man/man$(MAN7EXT)
-# MAN1EXT is the man section for user commands
-MAN1EXT=1
-SHELL=/bin/sh
-
-FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
-# local configurationfiles with defaultvalues.
-LOCALE = locale se_locale
-
-.SUFFIXES: .man .n
-
-.man.n:
- @echo Making $@ from $<
- @-rm -f $@
- @sed -e "s;@MACRODIR@;$(MACRODIR);g" \
- -e "s;@MAN1EXT@;$(MAN1EXT);g" \
- -e "s;@MAN7EXT@;$(MAN7EXT);g" \
- -e "s;@TMAC_MDIR@;$(MMDIR);g" \
- -e "s;@TMAC_M@;$(TMAC_M);g" \
- -e "s;@VERSION@;`cat ../VERSION`;g" \
- -e "s;@MDATE@;`$(SHELL) ../man/mdate.sh $<`;g" \
- $< >$@
- @chmod 444 $@
-
-all: groff_mm.n groff_mmse.n
-
-groff_mm.n: ../VERSION
-
-tar:
- tar cvf mm.tar tmac* mm *.man Makefile ChangeLog README NOTES
-clean:
- -rm -f groff_mm.n groff_mmse.n
-
-distclean: clean
-realclean: distclean
-
-TAGS:
-
-install.nobin: install.m all
- -[ -d $(MACRODIR)/mm ] || mkdir $(MACRODIR)/mm
- for f in $(FILES); do \
- rm -f $(MACRODIR)/mm/$$f; \
- cp mm/$$f $(MACRODIR)/mm; \
- done
- for f in $(LOCALE); do \
- [ -f $(MACRODIR)/mm/$$f ] || touch $(MACRODIR)/mm/$$f; \
- done
- -[ -d $(MAN7DIR) ] || mkdir $(MAN7DIR)
- -rm -f $(MAN7DIR)/groff_mm.$(MAN7EXT)
- cp groff_mm.n $(MAN7DIR)/groff_mm.$(MAN7EXT)
- -rm -f $(MAN7DIR)/groff_mmse.$(MAN7EXT)
- cp groff_mmse.n $(MAN7DIR)/groff_mmse.$(MAN7EXT)
-
-install.m:
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.$(TMAC_M)
- cp tmac.m $(MACRODIR)/tmac.$(TMAC_M)
- -rm -f $(MACRODIR)/tmac.$(TMAC_M)se
- sed 's/@TMAC_M@/$(TMAC_M)/' tmac.mse >$(MACRODIR)/tmac.$(TMAC_M)se
-
-install.bin:
-
-install: install.bin install.nobin
diff --git a/mm/Makefile.sub b/mm/Makefile.sub
new file mode 100644
index 000000000..58c90b9fa
--- /dev/null
+++ b/mm/Makefile.sub
@@ -0,0 +1,26 @@
+MAN7=groff_mm.n groff_mmse.n
+FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
+# Local configuration files with default values.
+LOCALE = locale se_locale
+CLEANADD=temp
+install: install_mm
+
+install_mm: install_m
+ -test -d $(tmacdir)/mm || mkdir $(tmacdir)/mm
+ -for f in $(FILES); do \
+ rm -f $(tmacdir)/mm/$$f; \
+ $(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \
+ done
+ -for f in $(LOCALE); do \
+ test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \
+ done
+
+install_m:
+ -test -d $(tmacdir) || mkdir $(tmacdir)
+ -rm -f $(tmacdir)/tmac.$(tmac_m)
+ $(INSTALL_DATA) $(srcdir)/tmac.m $(tmacdir)/tmac.$(tmac_m)
+ -rm -f temp
+ sed 's/@TMAC_M@/$(tmac_m)/' $(srcdir)/tmac.mse >temp
+ -rm -f $(tmacdir)/tmac.$(tmac_m)se
+ $(INSTALL_DATA) temp $(tmacdir)/tmac.$(tmac_m)se
+ -rm -f temp
diff --git a/mm/groff_mm.man b/mm/groff_mm.man
index 922665e5a..21cb2d27b 100644
--- a/mm/groff_mm.man
+++ b/mm/groff_mm.man
@@ -86,13 +86,13 @@ It is defined in the cover file.
.B "GETHN refname [varname]"
Includes the headernumber where the corresponding \fBSETR\fP \fIrefname\fP
was placed. Will be X.X.X. in pass 1. See \fBINITR\fP.
-If varname is used, \fBGETHN\fP sets the variable \fIvarname\fP to the
+If varname is used, \fBGETHN\fP sets the stringvariable \fIvarname\fP to the
headernumber.
.TP
.B "GETPN refname [varname]"
Includes the pagenumber where the corresponding \fBSETR\fP \fIrefname\fP
was placed. Will be 9999 in pass 1. See \fBINITR\fP.
-If varname is used, \fBGETPN\fP sets the variable \fIvarname\fP
+If varname is used, \fBGETPN\fP sets the stringvariable \fIvarname\fP
to the pagenumber.
.TP
.B "GETR refname"
@@ -108,7 +108,7 @@ and contains the page and headernumber.
.B "GETST refname [varname]"
Includes the string saved with the second argument to \fB.SETR\fP.
Will be dummystring in pass 1.
-If varname is used, \fBGETST\fP sets the variable \fIvarname\fP to the
+If varname is used, \fBGETST\fP sets the stringvariable \fIvarname\fP to the
saved string. See \fBINITR\fP.
.TP
.B "INITR filename"
@@ -648,11 +648,11 @@ Jörgen Hägg, Lund Institute of Technology, Sweden <jh@efd.lth.se>
.TP
.B @TMAC_MDIR@locale
.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@)
+.BR @PROG_PREFIX@roff (@MAN1EXT@),
+.BR @PROG_PREFIX@troff (@MAN1EXT@),
+.BR @PROG_PREFIX@tbl (@MAN1EXT@),
+.BR @PROG_PREFIX@pic (@MAN1EXT@),
+.BR @PROG_PREFIX@eqn (@MAN1EXT@)
.br
.BR mm (@MAN7EXT@)
.BR m@TMAC_M@se (@MAN7EXT@)
diff --git a/mm/groff_mmse.man b/mm/groff_mmse.man
index 0ee51c7c0..32612e800 100644
--- a/mm/groff_mmse.man
+++ b/mm/groff_mmse.man
@@ -24,10 +24,10 @@ Jörgen Hägg, Lunds Tekniska Högskola <jh@efd.lth.se>
.B @MACRODIR@/tmac.@TMAC_M@se
.B @TMAC_MDIR@/se_*.cov
.SH "SE OCKSÅ"
-.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@)
+.BR @PROG_PREFIX@roff (@MAN1EXT@),
+.BR @PROG_PREFIX@troff (@MAN1EXT@),
+.BR @PROG_PREFIX@tbl (@MAN1EXT@),
+.BR @PROG_PREFIX@pic (@MAN1EXT@),
+.BR @PROG_PREFIX@eqn (@MAN1EXT@)
.br
.BR m@TMAC_M@ (@MAN7EXT@)
diff --git a/mm/mm/ms.cov b/mm/mm/ms.cov
index c88645f45..03cee9f6e 100644
--- a/mm/mm/ms.cov
+++ b/mm/mm/ms.cov
@@ -77,7 +77,7 @@
.pg@enable-top-trap
.bp 1
.pg@enable-trap
-.if \\n[cov*abs-arg] \{\
+.if d cov*abs-arg .if \\n[cov*abs-arg] \{\
. cov@print-abstract ABSTRACT
. SP 2
.\}
diff --git a/mm/tmac.m b/mm/tmac.m
index c156df74f..55128dc43 100644
--- a/mm/tmac.m
+++ b/mm/tmac.m
@@ -1,5 +1,5 @@
.\" Version:
-.ds RE 1.01
+.ds RE 1.04
.ig
Copyright (C) 1991 Free Software Foundation, Inc.
mgm is written by Jörgen Hägg (jh@efd.lth.se)
@@ -196,7 +196,7 @@ Index array!index
.ds MO11 November
.ds MO12 December
.\" for GETR
-.ds Qrf See chapter \\*[Qrfh], page \\n[Qrfp].
+.ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp].
.\" test for mgm macro. This can be used if the text must test
.\" what macros is used.
.nr .mgm 1
@@ -563,7 +563,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. ds hd*toc-mark
.\}
.\"
-.if \\n[D]>1 .tm At header \\*[hd*toc-mark]
+.if \\n[D]>1 .tm At header \\*[hd*toc-mark] "\\$2"
.nr hd*htype 0 \" hd*htype = check break and space
. \" 0 = run-in, 1 = break only, 2 = space
.if \\n[hd*level]<=\\n[Hb] .nr hd*htype 1
@@ -665,27 +665,30 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr pg*top-margin 0
.nr pg*foot-margin 0
.nr pg*block-size 0
-.nr pg*footer-size 4v\" 1v+footer+even/odd footer+1v
-.nr pg*header-size 7v\" 3v+header+even/odd header+2v
+.nr pg*footer-size 5\" 1v+footer+even/odd footer+2v
+.nr pg*header-size 7\" 3v+header+even/odd header+2v
.nr ft*note-size 0
.nr pg*cur-column 0
.nr pg*cols-per-page 1
.nr pg*cur-po \n[@po]
.nr pg*head-mark 0
+.\"
+.nr pg*ps \n[@ps]
+.nr pg*vs \n[@vs]
.\" compatibility reasons. Why not use %??
.aln P %
.\"-------------------------
.\" footer traps: set, enable and disable
.de pg@set-new-trap
-.nr pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u)
-.if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u) = \\n[pg*foot-trap]
+.nr pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v)
+.if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v) = \\n[pg*foot-trap]
.\" last-pos points to the position of the footer and bottom
.\" block below foot-notes.
-.nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u)
+.nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v)
..
.de pg@enable-trap
.wh \\n[pg*foot-trap]u pg@footer
-.if \\n[D]>2 .tm pg@enable-trap .t=\\n[.t]
+.if \\n[D]>2 .tm pg@enable-trap .t=\\n[.t] nl=\\n[nl]
..
.de pg@disable-trap
.ch pg@footer
@@ -727,20 +730,20 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"------------------------------------------------------------
.\" HEADER
.de pg@header
-.if \\n[D]>1 .tm \\n[.F]:\\n[c.]: header for page# \\n[%]
+.if \\n[D]>1 .tm Page# \\n[%] (\\n[.F]:\\n[c.])
.if \\n[Idxf] \{\
.tl '<pagenr\ \\n[%]>'''
.\}
.if \\n[pg*top-enabled] \{\
. if \\n[pg*top-margin] .sp \\n[pg*top-margin]u
. ev pg*tl-ev
-. init@reset
+. pg@set-env
. ie !d TP \{\
' sp 3
. lt \\n[@ll]u
. tl \\*[pg*header]
-. ie \\n[%]%2 .tl \\*[pg*even-header]
-. el .tl \\*[pg*odd-header]
+. ie o .tl \\*[pg*odd-header]
+. el .tl \\*[pg*even-header]
' sp 2
. \}
. el .TP
@@ -796,10 +799,10 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"
.\" print the footer and eject new page
.ev pg*tl-ev
-.init@reset
+.pg@set-env
.lt \\n[@ll]u
-.ie \\n[%]%2 .tl \\*[pg*even-footer]
-.el .tl \\*[pg*odd-footer]
+.ie o .tl \\*[pg*odd-footer]
+.el .tl \\*[pg*even-footer]
.tl \\*[pg*footer]
.ev
.ie (\\n[ds*fnr]>=\\n[ds*o-fnr]):\\n[ft*exist] \{\
@@ -809,25 +812,41 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\}
.el 'bp
..
+.\"-------------------------
.\"
+.\" Initialize the title environment
+.de pg@set-env
+'na
+'nh
+'in 0
+'ti 0
+'ps \\n[pg*ps]
+'vs \\n[pg*vs]
+..
.\"-------------------------
.de PH
.ds pg*header "\\$1
+.pg@set-new-size
..
.de PF
.ds pg*footer "\\$1
+.pg@set-new-size
..
.de OH
.ds pg*odd-header "\\$1
+.pg@set-new-size
..
.de EH
.ds pg*even-header "\\$1
+.pg@set-new-size
..
.de OF
.ds pg*odd-footer "\\$1
+.pg@set-new-size
..
.de EF
.ds pg*even-footer "\\$1
+.pg@set-new-size
..
.de pg@clear-hd
.ds pg*even-header
@@ -839,6 +858,11 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.ds pg*odd-footer
.ds pg*footer
..
+.de pg@set-new-size
+.nr pg*ps \\n[@ps]
+.nr pg*vs \\n[@vs]
+.pg@move-trap
+..
.\"-------------------------
.\" end of page processing
.de pg@footnotes
@@ -957,7 +981,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
..
.\"-----------
.de OP
-.SK 1+(\\n[%]%2)
+.br
+.ie o .if !\\n[pg*head-mark]=\\n[nl] .bp +2
+.el .bp
..
.\"########### module footnotes ###################
.nr ft*note-size 0
@@ -1131,16 +1157,17 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\" nested DS/DE is allowed. No limit on depth.
.de DS
.br
-.ds@start 0 DS \\$*
+.ds@start 0 DS \\$@
..
.\" floating display start
.\" nested DF/DE is not allowed.
.de DF
.if \\n[ds*lvl] .@error "DF:nested floating is not allowed. Use DS."
-.ds@start 1 DF \\$*
+.ds@start 1 DF \\$@
..
.\"---------------
.nr ds*format 0\" dummy value for .En/.EQ
+.nr ds*format! 0\" no indent
.nr ds*format!0 0\" no indent
.nr ds*format!L 0\" no indent
.nr ds*format!I 1\" indent
@@ -1154,6 +1181,12 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr ds*format!RB 5\" right justify as block
.nr ds*format!5 5\" right justify as block
.\"---------------
+.nr ds*fill! 0\" no fill
+.nr ds*fill!N 0\" no fill
+.nr ds*fill!0 0\" no fill
+.nr ds*fill!F 1\" fill on
+.nr ds*fill!1 1\" fill on
+.\"---------------
.de ds@start
.nr ds*ffloat \\$1
.ds ds*type \\$2
@@ -1166,22 +1199,17 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\}
.el .nr ds*format 0
.\" fill or not to fill, that is the...
-.nr ds*fill -1
+.nr ds*fill 0
.ie \\n[.$]>1 \{\
-. if '\\$2'N' .nr ds*fill 0
-. if '\\$2'0' .nr ds*fill 0
-. if '\\$2'F' .nr ds*fill 1
-. if '\\$2'1' .nr ds*fill 1
-. if \\n[ds*fill]<0 .@error "\\*[ds*type]:wrong fill:\\$2"
+. ie r ds*fill!\\$2 .nr ds*fill \\n[ds*fill!\\$2]
+. el .@error "\\*[ds*type]:wrong fill:\\$2"
.\}
-.el .nr ds*fill 0
.nr ds*rindent 0
.if \\n[.$]>2 .nr ds*rindent \\$3
.\"
.\"
.nr ds*old-ll \\n[.l]
.misc@push ds-ll \\n[.l]
-.misc@push ds-vs \\n[.v]
.misc@push ds-form \\n[ds*format]
.misc@push ds-ffloat \\n[ds*ffloat]
.nr ds*i \\n[.i]
@@ -1204,7 +1232,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. ll -\\n[Si]n
' in +\\n[Si]n
.\}
-.if (\\n[ds*format]=3)&(\\n[ds*format]=5) 'in 0
+.if (\\n[ds*format]=3):(\\n[ds*format]=5) 'in 0
..
.\"---------------
.de DE
@@ -1215,7 +1243,6 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr ds*width \\n[dl]
.nr ds*height \\n[dn]
.misc@pop-nr ds-ll ds*old-ll
-.misc@pop-nr ds-vs ds*old-vs
.misc@pop-nr ds-form ds*format
.misc@pop-nr ds-ffloat ds*ffloat
.if (\\n[ds*format]>=2)&(\\n[ds*width]>\\n[ds*old-ll]) \{\
@@ -1226,9 +1253,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"
'in 0
'nf
-.if \\n[ds*format]=2 'ce \\n[ds*height]/\\n[ds*old-vs]
+.if \\n[ds*format]=2 'ce 9999
.if \\n[ds*format]=3 'in (u;(\\n[ds*old-ll]-\\n[ds*width])/2)
-.if \\n[ds*format]=4 'rj \\n[ds*height]/\\n[ds*old-vs]
+.if \\n[ds*format]=4 'rj 9999
.if \\n[ds*format]=5 'in (u;\\n[ds*old-ll]-\\n[ds*width])
.\"
.ie !\\n[ds*ffloat] \{\
@@ -1236,7 +1263,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. \" Print static display
. \" Eject page if display will fit one page and
. \" there are less than half of the page left.
-. nr ds*i \\n[pg*foot-trap]-\\n[pg*header-size]
+. nr ds*i \\n[pg*foot-trap]-\\n[pg*header-size]v
. if (\\n[ds*height]>\\n[ds*i])&(\\n[.t]<(\\n[ds*i]/2)) \{\
. ne \\n[.t]u+1v
. \}
@@ -1252,6 +1279,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. SP \\n[Lsp]u
. di
.\}
+.if \\n[ds*format]=2 'ce 0
+.if \\n[ds*format]=4 'rj 0
.rm ds*div!\\n[ds*snr]
.nr ds*snr -1
.nr par@ind-flag 0
@@ -1403,41 +1432,21 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.if \\n[.$]=2 .ds li*c-mark \\$1\ \\*[li*c-mark]
.if '\\*[li*c-mark]'\ ' .ds li*c-mark
.\"
+.\" determine where the text begins
.nr li*text-begin \\n[li*tind]>?\w'\\*[li*c-mark]\ '
+.\"
+.\" determine where the mark begin
+.ie !\\n[li*pad] .nr li*in \\n[li*mind]
+.el .nr li*in \\n[li*text-begin]-\\n[li*pad]-\w'\\*[li*c-mark]'
+.if !\\n[li*in] .nr li*in 0
+.\"
.ti -\\n[li*tind]u
.\" no indentation if hanging indent
.if (\w'\\*[li*c-mark]'=0)&((\\n[.$]=0):(\w'\\$1'=0)) .nr li*text-begin 0
-\Z'\&\\*[li*c-mark]'\h'\\n[li*text-begin]u'\&\c
+\Z'\&\h'\\n[li*in]u'\\*[li*c-mark]'\h'\\n[li*text-begin]u'\&\c
.if \\n[li*type]=-1 .br
..
.\"
-.\"
-.ig
-.nr li*c-tind \\n[li*tind]
-.if \\n[li*type]:\w'\\*[li*mark]' \{\
-. ie \\n[li*pad] .nr li*c-tind \\n[li*pad]u+\w'\\*[li*c-mark]'u)
-. el .nr li*c-tind \\n[li*tind]-\\n[li*mind]
-.\}
-.\" Give hanging row if arg1=="" or null and mark is empty
-.ie (\w'\\*[li*c-mark]'=0)&((\\n[.$]=0):(\w'\\$1'=0)) \{\
-. ti -\\n[li*tind]u
-.\}
-.el \{\
-. \" don't break if arg too big
-. ie (\w'\\*[li*c-mark]'>\\n[li*tind])&(\\n[li*type]>-1) \{\
-. ti -\\n[li*tind]u
-\&\\*[li*c-mark] \c
-. \}
-. el \{\
-. ie \\n[li*c-tind]>\\n[li*tind] .ti -\\n[li*tind]u
-. el .ti -\\n[li*c-tind]u
-\&\\*[li*c-mark]
-. br
-. \" break line if .BVL or no text between two .LI
-. if \\n[li*type]>-1 .sp -1
-. \}
-.\}
-..
.\"-------------
.de li@pop
.nr li*lvl -1
@@ -1466,6 +1475,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"-------------
.de AL
.if \\n[.$]>3 .@error "AL: too many arguments"
+.if \\n[D]>2 .tm AL $*
.ie \\n[.$]<=1 .LB \\n[Li] 0 2 1 "\\$1"
.el \{\
. ie \\n[.$]=2 .LB 0\\$2 0 2 1 "\\$1"
@@ -1477,6 +1487,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
..
.de ML
.if \\n[.$]>3 .@error "ML: too many arguments"
+.if \\n[D]>2 .tm ML $*
.nr li*ml-width \w'\\$1'u+1n
.if \\n[.$]<2 .LB \\n[li*ml-width]u 0 1 0 "\\$1"
.if \\n[.$]=2 .LB 0\\$2 0 1 0 "\\$1"
@@ -1486,6 +1497,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\}
..
.de VL
+.if \\n[D]>2 .tm VL $*
.if \\n[.$]>3 .@error "VL: too many arguments"
.if \\n[.$]<1 .@error "VL: missing text-indent"
.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 0
@@ -1493,6 +1505,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
..
.\" Bullet (for .BL)
.de BL
+.if \\n[D]>2 .tm BL $*
.ds BU \s-2\(bu\s0
.if \\n[.$]>2 .@error "BL: too many arguments"
.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \\*[BU]
@@ -1503,6 +1516,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\}
..
.de DL
+.if \\n[D]>2 .tm DL $*
.if \\n[.$]>2 .@error "DL: too many arguments"
.if \\n[.$]<=1 .LB \\n[Pi] 0 1 0 \(em
.if \\n[.$]=1 .LB 0\\$1 0 1 0 \(em
@@ -1512,6 +1526,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\}
..
.de RL
+.if \\n[D]>2 .tm RL $*
.if \\n[.$]>2 .@error "RL: too many arguments"
.if \\n[.$]<1 .LB 6 0 2 4
.if \\n[.$]=1 .LB 0\\$1 0 2 4
@@ -1522,6 +1537,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
..
.\" Broken Variable List. As .VL but text begin on the next line
.de BVL
+.if \\n[D]>2 .tm BVL $*
.if \\n[.$]>3 .@error "BVL: too many arguments"
.if \\n[.$]<1 .@error "BVL: missing text-indent"
.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 -1
@@ -1621,6 +1637,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.ta
.\" equation with lable.
.if \\n[dl] \{\
+. br
. chop eq*div
. ie (\\n[Eq]%2) \{\
. \" lable to the left
@@ -1816,7 +1833,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. if 0\\$6=1 .ds lix*lable \\*[Li\\$1]\ \\$3\\$5\\*[lix*ds-form]
. if 0\\$6=2 .ds lix*lable \\*[Li\\$1]\ \\$5\\*[lix*ds-form]
.\}
-.nr lix*pgnr \\n[%]
+.ds lix*pgnr \\n[%]
.\" print line if not between DS/DE
.ie \\n[ds*lvl]<1 .lix@print-text "\\*[lix*lable]" "\\*[lix*text]"
.el .lix@embedded-text "\\*[lix*lable]" "\\*[lix*text]"
@@ -1824,7 +1841,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\" save line for LIST OF XXX
.if !r lix*wth\\$1 .nr lix*wth\\$1 0
.if \w'\\*[lix*lable]'>\\n[lix*wth\\$1] .nr lix*wth\\$1 \w'\\*[lix*lable]'
-.if \\n[\\$2] .lix@ds-save \\$1 \\n[lix*pgnr] "\\$4" "\\*[lix*lable]"
+.if \\n[\\$2] .lix@ds-save \\$1 \\*[lix*pgnr] "\\$4" "\\*[lix*lable]"
.if !'\\$7'' .SETR \\$7 \\$3
..
.\"-----------
@@ -2061,6 +2078,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. ds app*ind \\n+[app*nr]
. nr H1 \\n+[app*dnr]
.\}
+.\" clear lower counters
+.nr app*i 1 1
+.while \\n+[app*i]<8 .nr H\\n[app*i] 0 1
..
.\"------------
.de app@index
@@ -2165,7 +2185,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.el .ds cov*new-date \\*[MO\\n[mo]] \\n[dy], 19\\n[yr]
.als DT cov*new-date
.de ND
-.pg@disable-top-trap
+.\" don't remember why I did this: .pg@disable-top-trap
.ds cov*new-date \\$1
..
.\"-------------------
@@ -2251,13 +2271,13 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
. \" heading-number
. ds \\*[qrf*name]-hn \\*[hd*toc-mark]
. \" page-number
-. nr \\*[qrf*name]-pn \\n[%]
+. ds \\*[qrf*name]-pn \\n[%]
. \"
. \" append to file
. opena qrf*stream \\*[qrf*file].tmp
. write qrf*stream .ds \\*[qrf*name]-hn \\*[hd*toc-mark]
-. write qrf*stream .nr \\*[qrf*name]-pn \\n[%]
-. if !'\\$2'' write qrf*stream .ds \\*[qrf*name]-xx \\$2
+. write qrf*stream .ds \\*[qrf*name]-pn \\n[%]
+. if !'\\$2'' .write qrf*stream .ds \\*[qrf*name]-xx \\$2
. close qrf*stream
. \}
.\}
@@ -2303,10 +2323,10 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.if !r qrf*pass .tm "GETPN: No .INITR in this file"
.ds qrf*name qrf*ref-\\$1
.ie \\n[qrf*pass]=2 \{\
-. ie !r \\*[qrf*name]-pn .tm "GETPN:\\$1 not defined"
+. ie !d \\*[qrf*name]-pn .tm "GETPN:\\$1 not defined"
. el \{\
-. ie \\n[.$]>1 .nr \\$2 \\n[\\*[qrf*name]-pn]
-. el \\n[\\*[qrf*name]-pn]\c
+. ie \\n[.$]>1 .ds \\$2 \\*[\\*[qrf*name]-pn]
+. el \\*[\\*[qrf*name]-pn]\c
. \}
.\}
.el 9999\c
diff --git a/mm/tmac.mse b/mm/tmac.mse
index d27b618c2..315d684d2 100644
--- a/mm/tmac.mse
+++ b/mm/tmac.mse
@@ -1,5 +1,5 @@
.\" swedish version of mm
-.\" for mgm version 1.00
+.\" for mgm version 1.04
.mso tmac.m
.ds @language se
.\"
@@ -22,7 +22,7 @@
.ds Liex Uppställning
.ds Liec Ekvation
.ds Licon Innehållsförteckning
-.ds Qrf Se kapitel \\*[Qrfh], sidan \\n[Qrfp].
+.ds Qrf Se kapitel \\*[Qrfh], sidan \\*[Qrfp].
.ds Rp Referenser
.\"
.ds MO1 januari
@@ -39,3 +39,4 @@
.ds MO12 december
.ie \\n[yr]<50 .ds cov*new-date \\n[dy] \\*[MO\\n[mo]] 20\\n[yr]
.el .ds cov*new-date \\n[dy] \\*[MO\\n[mo]] 19\\n[yr]
+.nr pg*footer-size 4\" 1v+footer+even/odd footer+1v
diff --git a/nroff/Makefile.sub b/nroff/Makefile.sub
new file mode 100644
index 000000000..63d12e1a1
--- /dev/null
+++ b/nroff/Makefile.sub
@@ -0,0 +1,6 @@
+MAN1=nroff.n
+NAMEPREFIX=$(g)
+
+install_data: nroff.sh
+ -rm -f $(bindir)/$(NAMEPREFIX)nroff
+ $(INSTALL_PROGRAM) $(srcdir)/nroff.sh $(bindir)/$(NAMEPREFIX)nroff
diff --git a/nroff/nroff.man b/nroff/nroff.man
new file mode 100644
index 000000000..c64f8ea24
--- /dev/null
+++ b/nroff/nroff.man
@@ -0,0 +1,58 @@
+.TH @G@NROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.SH NAME
+@g@nroff \- emulate nroff command with groff
+.SH SYNOPSIS
+.B @g@nroff
+[
+.B \-hi
+]
+[
+.BI \-m name
+]
+[
+.BI \-n num
+]
+[
+.BI \-o list
+]
+[
+.BI \-r cn
+]
+[
+.BI \-T name
+]
+[
+.I file\|.\|.\|.
+]
+.SH DESCRIPTION
+The
+.B @g@nroff
+script emulates the
+.B nroff
+command using groff.
+The
+.B \-T
+option with an argument other than
+.B ascii
+and
+.B latin1
+will be ignored.
+The
+.B \-h
+option
+is equivalent to the
+.B grotty
+.B \-h
+option.
+Other options are as described in
+.BR @g@troff (@MAN1EXT@).
+In addition the
+.BR \-e ,
+.B \-q
+and
+.B \-s
+options are silently ignored.
+.SH "SEE ALSO"
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR grotty (@MAN1EXT@)
diff --git a/nroff/nroff.sh b/nroff/nroff.sh
new file mode 100755
index 000000000..98e9bbec4
--- /dev/null
+++ b/nroff/nroff.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Emulate nroff with groff.
+
+prog="$0"
+T=-Tascii
+opts=
+
+for i
+do
+ case $1 in
+ -h)
+ opts="$opts -P-h"
+ ;;
+ -[eq]|-s*)
+ # ignore these options
+ ;;
+ -[mrnoT])
+ echo "$prog: option $1 requires an argument" >&2
+ exit 1
+ ;;
+ -i|-[mrno]*)
+ opts="$opts $1";
+ ;;
+
+ -Tascii|-Tlatin1)
+ T=$1
+ ;;
+ -T*)
+ # ignore other devices
+ ;;
+ --)
+ shift
+ break
+ ;;
+ -)
+ break
+ ;;
+ -*)
+ echo "$prog: invalid option $1" >&2
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+# This shell script is intended for use with man, so warnings are
+# probably not wanted. Also load nroff-style character definitions.
+exec groff -Wall -mtty-char $T $opts ${1+"$@"}
diff --git a/pfbtops/Makefile.dep b/pfbtops/Makefile.dep
new file mode 100644
index 000000000..2cc41ed5a
--- /dev/null
+++ b/pfbtops/Makefile.dep
@@ -0,0 +1 @@
+pfbtops.o : pfbtops.c
diff --git a/pfbtops/Makefile.sub b/pfbtops/Makefile.sub
new file mode 100644
index 000000000..a06748e77
--- /dev/null
+++ b/pfbtops/Makefile.sub
@@ -0,0 +1,5 @@
+PROG=pfbtops
+MAN1=pfbtops.n
+OBJS=pfbtops.o
+CSRCS=pfbtops.c
+XLIBS=$(LIBGROFF)
diff --git a/ps/pfbtops.c b/pfbtops/pfbtops.c
index bc79bce59..bc79bce59 100644
--- a/ps/pfbtops.c
+++ b/pfbtops/pfbtops.c
diff --git a/man/pfbtops.man b/pfbtops/pfbtops.man
index 6400f5242..6e8f5e474 100644
--- a/man/pfbtops.man
+++ b/pfbtops/pfbtops.man
@@ -22,6 +22,6 @@ format.
.LP
The resulting ASCII format PostScript font can be used with groff.
It must first be listed in
-.B @FONTDIR@/devps/download .
+.BR @FONTDIR@/devps/download .
.SH "SEE ALSO"
.BR grops (@MAN1EXT@)
diff --git a/pic/Makefile b/pic/Makefile
deleted file mode 100644
index 31c26cd8c..000000000
--- a/pic/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-CC=g++
-CFLAGS=-g -O -Wall
-INCLUDES=-I../lib
-MLIBS=-lm
-YACCFLAGS=-v
-YACC=bison -y
-ETAGS=etags
-ETAGSFLAGS=-p
-
-OBJECTS=pic.tab.o lex.o main.o object.o common.o troff.o tex.o # fig.o
-SOURCES=pic.tab.c lex.c main.c object.c common.c troff.c tex.c
-HEADERS=pic.h text.h output.h object.h common.h position.h
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: pic
-
-pic: $(OBJECTS) ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) ../lib/libgroff.a $(MLIBS)
-
-pic.tab.c: pic.y
- $(YACC) $(YACCFLAGS) -d pic.y
- mv y.tab.c pic.tab.c
- mv y.tab.h pic.tab.h
-
-PIC_H= pic.h text.h output.h position.h \
- ../lib/lib.h ../lib/errarg.h ../lib/error.h ../lib/assert.h \
- ../lib/stringclass.h ../lib/cset.h
-
-pic.tab.o: $(PIC_H) object.h
-object.o: $(PIC_H) object.h
-troff.o: $(PIC_H) common.h
-tex.o: $(PIC_H) common.h
-# fig.o: $(PIC_H)
-common.o: $(PIC_H) common.h
-main.o: $(PIC_H)
-lex.o: $(PIC_H) pic.tab.c object.h
-
-saber_pic:
- @#load $(INCLUDES) $(CFLAGS) $(SOURCES) ../lib/libgroff.a -lm
-
-TAGS : $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES) $(HEADERS)
-
-clean:
- -rm -f *.o core pic
-
-distclean: clean
- -rm -f pic.output y.output TAGS
-
-realclean: distclean
- -rm -f pic.tab.c pic.tab.h
-
-install.bin: pic
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/gpic
- cp pic $(BINDIR)/gpic
-
-install.nobin:
-
-install: install.bin install.nobin
diff --git a/pic/Makefile.dep b/pic/Makefile.dep
new file mode 100644
index 000000000..f16199cdc
--- /dev/null
+++ b/pic/Makefile.dep
@@ -0,0 +1,22 @@
+lex.o : lex.cc pic.h ../include/assert.h ../include/cset.h ../include/lib.h \
+ ../include/stringclass.h ../include/errarg.h ../include/error.h \
+ position.h text.h output.h ../include/ptable.h object.h pic.cc
+main.o : main.cc pic.h ../include/assert.h ../include/cset.h \
+ ../include/lib.h ../include/stringclass.h ../include/errarg.h \
+ ../include/error.h position.h text.h output.h
+object.o : object.cc pic.h ../include/assert.h ../include/cset.h \
+ ../include/lib.h ../include/stringclass.h ../include/errarg.h \
+ ../include/error.h position.h text.h output.h ../include/ptable.h \
+ object.h
+common.o : common.cc pic.h ../include/assert.h ../include/cset.h \
+ ../include/lib.h ../include/stringclass.h ../include/errarg.h \
+ ../include/error.h position.h text.h output.h common.h
+troff.o : troff.cc pic.h ../include/assert.h ../include/cset.h \
+ ../include/lib.h ../include/stringclass.h ../include/errarg.h \
+ ../include/error.h position.h text.h output.h common.h
+tex.o : tex.cc pic.h ../include/assert.h ../include/cset.h ../include/lib.h \
+ ../include/stringclass.h ../include/errarg.h ../include/error.h \
+ position.h text.h output.h common.h
+pic.o : pic.cc pic.h ../include/assert.h ../include/cset.h ../include/lib.h \
+ ../include/stringclass.h ../include/errarg.h ../include/error.h \
+ position.h text.h output.h ../include/ptable.h object.h
diff --git a/pic/Makefile.sub b/pic/Makefile.sub
new file mode 100644
index 000000000..06d19750d
--- /dev/null
+++ b/pic/Makefile.sub
@@ -0,0 +1,11 @@
+PROG=pic
+MAN1=pic.n
+XLIBS=$(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=pic.o lex.o main.o object.o common.o troff.o tex.o # fig.o
+CCSRCS=lex.cc main.cc object.cc common.cc troff.cc tex.cc
+HDRS=common.h object.h output.h pic.h position.h text.h
+GRAM=pic.y
+YTABC=pic.cc
+YTABH=pic.tab.h
+NAMEPREFIX=$(g)
diff --git a/pic/common.c b/pic/common.cc
index d6d240922..0f61c750e 100644
--- a/pic/common.c
+++ b/pic/common.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
diff --git a/pic/common.h b/pic/common.h
index 283d8ff86..47560ce1c 100644
--- a/pic/common.h
+++ b/pic/common.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class common_output : public output {
diff --git a/pic/depend b/pic/depend
new file mode 100644
index 000000000..73ac3ab90
--- /dev/null
+++ b/pic/depend
@@ -0,0 +1,21 @@
+pic.tab.o : pic.tab.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h ../lib/ptable.h object.h
+lex.o : lex.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h ../lib/ptable.h object.h pic.tab.h
+main.o : main.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h
+object.o : object.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h ../lib/ptable.h object.h
+common.o : common.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h common.h
+troff.o : troff.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h common.h
+tex.o : tex.cc pic.h ../lib/assert.h ../lib/cset.h ../lib/lib.h \
+ ../lib/stringclass.h ../lib/errarg.h ../lib/error.h position.h text.h \
+ output.h common.h
diff --git a/pic/lex.c b/pic/lex.cc
index c687bea63..86a710ab8 100644
--- a/pic/lex.c
+++ b/pic/lex.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
@@ -154,7 +154,8 @@ int macro_input::peek()
return (unsigned char)*p;
}
-#define ARG1 11
+// Character respresenting $1. Must be illegal input character.
+#define ARG1 14
char *process_body(const char *body)
{
@@ -1059,6 +1060,23 @@ int get_token(int lookup_flag)
return NUMBER;
}
break;
+ case '\'':
+ {
+ c = input_stack::peek_char();
+ if (c == 't') {
+ input_stack::get_char();
+ c = input_stack::peek_char();
+ if (c == 'h') {
+ input_stack::get_char();
+ context_buffer = "'th";
+ return TH;
+ }
+ else
+ input_stack::push_back('t');
+ }
+ context_buffer = "'";
+ return '\'';
+ }
case '.':
{
c = input_stack::peek_char();
diff --git a/pic/main.c b/pic/main.cc
index bb4ba3b54..f78231b8c 100644
--- a/pic/main.c
+++ b/pic/main.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
@@ -26,7 +26,8 @@ output *out;
int flyback_flag;
int zero_length_line_flag = 0;
-int driver_extension_flag = 0;
+// Non-zero means we're using a groff driver.
+int driver_extension_flag = 1;
int compatible_flag = 0;
int command_char = '.'; // the character that introduces lines
// that should be passed through tranparently
@@ -458,7 +459,7 @@ void do_whole_file(const char *filename)
void usage()
{
- fprintf(stderr, "usage: %s [ -pxvzC ] [ filename ... ]\n", program_name);
+ fprintf(stderr, "usage: %s [ -nvC ] [ filename ... ]\n", program_name);
#ifdef TEX_SUPPORT
fprintf(stderr, " %s -t [ -cvzC ] [ filename ... ]\n", program_name);
#endif
@@ -506,12 +507,11 @@ int main(int argc, char **argv)
int tex_flag = 0;
int tpic_flag = 0;
#endif
- int grops_flag = 0;
#ifdef FIG_SUPPORT
int whole_file_flag = 0;
int fig_flag = 0;
#endif
- while ((opt = getopt(argc, argv, "T:CDtcvxzpf")) != EOF)
+ while ((opt = getopt(argc, argv, "T:CDtcvnxzpf")) != EOF)
switch (opt) {
case 'C':
compatible_flag = 1;
@@ -527,8 +527,12 @@ int main(int argc, char **argv)
fatal("fig support not included");
#endif
break;
+ case 'n':
+ driver_extension_flag = 0;
+ break;
case 'p':
- grops_flag++;
+ case 'x':
+ warning("-%c option is obsolete", opt);
break;
case 't':
#ifdef TEX_SUPPORT
@@ -551,9 +555,6 @@ int main(int argc, char **argv)
fflush(stderr);
break;
}
- case 'x':
- driver_extension_flag++;
- /* fall through */
case 'z':
// zero length lines will be printed as dots
zero_length_line_flag++;
@@ -565,10 +566,8 @@ int main(int argc, char **argv)
assert(0);
}
parse_init();
- if (grops_flag)
- out = make_grops_output();
#ifdef TEX_SUPPORT
- else if (tpic_flag) {
+ if (tpic_flag) {
out = make_tpic_output();
lf_flag = 0;
}
@@ -577,12 +576,13 @@ int main(int argc, char **argv)
command_char = '\\';
lf_flag = 0;
}
+ else
#endif
#ifdef FIG_SUPPORT
- else if (fig_flag)
+ if (fig_flag)
out = make_fig_output();
-#endif
else
+#endif
out = make_troff_output();
#ifdef FIG_SUPPORT
if (whole_file_flag) {
diff --git a/pic/make-dos-dist b/pic/make-dos-dist
index 3657b1ba2..e88365707 100755
--- a/pic/make-dos-dist
+++ b/pic/make-dos-dist
@@ -3,6 +3,9 @@
# This creates a compressed (14 bits) tar file that can be copied to a DOS
# machine, unpacked and compiled with Borland C++ 2.0.
+# This is for groff version 1.04. It will probably need work for
+# other versions.
+
# The grammar is yacced here, because I don't have a yacc on my DOS
# machine. The resulting .tab.c file is split up; I found the
# compiler ran out of memory otherwise. The sed command that does the
diff --git a/pic/object.c b/pic/object.cc
index 94f0f6213..71d75aebb 100644
--- a/pic/object.c
+++ b/pic/object.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
diff --git a/pic/object.h b/pic/object.h
index 949d90d84..39240b634 100644
--- a/pic/object.h
+++ b/pic/object.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct place;
diff --git a/pic/output.h b/pic/output.h
index b54f77b12..ddcc4b5bf 100644
--- a/pic/output.h
+++ b/pic/output.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct line_type {
@@ -68,7 +68,6 @@ extern output *out;
#define TEX_SUPPORT 1
output *make_troff_output();
-output *make_grops_output();
#ifdef TEX_SUPPORT
output *make_tex_output();
diff --git a/pic/pic.tab.c b/pic/pic.cc
index 3479be8ad..c1d61fcfe 100644
--- a/pic/pic.tab.c
+++ b/pic/pic.cc
@@ -1,6 +1,8 @@
/* A Bison parser, made from pic.y */
+#define YYBISON 1 /* Identify Bison output. */
+
#define LABEL 258
#define VARIABLE 259
#define NUMBER 260
@@ -8,108 +10,109 @@
#define COMMAND_LINE 262
#define DELIMITED 263
#define ORDINAL 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define WIDTH 283
-#define DIAMETER 284
-#define FROM 285
-#define TO 286
-#define AT 287
-#define WITH 288
-#define BY 289
-#define THEN 290
-#define DOTTED 291
-#define DASHED 292
-#define CHOP 293
-#define SAME 294
-#define INVISIBLE 295
-#define LJUST 296
-#define RJUST 297
-#define ABOVE 298
-#define BELOW 299
-#define OF 300
-#define THE 301
-#define WAY 302
-#define BETWEEN 303
-#define AND 304
-#define HERE 305
-#define DOT_N 306
-#define DOT_E 307
-#define DOT_W 308
-#define DOT_S 309
-#define DOT_NE 310
-#define DOT_SE 311
-#define DOT_NW 312
-#define DOT_SW 313
-#define DOT_C 314
-#define DOT_START 315
-#define DOT_END 316
-#define DOT_X 317
-#define DOT_Y 318
-#define DOT_HT 319
-#define DOT_WID 320
-#define DOT_RAD 321
-#define SIN 322
-#define COS 323
-#define ATAN2 324
-#define LOG 325
-#define EXP 326
-#define SQRT 327
-#define MAX 328
-#define MIN 329
-#define INT 330
-#define RAND 331
-#define COPY 332
-#define THRU 333
-#define TOP 334
-#define BOTTOM 335
-#define UPPER 336
-#define LOWER 337
-#define SH 338
-#define PRINT 339
-#define CW 340
-#define CCW 341
-#define FOR 342
-#define DO 343
-#define IF 344
-#define ELSE 345
-#define ANDAND 346
-#define OROR 347
-#define NOTEQUAL 348
-#define EQUALEQUAL 349
-#define LESSEQUAL 350
-#define GREATEREQUAL 351
-#define LEFT_CORNER 352
-#define RIGHT_CORNER 353
-#define CENTER 354
-#define END 355
-#define START 356
-#define RESET 357
-#define UNTIL 358
-#define PLOT 359
-#define THICKNESS 360
-#define FILL 361
-#define ALIGNED 362
-#define SPRINTF 363
-#define COMMAND 364
-#define DEFINE 365
-#define UNDEF 366
+#define TH 265
+#define LEFT_ARROW_HEAD 266
+#define RIGHT_ARROW_HEAD 267
+#define DOUBLE_ARROW_HEAD 268
+#define LAST 269
+#define UP 270
+#define DOWN 271
+#define LEFT 272
+#define RIGHT 273
+#define BOX 274
+#define CIRCLE 275
+#define ELLIPSE 276
+#define ARC 277
+#define LINE 278
+#define ARROW 279
+#define MOVE 280
+#define SPLINE 281
+#define HEIGHT 282
+#define RADIUS 283
+#define WIDTH 284
+#define DIAMETER 285
+#define FROM 286
+#define TO 287
+#define AT 288
+#define WITH 289
+#define BY 290
+#define THEN 291
+#define DOTTED 292
+#define DASHED 293
+#define CHOP 294
+#define SAME 295
+#define INVISIBLE 296
+#define LJUST 297
+#define RJUST 298
+#define ABOVE 299
+#define BELOW 300
+#define OF 301
+#define THE 302
+#define WAY 303
+#define BETWEEN 304
+#define AND 305
+#define HERE 306
+#define DOT_N 307
+#define DOT_E 308
+#define DOT_W 309
+#define DOT_S 310
+#define DOT_NE 311
+#define DOT_SE 312
+#define DOT_NW 313
+#define DOT_SW 314
+#define DOT_C 315
+#define DOT_START 316
+#define DOT_END 317
+#define DOT_X 318
+#define DOT_Y 319
+#define DOT_HT 320
+#define DOT_WID 321
+#define DOT_RAD 322
+#define SIN 323
+#define COS 324
+#define ATAN2 325
+#define LOG 326
+#define EXP 327
+#define SQRT 328
+#define MAX 329
+#define MIN 330
+#define INT 331
+#define RAND 332
+#define COPY 333
+#define THRU 334
+#define TOP 335
+#define BOTTOM 336
+#define UPPER 337
+#define LOWER 338
+#define SH 339
+#define PRINT 340
+#define CW 341
+#define CCW 342
+#define FOR 343
+#define DO 344
+#define IF 345
+#define ELSE 346
+#define ANDAND 347
+#define OROR 348
+#define NOTEQUAL 349
+#define EQUALEQUAL 350
+#define LESSEQUAL 351
+#define GREATEREQUAL 352
+#define LEFT_CORNER 353
+#define RIGHT_CORNER 354
+#define CENTER 355
+#define END 356
+#define START 357
+#define RESET 358
+#define UNTIL 359
+#define PLOT 360
+#define THICKNESS 361
+#define FILL 362
+#define ALIGNED 363
+#define SPRINTF 364
+#define COMMAND 365
+#define DEFINE 366
+#define UNDEF 367
#line 19 "pic.y"
@@ -126,6 +129,9 @@ extern void do_for(char *var, double from, double to,
int by_is_multiplicative, double by, char *body);
extern void do_lookahead();
+#undef fmod
+#undef rand
+
extern "C" {
double fmod(double, double);
int rand();
@@ -165,7 +171,7 @@ char *format_number(const char *form, double n);
char *do_sprintf(const char *form, const double *v, int nv);
-#line 74 "pic.y"
+#line 77 "pic.y"
typedef union {
char *str;
int n;
@@ -209,26 +215,26 @@ typedef
-#define YYFINAL 400
+#define YYFINAL 404
#define YYFLAG -32768
-#define YYNTBASE 132
+#define YYNTBASE 134
-#define YYTRANSLATE(x) ((unsigned)(x) <= 366 ? yytranslate[x] : 176)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 367 ? yytranslate[x] : 179)
static const short yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 121, 2, 2, 2, 120, 2, 2, 112,
- 130, 118, 116, 113, 117, 131, 119, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 125, 123, 114,
- 124, 115, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 123, 2, 2, 2, 122, 2, 2, 113,
+ 132, 120, 118, 115, 119, 133, 121, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 127, 125, 116,
+ 126, 117, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 128, 2, 129, 122, 2, 2, 2, 2, 2, 2,
+ 130, 2, 131, 124, 2, 114, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 126, 2, 127, 2, 2, 2, 2, 2,
+ 2, 2, 128, 2, 129, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -252,9 +258,10 @@ static const short yytranslate[] = { 0,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111
+ 106, 107, 108, 109, 110, 111, 112
};
+#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 2, 4, 8, 10, 14, 15, 17, 19, 22,
26, 31, 33, 35, 37, 39, 41, 44, 47, 48,
@@ -271,169 +278,173 @@ static const short yyprhs[] = { 0,
367, 370, 373, 377, 380, 382, 388, 389, 393, 395,
397, 399, 403, 407, 413, 419, 426, 428, 433, 437,
441, 443, 446, 449, 453, 455, 457, 459, 463, 465,
- 468, 471, 474, 476, 478, 480, 482, 484, 486, 488,
- 491, 493, 496, 500, 502, 504, 507, 509, 514, 518,
- 522, 525, 527, 529, 531, 533, 535, 537, 539, 541,
- 543, 545, 547, 549, 551, 553, 555, 558, 561, 564,
- 567, 569, 571, 574, 577, 580, 583, 585, 587, 589,
- 591, 593, 596, 599, 602, 605, 608, 612, 616, 620,
- 624, 628, 632, 635, 639, 644, 649, 656, 661, 666,
- 671, 678, 685, 690, 695, 699, 703, 707, 711, 715,
- 719, 723, 727, 731
+ 469, 471, 474, 477, 480, 482, 484, 486, 488, 490,
+ 492, 494, 497, 499, 502, 506, 508, 510, 513, 515,
+ 520, 524, 528, 531, 533, 535, 537, 539, 541, 543,
+ 545, 547, 549, 551, 553, 555, 557, 559, 561, 564,
+ 567, 570, 573, 575, 577, 580, 583, 586, 589, 591,
+ 593, 595, 597, 599, 602, 605, 608, 611, 614, 618,
+ 622, 626, 630, 634, 638, 641, 645, 650, 655, 662,
+ 667, 672, 677, 684, 691, 696, 701, 705, 709, 713,
+ 717, 721, 725, 729, 733, 737
};
-static const short yyrhs[] = { 135,
- 0, 133, 0, 135, 134, 135, 0, 154, 0, 134,
- 136, 154, 0, 0, 136, 0, 123, 0, 136, 123,
- 0, 4, 124, 151, 0, 4, 125, 124, 151, 0,
- 14, 0, 15, 0, 16, 0, 17, 0, 7, 0,
- 109, 146, 0, 84, 146, 0, 0, 83, 138, 8,
- 0, 77, 6, 0, 0, 0, 77, 6, 78, 139,
- 8, 140, 150, 0, 0, 0, 77, 78, 141, 8,
- 142, 150, 0, 0, 87, 4, 124, 175, 31, 175,
- 153, 88, 143, 8, 0, 148, 0, 0, 148, 90,
- 144, 8, 0, 145, 0, 102, 0, 102, 4, 0,
- 145, 4, 0, 145, 113, 4, 0, 147, 0, 146,
- 147, 0, 175, 0, 160, 0, 162, 0, 0, 89,
- 151, 35, 149, 8, 0, 0, 103, 6, 0, 175,
- 0, 152, 0, 160, 94, 160, 0, 160, 93, 160,
- 0, 152, 91, 152, 0, 152, 91, 175, 0, 175,
- 91, 152, 0, 152, 92, 152, 0, 152, 92, 175,
- 0, 175, 92, 152, 0, 121, 152, 0, 0, 34,
- 175, 0, 34, 118, 175, 0, 158, 0, 3, 125,
- 135, 154, 0, 3, 125, 135, 163, 0, 3, 125,
- 135, 166, 0, 0, 0, 126, 155, 133, 127, 156,
- 157, 0, 137, 0, 0, 154, 0, 18, 0, 19,
+#endif
+
+static const short yyrhs[] = { 137,
+ 0, 135, 0, 137, 136, 137, 0, 156, 0, 136,
+ 138, 156, 0, 0, 138, 0, 125, 0, 138, 125,
+ 0, 4, 126, 153, 0, 4, 127, 126, 153, 0,
+ 15, 0, 16, 0, 17, 0, 18, 0, 7, 0,
+ 110, 148, 0, 85, 148, 0, 0, 84, 140, 8,
+ 0, 78, 6, 0, 0, 0, 78, 6, 79, 141,
+ 8, 142, 152, 0, 0, 0, 78, 79, 143, 8,
+ 144, 152, 0, 0, 88, 4, 126, 178, 32, 178,
+ 155, 89, 145, 8, 0, 150, 0, 0, 150, 91,
+ 146, 8, 0, 147, 0, 103, 0, 103, 4, 0,
+ 147, 4, 0, 147, 115, 4, 0, 149, 0, 148,
+ 149, 0, 178, 0, 162, 0, 164, 0, 0, 90,
+ 153, 36, 151, 8, 0, 0, 104, 6, 0, 178,
+ 0, 154, 0, 162, 95, 162, 0, 162, 94, 162,
+ 0, 154, 92, 154, 0, 154, 92, 178, 0, 178,
+ 92, 154, 0, 154, 93, 154, 0, 154, 93, 178,
+ 0, 178, 93, 154, 0, 123, 154, 0, 0, 35,
+ 178, 0, 35, 120, 178, 0, 160, 0, 3, 127,
+ 137, 156, 0, 3, 127, 137, 165, 0, 3, 127,
+ 137, 168, 0, 0, 0, 128, 157, 135, 129, 158,
+ 159, 0, 139, 0, 0, 156, 0, 19, 0, 20,
+ 0, 21, 0, 22, 0, 23, 0, 24, 0, 25,
+ 0, 26, 0, 162, 0, 105, 178, 0, 105, 178,
+ 162, 0, 0, 130, 161, 135, 131, 0, 160, 27,
+ 178, 0, 160, 28, 178, 0, 160, 29, 178, 0,
+ 160, 30, 178, 0, 160, 178, 0, 160, 15, 0,
+ 160, 15, 178, 0, 160, 16, 0, 160, 16, 178,
+ 0, 160, 18, 0, 160, 18, 178, 0, 160, 17,
+ 0, 160, 17, 178, 0, 160, 31, 164, 0, 160,
+ 32, 164, 0, 160, 33, 164, 0, 160, 34, 176,
+ 0, 160, 35, 167, 0, 160, 36, 0, 160, 37,
+ 0, 160, 37, 178, 0, 160, 38, 0, 160, 38,
+ 178, 0, 160, 107, 0, 160, 107, 178, 0, 160,
+ 39, 0, 160, 39, 178, 0, 160, 40, 0, 160,
+ 41, 0, 160, 11, 0, 160, 12, 0, 160, 13,
+ 0, 160, 86, 0, 160, 87, 0, 160, 162, 0,
+ 160, 42, 0, 160, 43, 0, 160, 44, 0, 160,
+ 45, 0, 160, 106, 178, 0, 160, 108, 0, 6,
+ 0, 109, 113, 6, 163, 132, 0, 0, 163, 115,
+ 178, 0, 165, 0, 168, 0, 167, 0, 164, 118,
+ 167, 0, 164, 119, 167, 0, 113, 164, 115, 164,
+ 132, 0, 178, 166, 164, 50, 164, 0, 178, 116,
+ 164, 115, 164, 117, 0, 49, 0, 46, 47, 48,
+ 49, 0, 178, 115, 178, 0, 113, 167, 132, 0,
+ 169, 0, 169, 177, 0, 177, 169, 0, 177, 46,
+ 169, 0, 51, 0, 3, 0, 172, 0, 169, 133,
+ 3, 0, 9, 0, 114, 153, 10, 0, 14, 0,
+ 170, 14, 0, 170, 173, 0, 171, 173, 0, 19,
0, 20, 0, 21, 0, 22, 0, 23, 0, 24,
- 0, 25, 0, 160, 0, 104, 175, 0, 104, 175,
- 160, 0, 0, 128, 159, 133, 129, 0, 158, 26,
- 175, 0, 158, 27, 175, 0, 158, 28, 175, 0,
- 158, 29, 175, 0, 158, 175, 0, 158, 14, 0,
- 158, 14, 175, 0, 158, 15, 0, 158, 15, 175,
- 0, 158, 17, 0, 158, 17, 175, 0, 158, 16,
- 0, 158, 16, 175, 0, 158, 30, 162, 0, 158,
- 31, 162, 0, 158, 32, 162, 0, 158, 33, 173,
- 0, 158, 34, 165, 0, 158, 35, 0, 158, 36,
- 0, 158, 36, 175, 0, 158, 37, 0, 158, 37,
- 175, 0, 158, 106, 0, 158, 106, 175, 0, 158,
- 38, 0, 158, 38, 175, 0, 158, 39, 0, 158,
- 40, 0, 158, 10, 0, 158, 11, 0, 158, 12,
- 0, 158, 85, 0, 158, 86, 0, 158, 160, 0,
- 158, 41, 0, 158, 42, 0, 158, 43, 0, 158,
- 44, 0, 158, 105, 175, 0, 158, 107, 0, 6,
- 0, 108, 112, 6, 161, 130, 0, 0, 161, 113,
- 175, 0, 163, 0, 166, 0, 165, 0, 162, 116,
- 165, 0, 162, 117, 165, 0, 112, 162, 113, 162,
- 130, 0, 175, 164, 162, 49, 162, 0, 175, 114,
- 162, 113, 162, 115, 0, 48, 0, 45, 46, 47,
- 48, 0, 175, 113, 175, 0, 112, 165, 130, 0,
- 167, 0, 167, 174, 0, 174, 167, 0, 174, 45,
- 167, 0, 50, 0, 3, 0, 169, 0, 167, 131,
- 3, 0, 13, 0, 9, 13, 0, 9, 170, 0,
- 168, 170, 0, 18, 0, 19, 0, 20, 0, 21,
- 0, 22, 0, 23, 0, 25, 0, 128, 129, 0,
- 6, 0, 131, 3, 0, 171, 131, 3, 0, 174,
- 0, 171, 0, 171, 174, 0, 172, 0, 9, 13,
- 170, 172, 0, 13, 170, 172, 0, 9, 170, 172,
- 0, 3, 172, 0, 51, 0, 52, 0, 53, 0,
- 54, 0, 55, 0, 56, 0, 57, 0, 58, 0,
- 59, 0, 60, 0, 61, 0, 79, 0, 80, 0,
- 16, 0, 17, 0, 81, 16, 0, 82, 16, 0,
- 81, 17, 0, 82, 17, 0, 97, 0, 98, 0,
- 81, 97, 0, 82, 97, 0, 81, 98, 0, 82,
- 98, 0, 99, 0, 101, 0, 100, 0, 4, 0,
- 5, 0, 166, 62, 0, 166, 63, 0, 166, 64,
- 0, 166, 65, 0, 166, 66, 0, 175, 116, 175,
- 0, 175, 117, 175, 0, 175, 118, 175, 0, 175,
- 119, 175, 0, 175, 120, 175, 0, 175, 122, 175,
- 0, 117, 175, 0, 112, 151, 130, 0, 67, 112,
- 151, 130, 0, 68, 112, 151, 130, 0, 69, 112,
- 151, 113, 151, 130, 0, 70, 112, 151, 130, 0,
- 71, 112, 151, 130, 0, 72, 112, 151, 130, 0,
- 73, 112, 151, 113, 151, 130, 0, 74, 112, 151,
- 113, 151, 130, 0, 75, 112, 151, 130, 0, 76,
- 112, 151, 130, 0, 76, 112, 130, 0, 175, 114,
- 175, 0, 175, 95, 175, 0, 175, 115, 175, 0,
- 175, 96, 175, 0, 175, 94, 175, 0, 175, 93,
- 175, 0, 175, 91, 175, 0, 175, 92, 175, 0,
- 121, 175, 0
+ 0, 26, 0, 130, 131, 0, 6, 0, 133, 3,
+ 0, 174, 133, 3, 0, 177, 0, 174, 0, 174,
+ 177, 0, 175, 0, 9, 14, 173, 175, 0, 14,
+ 173, 175, 0, 9, 173, 175, 0, 3, 175, 0,
+ 52, 0, 53, 0, 54, 0, 55, 0, 56, 0,
+ 57, 0, 58, 0, 59, 0, 60, 0, 61, 0,
+ 62, 0, 80, 0, 81, 0, 17, 0, 18, 0,
+ 82, 17, 0, 83, 17, 0, 82, 18, 0, 83,
+ 18, 0, 98, 0, 99, 0, 82, 98, 0, 83,
+ 98, 0, 82, 99, 0, 83, 99, 0, 100, 0,
+ 102, 0, 101, 0, 4, 0, 5, 0, 168, 63,
+ 0, 168, 64, 0, 168, 65, 0, 168, 66, 0,
+ 168, 67, 0, 178, 118, 178, 0, 178, 119, 178,
+ 0, 178, 120, 178, 0, 178, 121, 178, 0, 178,
+ 122, 178, 0, 178, 124, 178, 0, 119, 178, 0,
+ 113, 153, 132, 0, 68, 113, 153, 132, 0, 69,
+ 113, 153, 132, 0, 70, 113, 153, 115, 153, 132,
+ 0, 71, 113, 153, 132, 0, 72, 113, 153, 132,
+ 0, 73, 113, 153, 132, 0, 74, 113, 153, 115,
+ 153, 132, 0, 75, 113, 153, 115, 153, 132, 0,
+ 76, 113, 153, 132, 0, 77, 113, 153, 132, 0,
+ 77, 113, 132, 0, 178, 116, 178, 0, 178, 96,
+ 178, 0, 178, 117, 178, 0, 178, 97, 178, 0,
+ 178, 95, 178, 0, 178, 94, 178, 0, 178, 92,
+ 178, 0, 178, 93, 178, 0, 123, 178, 0
};
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 269, 271, 279, 284, 287, 291, 293, 296, 298, 301,
- 307, 319, 321, 323, 325, 327, 332, 337, 342, 345,
- 350, 357, 360, 362, 370, 373, 375, 382, 385, 391,
- 399, 402, 413, 414, 418, 421, 423, 427, 430, 448,
- 456, 458, 466, 470, 473, 476, 480, 483, 487, 494,
- 500, 502, 504, 506, 508, 510, 512, 517, 520, 522,
- 526, 541, 543, 551, 557, 563, 570, 573, 581, 584,
- 588, 593, 597, 601, 606, 613, 620, 627, 634, 639,
- 644, 651, 666, 678, 684, 690, 696, 702, 721, 728,
- 735, 742, 749, 756, 763, 770, 777, 784, 799, 811,
- 817, 824, 836, 842, 848, 854, 860, 865, 871, 887,
- 904, 909, 914, 919, 924, 929, 934, 939, 946, 955,
- 964, 973, 982, 988, 995, 1000, 1010, 1017, 1038, 1041,
- 1049, 1052, 1057, 1062, 1067, 1072, 1079, 1081, 1084, 1087,
- 1091, 1094, 1100, 1106, 1112, 1120, 1131, 1135, 1143, 1146,
- 1150, 1165, 1181, 1184, 1186, 1188, 1190, 1192, 1194, 1196,
- 1198, 1202, 1207, 1214, 1222, 1226, 1233, 1239, 1245, 1251,
- 1257, 1265, 1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282,
- 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298, 1300, 1302,
- 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1324,
- 1333, 1335, 1342, 1349, 1356, 1363, 1370, 1372, 1374, 1376,
- 1384, 1392, 1405, 1407, 1409, 1418, 1427, 1440, 1449, 1458,
- 1467, 1469, 1471, 1473, 1475, 1481, 1483, 1485, 1487, 1489,
- 1491, 1493, 1495, 1497
+ 273, 275, 283, 288, 291, 295, 297, 300, 302, 305,
+ 311, 323, 325, 327, 329, 331, 336, 341, 346, 349,
+ 354, 361, 364, 366, 374, 377, 379, 386, 389, 395,
+ 403, 406, 417, 418, 422, 425, 427, 431, 434, 452,
+ 460, 462, 470, 474, 477, 480, 484, 487, 491, 498,
+ 504, 506, 508, 510, 512, 514, 516, 521, 524, 526,
+ 530, 545, 547, 555, 561, 567, 574, 577, 585, 588,
+ 592, 597, 601, 605, 610, 617, 624, 631, 638, 643,
+ 648, 655, 670, 682, 688, 694, 700, 706, 725, 732,
+ 739, 746, 753, 760, 767, 774, 781, 788, 803, 815,
+ 821, 828, 840, 846, 852, 858, 864, 869, 875, 891,
+ 908, 913, 918, 923, 928, 933, 938, 943, 950, 959,
+ 968, 977, 986, 992, 999, 1004, 1014, 1021, 1042, 1045,
+ 1053, 1056, 1061, 1066, 1071, 1076, 1083, 1085, 1088, 1091,
+ 1095, 1098, 1104, 1110, 1116, 1124, 1135, 1139, 1147, 1150,
+ 1157, 1160, 1164, 1179, 1195, 1198, 1200, 1202, 1204, 1206,
+ 1208, 1210, 1212, 1216, 1221, 1228, 1236, 1240, 1247, 1253,
+ 1259, 1265, 1271, 1279, 1282, 1284, 1286, 1288, 1290, 1292,
+ 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312,
+ 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332,
+ 1334, 1338, 1347, 1349, 1356, 1363, 1370, 1377, 1384, 1386,
+ 1388, 1390, 1398, 1406, 1419, 1421, 1423, 1432, 1441, 1454,
+ 1463, 1472, 1481, 1483, 1485, 1487, 1489, 1495, 1497, 1499,
+ 1501, 1503, 1505, 1507, 1509, 1511
};
-static const char * const yytname[] = { "$",
-"error","$illegal.","LABEL","VARIABLE","NUMBER","TEXT","COMMAND_LINE","DELIMITED","ORDINAL","LEFT_ARROW_HEAD",
-"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX","CIRCLE","ELLIPSE",
-"ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS","WIDTH","DIAMETER","FROM",
-"TO","AT","WITH","BY","THEN","DOTTED","DASHED","CHOP","SAME","INVISIBLE",
-"LJUST","RJUST","ABOVE","BELOW","OF","THE","WAY","BETWEEN","AND","HERE",
-"DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE","DOT_NW","DOT_SW","DOT_C","DOT_START",
-"DOT_END","DOT_X","DOT_Y","DOT_HT","DOT_WID","DOT_RAD","SIN","COS","ATAN2","LOG",
-"EXP","SQRT","MAX","MIN","INT","RAND","COPY","THRU","TOP","BOTTOM",
-"UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO","IF","ELSE",
-"ANDAND","OROR","NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER","CENTER","END",
-"START","RESET","UNTIL","PLOT","THICKNESS","FILL","ALIGNED","SPRINTF","COMMAND","DEFINE",
-"UNDEF","'('","','","'<'","'>'","'+'","'-'","'*'","'/'","'%'",
-"'!'","'^'","';'","'='","':'","'{'","'}'","'['","']'","')'",
-"'.'","top","element_list","middle_element_list","optional_separator","separator","placeless_element","@1","@2","@3",
-"@4","@5","@6","@7","reset_variables","print_args","print_arg","simple_if","@8","until",
-"any_expr","text_expr","optional_by","element","@9","@10","optional_element","object_spec","@11","text",
-"sprintf_args","position","position_not_place","between","expr_pair","place","label","optional_ordinal_last","nth_primitive","object_type",
-"label_path","relative_path","path","corner","expr",""
+static const char * const yytname[] = { "$","error","$illegal.","LABEL","VARIABLE",
+"NUMBER","TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD",
+"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX",
+"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS","WIDTH",
+"DIAMETER","FROM","TO","AT","WITH","BY","THEN","DOTTED","DASHED","CHOP","SAME",
+"INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE","WAY","BETWEEN","AND",
+"HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE","DOT_NW","DOT_SW","DOT_C",
+"DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT","DOT_WID","DOT_RAD","SIN","COS",
+"ATAN2","LOG","EXP","SQRT","MAX","MIN","INT","RAND","COPY","THRU","TOP","BOTTOM",
+"UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR",
+"NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER",
+"CENTER","END","START","RESET","UNTIL","PLOT","THICKNESS","FILL","ALIGNED","SPRINTF",
+"COMMAND","DEFINE","UNDEF","'('","'`'","','","'<'","'>'","'+'","'-'","'*'","'/'",
+"'%'","'!'","'^'","';'","'='","':'","'{'","'}'","'['","']'","')'","'.'","top",
+"element_list","middle_element_list","optional_separator","separator","placeless_element",
+"@1","@2","@3","@4","@5","@6","@7","reset_variables","print_args","print_arg",
+"simple_if","@8","until","any_expr","text_expr","optional_by","element","@9",
+"@10","optional_element","object_spec","@11","text","sprintf_args","position",
+"position_not_place","between","expr_pair","place","label","ordinal","optional_ordinal_last",
+"nth_primitive","object_type","label_path","relative_path","path","corner","expr",
+""
};
#endif
static const short yyr1[] = { 0,
- 132, 132, 133, 134, 134, 135, 135, 136, 136, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 138, 137,
- 137, 139, 140, 137, 141, 142, 137, 143, 137, 137,
- 144, 137, 137, 137, 145, 145, 145, 146, 146, 147,
- 147, 147, 149, 148, 150, 150, 151, 151, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 153, 153, 153,
- 154, 154, 154, 154, 155, 156, 154, 154, 157, 157,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 159, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 160, 160, 161, 161, 162, 162,
- 163, 163, 163, 163, 163, 163, 164, 164, 165, 165,
- 166, 166, 166, 166, 166, 167, 167, 167, 168, 168,
- 169, 169, 170, 170, 170, 170, 170, 170, 170, 170,
- 170, 171, 171, 172, 172, 172, 173, 173, 173, 173,
- 173, 174, 174, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 174, 174, 174, 174, 174, 174, 174, 175,
- 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
- 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
- 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
- 175, 175, 175, 175
+ 134, 134, 135, 136, 136, 137, 137, 138, 138, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 140, 139,
+ 139, 141, 142, 139, 143, 144, 139, 145, 139, 139,
+ 146, 139, 139, 139, 147, 147, 147, 148, 148, 149,
+ 149, 149, 151, 150, 152, 152, 153, 153, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 155, 155, 155,
+ 156, 156, 156, 156, 157, 158, 156, 156, 159, 159,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 161, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 162, 162, 163, 163, 164, 164,
+ 165, 165, 165, 165, 165, 165, 166, 166, 167, 167,
+ 168, 168, 168, 168, 168, 169, 169, 169, 170, 170,
+ 171, 171, 172, 172, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 174, 174, 175, 175, 175, 176, 176,
+ 176, 176, 176, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
+ 177, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+ 178, 178, 178, 178, 178, 178
};
static const short yyr2[] = { 0,
@@ -451,16 +462,16 @@ static const short yyr2[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 3, 2, 1, 5, 0, 3, 1, 1,
1, 3, 3, 5, 5, 6, 1, 4, 3, 3,
- 1, 2, 2, 3, 1, 1, 1, 3, 1, 2,
- 2, 2, 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 2, 1, 4, 3, 3,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
- 1, 1, 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 2, 2, 2, 2, 2, 3, 3, 3, 3,
- 3, 3, 2, 3, 4, 4, 6, 4, 4, 4,
- 6, 6, 4, 4, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 2
+ 1, 2, 2, 3, 1, 1, 1, 3, 1, 3,
+ 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 2, 3, 1, 1, 2, 1, 4,
+ 3, 3, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 1, 1, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 2, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 3, 2, 3, 4, 4, 6, 4,
+ 4, 4, 6, 6, 4, 4, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 2
};
static const short yydefact[] = { 6,
@@ -468,247 +479,263 @@ static const short yydefact[] = { 6,
14, 15, 71, 72, 73, 74, 75, 76, 77, 78,
0, 19, 0, 0, 0, 34, 0, 0, 0, 65,
82, 6, 68, 33, 30, 4, 61, 79, 9, 6,
- 0, 0, 21, 25, 0, 146, 200, 201, 0, 149,
- 185, 186, 145, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 183, 184, 0, 0, 191, 192,
- 197, 199, 198, 0, 0, 0, 18, 38, 41, 42,
- 129, 131, 130, 141, 0, 147, 0, 40, 0, 0,
- 0, 0, 48, 0, 0, 47, 35, 80, 0, 17,
- 6, 6, 3, 7, 36, 0, 31, 113, 114, 115,
- 89, 91, 95, 93, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 103, 105, 109, 111, 112, 119,
- 120, 121, 122, 116, 117, 0, 107, 124, 118, 88,
- 0, 10, 0, 22, 0, 20, 161, 150, 153, 154,
- 155, 156, 157, 158, 159, 0, 151, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 189, 193,
- 195, 188, 190, 194, 196, 0, 0, 131, 47, 213,
- 234, 39, 0, 0, 202, 203, 204, 205, 206, 0,
- 142, 152, 0, 143, 0, 137, 0, 0, 0, 0,
+ 0, 0, 21, 25, 0, 146, 202, 203, 149, 151,
+ 187, 188, 145, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 185, 186, 0, 0, 193, 194,
+ 199, 201, 200, 0, 0, 0, 0, 18, 38, 41,
+ 42, 129, 131, 130, 141, 0, 0, 147, 0, 40,
+ 0, 0, 0, 0, 48, 0, 0, 47, 35, 80,
+ 0, 17, 6, 6, 3, 7, 36, 0, 31, 113,
+ 114, 115, 89, 91, 95, 93, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 102, 103, 105, 109, 111,
+ 112, 119, 120, 121, 122, 116, 117, 0, 107, 124,
+ 118, 88, 0, 10, 0, 22, 0, 20, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 189, 191,
+ 195, 197, 190, 192, 196, 198, 0, 0, 131, 47,
+ 0, 215, 236, 39, 0, 0, 204, 205, 206, 207,
+ 208, 0, 142, 163, 152, 155, 156, 157, 158, 159,
+ 160, 161, 0, 153, 154, 0, 143, 0, 137, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 57, 234, 43, 0, 0, 0, 0,
- 0, 0, 0, 81, 127, 0, 0, 0, 5, 37,
- 0, 90, 92, 96, 94, 84, 85, 86, 87, 97,
- 0, 98, 99, 0, 0, 0, 0, 165, 167, 100,
- 164, 0, 101, 0, 104, 106, 110, 123, 108, 146,
- 200, 14, 15, 62, 0, 63, 64, 11, 0, 26,
- 160, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 225, 0, 214, 0, 140, 132, 133, 148, 144, 0,
- 232, 233, 231, 230, 227, 229, 139, 0, 226, 228,
- 207, 208, 209, 210, 211, 212, 0, 0, 0, 51,
- 52, 54, 55, 50, 49, 53, 232, 56, 233, 226,
- 0, 66, 83, 32, 171, 0, 0, 0, 162, 0,
- 166, 0, 47, 23, 45, 215, 216, 0, 218, 219,
- 220, 0, 0, 223, 224, 0, 0, 0, 0, 0,
- 44, 0, 126, 69, 0, 170, 169, 163, 45, 0,
- 27, 0, 0, 0, 134, 138, 0, 135, 58, 128,
- 70, 67, 168, 24, 46, 217, 221, 222, 136, 0,
- 0, 0, 59, 28, 60, 0, 29, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 57, 236, 43, 0,
+ 0, 0, 0, 0, 0, 0, 81, 127, 0, 0,
+ 0, 5, 37, 0, 90, 92, 96, 94, 84, 85,
+ 86, 87, 97, 0, 98, 99, 0, 0, 0, 0,
+ 167, 169, 100, 166, 0, 101, 0, 104, 106, 110,
+ 123, 108, 146, 202, 187, 188, 62, 0, 63, 64,
+ 11, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 227, 0, 216, 0, 140, 150, 132, 133,
+ 148, 162, 144, 0, 234, 235, 233, 232, 229, 231,
+ 139, 0, 228, 230, 209, 210, 211, 212, 213, 214,
+ 0, 0, 0, 51, 52, 54, 55, 50, 49, 53,
+ 234, 56, 235, 228, 0, 66, 83, 32, 173, 0,
+ 0, 0, 164, 0, 168, 0, 47, 23, 45, 217,
+ 218, 0, 220, 221, 222, 0, 0, 225, 226, 0,
+ 0, 0, 0, 0, 44, 0, 126, 69, 0, 172,
+ 171, 165, 45, 0, 27, 0, 0, 0, 134, 138,
+ 0, 135, 58, 128, 70, 67, 170, 24, 46, 219,
+ 223, 224, 136, 0, 0, 0, 59, 28, 60, 0,
+ 29, 0, 0, 0
};
-static const short yydefgoto[] = { 398,
- 2, 32, 237, 4, 33, 45, 279, 369, 155, 345,
- 396, 241, 34, 87, 88, 35, 319, 371, 186, 103,
- 391, 36, 111, 364, 382, 37, 112, 104, 331, 90,
- 91, 222, 92, 105, 94, 95, 96, 167, 258, 259,
- 260, 97, 106
+static const short yydefgoto[] = { 402,
+ 2, 32, 240, 4, 33, 45, 282, 373, 157, 349,
+ 400, 244, 34, 88, 89, 35, 323, 375, 177, 105,
+ 395, 36, 113, 368, 386, 37, 114, 106, 335, 91,
+ 92, 225, 93, 107, 95, 96, 97, 98, 204, 261,
+ 262, 263, 99, 108
};
-static const short yypact[] = { -98,
--32768,-32768, 615, -95, -79, -102,-32768,-32768,-32768,-32768,
+static const short yypact[] = { -118,
+-32768,-32768, 640, -113, -100, -59,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 13,-32768, 832, 61, 942, 73, 1370, -20, 832,-32768,
--32768, -98,-32768, 5, -6,-32768, 722,-32768,-32768, -98,
- 942, -29, 33,-32768, 112,-32768,-32768,-32768, 32,-32768,
+ 5,-32768, 860, 28, 972, 30, 1406, -61, 860,-32768,
+-32768, -118,-32768, 12, -34,-32768, 748,-32768,-32768, -118,
+ 972, -67, -24,-32768, 71,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 10, 29, 47, 49, 52, 53,
- 54, 60, 68, 70,-32768,-32768, -1, 58,-32768,-32768,
--32768,-32768,-32768, 1052, 1370, 1370, 832,-32768,-32768, -77,
--32768,-32768, 321, 1949, 156,-32768, 198, 1979, 59, 942,
- 942, 90, -59, -11, 321, 869,-32768, 284, 167, 832,
- -98, -98,-32768, 592,-32768, 199,-32768,-32768,-32768,-32768,
- 1814, 1814, 1654, 1734, 1370, 1370, 1370, 1370, 1472, 1472,
- 1472, 251, 1574,-32768, 1814, 1814, 1814,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 1370, 1814,-32768,-32768, 979,
- 476,-32768, 942,-32768, 205,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 77,-32768, 942, 942, 942,
- 942, 942, 942, 942, 942, 942, 357,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 84, -57, 87, 1995, 96,
- 96,-32768, 1574, 1574,-32768,-32768,-32768,-32768,-32768, 216,
--32768,-32768, 18, 92, 178,-32768, 1370, 1370, 1370, 1370,
- 1370, 1370, 1370, 1472, 1370, 1370, 1370, 1370, 1370, 1370,
- 1370, 1472, 1370,-32768, 96,-32768, 942, 942, 1, 1,
- 942, 942, 1370,-32768,-32768, 100, 615, 101,-32768,-32768,
- 221, 979, 979, 979, 979, 979, 979, 979, 979, -77,
- 1979, -77, -77, 1885, 260, 156, 229, 1938,-32768,-32768,
--32768, 1162,-32768, 569, 979, 979, 979, 979, 979, -79,
- -102, 212, 213,-32768, -77, -28, 331,-32768, 225,-32768,
--32768, 104, 105, 125, 110, 111, 115, 129, 135, 120,
--32768, 121,-32768, 1472,-32768,-32768,-32768,-32768, 92, 206,
- 801, 1089, 911, 911, 237, 237, 979, -37, 224, 237,
- 143, 143, 96, 96, 96, 96, -31, 200, 244,-32768,
- 801, 165, 1191,-32768,-32768,-32768, 801, 165, 1191, 237,
- -93,-32768,-32768,-32768,-32768, 156, 1885, 1885,-32768, 256,
--32768, 87, 759,-32768, 172,-32768,-32768, 942,-32768,-32768,
--32768, 942, 942,-32768,-32768, -49, 222, 1472, 1472, 1370,
--32768, 1370,-32768, 615, 1885,-32768,-32768,-32768, 172, 280,
--32768, 157, 158, 159,-32768,-32768, -45, -77, 532, 979,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1264,
- 209, 1370, 979,-32768, 979, 290,-32768, 299, 301,-32768
+-32768,-32768,-32768,-32768, -51, -2, 11, 31, 48, 51,
+ 55, 73, 91, 92,-32768,-32768, 68, 129,-32768,-32768,
+-32768,-32768,-32768, 1084, 972, 1406, 1406, 860,-32768,-32768,
+ -36,-32768,-32768, 192, 1995, -1, 273,-32768, 67, 1987,
+ 2, 972, 972, 104, -5, 4, 192, 2072,-32768, 592,
+ 174, 860, -118, -118,-32768, 612,-32768, 202,-32768,-32768,
+-32768,-32768, 1855, 1855, 1693, 1774, 1406, 1406, 1406, 1406,
+ 1509, 1509, 1509, 251, 1612,-32768, 1855, 1855, 1855,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1406, 1855,-32768,
+-32768, 2105, 494,-32768, 972,-32768, 201,-32768, 972, 972,
+ 972, 972, 972, 972, 972, 972, 972, 373,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 78, -46, 83, 2020,
+ 212, 100, 100,-32768, 1612, 1612,-32768,-32768,-32768,-32768,
+-32768, 222,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 95,-32768,-32768, 34, 96, 183,-32768, 1406,
+ 1406, 1406, 1406, 1406, 1406, 1406, 1509, 1406, 1406, 1406,
+ 1406, 1406, 1406, 1406, 1509, 1406,-32768, 100,-32768, 972,
+ 972, 27, 27, 972, 972, 1406,-32768,-32768, 108, 640,
+ 110,-32768,-32768, 236, 2105, 2105, 2105, 2105, 2105, 2105,
+ 2105, 2105, -36, 1987, -36, -36, 1927, 264, 273, 242,
+ 1941,-32768,-32768,-32768, 1196,-32768, 2030, 2105, 2105, 2105,
+ 2105, 2105, -100, -59, 53, 54,-32768, -36, 3, 153,
+-32768, 240,-32768, 119, 135, 146, 143, 144, 150, 159,
+ 176, 157,-32768, 166,-32768, 1509,-32768,-32768,-32768,-32768,
+-32768,-32768, 96, 252, 241, 2114, 289, 289, 114, 114,
+ 2105, -41, 197, 114, 142, 142, 100, 100, 100, 100,
+ -22, 556, 293,-32768, 241, 228, 2123,-32768,-32768,-32768,
+ 241, 228, 2123, 114, -76,-32768,-32768,-32768,-32768, 273,
+ 1927, 1927,-32768, 311,-32768, 83, 2063,-32768, 218,-32768,
+-32768, 972,-32768,-32768,-32768, 972, 972,-32768,-32768, -72,
+ 274, 1509, 1509, 1406,-32768, 1406,-32768, 640, 1927,-32768,
+-32768,-32768, 218, 318,-32768, 193, 194, 195,-32768,-32768,
+ 15, -36, 1310, 2105,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 1299, 239, 1406, 2105,-32768, 2105, 321,
+-32768, 330, 344,-32768
};
static const short yypgoto[] = {-32768,
- 19,-32768, 26, 281,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 292, -76,-32768,-32768, -46, -24, -89,
--32768, -109,-32768,-32768,-32768,-32768,-32768, 7,-32768, -82,
- 174,-32768, -60, 6, -84,-32768,-32768, -87,-32768, -211,
--32768, -91, -23
+ 61,-32768, 26, 313,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 319, -71,-32768,-32768, -19, -10, -58,
+-32768, -115,-32768,-32768,-32768,-32768,-32768, 7,-32768, -82,
+ 203,-32768, -44, 6, -75,-32768,-32768,-32768, -88,-32768,
+ -249,-32768, -92, -23
};
-#define YYLAST 2117
-
-
-static const short yytable[] = { 98,
- 102, 187, 201, 108, 239, 98, 7, 202, 115, 38,
- 192, 224, 204, 150, 178, 179, 152, 359, 43, 362,
- 46, 41, 42, 188, 1, 3, 49, 39, 93, 89,
- 50, 227, 228, 192, 93, 89, 363, 157, 193, 194,
- 261, 274, 335, 149, 158, 40, 250, 252, 253, 159,
- 160, 161, 162, 163, 164, 294, 165, 113, 193, 194,
- 189, 190, 191, 98, 99, 151, 193, 194, 275, 389,
- 193, 194, 263, 182, 183, 358, 107, 225, 193, 194,
- 375, 229, 230, 117, 193, 194, 98, -129, -129, 93,
- 44, 109, 93, 89, 153, 180, 181, 242, 243, 244,
- 245, 246, 247, 248, 249, 251, 251, 251, 28, 264,
- 154, 265, 266, 267, 234, 93, 89, 116, 299, 156,
- 38, 168, 268, 269, 226, 366, 367, 251, 278, 236,
- 238, 308, 296, 297, 93, 93, 93, 320, 322, 317,
- 169, 326, 328, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 292, 383, 184, 185, 277, 38, 170, 166,
- 171, 157, 261, 172, 173, 174, 341, 337, 338, 264,
- 264, 175, 235, 159, 160, 161, 162, 163, 164, 176,
- 165, 177, 223, 301, 302, 303, 304, 305, 306, 307,
- 309, 310, 311, 312, 313, 314, 315, 316, 251, 318,
- 46, 342, 240, 321, 323, 281, 49, 327, 329, 330,
- 50, 356, 280, 293, -185, -186, 295, 221, 298, 93,
- -185, -186, 200, 300, -185, -186, 332, 93, 334, 333,
- 360, 339, 344, 346, 347, 324, 325, 348, 343, 349,
- 350, 352, 203, 38, 351, 261, 261, 353, 365, 354,
- 355, 361, 357, 254, 381, 227, -185, -186, 368, 255,
- 218, 219, 220, 256, 221, 157, 51, 52, 205, 376,
- 251, 206, 336, 261, 370, 377, 378, 159, 160, 161,
- 162, 163, 164, 166, 165, 385, 386, 387, 388, 7,
- 207, 208, 209, 210, 211, 212, 394, 397, 399, 93,
- 400, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 114, 233, 215, 216, 217, 218, 219, 220,
- 110, 221, 384, 372, 276, 0, 0, 373, 374, 75,
- 76, 77, 78, 0, 251, 251, 379, 0, 380, 216,
- 217, 218, 219, 220, 0, 221, 0, 79, 80, 81,
- 82, 83, 216, 217, 218, 219, 220, 0, 221, 46,
- 47, 48, 7, 93, 93, 49, 393, 0, 395, 50,
- 38, 0, 51, 52, 207, 208, 209, 210, 211, 212,
- 0, 257, 195, 196, 197, 198, 199, 166, 0, 0,
- 0, 28, 195, 196, 197, 198, 199, 233, 215, 216,
- 217, 218, 219, 220, 0, 221, 53, 54, 55, 56,
+#define YYLAST 2247
+
+
+static const short yytable[] = { 100,
+ 242, 178, 193, 110, 194, 100, 1, 339, 205, 38,
+ 43, 39, 195, 152, 104, 117, 184, 196, 197, 198,
+ 199, 200, 201, 207, 202, 3, 40, 363, 94, 90,
+ 154, 101, 7, 109, 94, 90, 46, 277, 366, 179,
+ 184, 264, 49, 151, 227, 185, 186, 50, 253, 255,
+ 256, 111, -14, -15, 156, 367, 119, 115, 155, 379,
+ 180, 159, 182, 183, 100, 153, 41, 42, 296, 46,
+ 278, 185, 186, 362, 181, 49, 185, 186, 158, 228,
+ 50, 185, 186, 44, 169, 170, 230, 231, 100, 94,
+ 266, 370, 371, 94, 90, 185, 186, 232, 233, 245,
+ 246, 247, 248, 249, 250, 251, 252, 254, 254, 254,
+ 160, 267, 206, 268, 269, 270, 237, 94, 90, 387,
+ -129, -129, 38, 161, 271, 272, 118, 226, 203, 254,
+ 303, 393, 185, 186, 312, 28, 94, 94, 94, 229,
+ 299, 300, 321, 162, 281, 173, 174, 85, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 294, 280, 38,
+ 163, 267, 267, 164, 264, 171, 172, 165, 345, 341,
+ 342, 324, 326, 239, 241, 330, 332, -14, -15, 238,
+ 85, -14, -15, -14, -15, 166, 305, 306, 307, 308,
+ 309, 310, 311, 313, 314, 315, 316, 317, 318, 319,
+ 320, 254, 322, 167, 168, 243, 325, 327, 283, 295,
+ 331, 333, 334, 360, 297, 187, 188, 189, 190, 191,
+ 346, 298, 94, 224, 301, 302, 175, 176, 192, 304,
+ 94, 219, 220, 221, 222, 223, 336, 224, 328, 329,
+ 337, 347, 208, 338, 343, 209, 38, 348, 264, 264,
+ 350, 369, 385, 257, 187, 188, 189, 190, 191, 258,
+ 352, 221, 222, 223, 259, 224, 351, 51, 52, 194,
+ -130, -130, 254, 356, 353, 354, 264, 340, 194, 381,
+ 382, 355, 196, 197, 198, 199, 200, 201, 358, 202,
+ 357, 196, 197, 198, 199, 200, 201, 359, 202, 361,
+ 365, 94, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 372, 219, 220, 221, 222, 223, 230,
+ 224, 374, 380, 389, 390, 391, 392, 398, 401, 403,
+ 75, 76, 77, 78, 212, 213, 214, 215, 254, 254,
+ 383, 376, 384, 404, 116, 377, 378, 112, 79, 80,
+ 81, 82, 83, 388, 0, 279, 236, 218, 219, 220,
+ 221, 222, 223, 0, 224, 0, 0, 94, 94, 0,
+ 397, 0, 399, 0, 38, 46, 47, 48, 7, 0,
+ 0, 49, 0, 260, 214, 215, 50, 0, 0, 51,
+ 52, 0, 0, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 203, 0, 236, 218, 219, 220, 221, 222,
+ 223, 0, 224, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 0, 0, 75, 76, 77, 78, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
+ 0, 28, 0, 0, 0, 102, 85, 0, 0, 0,
+ 0, 86, 0, 0, 0, 103, 273, 274, 48, 7,
+ 8, 0, 49, 0, 293, 0, 0, 50, 9, 10,
+ 275, 276, 13, 14, 15, 16, 17, 18, 19, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 0, 0, 0, 0,
+ 0, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 21, 0, 75, 76, 77, 78, 22, 23, 0,
+ 0, 24, 0, 25, 0, 0, 0, 364, 0, 0,
+ 0, 79, 80, 81, 82, 83, 26, 7, 27, 0,
+ 0, 0, 28, 29, 0, 0, 84, 85, 0, 0,
+ 0, 0, 86, 0, 5, 6, 87, 7, 8, 0,
+ 0, 30, 0, 31, 0, 0, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 0, 0,
+ 0, 0, 5, 6, 0, 7, 8, 210, 211, 212,
+ 213, 214, 215, 0, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 0, 0, 0, 0,
+ 0, 236, 218, 219, 220, 221, 222, 223, 0, 224,
+ 0, 0, 0, 210, 211, 212, 213, 214, 215, 21,
+ 0, 0, 0, 0, 0, 22, 23, 0, 0, 24,
+ 28, 25, 0, 0, 0, 0, 0, 236, 218, 219,
+ 220, 221, 222, 223, 26, 224, 27, 21, 0, 0,
+ 28, 29, 0, 22, 23, 0, 0, 24, 0, 25,
+ 0, 0, 0, 0, 0, 0, 39, 0, 0, 30,
+ 0, 31, 26, 0, 27, 0, 0, 0, 28, 29,
+ 46, 47, 48, 7, 0, 0, 49, 0, 120, 121,
+ 122, 50, 123, 124, 125, 126, 0, 30, 0, 31,
+ 0, 0, 0, 0, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 0, 0, 0, 0, 0, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 0, 0, 0, 0, 0, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 0, 0, 75, 76, 77,
+ 78, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 79, 80, 81, 82, 83,
+ 0, 0, 0, 148, 149, 150, 28, 0, 0, 0,
+ 102, 85, 46, 47, 48, 7, 86, 0, 49, 0,
+ 87, 0, 0, 50, 0, 0, 51, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 0, 0, 0, 0, 0, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 0, 0, 75,
+ 76, 77, 78, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 79, 80, 81,
+ 82, 83, 0, 0, 0, 0, 0, 0, 28, 0,
+ 0, 0, 84, 85, 46, 47, 48, 7, 86, 0,
+ 49, 0, 87, 0, 0, 50, 0, 0, 51, 52,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 0, 0, 0, 0, 0, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 0,
+ 0, 75, 76, 77, 78, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,
+ 80, 81, 82, 83, 0, 0, 0, 0, 0, 0,
+ 28, 0, 0, 0, 102, 85, 46, 47, 48, 7,
+ 86, 0, 49, 0, 103, 0, 0, 50, 0, 0,
+ 51, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 0, 0, 0, 0,
+ 0, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 0, 0, 75, 76, 77, 78, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 79, 80, 81, 82, 83, 0, 0, 0, 0,
+ 0, 0, 28, 0, 0, 0, 84, 85, 46, 47,
+ 48, 7, 86, 0, 49, 0, 103, 0, 0, 50,
+ 0, 0, 51, 52, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
0, 0, 0, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 0, 0, 75, 76, 77, 78, 0,
- 0, 0, 0, 0, 0, 0, -130, -130, 0, 0,
- 0, 0, 0, 79, 80, 81, 82, 83, 0, 0,
- 0, 0, 0, 0, 28, 0, 0, 0, 100, 0,
- 0, 0, 0, 85, 0, 0, 0, 101, 270, 271,
- 48, 7, 8, 0, 49, 0, 291, 0, 50, 9,
- 10, 272, 273, 13, 14, 15, 16, 17, 18, 19,
- 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 0, 0, 0,
- 0, 0, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 21, 0, 75, 76, 77, 78, 22, 23,
- 0, 0, 24, 0, 25, 390, 0, 0, 0, 0,
- 0, 0, 79, 80, 81, 82, 83, 26, 0, 27,
- 0, 0, 0, 28, 29, 0, 0, 84, 0, 0,
- 0, 0, 85, 0, 5, 6, 86, 7, 8, 0,
- 0, 30, 0, 31, 0, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 5, 6, 0,
- 7, 8, 207, 208, 209, 210, 211, 212, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 0, 0, 0, 0, 0, 233, 215, 216, 217, 218,
- 219, 220, 0, 221, 0, 0, 0, 0, 0, 207,
- 208, 209, 210, 211, 212, 0, 0, 0, 21, 0,
- 0, 0, 0, 0, 22, 23, 0, 0, 24, 0,
- 25, 213, 233, 215, 216, 217, 218, 219, 220, 0,
- 221, 21, 0, 26, 0, 27, 0, 22, 23, 28,
- 29, 24, 0, 25, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 39, 0, 26, 30, 27, 31,
- 0, 0, 28, 29, 46, 47, 48, 7, 0, 0,
- 49, 118, 119, 120, 50, 121, 122, 123, 124, 0,
- 30, 0, 31, 0, 0, 0, 0, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
- 0, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 0, 0, 0, 0, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 0, 0, 144, 145, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 146, 147, 148, 28,
- 0, 0, 0, 100, 46, 47, 48, 7, 85, 0,
- 49, 0, 86, 0, 50, 0, 0, 51, 52, 231,
- 232, 209, 210, 211, 212, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 213, 233, 215, 216, 217, 218, 219, 220, 0,
- 221, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 209, 210, 211, 212, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 233, 215, 216, 217, 218, 219,
- 220, 0, 221, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 0, 0, 0, 28,
- 0, 0, 0, 84, 46, 47, 48, 7, 85, 0,
- 49, 0, 86, 0, 50, 0, 0, 51, 52, 231,
- 232, 209, 210, 211, 212, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 233, 215, 216, 217, 218, 219, 220, 0,
- 221, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 0, 0, 211, 212, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 233, 215, 216, 217, 218, 219,
- 220, 0, 221, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 0, 0, 0, 28,
- 0, 0, 0, 100, 46, 47, 48, 7, 85, 0,
- 49, 0, 101, 0, 50, 0, 0, 51, 52, 207,
- 208, 209, 210, 211, 212, 0, 0, 0, 0, 0,
+ 0, 0, 0, 79, 80, 81, 82, 83, 0, 0,
+ 0, 46, 47, 48, 28, 0, 0, 49, 265, 85,
+ 0, 0, 50, 0, 86, 51, 52, 0, 103, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 233, 215, 216, 217, 218, 219, 220, 0,
- 221, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 0, 0, 0, 0, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 0, 0, 0, 28,
- 0, 0, 0, 84, 46, 47, 48, 7, 85, 0,
- 49, 0, 101, 0, 50, 0, 0, 51, 52, 207,
- 0, 209, 210, 211, 212, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 233, 215, 216, 217, 218, 219, 220, 0,
- 221, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 0, 0, 0, 0, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 46, 47, 48, 28,
- 0, 0, 49, 262, 0, 0, 50, 0, 85, 51,
- 52, 231, 101, 209, 210, 211, 212, 0, 0, 0,
+ 0, 0, 0, 0, 394, 0, 0, 0, 0, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 0, 0, 0, 0, 0, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 0, 0, 75, 76,
+ 77, 78, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 79, 80, 81, 82,
+ 83, 210, 211, 212, 213, 214, 215, 0, 46, 47,
+ 48, 102, 85, 0, 49, 0, 0, 86, 396, 50,
+ 0, 87, 51, 52, 0, 236, 218, 219, 220, 221,
+ 222, 223, 0, 224, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 233, 215, 216, 217, 218, 219,
- 220, 0, 221, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 0, 0, 75, 76, 77, 78, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
+ 0, 0, 0, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 0, 0, 75, 76, 77, 78, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 46, 47, 48, 100, 0, 0, 49, 0,
- 85, 392, 50, 0, 86, 51, 52, 0, 0, 0,
+ 0, 0, 0, 79, 80, 81, 82, 83, 0, 0,
+ 0, 46, 47, 48, 0, 0, 0, 49, 102, 85,
+ 0, 0, 50, 0, 86, 51, 52, 0, 87, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 53,
@@ -718,285 +745,297 @@ static const short yytable[] = { 98,
77, 78, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 79, 80, 81, 82,
83, 0, 0, 0, 46, 47, 48, 0, 0, 0,
- 49, 100, 0, 0, 50, 0, 85, 51, 52, 0,
- 86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 49, 84, 85, 0, 0, 50, 0, 86, 51, 52,
+ 0, 87, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 0, 0, 0, 0, 0, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
- 75, 76, 77, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 46, 47, 48, 0,
- 0, 0, 49, 84, 0, 0, 50, 0, 85, 51,
- 52, 0, 86, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 0, 0, 75, 76, 77, 78, 46, 47, 48, 0,
- 0, 0, 49, 0, 0, 0, 50, 0, 0, 0,
- 79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 262, 0, 0, 0, 0,
- 85, 0, 0, 0, 86, 0, 0, 0, -185, 0,
- 0, 0, 0, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 0, 0, 75, 76, 77, 78, 46, 47, 48, 0,
- 0, 0, 49, 0, 0, 0, 50, 0, 0, 0,
- 79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
- 85, 0, 0, 0, 86, 0, 0, 0, -186, 0,
+ 0, 0, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 0, 0, 0, 0, 0, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 0,
+ 0, 75, 76, 77, 78, 46, 47, 48, 0, 0,
+ 0, 49, 0, 0, 0, 0, 50, 0, 0, 79,
+ 80, 81, 82, 83, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 265, 85, 0, 0, 0, 0,
+ 86, 0, 0, 0, 87, 0, 0, 0, -187, 0,
0, 0, 0, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
0, 0, 75, 76, 77, 78, 46, 47, 48, 0,
- 0, 0, 49, 0, 0, 0, 50, 0, 0, 0,
+ 0, 0, 49, 0, 0, 0, 0, 50, 0, 0,
79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
- 85, 0, 0, 0, 86, 0, 0, 0, 0, 0,
- 0, 0, 0, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 0, 0, 75, 76, 77, 78, 0, 0, 0, 0,
- 51, 52, 0, 0, 0, 0, 0, 0, 0, 0,
- 79, 80, 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
- 85, 0, 0, 0, 86, 54, 55, 56, 57, 58,
+ 0, 0, 0, 0, 0, 102, 85, 0, 0, 0,
+ 0, 86, 0, 0, 0, 87, 0, 0, 0, -188,
+ 0, 0, 0, 0, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 0, 0, 0, 0,
+ 0, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 0, 0, 75, 76, 77, 78, 46, 47, 48,
+ 0, 0, 0, 49, 0, 0, 0, 0, 50, 0,
+ 0, 79, 80, 81, 82, 83, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 102, 85, 0, 0,
+ 0, 0, 86, 0, 0, 0, 87, 0, 0, 0,
+ 0, 0, 0, 0, 0, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 0, 0, 0,
+ 0, 0, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 0, 0, 75, 76, 77, 78, 0, 0,
0, 0, 0, 51, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 75, 76, 77, 78, 0, 0, 0,
+ 0, 0, 79, 80, 81, 82, 83, 51, 52, 0,
+ 0, 0, 0, 0, 0, 0, 0, 102, 85, 0,
+ 0, 0, 0, 86, 0, 0, 0, 87, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 0,
+ 0, 0, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 0, 0, 0, 75, 76, 77, 78,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 79, 80, 81, 82, 83, 0, 0, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 0, 0, 0, 0, 0, 257, 75, 76, 77, 78,
- 0, 0, 0, 205, 0, 0, 206, 75, 76, 77,
- 78, 0, 0, 0, 79, 80, 81, 82, 83, 205,
- 0, 0, 206, 0, 0, 79, 80, 81, 82, 83,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 340, 207,
- 208, 209, 210, 211, 212, 0, 0, 0, 0, 200,
- 0, 0, 0, 0, 0, 231, 232, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 0,
- 221, 0, 0, 0, 0, 0, 0, 213, 214, 215,
- 216, 217, 218, 219, 220, 0, 221
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 0,
+ 0, 0, 208, 0, 0, 209, 0, 0, 79, 80,
+ 81, 82, 83, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 0, 0, 260,
+ 0, 0, 0, 0, 0, 208, 0, 0, 209, 0,
+ 0, 0, 0, 344, 75, 76, 77, 78, 210, 211,
+ 212, 213, 214, 215, 0, 0, 0, 0, 0, 0,
+ 0, 0, 79, 80, 81, 82, 83, 0, 0, 0,
+ 0, 216, 217, 218, 219, 220, 221, 222, 223, 0,
+ 224, 234, 235, 212, 213, 214, 215, 0, 0, 0,
+ 0, 210, 211, 212, 213, 214, 215, 192, 0, 0,
+ 0, 0, 0, 0, 216, 217, 218, 219, 220, 221,
+ 222, 223, 0, 224, 216, 236, 218, 219, 220, 221,
+ 222, 223, 0, 224, 234, 235, 212, 213, 214, 215,
+ 0, 0, 0, 234, 235, 212, 213, 214, 215, 0,
+ 0, 0, 0, 0, 0, 0, 0, 216, 236, 218,
+ 219, 220, 221, 222, 223, 0, 224, 236, 218, 219,
+ 220, 221, 222, 223, 0, 224, 210, 211, 212, 213,
+ 214, 215, 0, 0, 0, 210, 0, 212, 213, 214,
+ 215, 0, 0, 0, 234, 0, 212, 213, 214, 215,
+ 236, 218, 219, 220, 221, 222, 223, 0, 224, 236,
+ 218, 219, 220, 221, 222, 223, 0, 224, 236, 218,
+ 219, 220, 221, 222, 223, 0, 224
};
static const short yycheck[] = { 23,
- 25, 84, 94, 27, 114, 29, 6, 95, 4, 3,
- 87, 101, 97, 37, 16, 17, 41, 49, 6, 113,
- 3, 124, 125, 84, 123, 0, 9, 123, 23, 23,
- 13, 91, 92, 110, 29, 29, 130, 6, 116, 117,
- 132, 151, 254, 37, 13, 125, 129, 130, 131, 18,
- 19, 20, 21, 22, 23, 113, 25, 32, 116, 117,
- 84, 85, 86, 87, 4, 40, 116, 117, 151, 115,
- 116, 117, 133, 16, 17, 113, 4, 101, 116, 117,
- 130, 93, 94, 90, 116, 117, 110, 116, 117, 84,
- 78, 112, 87, 87, 124, 97, 98, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 108, 133,
- 78, 135, 136, 137, 108, 110, 110, 113, 203, 8,
- 114, 112, 146, 147, 35, 337, 338, 151, 153, 111,
- 112, 214, 193, 194, 129, 130, 131, 227, 228, 222,
- 112, 231, 232, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 365, 97, 98, 151, 151, 112, 128,
- 112, 6, 254, 112, 112, 112, 258, 255, 256, 193,
- 194, 112, 6, 18, 19, 20, 21, 22, 23, 112,
- 25, 112, 124, 207, 208, 209, 210, 211, 212, 213,
+ 116, 84, 95, 27, 6, 29, 125, 257, 97, 3,
+ 6, 125, 14, 37, 25, 4, 88, 19, 20, 21,
+ 22, 23, 24, 99, 26, 0, 127, 50, 23, 23,
+ 41, 4, 6, 4, 29, 29, 3, 153, 115, 84,
+ 112, 134, 9, 37, 103, 118, 119, 14, 131, 132,
+ 133, 113, 0, 0, 79, 132, 91, 32, 126, 132,
+ 84, 113, 86, 87, 88, 40, 126, 127, 115, 3,
+ 153, 118, 119, 115, 85, 9, 118, 119, 8, 103,
+ 14, 118, 119, 79, 17, 18, 92, 93, 112, 84,
+ 135, 341, 342, 88, 88, 118, 119, 94, 95, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 113, 135, 46, 137, 138, 139, 110, 112, 112, 369,
+ 118, 119, 116, 113, 148, 149, 115, 126, 130, 153,
+ 206, 117, 118, 119, 217, 109, 131, 132, 133, 36,
+ 185, 186, 225, 113, 155, 17, 18, 114, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 153, 153,
+ 113, 185, 186, 113, 257, 98, 99, 113, 261, 258,
+ 259, 230, 231, 113, 114, 234, 235, 125, 125, 6,
+ 114, 129, 129, 131, 131, 113, 210, 211, 212, 213,
214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 3, 262, 4, 227, 228, 129, 9, 231, 232, 233,
- 13, 294, 8, 130, 3, 3, 130, 122, 3, 214,
- 9, 9, 131, 46, 13, 13, 127, 222, 8, 129,
- 31, 3, 8, 130, 130, 229, 230, 113, 262, 130,
- 130, 113, 45, 237, 130, 337, 338, 113, 336, 130,
- 130, 8, 47, 3, 364, 91, 45, 45, 3, 9,
- 118, 119, 120, 13, 122, 6, 16, 17, 45, 48,
- 294, 48, 13, 365, 103, 358, 359, 18, 19, 20,
- 21, 22, 23, 128, 25, 6, 130, 130, 130, 6,
- 91, 92, 93, 94, 95, 96, 88, 8, 0, 294,
- 0, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 32, 114, 115, 116, 117, 118, 119, 120,
- 29, 122, 369, 348, 151, -1, -1, 352, 353, 79,
- 80, 81, 82, -1, 358, 359, 360, -1, 362, 116,
- 117, 118, 119, 120, -1, 122, -1, 97, 98, 99,
- 100, 101, 116, 117, 118, 119, 120, -1, 122, 3,
- 4, 5, 6, 358, 359, 9, 390, -1, 392, 13,
- 364, -1, 16, 17, 91, 92, 93, 94, 95, 96,
- -1, 131, 62, 63, 64, 65, 66, 128, -1, -1,
- -1, 108, 62, 63, 64, 65, 66, 114, 115, 116,
- 117, 118, 119, 120, -1, 122, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
- -1, -1, -1, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, -1, -1, 79, 80, 81, 82, -1,
- -1, -1, -1, -1, -1, -1, 116, 117, -1, -1,
- -1, -1, -1, 97, 98, 99, 100, 101, -1, -1,
- -1, -1, -1, -1, 108, -1, -1, -1, 112, -1,
- -1, -1, -1, 117, -1, -1, -1, 121, 3, 4,
- 5, 6, 7, -1, 9, -1, 130, -1, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 224, 225, 226, 113, 113, 4, 230, 231, 8, 132,
+ 234, 235, 236, 296, 132, 63, 64, 65, 66, 67,
+ 265, 10, 217, 124, 3, 131, 98, 99, 133, 47,
+ 225, 118, 119, 120, 121, 122, 129, 124, 232, 233,
+ 131, 265, 46, 8, 3, 49, 240, 8, 341, 342,
+ 132, 340, 368, 3, 63, 64, 65, 66, 67, 9,
+ 115, 120, 121, 122, 14, 124, 132, 17, 18, 6,
+ 118, 119, 296, 115, 132, 132, 369, 14, 6, 362,
+ 363, 132, 19, 20, 21, 22, 23, 24, 132, 26,
+ 115, 19, 20, 21, 22, 23, 24, 132, 26, 48,
+ 8, 296, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 3, 118, 119, 120, 121, 122, 92,
+ 124, 104, 49, 6, 132, 132, 132, 89, 8, 0,
+ 80, 81, 82, 83, 94, 95, 96, 97, 362, 363,
+ 364, 352, 366, 0, 32, 356, 357, 29, 98, 99,
+ 100, 101, 102, 373, -1, 153, 116, 117, 118, 119,
+ 120, 121, 122, -1, 124, -1, -1, 362, 363, -1,
+ 394, -1, 396, -1, 368, 3, 4, 5, 6, -1,
+ -1, 9, -1, 133, 96, 97, 14, -1, -1, 17,
+ 18, -1, -1, 130, -1, -1, -1, -1, -1, -1,
+ -1, -1, 130, -1, 116, 117, 118, 119, 120, 121,
+ 122, -1, 124, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ -1, -1, 80, 81, 82, 83, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, -1, -1, -1,
- -1, -1, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, -1, 79, 80, 81, 82, 83, 84,
- -1, -1, 87, -1, 89, 34, -1, -1, -1, -1,
- -1, -1, 97, 98, 99, 100, 101, 102, -1, 104,
- -1, -1, -1, 108, 109, -1, -1, 112, -1, -1,
- -1, -1, 117, -1, 3, 4, 121, 6, 7, -1,
- -1, 126, -1, 128, -1, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 3, 4, -1,
- 6, 7, 91, 92, 93, 94, 95, 96, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- -1, -1, -1, -1, -1, 114, 115, 116, 117, 118,
- 119, 120, -1, 122, -1, -1, -1, -1, -1, 91,
- 92, 93, 94, 95, 96, -1, -1, -1, 77, -1,
- -1, -1, -1, -1, 83, 84, -1, -1, 87, -1,
- 89, 113, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, 77, -1, 102, -1, 104, -1, 83, 84, 108,
- 109, 87, -1, 89, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 123, -1, 102, 126, 104, 128,
- -1, -1, 108, 109, 3, 4, 5, 6, -1, -1,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, -1,
- 126, -1, 128, -1, -1, -1, -1, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, -1, -1, -1, -1,
- -1, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, -1, -1, -1, -1, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, -1, -1, 85, 86, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, 105, 106, 107, 108,
- -1, -1, -1, 112, 3, 4, 5, 6, 117, -1,
- 9, -1, 121, -1, 13, -1, -1, 16, 17, 91,
- 92, 93, 94, 95, 96, -1, -1, -1, -1, -1,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ -1, 109, -1, -1, -1, 113, 114, -1, -1, -1,
+ -1, 119, -1, -1, -1, 123, 3, 4, 5, 6,
+ 7, -1, 9, -1, 132, -1, -1, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 113, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 93, 94, 95, 96, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, 114, 115, 116, 117, 118, 119,
- 120, -1, 122, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, -1, -1, -1, 108,
- -1, -1, -1, 112, 3, 4, 5, 6, 117, -1,
- 9, -1, 121, -1, 13, -1, -1, 16, 17, 91,
- 92, 93, 94, 95, 96, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, -1, -1, 95, 96, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, 114, 115, 116, 117, 118, 119,
- 120, -1, 122, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, -1, -1, -1, 108,
- -1, -1, -1, 112, 3, 4, 5, 6, 117, -1,
- 9, -1, 121, -1, 13, -1, -1, 16, 17, 91,
- 92, 93, 94, 95, 96, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, -1, 80, 81, 82, 83, 84, 85, -1,
+ -1, 88, -1, 90, -1, -1, -1, 32, -1, -1,
+ -1, 98, 99, 100, 101, 102, 103, 6, 105, -1,
+ -1, -1, 109, 110, -1, -1, 113, 114, -1, -1,
+ -1, -1, 119, -1, 3, 4, 123, 6, 7, -1,
+ -1, 128, -1, 130, -1, -1, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
+ -1, -1, 3, 4, -1, 6, 7, 92, 93, 94,
+ 95, 96, 97, -1, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, -1, -1, -1, -1,
+ -1, 116, 117, 118, 119, 120, 121, 122, -1, 124,
+ -1, -1, -1, 92, 93, 94, 95, 96, 97, 78,
+ -1, -1, -1, -1, -1, 84, 85, -1, -1, 88,
+ 109, 90, -1, -1, -1, -1, -1, 116, 117, 118,
+ 119, 120, 121, 122, 103, 124, 105, 78, -1, -1,
+ 109, 110, -1, 84, 85, -1, -1, 88, -1, 90,
+ -1, -1, -1, -1, -1, -1, 125, -1, -1, 128,
+ -1, 130, 103, -1, 105, -1, -1, -1, 109, 110,
+ 3, 4, 5, 6, -1, -1, 9, -1, 11, 12,
+ 13, 14, 15, 16, 17, 18, -1, 128, -1, 130,
+ -1, -1, -1, -1, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, -1, -1, -1, -1, -1, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, -1, -1, 80, 81, 82,
+ 83, -1, -1, 86, 87, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 98, 99, 100, 101, 102,
+ -1, -1, -1, 106, 107, 108, 109, -1, -1, -1,
+ 113, 114, 3, 4, 5, 6, 119, -1, 9, -1,
+ 123, -1, -1, 14, -1, -1, 17, 18, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, -1, -1, -1, -1, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, -1, -1, -1, 108,
- -1, -1, -1, 112, 3, 4, 5, 6, 117, -1,
- 9, -1, 121, -1, 13, -1, -1, 16, 17, 91,
- -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, -1, -1, -1, -1, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, 3, 4, 5, 108,
- -1, -1, 9, 112, -1, -1, 13, -1, 117, 16,
- 17, 91, 121, 93, 94, 95, 96, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 114, 115, 116, 117, 118, 119,
- 120, -1, 122, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, 79, 80, 81, 82, -1, -1, -1, -1,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, -1, -1, -1, -1, -1, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, -1, -1, 80,
+ 81, 82, 83, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 98, 99, 100,
+ 101, 102, -1, -1, -1, -1, -1, -1, 109, -1,
+ -1, -1, 113, 114, 3, 4, 5, 6, 119, -1,
+ 9, -1, 123, -1, -1, 14, -1, -1, 17, 18,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
- -1, -1, 3, 4, 5, 112, -1, -1, 9, -1,
- 117, 118, 13, -1, 121, 16, 17, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, -1, -1, -1, -1, -1, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, -1, -1, 79, 80,
- 81, 82, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 97, 98, 99, 100,
- 101, -1, -1, -1, 3, 4, 5, -1, -1, -1,
- 9, 112, -1, -1, 13, -1, 117, 16, 17, -1,
- 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, -1, -1, -1, -1, -1, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, -1,
+ -1, 80, 81, 82, 83, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, -1,
+ 109, -1, -1, -1, 113, 114, 3, 4, 5, 6,
+ 119, -1, 9, -1, 123, -1, -1, 14, -1, -1,
+ 17, 18, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, -1, -1, 80, 81, 82, 83, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 98, 99, 100, 101, 102, -1, -1, -1, -1,
+ -1, -1, 109, -1, -1, -1, 113, 114, 3, 4,
+ 5, 6, 119, -1, 9, -1, 123, -1, -1, 14,
+ -1, -1, 17, 18, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, -1, -1, 80, 81, 82, 83, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, -1, -1, -1, -1, -1, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
- 79, 80, 81, 82, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
- 99, 100, 101, -1, -1, -1, 3, 4, 5, -1,
- -1, -1, 9, 112, -1, -1, 13, -1, 117, 16,
- 17, -1, 121, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 98, 99, 100, 101, 102, -1, -1,
+ -1, 3, 4, 5, 109, -1, -1, 9, 113, 114,
+ -1, -1, 14, -1, 119, 17, 18, -1, 123, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, 79, 80, 81, 82, 3, 4, 5, -1,
- -1, -1, 9, -1, -1, -1, 13, -1, -1, -1,
- 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
- 117, -1, -1, -1, 121, -1, -1, -1, 45, -1,
- -1, -1, -1, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, 79, 80, 81, 82, 3, 4, 5, -1,
- -1, -1, 9, -1, -1, -1, 13, -1, -1, -1,
- 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
- 117, -1, -1, -1, 121, -1, -1, -1, 45, -1,
- -1, -1, -1, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, 79, 80, 81, 82, 3, 4, 5, -1,
- -1, -1, 9, -1, -1, -1, 13, -1, -1, -1,
- 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
- 117, -1, -1, -1, 121, -1, -1, -1, -1, -1,
- -1, -1, -1, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, 79, 80, 81, 82, -1, -1, -1, -1,
- 16, 17, -1, -1, -1, -1, -1, -1, -1, -1,
- 97, 98, 99, 100, 101, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
- 117, -1, -1, -1, 121, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, -1, -1, -1, -1,
- -1, -1, -1, 16, 17, -1, -1, -1, -1, -1,
- -1, -1, -1, 79, 80, 81, 82, -1, -1, -1,
+ -1, -1, -1, -1, 35, -1, -1, -1, -1, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, -1, -1, -1, -1, -1, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
+ 82, 83, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 98, 99, 100, 101,
+ 102, 92, 93, 94, 95, 96, 97, -1, 3, 4,
+ 5, 113, 114, -1, 9, -1, -1, 119, 120, 14,
+ -1, 123, 17, 18, -1, 116, 117, 118, 119, 120,
+ 121, 122, -1, 124, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, -1, -1, 80, 81, 82, 83, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 98, 99, 100, 101, 102, -1, -1,
+ -1, 3, 4, 5, -1, -1, -1, 9, 113, 114,
+ -1, -1, 14, -1, 119, 17, 18, -1, 123, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 97, 98, 99, 100, 101, -1, -1, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 51,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- -1, -1, -1, -1, -1, 131, 79, 80, 81, 82,
- -1, -1, -1, 45, -1, -1, 48, 79, 80, 81,
- 82, -1, -1, -1, 97, 98, 99, 100, 101, 45,
- -1, -1, 48, -1, -1, 97, 98, 99, 100, 101,
+ 62, -1, -1, -1, -1, -1, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
+ 82, 83, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 98, 99, 100, 101,
+ 102, -1, -1, -1, 3, 4, 5, -1, -1, -1,
+ 9, 113, 114, -1, -1, 14, -1, 119, 17, 18,
+ -1, 123, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, -1, -1, -1, -1, -1, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, -1,
+ -1, 80, 81, 82, 83, 3, 4, 5, -1, -1,
+ -1, 9, -1, -1, -1, -1, 14, -1, -1, 98,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 113, 114, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, -1, -1, -1, 46, -1,
+ -1, -1, -1, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ -1, -1, 80, 81, 82, 83, 3, 4, 5, -1,
+ -1, -1, 9, -1, -1, -1, -1, 14, -1, -1,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 113, 114, -1, -1, -1,
+ -1, 119, -1, -1, -1, 123, -1, -1, -1, 46,
+ -1, -1, -1, -1, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, -1, -1, 80, 81, 82, 83, 3, 4, 5,
+ -1, -1, -1, 9, -1, -1, -1, -1, 14, -1,
+ -1, 98, 99, 100, 101, 102, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 113, 114, -1, -1,
+ -1, -1, 119, -1, -1, -1, 123, -1, -1, -1,
+ -1, -1, -1, -1, -1, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, -1, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, -1, -1, 80, 81, 82, 83, -1, -1,
+ -1, -1, -1, 17, 18, -1, -1, -1, -1, -1,
+ -1, -1, 98, 99, 100, 101, 102, 17, 18, -1,
+ -1, -1, -1, -1, -1, -1, -1, 113, 114, -1,
+ -1, -1, -1, 119, -1, -1, -1, 123, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, -1,
+ -1, -1, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, -1, -1, -1, 80, 81, 82, 83,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 131, 91,
- 92, 93, 94, 95, 96, -1, -1, -1, -1, 131,
- -1, -1, -1, -1, -1, 91, 92, 93, 94, 95,
- 96, 113, 114, 115, 116, 117, 118, 119, 120, -1,
- 122, -1, -1, -1, -1, -1, -1, 113, 114, 115,
- 116, 117, 118, 119, 120, -1, 122
+ 80, 81, 82, 83, 98, 99, 100, 101, 102, -1,
+ -1, -1, 46, -1, -1, 49, -1, -1, 98, 99,
+ 100, 101, 102, -1, -1, -1, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, -1, -1, 133,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, -1,
+ -1, -1, -1, 133, 80, 81, 82, 83, 92, 93,
+ 94, 95, 96, 97, -1, -1, -1, -1, -1, -1,
+ -1, -1, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, 115, 116, 117, 118, 119, 120, 121, 122, -1,
+ 124, 92, 93, 94, 95, 96, 97, -1, -1, -1,
+ -1, 92, 93, 94, 95, 96, 97, 133, -1, -1,
+ -1, -1, -1, -1, 115, 116, 117, 118, 119, 120,
+ 121, 122, -1, 124, 115, 116, 117, 118, 119, 120,
+ 121, 122, -1, 124, 92, 93, 94, 95, 96, 97,
+ -1, -1, -1, 92, 93, 94, 95, 96, 97, -1,
+ -1, -1, -1, -1, -1, -1, -1, 115, 116, 117,
+ 118, 119, 120, 121, 122, -1, 124, 116, 117, 118,
+ 119, 120, 121, 122, -1, 124, 92, 93, 94, 95,
+ 96, 97, -1, -1, -1, 92, -1, 94, 95, 96,
+ 97, -1, -1, -1, 92, -1, 94, 95, 96, 97,
+ 116, 117, 118, 119, 120, 121, 122, -1, 124, 116,
+ 117, 118, 119, 120, 121, 122, -1, 124, 116, 117,
+ 118, 119, 120, 121, 122, -1, 124
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/local/lib/bison.simple"
@@ -1022,15 +1061,20 @@ static const short yycheck[] = { 23,
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
-#else /* Not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc)
#include <alloca.h>
-#else /* Not sparc */
-#ifdef MSDOS
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
-#endif /* MSDOS */
-#endif /* Not sparc. */
-#endif /* Not GNU C. */
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser
@@ -1121,6 +1165,9 @@ int yydebug; /* nonzero means print parse trace */
#define YYMAXDEPTH 10000
#endif
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
#ifndef __cplusplus
/* This is the most reliable way to avoid incompatibilities
@@ -1155,8 +1202,9 @@ __yy_bcopy (char *from, char *to, int count)
}
#endif
+#endif
-#line 160 "/usr/local/lib/bison.simple"
+#line 169 "/usr/local/lib/bison.simple"
int
yyparse()
{
@@ -1174,13 +1222,13 @@ yyparse()
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-#define YYPOPSTACK (yyvsp--, yysp--, yylsp--)
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
#else
-#define YYPOPSTACK (yyvsp--, yysp--)
+#define YYPOPSTACK (yyvsp--, yyssp--)
#endif
int yystacksize = YYINITDEPTH;
@@ -1339,7 +1387,15 @@ yynewstate:
#if YYDEBUG != 0
if (yydebug)
- fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
#endif
}
@@ -1422,33 +1478,33 @@ yyreduce:
switch (yyn) {
case 2:
-#line 272 "pic.y"
+#line 276 "pic.y"
{
if (olist.head)
print_picture(olist.head);
;
break;}
case 3:
-#line 281 "pic.y"
+#line 285 "pic.y"
{ yyval.pl = yyvsp[-1].pl; ;
break;}
case 4:
-#line 286 "pic.y"
+#line 290 "pic.y"
{ yyval.pl = yyvsp[0].pl; ;
break;}
case 5:
-#line 288 "pic.y"
+#line 292 "pic.y"
{ yyval.pl = yyvsp[-2].pl; ;
break;}
case 10:
-#line 303 "pic.y"
+#line 307 "pic.y"
{
define_variable(yyvsp[-2].str, yyvsp[0].x);
a_delete yyvsp[-2].str;
;
break;}
case 11:
-#line 308 "pic.y"
+#line 312 "pic.y"
{
place *p = lookup_label(yyvsp[-3].str);
if (!p) {
@@ -1462,48 +1518,48 @@ case 11:
;
break;}
case 12:
-#line 320 "pic.y"
+#line 324 "pic.y"
{ current_direction = UP_DIRECTION; ;
break;}
case 13:
-#line 322 "pic.y"
+#line 326 "pic.y"
{ current_direction = DOWN_DIRECTION; ;
break;}
case 14:
-#line 324 "pic.y"
+#line 328 "pic.y"
{ current_direction = LEFT_DIRECTION; ;
break;}
case 15:
-#line 326 "pic.y"
+#line 330 "pic.y"
{ current_direction = RIGHT_DIRECTION; ;
break;}
case 16:
-#line 328 "pic.y"
+#line 332 "pic.y"
{
olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
yyvsp[0].lstr.lineno));
;
break;}
case 17:
-#line 333 "pic.y"
+#line 337 "pic.y"
{
olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
yyvsp[0].lstr.lineno));
;
break;}
case 18:
-#line 338 "pic.y"
+#line 342 "pic.y"
{
fprintf(stderr, "%s\n", yyvsp[0].lstr.str);
fflush(stderr);
;
break;}
case 19:
-#line 343 "pic.y"
+#line 347 "pic.y"
{ delim_flag = 1; ;
break;}
case 20:
-#line 345 "pic.y"
+#line 349 "pic.y"
{
delim_flag = 0;
system(yyvsp[0].str);
@@ -1511,7 +1567,7 @@ case 20:
;
break;}
case 21:
-#line 351 "pic.y"
+#line 355 "pic.y"
{
if (yychar < 0)
do_lookahead();
@@ -1520,15 +1576,15 @@ case 21:
;
break;}
case 22:
-#line 358 "pic.y"
+#line 362 "pic.y"
{ delim_flag = 2; ;
break;}
case 23:
-#line 360 "pic.y"
+#line 364 "pic.y"
{ delim_flag = 0; ;
break;}
case 24:
-#line 362 "pic.y"
+#line 366 "pic.y"
{
if (yychar < 0)
do_lookahead();
@@ -1539,15 +1595,15 @@ case 24:
;
break;}
case 25:
-#line 371 "pic.y"
+#line 375 "pic.y"
{ delim_flag = 2; ;
break;}
case 26:
-#line 373 "pic.y"
+#line 377 "pic.y"
{ delim_flag = 0; ;
break;}
case 27:
-#line 375 "pic.y"
+#line 379 "pic.y"
{
if (yychar < 0)
do_lookahead();
@@ -1557,11 +1613,11 @@ case 27:
;
break;}
case 28:
-#line 383 "pic.y"
+#line 387 "pic.y"
{ delim_flag = 1; ;
break;}
case 29:
-#line 385 "pic.y"
+#line 389 "pic.y"
{
delim_flag = 0;
if (yychar < 0)
@@ -1570,7 +1626,7 @@ case 29:
;
break;}
case 30:
-#line 392 "pic.y"
+#line 396 "pic.y"
{
if (yychar < 0)
do_lookahead();
@@ -1580,11 +1636,11 @@ case 30:
;
break;}
case 31:
-#line 400 "pic.y"
+#line 404 "pic.y"
{ delim_flag = 1; ;
break;}
case 32:
-#line 402 "pic.y"
+#line 406 "pic.y"
{
delim_flag = 0;
if (yychar < 0)
@@ -1598,27 +1654,27 @@ case 32:
;
break;}
case 34:
-#line 415 "pic.y"
+#line 419 "pic.y"
{ define_variable("scale", 1.0); ;
break;}
case 35:
-#line 420 "pic.y"
+#line 424 "pic.y"
{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ;
break;}
case 36:
-#line 422 "pic.y"
+#line 426 "pic.y"
{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ;
break;}
case 37:
-#line 424 "pic.y"
+#line 428 "pic.y"
{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ;
break;}
case 38:
-#line 429 "pic.y"
+#line 433 "pic.y"
{ yyval.lstr = yyvsp[0].lstr; ;
break;}
case 39:
-#line 431 "pic.y"
+#line 435 "pic.y"
{
yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1];
strcpy(yyval.lstr.str, yyvsp[-1].lstr.str);
@@ -1636,7 +1692,7 @@ case 39:
;
break;}
case 40:
-#line 450 "pic.y"
+#line 454 "pic.y"
{
yyval.lstr.str = new char[GDIGITS + 1];
sprintf(yyval.lstr.str, "%g", yyvsp[0].x);
@@ -1645,11 +1701,11 @@ case 40:
;
break;}
case 41:
-#line 457 "pic.y"
+#line 461 "pic.y"
{ yyval.lstr = yyvsp[0].lstr; ;
break;}
case 42:
-#line 459 "pic.y"
+#line 463 "pic.y"
{
yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1];
sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y);
@@ -1658,31 +1714,31 @@ case 42:
;
break;}
case 43:
-#line 468 "pic.y"
+#line 472 "pic.y"
{ delim_flag = 1; ;
break;}
case 44:
-#line 470 "pic.y"
+#line 474 "pic.y"
{ delim_flag = 0; yyval.if_data.x = yyvsp[-3].x; yyval.if_data.body = yyvsp[0].str; ;
break;}
case 45:
-#line 475 "pic.y"
+#line 479 "pic.y"
{ yyval.str = 0; ;
break;}
case 46:
-#line 477 "pic.y"
+#line 481 "pic.y"
{ yyval.str = yyvsp[0].lstr.str; ;
break;}
case 47:
-#line 482 "pic.y"
+#line 486 "pic.y"
{ yyval.x = yyvsp[0].x; ;
break;}
case 48:
-#line 484 "pic.y"
+#line 488 "pic.y"
{ yyval.x = yyvsp[0].x; ;
break;}
case 49:
-#line 489 "pic.y"
+#line 493 "pic.y"
{
yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0;
a_delete yyvsp[-2].lstr.str;
@@ -1690,7 +1746,7 @@ case 49:
;
break;}
case 50:
-#line 495 "pic.y"
+#line 499 "pic.y"
{
yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0;
a_delete yyvsp[-2].lstr.str;
@@ -1698,47 +1754,47 @@ case 50:
;
break;}
case 51:
-#line 501 "pic.y"
+#line 505 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ;
break;}
case 52:
-#line 503 "pic.y"
+#line 507 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ;
break;}
case 53:
-#line 505 "pic.y"
+#line 509 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ;
break;}
case 54:
-#line 507 "pic.y"
+#line 511 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ;
break;}
case 55:
-#line 509 "pic.y"
+#line 513 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ;
break;}
case 56:
-#line 511 "pic.y"
+#line 515 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ;
break;}
case 57:
-#line 513 "pic.y"
+#line 517 "pic.y"
{ yyval.x = (yyvsp[0].x == 0.0); ;
break;}
case 58:
-#line 519 "pic.y"
+#line 523 "pic.y"
{ yyval.by.val = 1.0; yyval.by.is_multiplicative = 0; ;
break;}
case 59:
-#line 521 "pic.y"
+#line 525 "pic.y"
{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 0; ;
break;}
case 60:
-#line 523 "pic.y"
+#line 527 "pic.y"
{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 1; ;
break;}
case 61:
-#line 528 "pic.y"
+#line 532 "pic.y"
{
yyval.pl.obj = yyvsp[0].spec->make_object(&current_position,
&current_direction);
@@ -1754,11 +1810,11 @@ case 61:
;
break;}
case 62:
-#line 542 "pic.y"
+#line 546 "pic.y"
{ yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; ;
break;}
case 63:
-#line 544 "pic.y"
+#line 548 "pic.y"
{
yyval.pl.obj = 0;
yyval.pl.x = yyvsp[0].pair.x;
@@ -1768,7 +1824,7 @@ case 63:
;
break;}
case 64:
-#line 552 "pic.y"
+#line 556 "pic.y"
{
yyval.pl = yyvsp[0].pl;
define_label(yyvsp[-3].str, & yyval.pl);
@@ -1776,7 +1832,7 @@ case 64:
;
break;}
case 65:
-#line 558 "pic.y"
+#line 562 "pic.y"
{
yyval.state.x = current_position.x;
yyval.state.y = current_position.y;
@@ -1784,7 +1840,7 @@ case 65:
;
break;}
case 66:
-#line 564 "pic.y"
+#line 568 "pic.y"
{
current_position.x = yyvsp[-2].state.x;
current_position.y = yyvsp[-2].state.y;
@@ -1792,13 +1848,13 @@ case 66:
;
break;}
case 67:
-#line 570 "pic.y"
+#line 574 "pic.y"
{
yyval.pl = yyvsp[-3].pl;
;
break;}
case 68:
-#line 574 "pic.y"
+#line 578 "pic.y"
{
yyval.pl.obj = 0;
yyval.pl.x = current_position.x;
@@ -1806,40 +1862,40 @@ case 68:
;
break;}
case 69:
-#line 583 "pic.y"
+#line 587 "pic.y"
{;
break;}
case 70:
-#line 585 "pic.y"
+#line 589 "pic.y"
{;
break;}
case 71:
-#line 590 "pic.y"
+#line 594 "pic.y"
{
yyval.spec = new object_spec(BOX_OBJECT);
;
break;}
case 72:
-#line 594 "pic.y"
+#line 598 "pic.y"
{
yyval.spec = new object_spec(CIRCLE_OBJECT);
;
break;}
case 73:
-#line 598 "pic.y"
+#line 602 "pic.y"
{
yyval.spec = new object_spec(ELLIPSE_OBJECT);
;
break;}
case 74:
-#line 602 "pic.y"
+#line 606 "pic.y"
{
yyval.spec = new object_spec(ARC_OBJECT);
yyval.spec->dir = current_direction;
;
break;}
case 75:
-#line 607 "pic.y"
+#line 611 "pic.y"
{
yyval.spec = new object_spec(LINE_OBJECT);
lookup_variable("lineht", & yyval.spec->segment_height);
@@ -1848,7 +1904,7 @@ case 75:
;
break;}
case 76:
-#line 614 "pic.y"
+#line 618 "pic.y"
{
yyval.spec = new object_spec(ARROW_OBJECT);
lookup_variable("lineht", & yyval.spec->segment_height);
@@ -1857,7 +1913,7 @@ case 76:
;
break;}
case 77:
-#line 621 "pic.y"
+#line 625 "pic.y"
{
yyval.spec = new object_spec(MOVE_OBJECT);
lookup_variable("moveht", & yyval.spec->segment_height);
@@ -1866,7 +1922,7 @@ case 77:
;
break;}
case 78:
-#line 628 "pic.y"
+#line 632 "pic.y"
{
yyval.spec = new object_spec(SPLINE_OBJECT);
lookup_variable("lineht", & yyval.spec->segment_height);
@@ -1875,21 +1931,21 @@ case 78:
;
break;}
case 79:
-#line 635 "pic.y"
+#line 639 "pic.y"
{
yyval.spec = new object_spec(TEXT_OBJECT);
yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
;
break;}
case 80:
-#line 640 "pic.y"
+#line 644 "pic.y"
{
yyval.spec = new object_spec(TEXT_OBJECT);
yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1);
;
break;}
case 81:
-#line 645 "pic.y"
+#line 649 "pic.y"
{
yyval.spec = new object_spec(TEXT_OBJECT);
yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x),
@@ -1898,7 +1954,7 @@ case 81:
;
break;}
case 82:
-#line 652 "pic.y"
+#line 656 "pic.y"
{
saved_state *p = new saved_state;
yyval.pstate = p;
@@ -1915,7 +1971,7 @@ case 82:
;
break;}
case 83:
-#line 667 "pic.y"
+#line 671 "pic.y"
{
current_position.x = yyvsp[-2].pstate->x;
current_position.y = yyvsp[-2].pstate->y;
@@ -1929,7 +1985,7 @@ case 83:
;
break;}
case 84:
-#line 679 "pic.y"
+#line 683 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->height = yyvsp[0].x;
@@ -1937,7 +1993,7 @@ case 84:
;
break;}
case 85:
-#line 685 "pic.y"
+#line 689 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->radius = yyvsp[0].x;
@@ -1945,7 +2001,7 @@ case 85:
;
break;}
case 86:
-#line 691 "pic.y"
+#line 695 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->width = yyvsp[0].x;
@@ -1953,7 +2009,7 @@ case 86:
;
break;}
case 87:
-#line 697 "pic.y"
+#line 701 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->radius = yyvsp[0].x/2.0;
@@ -1961,7 +2017,7 @@ case 87:
;
break;}
case 88:
-#line 703 "pic.y"
+#line 707 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= HAS_SEGMENT;
@@ -1982,7 +2038,7 @@ case 88:
;
break;}
case 89:
-#line 722 "pic.y"
+#line 726 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->dir = UP_DIRECTION;
@@ -1991,7 +2047,7 @@ case 89:
;
break;}
case 90:
-#line 729 "pic.y"
+#line 733 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->dir = UP_DIRECTION;
@@ -2000,7 +2056,7 @@ case 90:
;
break;}
case 91:
-#line 736 "pic.y"
+#line 740 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->dir = DOWN_DIRECTION;
@@ -2009,7 +2065,7 @@ case 91:
;
break;}
case 92:
-#line 743 "pic.y"
+#line 747 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->dir = DOWN_DIRECTION;
@@ -2018,7 +2074,7 @@ case 92:
;
break;}
case 93:
-#line 750 "pic.y"
+#line 754 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->dir = RIGHT_DIRECTION;
@@ -2027,7 +2083,7 @@ case 93:
;
break;}
case 94:
-#line 757 "pic.y"
+#line 761 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->dir = RIGHT_DIRECTION;
@@ -2036,7 +2092,7 @@ case 94:
;
break;}
case 95:
-#line 764 "pic.y"
+#line 768 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->dir = LEFT_DIRECTION;
@@ -2045,7 +2101,7 @@ case 95:
;
break;}
case 96:
-#line 771 "pic.y"
+#line 775 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->dir = LEFT_DIRECTION;
@@ -2054,7 +2110,7 @@ case 96:
;
break;}
case 97:
-#line 778 "pic.y"
+#line 782 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= HAS_FROM;
@@ -2063,7 +2119,7 @@ case 97:
;
break;}
case 98:
-#line 785 "pic.y"
+#line 789 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
if (yyval.spec->flags & HAS_SEGMENT)
@@ -2080,7 +2136,7 @@ case 98:
;
break;}
case 99:
-#line 800 "pic.y"
+#line 804 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= HAS_AT;
@@ -2094,7 +2150,7 @@ case 99:
;
break;}
case 100:
-#line 812 "pic.y"
+#line 816 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= HAS_WITH;
@@ -2102,7 +2158,7 @@ case 100:
;
break;}
case 101:
-#line 818 "pic.y"
+#line 822 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= HAS_SEGMENT;
@@ -2111,7 +2167,7 @@ case 101:
;
break;}
case 102:
-#line 825 "pic.y"
+#line 829 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
if (yyval.spec->flags & HAS_SEGMENT) {
@@ -2125,7 +2181,7 @@ case 102:
;
break;}
case 103:
-#line 837 "pic.y"
+#line 841 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_DOTTED;
@@ -2133,7 +2189,7 @@ case 103:
;
break;}
case 104:
-#line 843 "pic.y"
+#line 847 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= IS_DOTTED;
@@ -2141,7 +2197,7 @@ case 104:
;
break;}
case 105:
-#line 849 "pic.y"
+#line 853 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_DASHED;
@@ -2149,7 +2205,7 @@ case 105:
;
break;}
case 106:
-#line 855 "pic.y"
+#line 859 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= IS_DASHED;
@@ -2157,14 +2213,14 @@ case 106:
;
break;}
case 107:
-#line 861 "pic.y"
+#line 865 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_DEFAULT_FILLED;
;
break;}
case 108:
-#line 866 "pic.y"
+#line 870 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= IS_FILLED;
@@ -2172,7 +2228,7 @@ case 108:
;
break;}
case 109:
-#line 872 "pic.y"
+#line 876 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
// line chop chop means line chop 0 chop 0
@@ -2190,7 +2246,7 @@ case 109:
;
break;}
case 110:
-#line 888 "pic.y"
+#line 892 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
@@ -2209,56 +2265,56 @@ case 110:
;
break;}
case 111:
-#line 905 "pic.y"
+#line 909 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_SAME;
;
break;}
case 112:
-#line 910 "pic.y"
+#line 914 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_INVISIBLE;
;
break;}
case 113:
-#line 915 "pic.y"
+#line 919 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= HAS_LEFT_ARROW_HEAD;
;
break;}
case 114:
-#line 920 "pic.y"
+#line 924 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD;
;
break;}
case 115:
-#line 925 "pic.y"
+#line 929 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
;
break;}
case 116:
-#line 930 "pic.y"
+#line 934 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_CLOCKWISE;
;
break;}
case 117:
-#line 935 "pic.y"
+#line 939 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags &= ~IS_CLOCKWISE;
;
break;}
case 118:
-#line 940 "pic.y"
+#line 944 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
for (text_item **p = & yyval.spec->text; *p; p = &(*p)->next)
@@ -2267,7 +2323,7 @@ case 118:
;
break;}
case 119:
-#line 947 "pic.y"
+#line 951 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
if (yyval.spec->text) {
@@ -2278,7 +2334,7 @@ case 119:
;
break;}
case 120:
-#line 956 "pic.y"
+#line 960 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
if (yyval.spec->text) {
@@ -2289,7 +2345,7 @@ case 120:
;
break;}
case 121:
-#line 965 "pic.y"
+#line 969 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
if (yyval.spec->text) {
@@ -2300,7 +2356,7 @@ case 121:
;
break;}
case 122:
-#line 974 "pic.y"
+#line 978 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
if (yyval.spec->text) {
@@ -2311,7 +2367,7 @@ case 122:
;
break;}
case 123:
-#line 983 "pic.y"
+#line 987 "pic.y"
{
yyval.spec = yyvsp[-2].spec;
yyval.spec->flags |= HAS_THICKNESS;
@@ -2319,20 +2375,20 @@ case 123:
;
break;}
case 124:
-#line 989 "pic.y"
+#line 993 "pic.y"
{
yyval.spec = yyvsp[-1].spec;
yyval.spec->flags |= IS_ALIGNED;
;
break;}
case 125:
-#line 997 "pic.y"
+#line 1001 "pic.y"
{
yyval.lstr = yyvsp[0].lstr;
;
break;}
case 126:
-#line 1001 "pic.y"
+#line 1005 "pic.y"
{
yyval.lstr.filename = yyvsp[-2].lstr.filename;
yyval.lstr.lineno = yyvsp[-2].lstr.lineno;
@@ -2342,7 +2398,7 @@ case 126:
;
break;}
case 127:
-#line 1012 "pic.y"
+#line 1016 "pic.y"
{
yyval.dv.v = 0;
yyval.dv.nv = 0;
@@ -2350,7 +2406,7 @@ case 127:
;
break;}
case 128:
-#line 1018 "pic.y"
+#line 1022 "pic.y"
{
yyval.dv = yyvsp[-2].dv;
if (yyval.dv.nv >= yyval.dv.maxv) {
@@ -2371,11 +2427,11 @@ case 128:
;
break;}
case 129:
-#line 1040 "pic.y"
+#line 1044 "pic.y"
{ yyval.pair = yyvsp[0].pair; ;
break;}
case 130:
-#line 1042 "pic.y"
+#line 1046 "pic.y"
{
position pos = yyvsp[0].pl;
yyval.pair.x = pos.x;
@@ -2383,58 +2439,58 @@ case 130:
;
break;}
case 131:
-#line 1051 "pic.y"
+#line 1055 "pic.y"
{ yyval.pair = yyvsp[0].pair; ;
break;}
case 132:
-#line 1053 "pic.y"
+#line 1057 "pic.y"
{
yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x;
yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y;
;
break;}
case 133:
-#line 1058 "pic.y"
+#line 1062 "pic.y"
{
yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x;
yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y;
;
break;}
case 134:
-#line 1063 "pic.y"
+#line 1067 "pic.y"
{
yyval.pair.x = yyvsp[-3].pair.x;
yyval.pair.y = yyvsp[-1].pair.y;
;
break;}
case 135:
-#line 1068 "pic.y"
+#line 1072 "pic.y"
{
yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x;
yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y;
;
break;}
case 136:
-#line 1073 "pic.y"
+#line 1077 "pic.y"
{
yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
;
break;}
case 139:
-#line 1086 "pic.y"
+#line 1090 "pic.y"
{ yyval.pair.x = yyvsp[-2].x; yyval.pair.y = yyvsp[0].x; ;
break;}
case 140:
-#line 1088 "pic.y"
+#line 1092 "pic.y"
{ yyval.pair = yyvsp[-1].pair; ;
break;}
case 141:
-#line 1093 "pic.y"
+#line 1097 "pic.y"
{ yyval.pl = yyvsp[0].pl; ;
break;}
case 142:
-#line 1095 "pic.y"
+#line 1099 "pic.y"
{
path pth(yyvsp[0].crn);
if (!pth.follow(yyvsp[-1].pl, & yyval.pl))
@@ -2442,7 +2498,7 @@ case 142:
;
break;}
case 143:
-#line 1101 "pic.y"
+#line 1105 "pic.y"
{
path pth(yyvsp[-1].crn);
if (!pth.follow(yyvsp[0].pl, & yyval.pl))
@@ -2450,7 +2506,7 @@ case 143:
;
break;}
case 144:
-#line 1107 "pic.y"
+#line 1111 "pic.y"
{
path pth(yyvsp[-2].crn);
if (!pth.follow(yyvsp[0].pl, & yyval.pl))
@@ -2458,7 +2514,7 @@ case 144:
;
break;}
case 145:
-#line 1113 "pic.y"
+#line 1117 "pic.y"
{
yyval.pl.x = current_position.x;
yyval.pl.y = current_position.y;
@@ -2466,7 +2522,7 @@ case 145:
;
break;}
case 146:
-#line 1122 "pic.y"
+#line 1126 "pic.y"
{
place *p = lookup_label(yyvsp[0].str);
if (!p) {
@@ -2478,13 +2534,13 @@ case 146:
;
break;}
case 147:
-#line 1132 "pic.y"
+#line 1136 "pic.y"
{
yyval.pl.obj = yyvsp[0].obj;
;
break;}
case 148:
-#line 1136 "pic.y"
+#line 1140 "pic.y"
{
path pth(yyvsp[0].str);
if (!pth.follow(yyvsp[-2].pl, & yyval.pl))
@@ -2492,15 +2548,26 @@ case 148:
;
break;}
case 149:
-#line 1145 "pic.y"
-{ yyval.n = 1; ;
+#line 1149 "pic.y"
+{ yyval.n = yyvsp[0].n; ;
break;}
case 150:
-#line 1147 "pic.y"
-{ yyval.n = yyvsp[-1].n; ;
+#line 1151 "pic.y"
+{
+ // XXX Check for overflow (and non-integers?).
+ yyval.n = (int)yyvsp[-1].x;
+ ;
break;}
case 151:
-#line 1152 "pic.y"
+#line 1159 "pic.y"
+{ yyval.n = 1; ;
+ break;}
+case 152:
+#line 1161 "pic.y"
+{ yyval.n = yyvsp[-1].n; ;
+ break;}
+case 153:
+#line 1166 "pic.y"
{
int count = 0;
for (object *p = olist.head; p != 0; p = p->next)
@@ -2515,8 +2582,8 @@ case 151:
}
;
break;}
-case 152:
-#line 1166 "pic.y"
+case 154:
+#line 1180 "pic.y"
{
int count = 0;
for (object *p = olist.tail; p != 0; p = p->prev)
@@ -2531,226 +2598,226 @@ case 152:
}
;
break;}
-case 153:
-#line 1183 "pic.y"
+case 155:
+#line 1197 "pic.y"
{ yyval.obtype = BOX_OBJECT; ;
break;}
-case 154:
-#line 1185 "pic.y"
+case 156:
+#line 1199 "pic.y"
{ yyval.obtype = CIRCLE_OBJECT; ;
break;}
-case 155:
-#line 1187 "pic.y"
+case 157:
+#line 1201 "pic.y"
{ yyval.obtype = ELLIPSE_OBJECT; ;
break;}
-case 156:
-#line 1189 "pic.y"
+case 158:
+#line 1203 "pic.y"
{ yyval.obtype = ARC_OBJECT; ;
break;}
-case 157:
-#line 1191 "pic.y"
+case 159:
+#line 1205 "pic.y"
{ yyval.obtype = LINE_OBJECT; ;
break;}
-case 158:
-#line 1193 "pic.y"
+case 160:
+#line 1207 "pic.y"
{ yyval.obtype = ARROW_OBJECT; ;
break;}
-case 159:
-#line 1195 "pic.y"
+case 161:
+#line 1209 "pic.y"
{ yyval.obtype = SPLINE_OBJECT; ;
break;}
-case 160:
-#line 1197 "pic.y"
+case 162:
+#line 1211 "pic.y"
{ yyval.obtype = BLOCK_OBJECT; ;
break;}
-case 161:
-#line 1199 "pic.y"
+case 163:
+#line 1213 "pic.y"
{ yyval.obtype = TEXT_OBJECT; ;
break;}
-case 162:
-#line 1204 "pic.y"
+case 164:
+#line 1218 "pic.y"
{
yyval.pth = new path(yyvsp[0].str);
;
break;}
-case 163:
-#line 1208 "pic.y"
+case 165:
+#line 1222 "pic.y"
{
yyval.pth = yyvsp[-2].pth;
yyval.pth->append(yyvsp[0].str);
;
break;}
-case 164:
-#line 1216 "pic.y"
+case 166:
+#line 1230 "pic.y"
{
yyval.pth = new path(yyvsp[0].crn);
;
break;}
-case 165:
-#line 1223 "pic.y"
+case 167:
+#line 1237 "pic.y"
{
yyval.pth = yyvsp[0].pth;
;
break;}
-case 166:
-#line 1227 "pic.y"
+case 168:
+#line 1241 "pic.y"
{
yyval.pth = yyvsp[-1].pth;
yyval.pth->append(yyvsp[0].crn);
;
break;}
-case 167:
-#line 1235 "pic.y"
+case 169:
+#line 1249 "pic.y"
{
yyval.pth = yyvsp[0].pth;
;
break;}
-case 168:
-#line 1240 "pic.y"
+case 170:
+#line 1254 "pic.y"
{
lex_warning("`%1%2 last %3' in `with' argument ignored",
yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype));
yyval.pth = yyvsp[0].pth;
;
break;}
-case 169:
-#line 1246 "pic.y"
+case 171:
+#line 1260 "pic.y"
{
lex_warning("`last %1' in `with' argument ignored",
object_type_name(yyvsp[-1].obtype));
yyval.pth = yyvsp[0].pth;
;
break;}
-case 170:
-#line 1252 "pic.y"
+case 172:
+#line 1266 "pic.y"
{
lex_warning("`%1%2 %3' in `with' argument ignored",
yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype));
yyval.pth = yyvsp[0].pth;
;
break;}
-case 171:
-#line 1258 "pic.y"
+case 173:
+#line 1272 "pic.y"
{
lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str);
a_delete yyvsp[-1].str;
yyval.pth = yyvsp[0].pth;
;
break;}
-case 172:
-#line 1267 "pic.y"
+case 174:
+#line 1281 "pic.y"
{ yyval.crn = &object::north; ;
break;}
-case 173:
-#line 1269 "pic.y"
+case 175:
+#line 1283 "pic.y"
{ yyval.crn = &object::east; ;
break;}
-case 174:
-#line 1271 "pic.y"
+case 176:
+#line 1285 "pic.y"
{ yyval.crn = &object::west; ;
break;}
-case 175:
-#line 1273 "pic.y"
+case 177:
+#line 1287 "pic.y"
{ yyval.crn = &object::south; ;
break;}
-case 176:
-#line 1275 "pic.y"
+case 178:
+#line 1289 "pic.y"
{ yyval.crn = &object::north_east; ;
break;}
-case 177:
-#line 1277 "pic.y"
+case 179:
+#line 1291 "pic.y"
{ yyval.crn = &object:: south_east; ;
break;}
-case 178:
-#line 1279 "pic.y"
+case 180:
+#line 1293 "pic.y"
{ yyval.crn = &object::north_west; ;
break;}
-case 179:
-#line 1281 "pic.y"
+case 181:
+#line 1295 "pic.y"
{ yyval.crn = &object::south_west; ;
break;}
-case 180:
-#line 1283 "pic.y"
+case 182:
+#line 1297 "pic.y"
{ yyval.crn = &object::center; ;
break;}
-case 181:
-#line 1285 "pic.y"
+case 183:
+#line 1299 "pic.y"
{ yyval.crn = &object::start; ;
break;}
-case 182:
-#line 1287 "pic.y"
+case 184:
+#line 1301 "pic.y"
{ yyval.crn = &object::end; ;
break;}
-case 183:
-#line 1289 "pic.y"
+case 185:
+#line 1303 "pic.y"
{ yyval.crn = &object::north; ;
break;}
-case 184:
-#line 1291 "pic.y"
+case 186:
+#line 1305 "pic.y"
{ yyval.crn = &object::south; ;
break;}
-case 185:
-#line 1293 "pic.y"
+case 187:
+#line 1307 "pic.y"
{ yyval.crn = &object::west; ;
break;}
-case 186:
-#line 1295 "pic.y"
+case 188:
+#line 1309 "pic.y"
{ yyval.crn = &object::east; ;
break;}
-case 187:
-#line 1297 "pic.y"
+case 189:
+#line 1311 "pic.y"
{ yyval.crn = &object::north_west; ;
break;}
-case 188:
-#line 1299 "pic.y"
+case 190:
+#line 1313 "pic.y"
{ yyval.crn = &object::south_west; ;
break;}
-case 189:
-#line 1301 "pic.y"
+case 191:
+#line 1315 "pic.y"
{ yyval.crn = &object::north_east; ;
break;}
-case 190:
-#line 1303 "pic.y"
+case 192:
+#line 1317 "pic.y"
{ yyval.crn = &object::south_east; ;
break;}
-case 191:
-#line 1305 "pic.y"
+case 193:
+#line 1319 "pic.y"
{ yyval.crn = &object::west; ;
break;}
-case 192:
-#line 1307 "pic.y"
+case 194:
+#line 1321 "pic.y"
{ yyval.crn = &object::east; ;
break;}
-case 193:
-#line 1309 "pic.y"
+case 195:
+#line 1323 "pic.y"
{ yyval.crn = &object::north_west; ;
break;}
-case 194:
-#line 1311 "pic.y"
+case 196:
+#line 1325 "pic.y"
{ yyval.crn = &object::south_west; ;
break;}
-case 195:
-#line 1313 "pic.y"
+case 197:
+#line 1327 "pic.y"
{ yyval.crn = &object::north_east; ;
break;}
-case 196:
-#line 1315 "pic.y"
+case 198:
+#line 1329 "pic.y"
{ yyval.crn = &object::south_east; ;
break;}
-case 197:
-#line 1317 "pic.y"
+case 199:
+#line 1331 "pic.y"
{ yyval.crn = &object::center; ;
break;}
-case 198:
-#line 1319 "pic.y"
+case 200:
+#line 1333 "pic.y"
{ yyval.crn = &object::start; ;
break;}
-case 199:
-#line 1321 "pic.y"
+case 201:
+#line 1335 "pic.y"
{ yyval.crn = &object::end; ;
break;}
-case 200:
-#line 1326 "pic.y"
+case 202:
+#line 1340 "pic.y"
{
if (!lookup_variable(yyvsp[0].str, & yyval.x)) {
lex_error("there is no variable `%1'", yyvsp[0].str);
@@ -2759,12 +2826,12 @@ case 200:
a_delete yyvsp[0].str;
;
break;}
-case 201:
-#line 1334 "pic.y"
+case 203:
+#line 1348 "pic.y"
{ yyval.x = yyvsp[0].x; ;
break;}
-case 202:
-#line 1336 "pic.y"
+case 204:
+#line 1350 "pic.y"
{
if (yyvsp[-1].pl.obj != 0)
yyval.x = yyvsp[-1].pl.obj->origin().x;
@@ -2772,8 +2839,8 @@ case 202:
yyval.x = yyvsp[-1].pl.x;
;
break;}
-case 203:
-#line 1343 "pic.y"
+case 205:
+#line 1357 "pic.y"
{
if (yyvsp[-1].pl.obj != 0)
yyval.x = yyvsp[-1].pl.obj->origin().y;
@@ -2781,8 +2848,8 @@ case 203:
yyval.x = yyvsp[-1].pl.y;
;
break;}
-case 204:
-#line 1350 "pic.y"
+case 206:
+#line 1364 "pic.y"
{
if (yyvsp[-1].pl.obj != 0)
yyval.x = yyvsp[-1].pl.obj->height();
@@ -2790,8 +2857,8 @@ case 204:
yyval.x = 0.0;
;
break;}
-case 205:
-#line 1357 "pic.y"
+case 207:
+#line 1371 "pic.y"
{
if (yyvsp[-1].pl.obj != 0)
yyval.x = yyvsp[-1].pl.obj->width();
@@ -2799,8 +2866,8 @@ case 205:
yyval.x = 0.0;
;
break;}
-case 206:
-#line 1364 "pic.y"
+case 208:
+#line 1378 "pic.y"
{
if (yyvsp[-1].pl.obj != 0)
yyval.x = yyvsp[-1].pl.obj->radius();
@@ -2808,20 +2875,20 @@ case 206:
yyval.x = 0.0;
;
break;}
-case 207:
-#line 1371 "pic.y"
+case 209:
+#line 1385 "pic.y"
{ yyval.x = yyvsp[-2].x + yyvsp[0].x; ;
break;}
-case 208:
-#line 1373 "pic.y"
+case 210:
+#line 1387 "pic.y"
{ yyval.x = yyvsp[-2].x - yyvsp[0].x; ;
break;}
-case 209:
-#line 1375 "pic.y"
+case 211:
+#line 1389 "pic.y"
{ yyval.x = yyvsp[-2].x * yyvsp[0].x; ;
break;}
-case 210:
-#line 1377 "pic.y"
+case 212:
+#line 1391 "pic.y"
{
if (yyvsp[0].x == 0.0) {
lex_error("division by zero");
@@ -2830,8 +2897,8 @@ case 210:
yyval.x = yyvsp[-2].x/yyvsp[0].x;
;
break;}
-case 211:
-#line 1385 "pic.y"
+case 213:
+#line 1399 "pic.y"
{
if (yyvsp[0].x == 0.0) {
lex_error("modulus by zero");
@@ -2840,8 +2907,8 @@ case 211:
yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x);
;
break;}
-case 212:
-#line 1393 "pic.y"
+case 214:
+#line 1407 "pic.y"
{
errno = 0;
yyval.x = pow(yyvsp[-2].x, yyvsp[0].x);
@@ -2855,16 +2922,16 @@ case 212:
}
;
break;}
-case 213:
-#line 1406 "pic.y"
+case 215:
+#line 1420 "pic.y"
{ yyval.x = -yyvsp[0].x; ;
break;}
-case 214:
-#line 1408 "pic.y"
+case 216:
+#line 1422 "pic.y"
{ yyval.x = yyvsp[-1].x; ;
break;}
-case 215:
-#line 1410 "pic.y"
+case 217:
+#line 1424 "pic.y"
{
errno = 0;
yyval.x = sin(yyvsp[-1].x);
@@ -2874,8 +2941,8 @@ case 215:
}
;
break;}
-case 216:
-#line 1419 "pic.y"
+case 218:
+#line 1433 "pic.y"
{
errno = 0;
yyval.x = cos(yyvsp[-1].x);
@@ -2885,8 +2952,8 @@ case 216:
}
;
break;}
-case 217:
-#line 1428 "pic.y"
+case 219:
+#line 1442 "pic.y"
{
errno = 0;
yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x);
@@ -2900,8 +2967,8 @@ case 217:
}
;
break;}
-case 218:
-#line 1441 "pic.y"
+case 220:
+#line 1455 "pic.y"
{
errno = 0;
yyval.x = log10(yyvsp[-1].x);
@@ -2911,8 +2978,8 @@ case 218:
}
;
break;}
-case 219:
-#line 1450 "pic.y"
+case 221:
+#line 1464 "pic.y"
{
errno = 0;
yyval.x = pow(10.0, yyvsp[-1].x);
@@ -2922,8 +2989,8 @@ case 219:
}
;
break;}
-case 220:
-#line 1459 "pic.y"
+case 222:
+#line 1473 "pic.y"
{
errno = 0;
yyval.x = sqrt(yyvsp[-1].x);
@@ -2933,69 +3000,69 @@ case 220:
}
;
break;}
-case 221:
-#line 1468 "pic.y"
+case 223:
+#line 1482 "pic.y"
{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; ;
break;}
-case 222:
-#line 1470 "pic.y"
+case 224:
+#line 1484 "pic.y"
{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; ;
break;}
-case 223:
-#line 1472 "pic.y"
+case 225:
+#line 1486 "pic.y"
{ yyval.x = floor(yyvsp[-1].x); ;
break;}
-case 224:
-#line 1474 "pic.y"
+case 226:
+#line 1488 "pic.y"
{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); ;
break;}
-case 225:
-#line 1476 "pic.y"
+case 227:
+#line 1490 "pic.y"
{
/* return a random number in the range [0,1) */
/* portable, but not very random */
yyval.x = (rand() & 0x7fff) / double(0x8000);
;
break;}
-case 226:
-#line 1482 "pic.y"
+case 228:
+#line 1496 "pic.y"
{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); ;
break;}
-case 227:
-#line 1484 "pic.y"
+case 229:
+#line 1498 "pic.y"
{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); ;
break;}
-case 228:
-#line 1486 "pic.y"
+case 230:
+#line 1500 "pic.y"
{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); ;
break;}
-case 229:
-#line 1488 "pic.y"
+case 231:
+#line 1502 "pic.y"
{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); ;
break;}
-case 230:
-#line 1490 "pic.y"
+case 232:
+#line 1504 "pic.y"
{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); ;
break;}
-case 231:
-#line 1492 "pic.y"
+case 233:
+#line 1506 "pic.y"
{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); ;
break;}
-case 232:
-#line 1494 "pic.y"
+case 234:
+#line 1508 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ;
break;}
-case 233:
-#line 1496 "pic.y"
+case 235:
+#line 1510 "pic.y"
{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ;
break;}
-case 234:
-#line 1498 "pic.y"
+case 236:
+#line 1512 "pic.y"
{ yyval.x = (yyvsp[0].x == 0.0); ;
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 423 "/usr/local/lib/bison.simple"
+#line 440 "/usr/local/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -3068,23 +3135,28 @@ yyerrlab: /* here on detecting error */
for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
if (yycheck[x + yyn] == x)
size += strlen(yytname[x]) + 15, count++;
- msg = (char *) xmalloc(size + 15);
- strcpy(msg, "parse error");
-
- if (count < 5)
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
{
- count = 0;
- for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
}
- yyerror(msg);
- free(msg);
+ else
+ yyerror ("parse error; also virtual memory exceeded");
}
else
#endif /* YYERROR_VERBOSE */
@@ -3182,7 +3254,7 @@ yyerrhandle:
yystate = yyn;
goto yynewstate;
}
-#line 1502 "pic.y"
+#line 1516 "pic.y"
/* bison defines const to be empty unless __STDC__ is defined, which it
diff --git a/pic/pic.h b/pic/pic.h
index 5c657b96e..1f83984bf 100644
--- a/pic/pic.h
+++ b/pic/pic.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,14 +15,13 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
-#include <osfcn.h>
#include <errno.h>
#include "assert.h"
diff --git a/man/gpic.man b/pic/pic.man
index b87e467fb..b049eab91 100644
--- a/man/gpic.man
+++ b/pic/pic.man
@@ -1,22 +1,31 @@
.\" -*- nroff -*-
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
.el .ds tx TeX
.ie \n(.g .ds ic \/
.el .ds ic \^
-.TH GPIC @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" The BSD man macros can't handle " in arguments to font change macros,
+.\" so use \(ts instead of ".
+.tr \(ts"
+.TH @G@PIC @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-gpic \- compile pictures for troff or TeX
+@g@pic \- compile pictures for troff or TeX
.SH SYNOPSIS
-.B gpic
+.B @g@pic
[
-.B \-pvxzC
+.B \-nvC
]
[
.I filename
\&.\|.\|.
]
.br
-.B gpic
+.B @g@pic
.B \-t
[
.B \-cvzC
@@ -27,11 +36,13 @@ gpic \- compile pictures for troff or TeX
]
.SH DESCRIPTION
.LP
-.B gpic
+This manual page descibes the GNU version of
+.BR pic ,
+which is part of the groff document formatting system.
+.B pic
compiles descriptions of pictures embedded within
.B troff
-or \*(tx input files into commands that are understood by \*(tx
-or
+or \*(tx input files into commands that are understood by \*(tx or
.BR troff .
Each picture starts with a line beginning with
.B .PS
@@ -71,18 +82,16 @@ and
.B .PE
even when followed by a character other than space or newline.
.TP
-.B \-p
-Grops mode.
-Use this if the output of gpic will be processed by
-.B gtroff
-and
-.BR grops .
-In this mode gpic can make use the
-.BI \eX'ps:\ anything '
-command.
-Currently it does this only for the
-.B aligned
-attribute.
+.B \-n
+Don't use the groff extensions to the troff drawing commands.
+You should use this if you are using a postprocessor that doesn't support
+these extensions.
+The extensions are described in
+.BR groff_out (@MAN5EXT@).
+The
+.B \-n
+option also causes pic
+not to use zero-length lines to draw dots in troff mode.
.TP
.B \-t
\*(tx mode.
@@ -119,21 +128,8 @@ variable.
.B \-v
Print the version number.
.TP
-.B \-x
-Assume a troff driver that supports the gpic extensions
-to the standard troff drawing commands.
-These are described in
-.BR groff_out (@MAN5EXT@).
-These extensions can be used with device-independent troff,
-provided that the version being used passes through unrecognised
-drawing commands in the standard way.
-This implies
-.BR \-z .
-.TP
.B \-z
-Draw dots using zero-length lines. This applies to both \*(tx mode and
-.B troff
-mode.
+In \*(tx mode draw dots using zero-length lines.
.LP
The following options supported by other versions of
.B pic
@@ -155,14 +151,15 @@ output generated by
.B pic
is device-independent.
.SH USAGE
-This section describes only the differences between gpic and the original pic.
-Many of these differences also apply to newer versions of pic.
+This section describes only the differences between GNU pic and the original
+version of pic.
+Many of these differences also apply to newer versions of Unix pic.
.SS \*(tx mode
.LP
\*(tx mode is enabled by the
.B \-t
option.
-In \*(tx mode, gpic will define a vbox called
+In \*(tx mode, pic will define a vbox called
.B \egraph
for each picture.
You must yourself print that vbox using, for example, the command
@@ -374,12 +371,12 @@ with an argument of
If
.I text
is omitted a format string of
-.B """%g"""
+.B "\(ts%g\(ts"
is used.
Attributes can be specified in the same way as for a normal text
object.
Be very careful that you specify an appropriate format string;
-gpic does only very limited checking of the string.
+pic does only very limited checking of the string.
This is deprecated in favour of
.BR sprintf .
.TP
@@ -552,7 +549,7 @@ line can have a second argument specifying a maximum height for
the picture.
If the width of zero is specified the width will be ignored in computing
the scaling factor for the picture.
-Note that gpic will always scale a picture by the same amount
+Note that GNU pic will always scale a picture by the same amount
vertically as horizontally.
This is different from the
.SM DWB
@@ -580,7 +577,7 @@ have a value of 0.
In places where a quoted text string can be used,
an expression of the form
.IP
-.BI sprintf(" format ""","\ arg , .\|.\|. )
+.BI sprintf(\(ts format \(ts,\ arg ,\fR.\|.\|.\fB)
.LP
can also be used;
this will produce the arguments formatted according to
@@ -659,7 +656,7 @@ Initially
.B arrowhead
has a value of 1.
.LP
-The troff output of gpic is device-independent.
+The troff output of pic is device-independent.
The
.B \-T
option is therefore redundant.
@@ -669,9 +666,8 @@ to be in troff machine units.
Objects can have an
.B aligned
attribute.
-This is only available with the
-.B \-p
-option.
+This will only work when the postprocessor is
+.BR grops .
Any text associated with an object having the
.B aligned
attribute will be rotated about the center of the object
@@ -679,8 +675,28 @@ so that it is aligned in the direction from the start point
to the end point of the object.
Note that this attribute will have no effect for objects whose start and
end points are coincident.
+.LP
+In places where
+.IB n th
+is allowed
+.BI ` expr 'th
+is also allowed.
+Note that
+.B 'th
+is a single token: no space is allowed between the
+.B '
+and the
+.BR th .
+For example,
+.IP
+.B
+.nf
+for i = 1 to 4 do {
+ line from `i'th box.nw to `i+1'th box.se
+}
+.fi
.SH FILES
-.TP \w'\fB@MACRODIR@/tmac.pic'u+3n
+.Tp \w'\fB@MACRODIR@/tmac.pic'u+3n
.B
@MACRODIR@/tmac.pic
Example definitions of the
@@ -689,7 +705,7 @@ and
.B PE
macros.
.SH "SEE ALSO"
-.BR gtroff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
.BR groff_out (@MAN5EXT@),
.BR tex (1)
.br
diff --git a/pic/pic.tab.h b/pic/pic.tab.h
index d9a20d525..c5b931c03 100644
--- a/pic/pic.tab.h
+++ b/pic/pic.tab.h
@@ -23,108 +23,109 @@ typedef union {
#define COMMAND_LINE 262
#define DELIMITED 263
#define ORDINAL 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define WIDTH 283
-#define DIAMETER 284
-#define FROM 285
-#define TO 286
-#define AT 287
-#define WITH 288
-#define BY 289
-#define THEN 290
-#define DOTTED 291
-#define DASHED 292
-#define CHOP 293
-#define SAME 294
-#define INVISIBLE 295
-#define LJUST 296
-#define RJUST 297
-#define ABOVE 298
-#define BELOW 299
-#define OF 300
-#define THE 301
-#define WAY 302
-#define BETWEEN 303
-#define AND 304
-#define HERE 305
-#define DOT_N 306
-#define DOT_E 307
-#define DOT_W 308
-#define DOT_S 309
-#define DOT_NE 310
-#define DOT_SE 311
-#define DOT_NW 312
-#define DOT_SW 313
-#define DOT_C 314
-#define DOT_START 315
-#define DOT_END 316
-#define DOT_X 317
-#define DOT_Y 318
-#define DOT_HT 319
-#define DOT_WID 320
-#define DOT_RAD 321
-#define SIN 322
-#define COS 323
-#define ATAN2 324
-#define LOG 325
-#define EXP 326
-#define SQRT 327
-#define MAX 328
-#define MIN 329
-#define INT 330
-#define RAND 331
-#define COPY 332
-#define THRU 333
-#define TOP 334
-#define BOTTOM 335
-#define UPPER 336
-#define LOWER 337
-#define SH 338
-#define PRINT 339
-#define CW 340
-#define CCW 341
-#define FOR 342
-#define DO 343
-#define IF 344
-#define ELSE 345
-#define ANDAND 346
-#define OROR 347
-#define NOTEQUAL 348
-#define EQUALEQUAL 349
-#define LESSEQUAL 350
-#define GREATEREQUAL 351
-#define LEFT_CORNER 352
-#define RIGHT_CORNER 353
-#define CENTER 354
-#define END 355
-#define START 356
-#define RESET 357
-#define UNTIL 358
-#define PLOT 359
-#define THICKNESS 360
-#define FILL 361
-#define ALIGNED 362
-#define SPRINTF 363
-#define COMMAND 364
-#define DEFINE 365
-#define UNDEF 366
+#define TH 265
+#define LEFT_ARROW_HEAD 266
+#define RIGHT_ARROW_HEAD 267
+#define DOUBLE_ARROW_HEAD 268
+#define LAST 269
+#define UP 270
+#define DOWN 271
+#define LEFT 272
+#define RIGHT 273
+#define BOX 274
+#define CIRCLE 275
+#define ELLIPSE 276
+#define ARC 277
+#define LINE 278
+#define ARROW 279
+#define MOVE 280
+#define SPLINE 281
+#define HEIGHT 282
+#define RADIUS 283
+#define WIDTH 284
+#define DIAMETER 285
+#define FROM 286
+#define TO 287
+#define AT 288
+#define WITH 289
+#define BY 290
+#define THEN 291
+#define DOTTED 292
+#define DASHED 293
+#define CHOP 294
+#define SAME 295
+#define INVISIBLE 296
+#define LJUST 297
+#define RJUST 298
+#define ABOVE 299
+#define BELOW 300
+#define OF 301
+#define THE 302
+#define WAY 303
+#define BETWEEN 304
+#define AND 305
+#define HERE 306
+#define DOT_N 307
+#define DOT_E 308
+#define DOT_W 309
+#define DOT_S 310
+#define DOT_NE 311
+#define DOT_SE 312
+#define DOT_NW 313
+#define DOT_SW 314
+#define DOT_C 315
+#define DOT_START 316
+#define DOT_END 317
+#define DOT_X 318
+#define DOT_Y 319
+#define DOT_HT 320
+#define DOT_WID 321
+#define DOT_RAD 322
+#define SIN 323
+#define COS 324
+#define ATAN2 325
+#define LOG 326
+#define EXP 327
+#define SQRT 328
+#define MAX 329
+#define MIN 330
+#define INT 331
+#define RAND 332
+#define COPY 333
+#define THRU 334
+#define TOP 335
+#define BOTTOM 336
+#define UPPER 337
+#define LOWER 338
+#define SH 339
+#define PRINT 340
+#define CW 341
+#define CCW 342
+#define FOR 343
+#define DO 344
+#define IF 345
+#define ELSE 346
+#define ANDAND 347
+#define OROR 348
+#define NOTEQUAL 349
+#define EQUALEQUAL 350
+#define LESSEQUAL 351
+#define GREATEREQUAL 352
+#define LEFT_CORNER 353
+#define RIGHT_CORNER 354
+#define CENTER 355
+#define END 356
+#define START 357
+#define RESET 358
+#define UNTIL 359
+#define PLOT 360
+#define THICKNESS 361
+#define FILL 362
+#define ALIGNED 363
+#define SPRINTF 364
+#define COMMAND 365
+#define DEFINE 366
+#define UNDEF 367
extern YYSTYPE yylval;
diff --git a/pic/pic.y b/pic/pic.y
index cb44f1b5b..7bcd6fe14 100644
--- a/pic/pic.y
+++ b/pic/pic.y
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{
#include "pic.h"
@@ -30,6 +30,9 @@ extern void do_for(char *var, double from, double to,
int by_is_multiplicative, double by, char *body);
extern void do_lookahead();
+#undef fmod
+#undef rand
+
extern "C" {
double fmod(double, double);
int rand();
@@ -97,6 +100,7 @@ char *do_sprintf(const char *form, const double *v, int nv);
%token <lstr> COMMAND_LINE
%token <str> DELIMITED
%token <n> ORDINAL
+%token TH
%token LEFT_ARROW_HEAD
%token RIGHT_ARROW_HEAD
%token DOUBLE_ARROW_HEAD
@@ -223,7 +227,7 @@ parses properly. */
%left LABEL
%left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT MAX MIN INT RAND LAST
-%left ORDINAL HERE
+%left ORDINAL HERE '`'
/* these need to be lower than '-' */
%left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS
@@ -259,7 +263,7 @@ works */
%type <spec> object_spec
%type <pair> position
%type <obtype> object_type
-%type <n> optional_ordinal_last
+%type <n> optional_ordinal_last ordinal
%type <str> until
%type <dv> sprintf_args
%type <lstr> text print_args print_arg
@@ -1140,15 +1144,25 @@ label:
}
;
+ordinal:
+ ORDINAL
+ { $$ = $1; }
+ | '`' any_expr TH
+ {
+ // XXX Check for overflow (and non-integers?).
+ $$ = (int)$2;
+ }
+ ;
+
optional_ordinal_last:
LAST
{ $$ = 1; }
- | ORDINAL LAST
+ | ordinal LAST
{ $$ = $1; }
;
nth_primitive:
- ORDINAL object_type
+ ordinal object_type
{
int count = 0;
for (object *p = olist.head; p != 0; p = p->next)
diff --git a/pic/position.h b/pic/position.h
index 418f98caa..6706fb1dd 100644
--- a/pic/position.h
+++ b/pic/position.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct place;
diff --git a/pic/tex.c b/pic/tex.cc
index bd1d04997..d0fd962a6 100644
--- a/pic/tex.c
+++ b/pic/tex.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
diff --git a/pic/troff.c b/pic/troff.cc
index 2daba061a..ffae68a12 100644
--- a/pic/troff.c
+++ b/pic/troff.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,12 +15,13 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "pic.h"
#include "common.h"
+
const double RELATIVE_THICKNESS = -1.0;
const double BAD_THICKNESS = -2.0;
@@ -251,7 +252,11 @@ inline position troff_output::transform(const position &pos)
#define FILL_REG "00"
-// if this register is defined, geqn won't produce `\x's
+// If this register > 0, then pic will generate \X'ps: ...' commands
+// if the aligned attribute is used.
+#define GROPS_REG "0p"
+
+// If this register is defined, geqn won't produce `\x's.
#define EQN_NO_EXTRA_SPACE_REG "0x"
void troff_output::start_picture(double sc,
@@ -397,8 +402,21 @@ static const char *choose_delimiter(const char *text)
return "\\(ts";
}
-void troff_output::text(const position &center, text_piece *v, int n, double)
+void troff_output::text(const position &center, text_piece *v, int n,
+ double ang)
{
+ int rotate_flag = 0;
+ if (driver_extension_flag && ang != 0.0) {
+ rotate_flag = 1;
+ position c = transform(center);
+ printf(".if '\\n(" GROPS_REG " \\{\\\n"
+ "\\h'%.3fi'"
+ "\\v'%.3fi'"
+ "\\X'ps: exec gsave currentpoint 2 copy translate %.4f rotate neg exch neg exch translate'"
+ "\n.sp -1\n"
+ ".\\}\n",
+ c.x, c.y, -ang*180.0/M_PI);
+ }
for (int i = 0; i < n; i++)
if (v[i].text != 0 && *v[i].text != '\0') {
position c = transform(center);
@@ -424,6 +442,10 @@ void troff_output::text(const position &center, text_piece *v, int n, double)
fputs(v[i].text, stdout);
fputs("\n.sp -1\n", stdout);
}
+ if (rotate_flag)
+ printf(".if '\\*(.T'ps' \\{\\\n"
+ "\\X'ps: exec grestore'\n.sp -1\n"
+ ".\\}\n");
}
void troff_output::line_thickness(double p)
@@ -448,7 +470,7 @@ const double DOT_AXIS = .044;
void troff_output::dot(const position &cent, const line_type &lt)
{
- if (zero_length_line_flag) {
+ if (driver_extension_flag) {
line_thickness(lt.thickness);
simple_line(cent, cent);
}
@@ -472,53 +494,3 @@ void troff_output::set_location(const char *s, int n)
last_filename = s;
}
}
-
-class grops_output : public troff_output {
-public:
- grops_output();
- ~grops_output();
- void text(const position &, text_piece *, int, double);
-};
-
-grops_output::grops_output()
-{
-}
-
-grops_output::~grops_output()
-{
-}
-
-output *make_grops_output()
-{
- return new grops_output;
-}
-
-void grops_output::text(const position &center, text_piece *v, int n,
- double ang)
-{
- int rotate_flag = 0;
- if (ang != 0.0) {
- rotate_flag = 1;
- position c = transform(center);
-#if 0
- printf("\\h'%.3fi'"
- "\\v'%.3fi'"
- "\\X'ps: rotate %.4f'"
- "\n.sp -1\n",
- c.x, c.y, -ang*180.0/M_PI);
-#else
- printf("\\h'%.3fi'"
- "\\v'%.3fi'"
- "\\X'ps: exec gsave currentpoint 2 copy translate %.4f rotate neg exch neg exch translate'"
- "\n.sp -1\n",
- c.x, c.y, -ang*180.0/M_PI);
-#endif
- }
- troff_output::text(center, v, n, ang);
- if (rotate_flag)
-#if 0
- printf("\\X'ps: end rotate'\n.sp -1\n");
-#else
- printf("\\X'ps: exec grestore'\n.sp -1\n");
-#endif
-}
diff --git a/pic/y.output b/pic/y.output
new file mode 100644
index 000000000..61df05c54
--- /dev/null
+++ b/pic/y.output
@@ -0,0 +1,10555 @@
+
+
+Terminals which are not used:
+
+ DEFINE
+ UNDEF
+
+
+Conflict in state 91 between rule 42 and token '-' resolved as shift.
+Conflict in state 95 between rule 141 and token LEFT resolved as reduce.
+Conflict in state 95 between rule 141 and token RIGHT resolved as reduce.
+Conflict in state 95 between rule 141 and token DOT_N resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_E resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_W resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_S resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_NE resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_SE resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_NW resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_SW resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_C resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_START resolved as shift.
+Conflict in state 95 between rule 141 and token DOT_END resolved as shift.
+Conflict in state 95 between rule 141 and token TOP resolved as shift.
+Conflict in state 95 between rule 141 and token BOTTOM resolved as shift.
+Conflict in state 95 between rule 141 and token UPPER resolved as shift.
+Conflict in state 95 between rule 141 and token LOWER resolved as shift.
+Conflict in state 95 between rule 141 and token LEFT_CORNER resolved as shift.
+Conflict in state 95 between rule 141 and token RIGHT_CORNER resolved as shift.
+Conflict in state 95 between rule 141 and token CENTER resolved as shift.
+Conflict in state 95 between rule 141 and token END resolved as shift.
+Conflict in state 95 between rule 141 and token START resolved as shift.
+Conflict in state 100 between rule 40 and token '-' resolved as shift.
+Conflict in state 110 between rule 80 and token TEXT resolved as shift.
+Conflict in state 110 between rule 80 and token SPRINTF resolved as shift.
+Conflict in state 110 between rule 80 and token '-' resolved as shift.
+Conflict in state 123 between rule 89 and token LABEL resolved as shift.
+Conflict in state 123 between rule 89 and token VARIABLE resolved as shift.
+Conflict in state 123 between rule 89 and token NUMBER resolved as shift.
+Conflict in state 123 between rule 89 and token ORDINAL resolved as shift.
+Conflict in state 123 between rule 89 and token LAST resolved as shift.
+Conflict in state 123 between rule 89 and token LEFT resolved as reduce.
+Conflict in state 123 between rule 89 and token RIGHT resolved as reduce.
+Conflict in state 123 between rule 89 and token HERE resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_N resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_E resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_W resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_S resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_NE resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_SE resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_NW resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_SW resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_C resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_START resolved as shift.
+Conflict in state 123 between rule 89 and token DOT_END resolved as shift.
+Conflict in state 123 between rule 89 and token SIN resolved as shift.
+Conflict in state 123 between rule 89 and token COS resolved as shift.
+Conflict in state 123 between rule 89 and token ATAN2 resolved as shift.
+Conflict in state 123 between rule 89 and token LOG resolved as shift.
+Conflict in state 123 between rule 89 and token EXP resolved as shift.
+Conflict in state 123 between rule 89 and token SQRT resolved as shift.
+Conflict in state 123 between rule 89 and token MAX resolved as shift.
+Conflict in state 123 between rule 89 and token MIN resolved as shift.
+Conflict in state 123 between rule 89 and token INT resolved as shift.
+Conflict in state 123 between rule 89 and token RAND resolved as shift.
+Conflict in state 123 between rule 89 and token TOP resolved as shift.
+Conflict in state 123 between rule 89 and token BOTTOM resolved as shift.
+Conflict in state 123 between rule 89 and token UPPER resolved as shift.
+Conflict in state 123 between rule 89 and token LOWER resolved as shift.
+Conflict in state 123 between rule 89 and token LEFT_CORNER resolved as shift.
+Conflict in state 123 between rule 89 and token RIGHT_CORNER resolved as shift.
+Conflict in state 123 between rule 89 and token CENTER resolved as shift.
+Conflict in state 123 between rule 89 and token END resolved as shift.
+Conflict in state 123 between rule 89 and token START resolved as shift.
+Conflict in state 123 between rule 89 and token '(' resolved as shift.
+Conflict in state 123 between rule 89 and token '`' resolved as shift.
+Conflict in state 123 between rule 89 and token '-' resolved as shift.
+Conflict in state 123 between rule 89 and token '!' resolved as shift.
+Conflict in state 124 between rule 91 and token LABEL resolved as shift.
+Conflict in state 124 between rule 91 and token VARIABLE resolved as shift.
+Conflict in state 124 between rule 91 and token NUMBER resolved as shift.
+Conflict in state 124 between rule 91 and token ORDINAL resolved as shift.
+Conflict in state 124 between rule 91 and token LAST resolved as shift.
+Conflict in state 124 between rule 91 and token LEFT resolved as reduce.
+Conflict in state 124 between rule 91 and token RIGHT resolved as reduce.
+Conflict in state 124 between rule 91 and token HERE resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_N resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_E resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_W resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_S resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_NE resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_SE resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_NW resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_SW resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_C resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_START resolved as shift.
+Conflict in state 124 between rule 91 and token DOT_END resolved as shift.
+Conflict in state 124 between rule 91 and token SIN resolved as shift.
+Conflict in state 124 between rule 91 and token COS resolved as shift.
+Conflict in state 124 between rule 91 and token ATAN2 resolved as shift.
+Conflict in state 124 between rule 91 and token LOG resolved as shift.
+Conflict in state 124 between rule 91 and token EXP resolved as shift.
+Conflict in state 124 between rule 91 and token SQRT resolved as shift.
+Conflict in state 124 between rule 91 and token MAX resolved as shift.
+Conflict in state 124 between rule 91 and token MIN resolved as shift.
+Conflict in state 124 between rule 91 and token INT resolved as shift.
+Conflict in state 124 between rule 91 and token RAND resolved as shift.
+Conflict in state 124 between rule 91 and token TOP resolved as shift.
+Conflict in state 124 between rule 91 and token BOTTOM resolved as shift.
+Conflict in state 124 between rule 91 and token UPPER resolved as shift.
+Conflict in state 124 between rule 91 and token LOWER resolved as shift.
+Conflict in state 124 between rule 91 and token LEFT_CORNER resolved as shift.
+Conflict in state 124 between rule 91 and token RIGHT_CORNER resolved as shift.
+Conflict in state 124 between rule 91 and token CENTER resolved as shift.
+Conflict in state 124 between rule 91 and token END resolved as shift.
+Conflict in state 124 between rule 91 and token START resolved as shift.
+Conflict in state 124 between rule 91 and token '(' resolved as shift.
+Conflict in state 124 between rule 91 and token '`' resolved as shift.
+Conflict in state 124 between rule 91 and token '-' resolved as shift.
+Conflict in state 124 between rule 91 and token '!' resolved as shift.
+Conflict in state 125 between rule 95 and token LABEL resolved as shift.
+Conflict in state 125 between rule 95 and token VARIABLE resolved as shift.
+Conflict in state 125 between rule 95 and token NUMBER resolved as shift.
+Conflict in state 125 between rule 95 and token ORDINAL resolved as shift.
+Conflict in state 125 between rule 95 and token LAST resolved as shift.
+Conflict in state 125 between rule 95 and token LEFT resolved as reduce.
+Conflict in state 125 between rule 95 and token RIGHT resolved as reduce.
+Conflict in state 125 between rule 95 and token HERE resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_N resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_E resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_W resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_S resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_NE resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_SE resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_NW resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_SW resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_C resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_START resolved as shift.
+Conflict in state 125 between rule 95 and token DOT_END resolved as shift.
+Conflict in state 125 between rule 95 and token SIN resolved as shift.
+Conflict in state 125 between rule 95 and token COS resolved as shift.
+Conflict in state 125 between rule 95 and token ATAN2 resolved as shift.
+Conflict in state 125 between rule 95 and token LOG resolved as shift.
+Conflict in state 125 between rule 95 and token EXP resolved as shift.
+Conflict in state 125 between rule 95 and token SQRT resolved as shift.
+Conflict in state 125 between rule 95 and token MAX resolved as shift.
+Conflict in state 125 between rule 95 and token MIN resolved as shift.
+Conflict in state 125 between rule 95 and token INT resolved as shift.
+Conflict in state 125 between rule 95 and token RAND resolved as shift.
+Conflict in state 125 between rule 95 and token TOP resolved as shift.
+Conflict in state 125 between rule 95 and token BOTTOM resolved as shift.
+Conflict in state 125 between rule 95 and token UPPER resolved as shift.
+Conflict in state 125 between rule 95 and token LOWER resolved as shift.
+Conflict in state 125 between rule 95 and token LEFT_CORNER resolved as shift.
+Conflict in state 125 between rule 95 and token RIGHT_CORNER resolved as shift.
+Conflict in state 125 between rule 95 and token CENTER resolved as shift.
+Conflict in state 125 between rule 95 and token END resolved as shift.
+Conflict in state 125 between rule 95 and token START resolved as shift.
+Conflict in state 125 between rule 95 and token '(' resolved as shift.
+Conflict in state 125 between rule 95 and token '`' resolved as shift.
+Conflict in state 125 between rule 95 and token '-' resolved as shift.
+Conflict in state 125 between rule 95 and token '!' resolved as shift.
+Conflict in state 125 between rule 187 and token LABEL resolved as shift.
+Conflict in state 125 between rule 187 and token ORDINAL resolved as shift.
+Conflict in state 125 between rule 187 and token LAST resolved as shift.
+Conflict in state 125 between rule 187 and token '`' resolved as shift.
+Conflict in state 126 between rule 93 and token LABEL resolved as shift.
+Conflict in state 126 between rule 93 and token VARIABLE resolved as shift.
+Conflict in state 126 between rule 93 and token NUMBER resolved as shift.
+Conflict in state 126 between rule 93 and token ORDINAL resolved as shift.
+Conflict in state 126 between rule 93 and token LAST resolved as shift.
+Conflict in state 126 between rule 93 and token LEFT resolved as reduce.
+Conflict in state 126 between rule 93 and token RIGHT resolved as reduce.
+Conflict in state 126 between rule 93 and token HERE resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_N resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_E resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_W resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_S resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_NE resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_SE resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_NW resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_SW resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_C resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_START resolved as shift.
+Conflict in state 126 between rule 93 and token DOT_END resolved as shift.
+Conflict in state 126 between rule 93 and token SIN resolved as shift.
+Conflict in state 126 between rule 93 and token COS resolved as shift.
+Conflict in state 126 between rule 93 and token ATAN2 resolved as shift.
+Conflict in state 126 between rule 93 and token LOG resolved as shift.
+Conflict in state 126 between rule 93 and token EXP resolved as shift.
+Conflict in state 126 between rule 93 and token SQRT resolved as shift.
+Conflict in state 126 between rule 93 and token MAX resolved as shift.
+Conflict in state 126 between rule 93 and token MIN resolved as shift.
+Conflict in state 126 between rule 93 and token INT resolved as shift.
+Conflict in state 126 between rule 93 and token RAND resolved as shift.
+Conflict in state 126 between rule 93 and token TOP resolved as shift.
+Conflict in state 126 between rule 93 and token BOTTOM resolved as shift.
+Conflict in state 126 between rule 93 and token UPPER resolved as shift.
+Conflict in state 126 between rule 93 and token LOWER resolved as shift.
+Conflict in state 126 between rule 93 and token LEFT_CORNER resolved as shift.
+Conflict in state 126 between rule 93 and token RIGHT_CORNER resolved as shift.
+Conflict in state 126 between rule 93 and token CENTER resolved as shift.
+Conflict in state 126 between rule 93 and token END resolved as shift.
+Conflict in state 126 between rule 93 and token START resolved as shift.
+Conflict in state 126 between rule 93 and token '(' resolved as shift.
+Conflict in state 126 between rule 93 and token '`' resolved as shift.
+Conflict in state 126 between rule 93 and token '-' resolved as shift.
+Conflict in state 126 between rule 93 and token '!' resolved as shift.
+Conflict in state 126 between rule 188 and token LABEL resolved as shift.
+Conflict in state 126 between rule 188 and token ORDINAL resolved as shift.
+Conflict in state 126 between rule 188 and token LAST resolved as shift.
+Conflict in state 126 between rule 188 and token '`' resolved as shift.
+Conflict in state 137 between rule 103 and token LABEL resolved as shift.
+Conflict in state 137 between rule 103 and token VARIABLE resolved as shift.
+Conflict in state 137 between rule 103 and token NUMBER resolved as shift.
+Conflict in state 137 between rule 103 and token ORDINAL resolved as shift.
+Conflict in state 137 between rule 103 and token LAST resolved as shift.
+Conflict in state 137 between rule 103 and token LEFT resolved as reduce.
+Conflict in state 137 between rule 103 and token RIGHT resolved as reduce.
+Conflict in state 137 between rule 103 and token HERE resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_N resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_E resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_W resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_S resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_NE resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_SE resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_NW resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_SW resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_C resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_START resolved as shift.
+Conflict in state 137 between rule 103 and token DOT_END resolved as shift.
+Conflict in state 137 between rule 103 and token SIN resolved as shift.
+Conflict in state 137 between rule 103 and token COS resolved as shift.
+Conflict in state 137 between rule 103 and token ATAN2 resolved as shift.
+Conflict in state 137 between rule 103 and token LOG resolved as shift.
+Conflict in state 137 between rule 103 and token EXP resolved as shift.
+Conflict in state 137 between rule 103 and token SQRT resolved as shift.
+Conflict in state 137 between rule 103 and token MAX resolved as shift.
+Conflict in state 137 between rule 103 and token MIN resolved as shift.
+Conflict in state 137 between rule 103 and token INT resolved as shift.
+Conflict in state 137 between rule 103 and token RAND resolved as shift.
+Conflict in state 137 between rule 103 and token TOP resolved as shift.
+Conflict in state 137 between rule 103 and token BOTTOM resolved as shift.
+Conflict in state 137 between rule 103 and token UPPER resolved as shift.
+Conflict in state 137 between rule 103 and token LOWER resolved as shift.
+Conflict in state 137 between rule 103 and token LEFT_CORNER resolved as shift.
+Conflict in state 137 between rule 103 and token RIGHT_CORNER resolved as shift.
+Conflict in state 137 between rule 103 and token CENTER resolved as shift.
+Conflict in state 137 between rule 103 and token END resolved as shift.
+Conflict in state 137 between rule 103 and token START resolved as shift.
+Conflict in state 137 between rule 103 and token '(' resolved as shift.
+Conflict in state 137 between rule 103 and token '`' resolved as shift.
+Conflict in state 137 between rule 103 and token '-' resolved as shift.
+Conflict in state 137 between rule 103 and token '!' resolved as shift.
+Conflict in state 138 between rule 105 and token LABEL resolved as shift.
+Conflict in state 138 between rule 105 and token VARIABLE resolved as shift.
+Conflict in state 138 between rule 105 and token NUMBER resolved as shift.
+Conflict in state 138 between rule 105 and token ORDINAL resolved as shift.
+Conflict in state 138 between rule 105 and token LAST resolved as shift.
+Conflict in state 138 between rule 105 and token LEFT resolved as reduce.
+Conflict in state 138 between rule 105 and token RIGHT resolved as reduce.
+Conflict in state 138 between rule 105 and token HERE resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_N resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_E resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_W resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_S resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_NE resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_SE resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_NW resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_SW resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_C resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_START resolved as shift.
+Conflict in state 138 between rule 105 and token DOT_END resolved as shift.
+Conflict in state 138 between rule 105 and token SIN resolved as shift.
+Conflict in state 138 between rule 105 and token COS resolved as shift.
+Conflict in state 138 between rule 105 and token ATAN2 resolved as shift.
+Conflict in state 138 between rule 105 and token LOG resolved as shift.
+Conflict in state 138 between rule 105 and token EXP resolved as shift.
+Conflict in state 138 between rule 105 and token SQRT resolved as shift.
+Conflict in state 138 between rule 105 and token MAX resolved as shift.
+Conflict in state 138 between rule 105 and token MIN resolved as shift.
+Conflict in state 138 between rule 105 and token INT resolved as shift.
+Conflict in state 138 between rule 105 and token RAND resolved as shift.
+Conflict in state 138 between rule 105 and token TOP resolved as shift.
+Conflict in state 138 between rule 105 and token BOTTOM resolved as shift.
+Conflict in state 138 between rule 105 and token UPPER resolved as shift.
+Conflict in state 138 between rule 105 and token LOWER resolved as shift.
+Conflict in state 138 between rule 105 and token LEFT_CORNER resolved as shift.
+Conflict in state 138 between rule 105 and token RIGHT_CORNER resolved as shift.
+Conflict in state 138 between rule 105 and token CENTER resolved as shift.
+Conflict in state 138 between rule 105 and token END resolved as shift.
+Conflict in state 138 between rule 105 and token START resolved as shift.
+Conflict in state 138 between rule 105 and token '(' resolved as shift.
+Conflict in state 138 between rule 105 and token '`' resolved as shift.
+Conflict in state 138 between rule 105 and token '-' resolved as shift.
+Conflict in state 138 between rule 105 and token '!' resolved as shift.
+Conflict in state 139 between rule 109 and token LABEL resolved as shift.
+Conflict in state 139 between rule 109 and token VARIABLE resolved as shift.
+Conflict in state 139 between rule 109 and token NUMBER resolved as shift.
+Conflict in state 139 between rule 109 and token ORDINAL resolved as shift.
+Conflict in state 139 between rule 109 and token LAST resolved as shift.
+Conflict in state 139 between rule 109 and token LEFT resolved as reduce.
+Conflict in state 139 between rule 109 and token RIGHT resolved as reduce.
+Conflict in state 139 between rule 109 and token HERE resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_N resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_E resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_W resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_S resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_NE resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_SE resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_NW resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_SW resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_C resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_START resolved as shift.
+Conflict in state 139 between rule 109 and token DOT_END resolved as shift.
+Conflict in state 139 between rule 109 and token SIN resolved as shift.
+Conflict in state 139 between rule 109 and token COS resolved as shift.
+Conflict in state 139 between rule 109 and token ATAN2 resolved as shift.
+Conflict in state 139 between rule 109 and token LOG resolved as shift.
+Conflict in state 139 between rule 109 and token EXP resolved as shift.
+Conflict in state 139 between rule 109 and token SQRT resolved as shift.
+Conflict in state 139 between rule 109 and token MAX resolved as shift.
+Conflict in state 139 between rule 109 and token MIN resolved as shift.
+Conflict in state 139 between rule 109 and token INT resolved as shift.
+Conflict in state 139 between rule 109 and token RAND resolved as shift.
+Conflict in state 139 between rule 109 and token TOP resolved as shift.
+Conflict in state 139 between rule 109 and token BOTTOM resolved as shift.
+Conflict in state 139 between rule 109 and token UPPER resolved as shift.
+Conflict in state 139 between rule 109 and token LOWER resolved as shift.
+Conflict in state 139 between rule 109 and token LEFT_CORNER resolved as shift.
+Conflict in state 139 between rule 109 and token RIGHT_CORNER resolved as shift.
+Conflict in state 139 between rule 109 and token CENTER resolved as shift.
+Conflict in state 139 between rule 109 and token END resolved as shift.
+Conflict in state 139 between rule 109 and token START resolved as shift.
+Conflict in state 139 between rule 109 and token '(' resolved as shift.
+Conflict in state 139 between rule 109 and token '`' resolved as shift.
+Conflict in state 139 between rule 109 and token '-' resolved as shift.
+Conflict in state 139 between rule 109 and token '!' resolved as shift.
+Conflict in state 149 between rule 107 and token LABEL resolved as shift.
+Conflict in state 149 between rule 107 and token VARIABLE resolved as shift.
+Conflict in state 149 between rule 107 and token NUMBER resolved as shift.
+Conflict in state 149 between rule 107 and token ORDINAL resolved as shift.
+Conflict in state 149 between rule 107 and token LAST resolved as shift.
+Conflict in state 149 between rule 107 and token LEFT resolved as reduce.
+Conflict in state 149 between rule 107 and token RIGHT resolved as reduce.
+Conflict in state 149 between rule 107 and token HERE resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_N resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_E resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_W resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_S resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_NE resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_SE resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_NW resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_SW resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_C resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_START resolved as shift.
+Conflict in state 149 between rule 107 and token DOT_END resolved as shift.
+Conflict in state 149 between rule 107 and token SIN resolved as shift.
+Conflict in state 149 between rule 107 and token COS resolved as shift.
+Conflict in state 149 between rule 107 and token ATAN2 resolved as shift.
+Conflict in state 149 between rule 107 and token LOG resolved as shift.
+Conflict in state 149 between rule 107 and token EXP resolved as shift.
+Conflict in state 149 between rule 107 and token SQRT resolved as shift.
+Conflict in state 149 between rule 107 and token MAX resolved as shift.
+Conflict in state 149 between rule 107 and token MIN resolved as shift.
+Conflict in state 149 between rule 107 and token INT resolved as shift.
+Conflict in state 149 between rule 107 and token RAND resolved as shift.
+Conflict in state 149 between rule 107 and token TOP resolved as shift.
+Conflict in state 149 between rule 107 and token BOTTOM resolved as shift.
+Conflict in state 149 between rule 107 and token UPPER resolved as shift.
+Conflict in state 149 between rule 107 and token LOWER resolved as shift.
+Conflict in state 149 between rule 107 and token LEFT_CORNER resolved as shift.
+Conflict in state 149 between rule 107 and token RIGHT_CORNER resolved as shift.
+Conflict in state 149 between rule 107 and token CENTER resolved as shift.
+Conflict in state 149 between rule 107 and token END resolved as shift.
+Conflict in state 149 between rule 107 and token START resolved as shift.
+Conflict in state 149 between rule 107 and token '(' resolved as shift.
+Conflict in state 149 between rule 107 and token '`' resolved as shift.
+Conflict in state 149 between rule 107 and token '-' resolved as shift.
+Conflict in state 149 between rule 107 and token '!' resolved as shift.
+Conflict in state 152 between rule 88 and token '-' resolved as shift.
+Conflict in state 182 between rule 215 and token ANDAND resolved as reduce.
+Conflict in state 182 between rule 215 and token OROR resolved as reduce.
+Conflict in state 182 between rule 215 and token NOTEQUAL resolved as reduce.
+Conflict in state 182 between rule 215 and token EQUALEQUAL resolved as reduce.
+Conflict in state 182 between rule 215 and token LESSEQUAL resolved as reduce.
+Conflict in state 182 between rule 215 and token GREATEREQUAL resolved as reduce.
+Conflict in state 182 between rule 215 and token '<' resolved as reduce.
+Conflict in state 182 between rule 215 and token '>' resolved as reduce.
+Conflict in state 182 between rule 215 and token '+' resolved as reduce.
+Conflict in state 182 between rule 215 and token '-' resolved as reduce.
+Conflict in state 182 between rule 215 and token '*' resolved as reduce.
+Conflict in state 182 between rule 215 and token '/' resolved as reduce.
+Conflict in state 182 between rule 215 and token '%' resolved as reduce.
+Conflict in state 182 between rule 215 and token '^' resolved as shift.
+Conflict in state 183 between rule 236 and token ANDAND resolved as reduce.
+Conflict in state 183 between rule 236 and token OROR resolved as reduce.
+Conflict in state 183 between rule 236 and token NOTEQUAL resolved as reduce.
+Conflict in state 183 between rule 236 and token EQUALEQUAL resolved as reduce.
+Conflict in state 183 between rule 236 and token LESSEQUAL resolved as reduce.
+Conflict in state 183 between rule 236 and token GREATEREQUAL resolved as reduce.
+Conflict in state 183 between rule 236 and token '<' resolved as reduce.
+Conflict in state 183 between rule 236 and token '>' resolved as reduce.
+Conflict in state 183 between rule 236 and token '+' resolved as reduce.
+Conflict in state 183 between rule 236 and token '-' resolved as reduce.
+Conflict in state 183 between rule 236 and token '*' resolved as reduce.
+Conflict in state 183 between rule 236 and token '/' resolved as reduce.
+Conflict in state 183 between rule 236 and token '%' resolved as reduce.
+Conflict in state 183 between rule 236 and token '^' resolved as shift.
+Conflict in state 227 between rule 57 and token ANDAND resolved as reduce.
+Conflict in state 227 between rule 57 and token OROR resolved as reduce.
+Conflict in state 228 between rule 236 and token ANDAND resolved as reduce.
+Conflict in state 228 between rule 236 and token OROR resolved as reduce.
+Conflict in state 228 between rule 236 and token NOTEQUAL resolved as reduce.
+Conflict in state 228 between rule 236 and token EQUALEQUAL resolved as reduce.
+Conflict in state 228 between rule 236 and token LESSEQUAL resolved as reduce.
+Conflict in state 228 between rule 236 and token GREATEREQUAL resolved as reduce.
+Conflict in state 228 between rule 236 and token '<' resolved as reduce.
+Conflict in state 228 between rule 236 and token '>' resolved as reduce.
+Conflict in state 228 between rule 236 and token '+' resolved as reduce.
+Conflict in state 228 between rule 236 and token '-' resolved as reduce.
+Conflict in state 228 between rule 236 and token '*' resolved as reduce.
+Conflict in state 228 between rule 236 and token '/' resolved as reduce.
+Conflict in state 228 between rule 236 and token '%' resolved as reduce.
+Conflict in state 228 between rule 236 and token '^' resolved as shift.
+Conflict in state 245 between rule 90 and token '-' resolved as shift.
+Conflict in state 246 between rule 92 and token '-' resolved as shift.
+Conflict in state 247 between rule 96 and token '-' resolved as shift.
+Conflict in state 248 between rule 94 and token '-' resolved as shift.
+Conflict in state 249 between rule 84 and token '-' resolved as shift.
+Conflict in state 250 between rule 85 and token '-' resolved as shift.
+Conflict in state 251 between rule 86 and token '-' resolved as shift.
+Conflict in state 252 between rule 87 and token '-' resolved as shift.
+Conflict in state 253 between rule 97 and token '-' resolved as shift.
+Conflict in state 255 between rule 98 and token '-' resolved as shift.
+Conflict in state 256 between rule 99 and token '-' resolved as shift.
+Conflict in state 261 between rule 167 and token LEFT resolved as shift.
+Conflict in state 261 between rule 167 and token RIGHT resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_N resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_E resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_W resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_S resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_NE resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_SE resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_NW resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_SW resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_C resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_START resolved as shift.
+Conflict in state 261 between rule 167 and token DOT_END resolved as shift.
+Conflict in state 261 between rule 167 and token TOP resolved as shift.
+Conflict in state 261 between rule 167 and token BOTTOM resolved as shift.
+Conflict in state 261 between rule 167 and token UPPER resolved as shift.
+Conflict in state 261 between rule 167 and token LOWER resolved as shift.
+Conflict in state 261 between rule 167 and token LEFT_CORNER resolved as shift.
+Conflict in state 261 between rule 167 and token RIGHT_CORNER resolved as shift.
+Conflict in state 261 between rule 167 and token CENTER resolved as shift.
+Conflict in state 261 between rule 167 and token END resolved as shift.
+Conflict in state 261 between rule 167 and token START resolved as shift.
+Conflict in state 268 between rule 104 and token '-' resolved as shift.
+Conflict in state 269 between rule 106 and token '-' resolved as shift.
+Conflict in state 270 between rule 110 and token '-' resolved as shift.
+Conflict in state 271 between rule 123 and token '-' resolved as shift.
+Conflict in state 272 between rule 108 and token '-' resolved as shift.
+Conflict in state 305 between rule 234 and token ANDAND resolved as reduce.
+Conflict in state 305 between rule 234 and token OROR resolved as reduce.
+Conflict in state 305 between rule 234 and token NOTEQUAL resolved as shift.
+Conflict in state 305 between rule 234 and token EQUALEQUAL resolved as shift.
+Conflict in state 305 between rule 234 and token LESSEQUAL resolved as shift.
+Conflict in state 305 between rule 234 and token GREATEREQUAL resolved as shift.
+Conflict in state 305 between rule 234 and token '<' resolved as shift.
+Conflict in state 305 between rule 234 and token '>' resolved as shift.
+Conflict in state 305 between rule 234 and token '+' resolved as shift.
+Conflict in state 305 between rule 234 and token '-' resolved as shift.
+Conflict in state 305 between rule 234 and token '*' resolved as shift.
+Conflict in state 305 between rule 234 and token '/' resolved as shift.
+Conflict in state 305 between rule 234 and token '%' resolved as shift.
+Conflict in state 305 between rule 234 and token '^' resolved as shift.
+Conflict in state 306 between rule 235 and token ANDAND resolved as shift.
+Conflict in state 306 between rule 235 and token OROR resolved as reduce.
+Conflict in state 306 between rule 235 and token NOTEQUAL resolved as shift.
+Conflict in state 306 between rule 235 and token EQUALEQUAL resolved as shift.
+Conflict in state 306 between rule 235 and token LESSEQUAL resolved as shift.
+Conflict in state 306 between rule 235 and token GREATEREQUAL resolved as shift.
+Conflict in state 306 between rule 235 and token '<' resolved as shift.
+Conflict in state 306 between rule 235 and token '>' resolved as shift.
+Conflict in state 306 between rule 235 and token '+' resolved as shift.
+Conflict in state 306 between rule 235 and token '-' resolved as shift.
+Conflict in state 306 between rule 235 and token '*' resolved as shift.
+Conflict in state 306 between rule 235 and token '/' resolved as shift.
+Conflict in state 306 between rule 235 and token '%' resolved as shift.
+Conflict in state 306 between rule 235 and token '^' resolved as shift.
+Conflict in state 307 between rule 233 and token ANDAND resolved as reduce.
+Conflict in state 307 between rule 233 and token OROR resolved as reduce.
+Conflict in state 307 between rule 233 and token NOTEQUAL resolved as reduce.
+Conflict in state 307 between rule 233 and token EQUALEQUAL resolved as reduce.
+Conflict in state 307 between rule 233 and token LESSEQUAL resolved as shift.
+Conflict in state 307 between rule 233 and token GREATEREQUAL resolved as shift.
+Conflict in state 307 between rule 233 and token '<' resolved as shift.
+Conflict in state 307 between rule 233 and token '>' resolved as shift.
+Conflict in state 307 between rule 233 and token '+' resolved as shift.
+Conflict in state 307 between rule 233 and token '-' resolved as shift.
+Conflict in state 307 between rule 233 and token '*' resolved as shift.
+Conflict in state 307 between rule 233 and token '/' resolved as shift.
+Conflict in state 307 between rule 233 and token '%' resolved as shift.
+Conflict in state 307 between rule 233 and token '^' resolved as shift.
+Conflict in state 308 between rule 232 and token ANDAND resolved as reduce.
+Conflict in state 308 between rule 232 and token OROR resolved as reduce.
+Conflict in state 308 between rule 232 and token NOTEQUAL resolved as reduce.
+Conflict in state 308 between rule 232 and token EQUALEQUAL resolved as reduce.
+Conflict in state 308 between rule 232 and token LESSEQUAL resolved as shift.
+Conflict in state 308 between rule 232 and token GREATEREQUAL resolved as shift.
+Conflict in state 308 between rule 232 and token '<' resolved as shift.
+Conflict in state 308 between rule 232 and token '>' resolved as shift.
+Conflict in state 308 between rule 232 and token '+' resolved as shift.
+Conflict in state 308 between rule 232 and token '-' resolved as shift.
+Conflict in state 308 between rule 232 and token '*' resolved as shift.
+Conflict in state 308 between rule 232 and token '/' resolved as shift.
+Conflict in state 308 between rule 232 and token '%' resolved as shift.
+Conflict in state 308 between rule 232 and token '^' resolved as shift.
+Conflict in state 309 between rule 229 and token ANDAND resolved as reduce.
+Conflict in state 309 between rule 229 and token OROR resolved as reduce.
+Conflict in state 309 between rule 229 and token NOTEQUAL resolved as reduce.
+Conflict in state 309 between rule 229 and token EQUALEQUAL resolved as reduce.
+Conflict in state 309 between rule 229 and token LESSEQUAL resolved as reduce.
+Conflict in state 309 between rule 229 and token GREATEREQUAL resolved as reduce.
+Conflict in state 309 between rule 229 and token '<' resolved as reduce.
+Conflict in state 309 between rule 229 and token '>' resolved as reduce.
+Conflict in state 309 between rule 229 and token '+' resolved as shift.
+Conflict in state 309 between rule 229 and token '-' resolved as shift.
+Conflict in state 309 between rule 229 and token '*' resolved as shift.
+Conflict in state 309 between rule 229 and token '/' resolved as shift.
+Conflict in state 309 between rule 229 and token '%' resolved as shift.
+Conflict in state 309 between rule 229 and token '^' resolved as shift.
+Conflict in state 310 between rule 231 and token ANDAND resolved as reduce.
+Conflict in state 310 between rule 231 and token OROR resolved as reduce.
+Conflict in state 310 between rule 231 and token NOTEQUAL resolved as reduce.
+Conflict in state 310 between rule 231 and token EQUALEQUAL resolved as reduce.
+Conflict in state 310 between rule 231 and token LESSEQUAL resolved as reduce.
+Conflict in state 310 between rule 231 and token GREATEREQUAL resolved as reduce.
+Conflict in state 310 between rule 231 and token '<' resolved as reduce.
+Conflict in state 310 between rule 231 and token '>' resolved as reduce.
+Conflict in state 310 between rule 231 and token '+' resolved as shift.
+Conflict in state 310 between rule 231 and token '-' resolved as shift.
+Conflict in state 310 between rule 231 and token '*' resolved as shift.
+Conflict in state 310 between rule 231 and token '/' resolved as shift.
+Conflict in state 310 between rule 231 and token '%' resolved as shift.
+Conflict in state 310 between rule 231 and token '^' resolved as shift.
+Conflict in state 311 between rule 139 and token '>' resolved as shift.
+Conflict in state 311 between rule 139 and token '+' resolved as shift.
+Conflict in state 311 between rule 139 and token '-' resolved as shift.
+Conflict in state 313 between rule 228 and token OF resolved as shift.
+Conflict in state 313 between rule 228 and token BETWEEN resolved as shift.
+Conflict in state 313 between rule 228 and token ANDAND resolved as reduce.
+Conflict in state 313 between rule 228 and token OROR resolved as reduce.
+Conflict in state 313 between rule 228 and token NOTEQUAL resolved as reduce.
+Conflict in state 313 between rule 228 and token EQUALEQUAL resolved as reduce.
+Conflict in state 313 between rule 228 and token LESSEQUAL resolved as reduce.
+Conflict in state 313 between rule 228 and token GREATEREQUAL resolved as reduce.
+Conflict in state 313 between rule 228 and token ',' resolved as reduce.
+Conflict in state 313 between rule 228 and token '<' resolved as reduce.
+Conflict in state 313 between rule 228 and token '>' resolved as reduce.
+Conflict in state 313 between rule 228 and token '+' resolved as shift.
+Conflict in state 313 between rule 228 and token '-' resolved as shift.
+Conflict in state 313 between rule 228 and token '*' resolved as shift.
+Conflict in state 313 between rule 228 and token '/' resolved as shift.
+Conflict in state 313 between rule 228 and token '%' resolved as shift.
+Conflict in state 313 between rule 228 and token '^' resolved as shift.
+Conflict in state 314 between rule 230 and token ANDAND resolved as reduce.
+Conflict in state 314 between rule 230 and token OROR resolved as reduce.
+Conflict in state 314 between rule 230 and token NOTEQUAL resolved as reduce.
+Conflict in state 314 between rule 230 and token EQUALEQUAL resolved as reduce.
+Conflict in state 314 between rule 230 and token LESSEQUAL resolved as reduce.
+Conflict in state 314 between rule 230 and token GREATEREQUAL resolved as reduce.
+Conflict in state 314 between rule 230 and token '<' resolved as reduce.
+Conflict in state 314 between rule 230 and token '>' resolved as reduce.
+Conflict in state 314 between rule 230 and token '+' resolved as shift.
+Conflict in state 314 between rule 230 and token '-' resolved as shift.
+Conflict in state 314 between rule 230 and token '*' resolved as shift.
+Conflict in state 314 between rule 230 and token '/' resolved as shift.
+Conflict in state 314 between rule 230 and token '%' resolved as shift.
+Conflict in state 314 between rule 230 and token '^' resolved as shift.
+Conflict in state 315 between rule 209 and token ANDAND resolved as reduce.
+Conflict in state 315 between rule 209 and token OROR resolved as reduce.
+Conflict in state 315 between rule 209 and token NOTEQUAL resolved as reduce.
+Conflict in state 315 between rule 209 and token EQUALEQUAL resolved as reduce.
+Conflict in state 315 between rule 209 and token LESSEQUAL resolved as reduce.
+Conflict in state 315 between rule 209 and token GREATEREQUAL resolved as reduce.
+Conflict in state 315 between rule 209 and token '<' resolved as reduce.
+Conflict in state 315 between rule 209 and token '>' resolved as reduce.
+Conflict in state 315 between rule 209 and token '+' resolved as reduce.
+Conflict in state 315 between rule 209 and token '-' resolved as reduce.
+Conflict in state 315 between rule 209 and token '*' resolved as shift.
+Conflict in state 315 between rule 209 and token '/' resolved as shift.
+Conflict in state 315 between rule 209 and token '%' resolved as shift.
+Conflict in state 315 between rule 209 and token '^' resolved as shift.
+Conflict in state 316 between rule 210 and token ANDAND resolved as reduce.
+Conflict in state 316 between rule 210 and token OROR resolved as reduce.
+Conflict in state 316 between rule 210 and token NOTEQUAL resolved as reduce.
+Conflict in state 316 between rule 210 and token EQUALEQUAL resolved as reduce.
+Conflict in state 316 between rule 210 and token LESSEQUAL resolved as reduce.
+Conflict in state 316 between rule 210 and token GREATEREQUAL resolved as reduce.
+Conflict in state 316 between rule 210 and token '<' resolved as reduce.
+Conflict in state 316 between rule 210 and token '>' resolved as reduce.
+Conflict in state 316 between rule 210 and token '+' resolved as reduce.
+Conflict in state 316 between rule 210 and token '-' resolved as reduce.
+Conflict in state 316 between rule 210 and token '*' resolved as shift.
+Conflict in state 316 between rule 210 and token '/' resolved as shift.
+Conflict in state 316 between rule 210 and token '%' resolved as shift.
+Conflict in state 316 between rule 210 and token '^' resolved as shift.
+Conflict in state 317 between rule 211 and token ANDAND resolved as reduce.
+Conflict in state 317 between rule 211 and token OROR resolved as reduce.
+Conflict in state 317 between rule 211 and token NOTEQUAL resolved as reduce.
+Conflict in state 317 between rule 211 and token EQUALEQUAL resolved as reduce.
+Conflict in state 317 between rule 211 and token LESSEQUAL resolved as reduce.
+Conflict in state 317 between rule 211 and token GREATEREQUAL resolved as reduce.
+Conflict in state 317 between rule 211 and token '<' resolved as reduce.
+Conflict in state 317 between rule 211 and token '>' resolved as reduce.
+Conflict in state 317 between rule 211 and token '+' resolved as reduce.
+Conflict in state 317 between rule 211 and token '-' resolved as reduce.
+Conflict in state 317 between rule 211 and token '*' resolved as reduce.
+Conflict in state 317 between rule 211 and token '/' resolved as reduce.
+Conflict in state 317 between rule 211 and token '%' resolved as reduce.
+Conflict in state 317 between rule 211 and token '^' resolved as shift.
+Conflict in state 318 between rule 212 and token ANDAND resolved as reduce.
+Conflict in state 318 between rule 212 and token OROR resolved as reduce.
+Conflict in state 318 between rule 212 and token NOTEQUAL resolved as reduce.
+Conflict in state 318 between rule 212 and token EQUALEQUAL resolved as reduce.
+Conflict in state 318 between rule 212 and token LESSEQUAL resolved as reduce.
+Conflict in state 318 between rule 212 and token GREATEREQUAL resolved as reduce.
+Conflict in state 318 between rule 212 and token '<' resolved as reduce.
+Conflict in state 318 between rule 212 and token '>' resolved as reduce.
+Conflict in state 318 between rule 212 and token '+' resolved as reduce.
+Conflict in state 318 between rule 212 and token '-' resolved as reduce.
+Conflict in state 318 between rule 212 and token '*' resolved as reduce.
+Conflict in state 318 between rule 212 and token '/' resolved as reduce.
+Conflict in state 318 between rule 212 and token '%' resolved as reduce.
+Conflict in state 318 between rule 212 and token '^' resolved as shift.
+Conflict in state 319 between rule 213 and token ANDAND resolved as reduce.
+Conflict in state 319 between rule 213 and token OROR resolved as reduce.
+Conflict in state 319 between rule 213 and token NOTEQUAL resolved as reduce.
+Conflict in state 319 between rule 213 and token EQUALEQUAL resolved as reduce.
+Conflict in state 319 between rule 213 and token LESSEQUAL resolved as reduce.
+Conflict in state 319 between rule 213 and token GREATEREQUAL resolved as reduce.
+Conflict in state 319 between rule 213 and token '<' resolved as reduce.
+Conflict in state 319 between rule 213 and token '>' resolved as reduce.
+Conflict in state 319 between rule 213 and token '+' resolved as reduce.
+Conflict in state 319 between rule 213 and token '-' resolved as reduce.
+Conflict in state 319 between rule 213 and token '*' resolved as reduce.
+Conflict in state 319 between rule 213 and token '/' resolved as reduce.
+Conflict in state 319 between rule 213 and token '%' resolved as reduce.
+Conflict in state 319 between rule 213 and token '^' resolved as shift.
+Conflict in state 320 between rule 214 and token ANDAND resolved as reduce.
+Conflict in state 320 between rule 214 and token OROR resolved as reduce.
+Conflict in state 320 between rule 214 and token NOTEQUAL resolved as reduce.
+Conflict in state 320 between rule 214 and token EQUALEQUAL resolved as reduce.
+Conflict in state 320 between rule 214 and token LESSEQUAL resolved as reduce.
+Conflict in state 320 between rule 214 and token GREATEREQUAL resolved as reduce.
+Conflict in state 320 between rule 214 and token '<' resolved as reduce.
+Conflict in state 320 between rule 214 and token '>' resolved as reduce.
+Conflict in state 320 between rule 214 and token '+' resolved as reduce.
+Conflict in state 320 between rule 214 and token '-' resolved as reduce.
+Conflict in state 320 between rule 214 and token '*' resolved as reduce.
+Conflict in state 320 between rule 214 and token '/' resolved as reduce.
+Conflict in state 320 between rule 214 and token '%' resolved as reduce.
+Conflict in state 320 between rule 214 and token '^' resolved as shift.
+Conflict in state 324 between rule 51 and token ANDAND resolved as reduce.
+Conflict in state 324 between rule 51 and token OROR resolved as reduce.
+Conflict in state 325 between rule 52 and token ANDAND resolved as reduce.
+Conflict in state 325 between rule 52 and token OROR resolved as reduce.
+Conflict in state 326 between rule 54 and token ANDAND resolved as shift.
+Conflict in state 326 between rule 54 and token OROR resolved as reduce.
+Conflict in state 327 between rule 55 and token ANDAND resolved as shift.
+Conflict in state 327 between rule 55 and token OROR resolved as reduce.
+Conflict in state 330 between rule 53 and token ANDAND resolved as reduce.
+Conflict in state 330 between rule 53 and token OROR resolved as reduce.
+Conflict in state 331 between rule 234 and token ANDAND resolved as reduce.
+Conflict in state 331 between rule 234 and token OROR resolved as reduce.
+Conflict in state 331 between rule 234 and token NOTEQUAL resolved as shift.
+Conflict in state 331 between rule 234 and token EQUALEQUAL resolved as shift.
+Conflict in state 331 between rule 234 and token LESSEQUAL resolved as shift.
+Conflict in state 331 between rule 234 and token GREATEREQUAL resolved as shift.
+Conflict in state 331 between rule 234 and token '<' resolved as shift.
+Conflict in state 331 between rule 234 and token '>' resolved as shift.
+Conflict in state 331 between rule 234 and token '+' resolved as shift.
+Conflict in state 331 between rule 234 and token '-' resolved as shift.
+Conflict in state 331 between rule 234 and token '*' resolved as shift.
+Conflict in state 331 between rule 234 and token '/' resolved as shift.
+Conflict in state 331 between rule 234 and token '%' resolved as shift.
+Conflict in state 331 between rule 234 and token '^' resolved as shift.
+Conflict in state 332 between rule 56 and token ANDAND resolved as shift.
+Conflict in state 332 between rule 56 and token OROR resolved as reduce.
+Conflict in state 333 between rule 235 and token ANDAND resolved as shift.
+Conflict in state 333 between rule 235 and token OROR resolved as reduce.
+Conflict in state 333 between rule 235 and token NOTEQUAL resolved as shift.
+Conflict in state 333 between rule 235 and token EQUALEQUAL resolved as shift.
+Conflict in state 333 between rule 235 and token LESSEQUAL resolved as shift.
+Conflict in state 333 between rule 235 and token GREATEREQUAL resolved as shift.
+Conflict in state 333 between rule 235 and token '<' resolved as shift.
+Conflict in state 333 between rule 235 and token '>' resolved as shift.
+Conflict in state 333 between rule 235 and token '+' resolved as shift.
+Conflict in state 333 between rule 235 and token '-' resolved as shift.
+Conflict in state 333 between rule 235 and token '*' resolved as shift.
+Conflict in state 333 between rule 235 and token '/' resolved as shift.
+Conflict in state 333 between rule 235 and token '%' resolved as shift.
+Conflict in state 333 between rule 235 and token '^' resolved as shift.
+Conflict in state 334 between rule 228 and token ANDAND resolved as reduce.
+Conflict in state 334 between rule 228 and token OROR resolved as reduce.
+Conflict in state 334 between rule 228 and token NOTEQUAL resolved as reduce.
+Conflict in state 334 between rule 228 and token EQUALEQUAL resolved as reduce.
+Conflict in state 334 between rule 228 and token LESSEQUAL resolved as reduce.
+Conflict in state 334 between rule 228 and token GREATEREQUAL resolved as reduce.
+Conflict in state 334 between rule 228 and token '<' resolved as reduce.
+Conflict in state 334 between rule 228 and token '>' resolved as reduce.
+Conflict in state 334 between rule 228 and token '+' resolved as shift.
+Conflict in state 334 between rule 228 and token '-' resolved as shift.
+Conflict in state 334 between rule 228 and token '*' resolved as shift.
+Conflict in state 334 between rule 228 and token '/' resolved as shift.
+Conflict in state 334 between rule 228 and token '%' resolved as shift.
+Conflict in state 334 between rule 228 and token '^' resolved as shift.
+Conflict in state 382 between rule 135 and token '+' resolved as shift.
+Conflict in state 382 between rule 135 and token '-' resolved as shift.
+
+Grammar
+rule 1 top -> optional_separator
+rule 2 top -> element_list
+rule 3 element_list -> optional_separator middle_element_list optional_separator
+rule 4 middle_element_list -> element
+rule 5 middle_element_list -> middle_element_list separator element
+rule 6 optional_separator -> /* empty */
+rule 7 optional_separator -> separator
+rule 8 separator -> ';'
+rule 9 separator -> separator ';'
+rule 10 placeless_element -> VARIABLE '=' any_expr
+rule 11 placeless_element -> VARIABLE ':' '=' any_expr
+rule 12 placeless_element -> UP
+rule 13 placeless_element -> DOWN
+rule 14 placeless_element -> LEFT
+rule 15 placeless_element -> RIGHT
+rule 16 placeless_element -> COMMAND_LINE
+rule 17 placeless_element -> COMMAND print_args
+rule 18 placeless_element -> PRINT print_args
+rule 19 @1 -> /* empty */
+rule 20 placeless_element -> SH @1 DELIMITED
+rule 21 placeless_element -> COPY TEXT
+rule 22 @2 -> /* empty */
+rule 23 @3 -> /* empty */
+rule 24 placeless_element -> COPY TEXT THRU @2 DELIMITED @3 until
+rule 25 @4 -> /* empty */
+rule 26 @5 -> /* empty */
+rule 27 placeless_element -> COPY THRU @4 DELIMITED @5 until
+rule 28 @6 -> /* empty */
+rule 29 placeless_element -> FOR VARIABLE '=' expr TO expr optional_by DO @6 DELIMITED
+rule 30 placeless_element -> simple_if
+rule 31 @7 -> /* empty */
+rule 32 placeless_element -> simple_if ELSE @7 DELIMITED
+rule 33 placeless_element -> reset_variables
+rule 34 placeless_element -> RESET
+rule 35 reset_variables -> RESET VARIABLE
+rule 36 reset_variables -> reset_variables VARIABLE
+rule 37 reset_variables -> reset_variables ',' VARIABLE
+rule 38 print_args -> print_arg
+rule 39 print_args -> print_args print_arg
+rule 40 print_arg -> expr
+rule 41 print_arg -> text
+rule 42 print_arg -> position
+rule 43 @8 -> /* empty */
+rule 44 simple_if -> IF any_expr THEN @8 DELIMITED
+rule 45 until -> /* empty */
+rule 46 until -> UNTIL TEXT
+rule 47 any_expr -> expr
+rule 48 any_expr -> text_expr
+rule 49 text_expr -> text EQUALEQUAL text
+rule 50 text_expr -> text NOTEQUAL text
+rule 51 text_expr -> text_expr ANDAND text_expr
+rule 52 text_expr -> text_expr ANDAND expr
+rule 53 text_expr -> expr ANDAND text_expr
+rule 54 text_expr -> text_expr OROR text_expr
+rule 55 text_expr -> text_expr OROR expr
+rule 56 text_expr -> expr OROR text_expr
+rule 57 text_expr -> '!' text_expr
+rule 58 optional_by -> /* empty */
+rule 59 optional_by -> BY expr
+rule 60 optional_by -> BY '*' expr
+rule 61 element -> object_spec
+rule 62 element -> LABEL ':' optional_separator element
+rule 63 element -> LABEL ':' optional_separator position_not_place
+rule 64 element -> LABEL ':' optional_separator place
+rule 65 @9 -> /* empty */
+rule 66 @10 -> /* empty */
+rule 67 element -> '{' @9 element_list '}' @10 optional_element
+rule 68 element -> placeless_element
+rule 69 optional_element -> /* empty */
+rule 70 optional_element -> element
+rule 71 object_spec -> BOX
+rule 72 object_spec -> CIRCLE
+rule 73 object_spec -> ELLIPSE
+rule 74 object_spec -> ARC
+rule 75 object_spec -> LINE
+rule 76 object_spec -> ARROW
+rule 77 object_spec -> MOVE
+rule 78 object_spec -> SPLINE
+rule 79 object_spec -> text
+rule 80 object_spec -> PLOT expr
+rule 81 object_spec -> PLOT expr text
+rule 82 @11 -> /* empty */
+rule 83 object_spec -> '[' @11 element_list ']'
+rule 84 object_spec -> object_spec HEIGHT expr
+rule 85 object_spec -> object_spec RADIUS expr
+rule 86 object_spec -> object_spec WIDTH expr
+rule 87 object_spec -> object_spec DIAMETER expr
+rule 88 object_spec -> object_spec expr
+rule 89 object_spec -> object_spec UP
+rule 90 object_spec -> object_spec UP expr
+rule 91 object_spec -> object_spec DOWN
+rule 92 object_spec -> object_spec DOWN expr
+rule 93 object_spec -> object_spec RIGHT
+rule 94 object_spec -> object_spec RIGHT expr
+rule 95 object_spec -> object_spec LEFT
+rule 96 object_spec -> object_spec LEFT expr
+rule 97 object_spec -> object_spec FROM position
+rule 98 object_spec -> object_spec TO position
+rule 99 object_spec -> object_spec AT position
+rule 100 object_spec -> object_spec WITH path
+rule 101 object_spec -> object_spec BY expr_pair
+rule 102 object_spec -> object_spec THEN
+rule 103 object_spec -> object_spec DOTTED
+rule 104 object_spec -> object_spec DOTTED expr
+rule 105 object_spec -> object_spec DASHED
+rule 106 object_spec -> object_spec DASHED expr
+rule 107 object_spec -> object_spec FILL
+rule 108 object_spec -> object_spec FILL expr
+rule 109 object_spec -> object_spec CHOP
+rule 110 object_spec -> object_spec CHOP expr
+rule 111 object_spec -> object_spec SAME
+rule 112 object_spec -> object_spec INVISIBLE
+rule 113 object_spec -> object_spec LEFT_ARROW_HEAD
+rule 114 object_spec -> object_spec RIGHT_ARROW_HEAD
+rule 115 object_spec -> object_spec DOUBLE_ARROW_HEAD
+rule 116 object_spec -> object_spec CW
+rule 117 object_spec -> object_spec CCW
+rule 118 object_spec -> object_spec text
+rule 119 object_spec -> object_spec LJUST
+rule 120 object_spec -> object_spec RJUST
+rule 121 object_spec -> object_spec ABOVE
+rule 122 object_spec -> object_spec BELOW
+rule 123 object_spec -> object_spec THICKNESS expr
+rule 124 object_spec -> object_spec ALIGNED
+rule 125 text -> TEXT
+rule 126 text -> SPRINTF '(' TEXT sprintf_args ')'
+rule 127 sprintf_args -> /* empty */
+rule 128 sprintf_args -> sprintf_args ',' expr
+rule 129 position -> position_not_place
+rule 130 position -> place
+rule 131 position_not_place -> expr_pair
+rule 132 position_not_place -> position '+' expr_pair
+rule 133 position_not_place -> position '-' expr_pair
+rule 134 position_not_place -> '(' position ',' position ')'
+rule 135 position_not_place -> expr between position AND position
+rule 136 position_not_place -> expr '<' position ',' position '>'
+rule 137 between -> BETWEEN
+rule 138 between -> OF THE WAY BETWEEN
+rule 139 expr_pair -> expr ',' expr
+rule 140 expr_pair -> '(' expr_pair ')'
+rule 141 place -> label
+rule 142 place -> label corner
+rule 143 place -> corner label
+rule 144 place -> corner OF label
+rule 145 place -> HERE
+rule 146 label -> LABEL
+rule 147 label -> nth_primitive
+rule 148 label -> label '.' LABEL
+rule 149 ordinal -> ORDINAL
+rule 150 ordinal -> '`' any_expr TH
+rule 151 optional_ordinal_last -> LAST
+rule 152 optional_ordinal_last -> ordinal LAST
+rule 153 nth_primitive -> ordinal object_type
+rule 154 nth_primitive -> optional_ordinal_last object_type
+rule 155 object_type -> BOX
+rule 156 object_type -> CIRCLE
+rule 157 object_type -> ELLIPSE
+rule 158 object_type -> ARC
+rule 159 object_type -> LINE
+rule 160 object_type -> ARROW
+rule 161 object_type -> SPLINE
+rule 162 object_type -> '[' ']'
+rule 163 object_type -> TEXT
+rule 164 label_path -> '.' LABEL
+rule 165 label_path -> label_path '.' LABEL
+rule 166 relative_path -> corner
+rule 167 relative_path -> label_path
+rule 168 relative_path -> label_path corner
+rule 169 path -> relative_path
+rule 170 path -> ORDINAL LAST object_type relative_path
+rule 171 path -> LAST object_type relative_path
+rule 172 path -> ORDINAL object_type relative_path
+rule 173 path -> LABEL relative_path
+rule 174 corner -> DOT_N
+rule 175 corner -> DOT_E
+rule 176 corner -> DOT_W
+rule 177 corner -> DOT_S
+rule 178 corner -> DOT_NE
+rule 179 corner -> DOT_SE
+rule 180 corner -> DOT_NW
+rule 181 corner -> DOT_SW
+rule 182 corner -> DOT_C
+rule 183 corner -> DOT_START
+rule 184 corner -> DOT_END
+rule 185 corner -> TOP
+rule 186 corner -> BOTTOM
+rule 187 corner -> LEFT
+rule 188 corner -> RIGHT
+rule 189 corner -> UPPER LEFT
+rule 190 corner -> LOWER LEFT
+rule 191 corner -> UPPER RIGHT
+rule 192 corner -> LOWER RIGHT
+rule 193 corner -> LEFT_CORNER
+rule 194 corner -> RIGHT_CORNER
+rule 195 corner -> UPPER LEFT_CORNER
+rule 196 corner -> LOWER LEFT_CORNER
+rule 197 corner -> UPPER RIGHT_CORNER
+rule 198 corner -> LOWER RIGHT_CORNER
+rule 199 corner -> CENTER
+rule 200 corner -> START
+rule 201 corner -> END
+rule 202 expr -> VARIABLE
+rule 203 expr -> NUMBER
+rule 204 expr -> place DOT_X
+rule 205 expr -> place DOT_Y
+rule 206 expr -> place DOT_HT
+rule 207 expr -> place DOT_WID
+rule 208 expr -> place DOT_RAD
+rule 209 expr -> expr '+' expr
+rule 210 expr -> expr '-' expr
+rule 211 expr -> expr '*' expr
+rule 212 expr -> expr '/' expr
+rule 213 expr -> expr '%' expr
+rule 214 expr -> expr '^' expr
+rule 215 expr -> '-' expr
+rule 216 expr -> '(' any_expr ')'
+rule 217 expr -> SIN '(' any_expr ')'
+rule 218 expr -> COS '(' any_expr ')'
+rule 219 expr -> ATAN2 '(' any_expr ',' any_expr ')'
+rule 220 expr -> LOG '(' any_expr ')'
+rule 221 expr -> EXP '(' any_expr ')'
+rule 222 expr -> SQRT '(' any_expr ')'
+rule 223 expr -> MAX '(' any_expr ',' any_expr ')'
+rule 224 expr -> MIN '(' any_expr ',' any_expr ')'
+rule 225 expr -> INT '(' any_expr ')'
+rule 226 expr -> RAND '(' any_expr ')'
+rule 227 expr -> RAND '(' ')'
+rule 228 expr -> expr '<' expr
+rule 229 expr -> expr LESSEQUAL expr
+rule 230 expr -> expr '>' expr
+rule 231 expr -> expr GREATEREQUAL expr
+rule 232 expr -> expr EQUALEQUAL expr
+rule 233 expr -> expr NOTEQUAL expr
+rule 234 expr -> expr ANDAND expr
+rule 235 expr -> expr OROR expr
+rule 236 expr -> '!' expr
+
+Terminals, with rules where they appear
+
+$ (-1)
+'!' (33) 57 236
+'%' (37) 213
+'(' (40) 126 134 140 216 217 218 219 220 221 222 223 224 225 226 227
+')' (41) 126 134 140 216 217 218 219 220 221 222 223 224 225 226 227
+'*' (42) 60 211
+'+' (43) 132 209
+',' (44) 37 128 134 136 139 219 223 224
+'-' (45) 133 210 215
+'.' (46) 148 164 165
+'/' (47) 212
+':' (58) 11 62 63 64
+';' (59) 8 9
+'<' (60) 136 228
+'=' (61) 10 11 29
+'>' (62) 136 230
+'[' (91) 83 162
+']' (93) 83 162
+'^' (94) 214
+'`' (96) 150
+'{' (123) 67
+'}' (125) 67
+error (256)
+LABEL (258) 62 63 64 146 148 164 165 173
+VARIABLE (259) 10 11 29 35 36 37 202
+NUMBER (260) 203
+TEXT (261) 21 24 46 125 126 163
+COMMAND_LINE (262) 16
+DELIMITED (263) 20 24 27 29 32 44
+ORDINAL (264) 149 170 172
+TH (265) 150
+LEFT_ARROW_HEAD (266) 113
+RIGHT_ARROW_HEAD (267) 114
+DOUBLE_ARROW_HEAD (268) 115
+LAST (269) 151 152 170 171
+UP (270) 12 89 90
+DOWN (271) 13 91 92
+LEFT (272) 14 95 96 187 189 190
+RIGHT (273) 15 93 94 188 191 192
+BOX (274) 71 155
+CIRCLE (275) 72 156
+ELLIPSE (276) 73 157
+ARC (277) 74 158
+LINE (278) 75 159
+ARROW (279) 76 160
+MOVE (280) 77
+SPLINE (281) 78 161
+HEIGHT (282) 84
+RADIUS (283) 85
+WIDTH (284) 86
+DIAMETER (285) 87
+FROM (286) 97
+TO (287) 29 98
+AT (288) 99
+WITH (289) 100
+BY (290) 59 60 101
+THEN (291) 44 102
+DOTTED (292) 103 104
+DASHED (293) 105 106
+CHOP (294) 109 110
+SAME (295) 111
+INVISIBLE (296) 112
+LJUST (297) 119
+RJUST (298) 120
+ABOVE (299) 121
+BELOW (300) 122
+OF (301) 138 144
+THE (302) 138
+WAY (303) 138
+BETWEEN (304) 137 138
+AND (305) 135
+HERE (306) 145
+DOT_N (307) 174
+DOT_E (308) 175
+DOT_W (309) 176
+DOT_S (310) 177
+DOT_NE (311) 178
+DOT_SE (312) 179
+DOT_NW (313) 180
+DOT_SW (314) 181
+DOT_C (315) 182
+DOT_START (316) 183
+DOT_END (317) 184
+DOT_X (318) 204
+DOT_Y (319) 205
+DOT_HT (320) 206
+DOT_WID (321) 207
+DOT_RAD (322) 208
+SIN (323) 217
+COS (324) 218
+ATAN2 (325) 219
+LOG (326) 220
+EXP (327) 221
+SQRT (328) 222
+MAX (329) 223
+MIN (330) 224
+INT (331) 225
+RAND (332) 226 227
+COPY (333) 21 24 27
+THRU (334) 24 27
+TOP (335) 185
+BOTTOM (336) 186
+UPPER (337) 189 191 195 197
+LOWER (338) 190 192 196 198
+SH (339) 20
+PRINT (340) 18
+CW (341) 116
+CCW (342) 117
+FOR (343) 29
+DO (344) 29
+IF (345) 44
+ELSE (346) 32
+ANDAND (347) 51 52 53 234
+OROR (348) 54 55 56 235
+NOTEQUAL (349) 50 233
+EQUALEQUAL (350) 49 232
+LESSEQUAL (351) 229
+GREATEREQUAL (352) 231
+LEFT_CORNER (353) 193 195 196
+RIGHT_CORNER (354) 194 197 198
+CENTER (355) 199
+END (356) 201
+START (357) 200
+RESET (358) 34 35
+UNTIL (359) 46
+PLOT (360) 80 81
+THICKNESS (361) 123
+FILL (362) 107 108
+ALIGNED (363) 124
+SPRINTF (364) 126
+COMMAND (365) 17
+DEFINE (366)
+UNDEF (367)
+
+Nonterminals, with rules where they appear
+
+top (134)
+ on left: 1 2
+element_list (135)
+ on left: 3, on right: 2 67 83
+middle_element_list (136)
+ on left: 4 5, on right: 3 5
+optional_separator (137)
+ on left: 6 7, on right: 1 3 62 63 64
+separator (138)
+ on left: 8 9, on right: 5 7 9
+placeless_element (139)
+ on left: 10 11 12 13 14 15 16 17 18 20 21 24 27 29 30 32 33 34
+ , on right: 68
+@1 (140)
+ on left: 19, on right: 20
+@2 (141)
+ on left: 22, on right: 24
+@3 (142)
+ on left: 23, on right: 24
+@4 (143)
+ on left: 25, on right: 27
+@5 (144)
+ on left: 26, on right: 27
+@6 (145)
+ on left: 28, on right: 29
+@7 (146)
+ on left: 31, on right: 32
+reset_variables (147)
+ on left: 35 36 37, on right: 33 36 37
+print_args (148)
+ on left: 38 39, on right: 17 18 39
+print_arg (149)
+ on left: 40 41 42, on right: 38 39
+simple_if (150)
+ on left: 44, on right: 30 32
+@8 (151)
+ on left: 43, on right: 44
+until (152)
+ on left: 45 46, on right: 24 27
+any_expr (153)
+ on left: 47 48, on right: 10 11 44 150 216 217 218 219 220 221
+ 222 223 224 225 226
+text_expr (154)
+ on left: 49 50 51 52 53 54 55 56 57, on right: 48 51 52 53 54 55
+ 56 57
+optional_by (155)
+ on left: 58 59 60, on right: 29
+element (156)
+ on left: 61 62 63 64 67 68, on right: 4 5 62 70
+@9 (157)
+ on left: 65, on right: 67
+@10 (158)
+ on left: 66, on right: 67
+optional_element (159)
+ on left: 69 70, on right: 67
+object_spec (160)
+ on left: 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89
+ 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
+ 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
+ , on right: 61 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
+ 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
+ 117 118 119 120 121 122 123 124
+@11 (161)
+ on left: 82, on right: 83
+text (162)
+ on left: 125 126, on right: 41 49 50 79 81 118
+sprintf_args (163)
+ on left: 127 128, on right: 126 128
+position (164)
+ on left: 129 130, on right: 42 97 98 99 132 133 134 135 136
+position_not_place (165)
+ on left: 131 132 133 134 135 136, on right: 63 129
+between (166)
+ on left: 137 138, on right: 135
+expr_pair (167)
+ on left: 139 140, on right: 101 131 132 133 140
+place (168)
+ on left: 141 142 143 144 145, on right: 64 130 204 205 206 207
+ 208
+label (169)
+ on left: 146 147 148, on right: 141 142 143 144 148
+ordinal (170)
+ on left: 149 150, on right: 152 153
+optional_ordinal_last (171)
+ on left: 151 152, on right: 154
+nth_primitive (172)
+ on left: 153 154, on right: 147
+object_type (173)
+ on left: 155 156 157 158 159 160 161 162 163, on right: 153 154
+ 170 171 172
+label_path (174)
+ on left: 164 165, on right: 165 167 168
+relative_path (175)
+ on left: 166 167 168, on right: 169 170 171 172 173
+path (176)
+ on left: 169 170 171 172 173, on right: 100
+corner (177)
+ on left: 174 175 176 177 178 179 180 181 182 183 184 185 186 187
+ 188 189 190 191 192 193 194 195 196 197 198 199 200 201,
+ on right: 142 143 144 166 168
+expr (178)
+ on left: 202 203 204 205 206 207 208 209 210 211 212 213 214 215
+ 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
+ 232 233 234 235 236, on right: 29 40 47 52 53 55 56 59 60 80 81
+ 84 85 86 87 88 90 92 94 96 104 106 108 110 123 128 135 136 139
+ 209 210 211 212 213 214 215 228 229 230 231 232 233 234 235 236
+
+
+state 0
+
+ ';' shift, and go to state 1
+
+ $default reduce using rule 6 (optional_separator)
+
+ top go to state 402
+ element_list go to state 2
+ optional_separator go to state 3
+ separator go to state 4
+
+
+
+state 1
+
+ separator -> ';' . (rule 8)
+
+ $default reduce using rule 8 (separator)
+
+
+
+state 2
+
+ top -> element_list . (rule 2)
+
+ $default reduce using rule 2 (top)
+
+
+
+state 3
+
+ top -> optional_separator . (rule 1)
+ element_list -> optional_separator . middle_element_list optional_separator (rule 3)
+
+ LABEL shift, and go to state 5
+ VARIABLE shift, and go to state 6
+ TEXT shift, and go to state 7
+ COMMAND_LINE shift, and go to state 8
+ UP shift, and go to state 9
+ DOWN shift, and go to state 10
+ LEFT shift, and go to state 11
+ RIGHT shift, and go to state 12
+ BOX shift, and go to state 13
+ CIRCLE shift, and go to state 14
+ ELLIPSE shift, and go to state 15
+ ARC shift, and go to state 16
+ LINE shift, and go to state 17
+ ARROW shift, and go to state 18
+ MOVE shift, and go to state 19
+ SPLINE shift, and go to state 20
+ COPY shift, and go to state 21
+ SH shift, and go to state 22
+ PRINT shift, and go to state 23
+ FOR shift, and go to state 24
+ IF shift, and go to state 25
+ RESET shift, and go to state 26
+ PLOT shift, and go to state 27
+ SPRINTF shift, and go to state 28
+ COMMAND shift, and go to state 29
+ '{' shift, and go to state 30
+ '[' shift, and go to state 31
+
+ $default reduce using rule 1 (top)
+
+ middle_element_list go to state 32
+ placeless_element go to state 33
+ reset_variables go to state 34
+ simple_if go to state 35
+ element go to state 36
+ object_spec go to state 37
+ text go to state 38
+
+
+
+state 4
+
+ optional_separator -> separator . (rule 7)
+ separator -> separator . ';' (rule 9)
+
+ ';' shift, and go to state 39
+
+ $default reduce using rule 7 (optional_separator)
+
+
+
+state 5
+
+ element -> LABEL . ':' optional_separator element (rule 62)
+ element -> LABEL . ':' optional_separator position_not_place (rule 63)
+ element -> LABEL . ':' optional_separator place (rule 64)
+
+ ':' shift, and go to state 40
+
+
+
+state 6
+
+ placeless_element -> VARIABLE . '=' any_expr (rule 10)
+ placeless_element -> VARIABLE . ':' '=' any_expr (rule 11)
+
+ '=' shift, and go to state 41
+ ':' shift, and go to state 42
+
+
+
+state 7
+
+ text -> TEXT . (rule 125)
+
+ $default reduce using rule 125 (text)
+
+
+
+state 8
+
+ placeless_element -> COMMAND_LINE . (rule 16)
+
+ $default reduce using rule 16 (placeless_element)
+
+
+
+state 9
+
+ placeless_element -> UP . (rule 12)
+
+ $default reduce using rule 12 (placeless_element)
+
+
+
+state 10
+
+ placeless_element -> DOWN . (rule 13)
+
+ $default reduce using rule 13 (placeless_element)
+
+
+
+state 11
+
+ placeless_element -> LEFT . (rule 14)
+
+ $default reduce using rule 14 (placeless_element)
+
+
+
+state 12
+
+ placeless_element -> RIGHT . (rule 15)
+
+ $default reduce using rule 15 (placeless_element)
+
+
+
+state 13
+
+ object_spec -> BOX . (rule 71)
+
+ $default reduce using rule 71 (object_spec)
+
+
+
+state 14
+
+ object_spec -> CIRCLE . (rule 72)
+
+ $default reduce using rule 72 (object_spec)
+
+
+
+state 15
+
+ object_spec -> ELLIPSE . (rule 73)
+
+ $default reduce using rule 73 (object_spec)
+
+
+
+state 16
+
+ object_spec -> ARC . (rule 74)
+
+ $default reduce using rule 74 (object_spec)
+
+
+
+state 17
+
+ object_spec -> LINE . (rule 75)
+
+ $default reduce using rule 75 (object_spec)
+
+
+
+state 18
+
+ object_spec -> ARROW . (rule 76)
+
+ $default reduce using rule 76 (object_spec)
+
+
+
+state 19
+
+ object_spec -> MOVE . (rule 77)
+
+ $default reduce using rule 77 (object_spec)
+
+
+
+state 20
+
+ object_spec -> SPLINE . (rule 78)
+
+ $default reduce using rule 78 (object_spec)
+
+
+
+state 21
+
+ placeless_element -> COPY . TEXT (rule 21)
+ placeless_element -> COPY . TEXT THRU @2 DELIMITED @3 until (rule 24)
+ placeless_element -> COPY . THRU @4 DELIMITED @5 until (rule 27)
+
+ TEXT shift, and go to state 43
+ THRU shift, and go to state 44
+
+
+
+state 22
+
+ placeless_element -> SH . @1 DELIMITED (rule 20)
+
+ $default reduce using rule 19 (@1)
+
+ @1 go to state 45
+
+
+
+state 23
+
+ placeless_element -> PRINT . print_args (rule 18)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ print_args go to state 88
+ print_arg go to state 89
+ text go to state 90
+ position go to state 91
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 100
+
+
+
+state 24
+
+ placeless_element -> FOR . VARIABLE '=' expr TO expr optional_by DO @6 DELIMITED (rule 29)
+
+ VARIABLE shift, and go to state 101
+
+
+
+state 25
+
+ simple_if -> IF . any_expr THEN @8 DELIMITED (rule 44)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 104
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 26
+
+ placeless_element -> RESET . (rule 34)
+ reset_variables -> RESET . VARIABLE (rule 35)
+
+ VARIABLE shift, and go to state 109
+
+ $default reduce using rule 34 (placeless_element)
+
+
+
+state 27
+
+ object_spec -> PLOT . expr (rule 80)
+ object_spec -> PLOT . expr text (rule 81)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 110
+
+
+
+state 28
+
+ text -> SPRINTF . '(' TEXT sprintf_args ')' (rule 126)
+
+ '(' shift, and go to state 111
+
+
+
+state 29
+
+ placeless_element -> COMMAND . print_args (rule 17)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ print_args go to state 112
+ print_arg go to state 89
+ text go to state 90
+ position go to state 91
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 100
+
+
+
+state 30
+
+ element -> '{' . @9 element_list '}' @10 optional_element (rule 67)
+
+ $default reduce using rule 65 (@9)
+
+ @9 go to state 113
+
+
+
+state 31
+
+ object_spec -> '[' . @11 element_list ']' (rule 83)
+
+ $default reduce using rule 82 (@11)
+
+ @11 go to state 114
+
+
+
+state 32
+
+ element_list -> optional_separator middle_element_list . optional_separator (rule 3)
+ middle_element_list -> middle_element_list . separator element (rule 5)
+
+ ';' shift, and go to state 1
+
+ $default reduce using rule 6 (optional_separator)
+
+ optional_separator go to state 115
+ separator go to state 116
+
+
+
+state 33
+
+ element -> placeless_element . (rule 68)
+
+ $default reduce using rule 68 (element)
+
+
+
+state 34
+
+ placeless_element -> reset_variables . (rule 33)
+ reset_variables -> reset_variables . VARIABLE (rule 36)
+ reset_variables -> reset_variables . ',' VARIABLE (rule 37)
+
+ VARIABLE shift, and go to state 117
+ ',' shift, and go to state 118
+
+ $default reduce using rule 33 (placeless_element)
+
+
+
+state 35
+
+ placeless_element -> simple_if . (rule 30)
+ placeless_element -> simple_if . ELSE @7 DELIMITED (rule 32)
+
+ ELSE shift, and go to state 119
+
+ $default reduce using rule 30 (placeless_element)
+
+
+
+state 36
+
+ middle_element_list -> element . (rule 4)
+
+ $default reduce using rule 4 (middle_element_list)
+
+
+
+state 37
+
+ element -> object_spec . (rule 61)
+ object_spec -> object_spec . HEIGHT expr (rule 84)
+ object_spec -> object_spec . RADIUS expr (rule 85)
+ object_spec -> object_spec . WIDTH expr (rule 86)
+ object_spec -> object_spec . DIAMETER expr (rule 87)
+ object_spec -> object_spec . expr (rule 88)
+ object_spec -> object_spec . UP (rule 89)
+ object_spec -> object_spec . UP expr (rule 90)
+ object_spec -> object_spec . DOWN (rule 91)
+ object_spec -> object_spec . DOWN expr (rule 92)
+ object_spec -> object_spec . RIGHT (rule 93)
+ object_spec -> object_spec . RIGHT expr (rule 94)
+ object_spec -> object_spec . LEFT (rule 95)
+ object_spec -> object_spec . LEFT expr (rule 96)
+ object_spec -> object_spec . FROM position (rule 97)
+ object_spec -> object_spec . TO position (rule 98)
+ object_spec -> object_spec . AT position (rule 99)
+ object_spec -> object_spec . WITH path (rule 100)
+ object_spec -> object_spec . BY expr_pair (rule 101)
+ object_spec -> object_spec . THEN (rule 102)
+ object_spec -> object_spec . DOTTED (rule 103)
+ object_spec -> object_spec . DOTTED expr (rule 104)
+ object_spec -> object_spec . DASHED (rule 105)
+ object_spec -> object_spec . DASHED expr (rule 106)
+ object_spec -> object_spec . FILL (rule 107)
+ object_spec -> object_spec . FILL expr (rule 108)
+ object_spec -> object_spec . CHOP (rule 109)
+ object_spec -> object_spec . CHOP expr (rule 110)
+ object_spec -> object_spec . SAME (rule 111)
+ object_spec -> object_spec . INVISIBLE (rule 112)
+ object_spec -> object_spec . LEFT_ARROW_HEAD (rule 113)
+ object_spec -> object_spec . RIGHT_ARROW_HEAD (rule 114)
+ object_spec -> object_spec . DOUBLE_ARROW_HEAD (rule 115)
+ object_spec -> object_spec . CW (rule 116)
+ object_spec -> object_spec . CCW (rule 117)
+ object_spec -> object_spec . text (rule 118)
+ object_spec -> object_spec . LJUST (rule 119)
+ object_spec -> object_spec . RJUST (rule 120)
+ object_spec -> object_spec . ABOVE (rule 121)
+ object_spec -> object_spec . BELOW (rule 122)
+ object_spec -> object_spec . THICKNESS expr (rule 123)
+ object_spec -> object_spec . ALIGNED (rule 124)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LEFT_ARROW_HEAD shift, and go to state 120
+ RIGHT_ARROW_HEAD shift, and go to state 121
+ DOUBLE_ARROW_HEAD shift, and go to state 122
+ LAST shift, and go to state 50
+ UP shift, and go to state 123
+ DOWN shift, and go to state 124
+ LEFT shift, and go to state 125
+ RIGHT shift, and go to state 126
+ HEIGHT shift, and go to state 127
+ RADIUS shift, and go to state 128
+ WIDTH shift, and go to state 129
+ DIAMETER shift, and go to state 130
+ FROM shift, and go to state 131
+ TO shift, and go to state 132
+ AT shift, and go to state 133
+ WITH shift, and go to state 134
+ BY shift, and go to state 135
+ THEN shift, and go to state 136
+ DOTTED shift, and go to state 137
+ DASHED shift, and go to state 138
+ CHOP shift, and go to state 139
+ SAME shift, and go to state 140
+ INVISIBLE shift, and go to state 141
+ LJUST shift, and go to state 142
+ RJUST shift, and go to state 143
+ ABOVE shift, and go to state 144
+ BELOW shift, and go to state 145
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ CW shift, and go to state 146
+ CCW shift, and go to state 147
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ THICKNESS shift, and go to state 148
+ FILL shift, and go to state 149
+ ALIGNED shift, and go to state 150
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 61 (element)
+
+ text go to state 151
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 152
+
+
+
+state 38
+
+ object_spec -> text . (rule 79)
+
+ $default reduce using rule 79 (object_spec)
+
+
+
+state 39
+
+ separator -> separator ';' . (rule 9)
+
+ $default reduce using rule 9 (separator)
+
+
+
+state 40
+
+ element -> LABEL ':' . optional_separator element (rule 62)
+ element -> LABEL ':' . optional_separator position_not_place (rule 63)
+ element -> LABEL ':' . optional_separator place (rule 64)
+
+ ';' shift, and go to state 1
+
+ $default reduce using rule 6 (optional_separator)
+
+ optional_separator go to state 153
+ separator go to state 4
+
+
+
+state 41
+
+ placeless_element -> VARIABLE '=' . any_expr (rule 10)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 154
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 42
+
+ placeless_element -> VARIABLE ':' . '=' any_expr (rule 11)
+
+ '=' shift, and go to state 155
+
+
+
+state 43
+
+ placeless_element -> COPY TEXT . (rule 21)
+ placeless_element -> COPY TEXT . THRU @2 DELIMITED @3 until (rule 24)
+
+ THRU shift, and go to state 156
+
+ $default reduce using rule 21 (placeless_element)
+
+
+
+state 44
+
+ placeless_element -> COPY THRU . @4 DELIMITED @5 until (rule 27)
+
+ $default reduce using rule 25 (@4)
+
+ @4 go to state 157
+
+
+
+state 45
+
+ placeless_element -> SH @1 . DELIMITED (rule 20)
+
+ DELIMITED shift, and go to state 158
+
+
+
+state 46
+
+ label -> LABEL . (rule 146)
+
+ $default reduce using rule 146 (label)
+
+
+
+state 47
+
+ expr -> VARIABLE . (rule 202)
+
+ $default reduce using rule 202 (expr)
+
+
+
+state 48
+
+ expr -> NUMBER . (rule 203)
+
+ $default reduce using rule 203 (expr)
+
+
+
+state 49
+
+ ordinal -> ORDINAL . (rule 149)
+
+ $default reduce using rule 149 (ordinal)
+
+
+
+state 50
+
+ optional_ordinal_last -> LAST . (rule 151)
+
+ $default reduce using rule 151 (optional_ordinal_last)
+
+
+
+state 51
+
+ corner -> LEFT . (rule 187)
+
+ $default reduce using rule 187 (corner)
+
+
+
+state 52
+
+ corner -> RIGHT . (rule 188)
+
+ $default reduce using rule 188 (corner)
+
+
+
+state 53
+
+ place -> HERE . (rule 145)
+
+ $default reduce using rule 145 (place)
+
+
+
+state 54
+
+ corner -> DOT_N . (rule 174)
+
+ $default reduce using rule 174 (corner)
+
+
+
+state 55
+
+ corner -> DOT_E . (rule 175)
+
+ $default reduce using rule 175 (corner)
+
+
+
+state 56
+
+ corner -> DOT_W . (rule 176)
+
+ $default reduce using rule 176 (corner)
+
+
+
+state 57
+
+ corner -> DOT_S . (rule 177)
+
+ $default reduce using rule 177 (corner)
+
+
+
+state 58
+
+ corner -> DOT_NE . (rule 178)
+
+ $default reduce using rule 178 (corner)
+
+
+
+state 59
+
+ corner -> DOT_SE . (rule 179)
+
+ $default reduce using rule 179 (corner)
+
+
+
+state 60
+
+ corner -> DOT_NW . (rule 180)
+
+ $default reduce using rule 180 (corner)
+
+
+
+state 61
+
+ corner -> DOT_SW . (rule 181)
+
+ $default reduce using rule 181 (corner)
+
+
+
+state 62
+
+ corner -> DOT_C . (rule 182)
+
+ $default reduce using rule 182 (corner)
+
+
+
+state 63
+
+ corner -> DOT_START . (rule 183)
+
+ $default reduce using rule 183 (corner)
+
+
+
+state 64
+
+ corner -> DOT_END . (rule 184)
+
+ $default reduce using rule 184 (corner)
+
+
+
+state 65
+
+ expr -> SIN . '(' any_expr ')' (rule 217)
+
+ '(' shift, and go to state 159
+
+
+
+state 66
+
+ expr -> COS . '(' any_expr ')' (rule 218)
+
+ '(' shift, and go to state 160
+
+
+
+state 67
+
+ expr -> ATAN2 . '(' any_expr ',' any_expr ')' (rule 219)
+
+ '(' shift, and go to state 161
+
+
+
+state 68
+
+ expr -> LOG . '(' any_expr ')' (rule 220)
+
+ '(' shift, and go to state 162
+
+
+
+state 69
+
+ expr -> EXP . '(' any_expr ')' (rule 221)
+
+ '(' shift, and go to state 163
+
+
+
+state 70
+
+ expr -> SQRT . '(' any_expr ')' (rule 222)
+
+ '(' shift, and go to state 164
+
+
+
+state 71
+
+ expr -> MAX . '(' any_expr ',' any_expr ')' (rule 223)
+
+ '(' shift, and go to state 165
+
+
+
+state 72
+
+ expr -> MIN . '(' any_expr ',' any_expr ')' (rule 224)
+
+ '(' shift, and go to state 166
+
+
+
+state 73
+
+ expr -> INT . '(' any_expr ')' (rule 225)
+
+ '(' shift, and go to state 167
+
+
+
+state 74
+
+ expr -> RAND . '(' any_expr ')' (rule 226)
+ expr -> RAND . '(' ')' (rule 227)
+
+ '(' shift, and go to state 168
+
+
+
+state 75
+
+ corner -> TOP . (rule 185)
+
+ $default reduce using rule 185 (corner)
+
+
+
+state 76
+
+ corner -> BOTTOM . (rule 186)
+
+ $default reduce using rule 186 (corner)
+
+
+
+state 77
+
+ corner -> UPPER . LEFT (rule 189)
+ corner -> UPPER . RIGHT (rule 191)
+ corner -> UPPER . LEFT_CORNER (rule 195)
+ corner -> UPPER . RIGHT_CORNER (rule 197)
+
+ LEFT shift, and go to state 169
+ RIGHT shift, and go to state 170
+ LEFT_CORNER shift, and go to state 171
+ RIGHT_CORNER shift, and go to state 172
+
+
+
+state 78
+
+ corner -> LOWER . LEFT (rule 190)
+ corner -> LOWER . RIGHT (rule 192)
+ corner -> LOWER . LEFT_CORNER (rule 196)
+ corner -> LOWER . RIGHT_CORNER (rule 198)
+
+ LEFT shift, and go to state 173
+ RIGHT shift, and go to state 174
+ LEFT_CORNER shift, and go to state 175
+ RIGHT_CORNER shift, and go to state 176
+
+
+
+state 79
+
+ corner -> LEFT_CORNER . (rule 193)
+
+ $default reduce using rule 193 (corner)
+
+
+
+state 80
+
+ corner -> RIGHT_CORNER . (rule 194)
+
+ $default reduce using rule 194 (corner)
+
+
+
+state 81
+
+ corner -> CENTER . (rule 199)
+
+ $default reduce using rule 199 (corner)
+
+
+
+state 82
+
+ corner -> END . (rule 201)
+
+ $default reduce using rule 201 (corner)
+
+
+
+state 83
+
+ corner -> START . (rule 200)
+
+ $default reduce using rule 200 (corner)
+
+
+
+state 84
+
+ position_not_place -> '(' . position ',' position ')' (rule 134)
+ expr_pair -> '(' . expr_pair ')' (rule 140)
+ expr -> '(' . any_expr ')' (rule 216)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 177
+ text_expr go to state 105
+ text go to state 106
+ position go to state 178
+ position_not_place go to state 92
+ expr_pair go to state 179
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 180
+
+
+
+state 85
+
+ ordinal -> '`' . any_expr TH (rule 150)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 181
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 86
+
+ expr -> '-' . expr (rule 215)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 182
+
+
+
+state 87
+
+ expr -> '!' . expr (rule 236)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 183
+
+
+
+state 88
+
+ placeless_element -> PRINT print_args . (rule 18)
+ print_args -> print_args . print_arg (rule 39)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 18 (placeless_element)
+
+ print_arg go to state 184
+ text go to state 90
+ position go to state 91
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 100
+
+
+
+state 89
+
+ print_args -> print_arg . (rule 38)
+
+ $default reduce using rule 38 (print_args)
+
+
+
+state 90
+
+ print_arg -> text . (rule 41)
+
+ $default reduce using rule 41 (print_arg)
+
+
+
+state 91
+
+ print_arg -> position . (rule 42)
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+ $default reduce using rule 42 (print_arg)
+
+
+
+state 92
+
+ position -> position_not_place . (rule 129)
+
+ $default reduce using rule 129 (position)
+
+
+
+state 93
+
+ position_not_place -> expr_pair . (rule 131)
+
+ $default reduce using rule 131 (position_not_place)
+
+
+
+state 94
+
+ position -> place . (rule 130)
+ expr -> place . DOT_X (rule 204)
+ expr -> place . DOT_Y (rule 205)
+ expr -> place . DOT_HT (rule 206)
+ expr -> place . DOT_WID (rule 207)
+ expr -> place . DOT_RAD (rule 208)
+
+ DOT_X shift, and go to state 187
+ DOT_Y shift, and go to state 188
+ DOT_HT shift, and go to state 189
+ DOT_WID shift, and go to state 190
+ DOT_RAD shift, and go to state 191
+
+ $default reduce using rule 130 (position)
+
+
+
+state 95
+
+ place -> label . (rule 141)
+ place -> label . corner (rule 142)
+ label -> label . '.' LABEL (rule 148)
+
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 192
+
+ $default reduce using rule 141 (place)
+
+ corner go to state 193
+
+
+
+state 96
+
+ optional_ordinal_last -> ordinal . LAST (rule 152)
+ nth_primitive -> ordinal . object_type (rule 153)
+
+ TEXT shift, and go to state 194
+ LAST shift, and go to state 195
+ BOX shift, and go to state 196
+ CIRCLE shift, and go to state 197
+ ELLIPSE shift, and go to state 198
+ ARC shift, and go to state 199
+ LINE shift, and go to state 200
+ ARROW shift, and go to state 201
+ SPLINE shift, and go to state 202
+ '[' shift, and go to state 203
+
+ object_type go to state 204
+
+
+
+state 97
+
+ nth_primitive -> optional_ordinal_last . object_type (rule 154)
+
+ TEXT shift, and go to state 194
+ BOX shift, and go to state 196
+ CIRCLE shift, and go to state 197
+ ELLIPSE shift, and go to state 198
+ ARC shift, and go to state 199
+ LINE shift, and go to state 200
+ ARROW shift, and go to state 201
+ SPLINE shift, and go to state 202
+ '[' shift, and go to state 203
+
+ object_type go to state 205
+
+
+
+state 98
+
+ label -> nth_primitive . (rule 147)
+
+ $default reduce using rule 147 (label)
+
+
+
+state 99
+
+ place -> corner . label (rule 143)
+ place -> corner . OF label (rule 144)
+
+ LABEL shift, and go to state 46
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ OF shift, and go to state 206
+ '`' shift, and go to state 85
+
+ label go to state 207
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+
+
+
+state 100
+
+ print_arg -> expr . (rule 40)
+ position_not_place -> expr . between position AND position (rule 135)
+ position_not_place -> expr . '<' position ',' position '>' (rule 136)
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ OF shift, and go to state 208
+ BETWEEN shift, and go to state 209
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ ',' shift, and go to state 216
+ '<' shift, and go to state 217
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 40 (print_arg)
+
+ between go to state 225
+
+
+
+state 101
+
+ placeless_element -> FOR VARIABLE . '=' expr TO expr optional_by DO @6 DELIMITED (rule 29)
+
+ '=' shift, and go to state 226
+
+
+
+state 102
+
+ expr -> '(' . any_expr ')' (rule 216)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 177
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 103
+
+ text_expr -> '!' . text_expr (rule 57)
+ expr -> '!' . expr (rule 236)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ text_expr go to state 227
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 228
+
+
+
+state 104
+
+ simple_if -> IF any_expr . THEN @8 DELIMITED (rule 44)
+
+ THEN shift, and go to state 229
+
+
+
+state 105
+
+ any_expr -> text_expr . (rule 48)
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+
+ ANDAND shift, and go to state 230
+ OROR shift, and go to state 231
+
+ $default reduce using rule 48 (any_expr)
+
+
+
+state 106
+
+ text_expr -> text . EQUALEQUAL text (rule 49)
+ text_expr -> text . NOTEQUAL text (rule 50)
+
+ NOTEQUAL shift, and go to state 232
+ EQUALEQUAL shift, and go to state 233
+
+
+
+state 107
+
+ expr -> place . DOT_X (rule 204)
+ expr -> place . DOT_Y (rule 205)
+ expr -> place . DOT_HT (rule 206)
+ expr -> place . DOT_WID (rule 207)
+ expr -> place . DOT_RAD (rule 208)
+
+ DOT_X shift, and go to state 187
+ DOT_Y shift, and go to state 188
+ DOT_HT shift, and go to state 189
+ DOT_WID shift, and go to state 190
+ DOT_RAD shift, and go to state 191
+
+
+
+state 108
+
+ any_expr -> expr . (rule 47)
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 234
+ OROR shift, and go to state 235
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 47 (any_expr)
+
+
+
+state 109
+
+ reset_variables -> RESET VARIABLE . (rule 35)
+
+ $default reduce using rule 35 (reset_variables)
+
+
+
+state 110
+
+ object_spec -> PLOT expr . (rule 80)
+ object_spec -> PLOT expr . text (rule 81)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ TEXT shift, and go to state 7
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ SPRINTF shift, and go to state 28
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 80 (object_spec)
+
+ text go to state 237
+
+
+
+state 111
+
+ text -> SPRINTF '(' . TEXT sprintf_args ')' (rule 126)
+
+ TEXT shift, and go to state 238
+
+
+
+state 112
+
+ placeless_element -> COMMAND print_args . (rule 17)
+ print_args -> print_args . print_arg (rule 39)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 17 (placeless_element)
+
+ print_arg go to state 184
+ text go to state 90
+ position go to state 91
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 100
+
+
+
+state 113
+
+ element -> '{' @9 . element_list '}' @10 optional_element (rule 67)
+
+ ';' shift, and go to state 1
+
+ $default reduce using rule 6 (optional_separator)
+
+ element_list go to state 239
+ optional_separator go to state 240
+ separator go to state 4
+
+
+
+state 114
+
+ object_spec -> '[' @11 . element_list ']' (rule 83)
+
+ ';' shift, and go to state 1
+
+ $default reduce using rule 6 (optional_separator)
+
+ element_list go to state 241
+ optional_separator go to state 240
+ separator go to state 4
+
+
+
+state 115
+
+ element_list -> optional_separator middle_element_list optional_separator . (rule 3)
+
+ $default reduce using rule 3 (element_list)
+
+
+
+state 116
+
+ middle_element_list -> middle_element_list separator . element (rule 5)
+ optional_separator -> separator . (rule 7)
+ separator -> separator . ';' (rule 9)
+
+ LABEL shift, and go to state 5
+ VARIABLE shift, and go to state 6
+ TEXT shift, and go to state 7
+ COMMAND_LINE shift, and go to state 8
+ UP shift, and go to state 9
+ DOWN shift, and go to state 10
+ LEFT shift, and go to state 11
+ RIGHT shift, and go to state 12
+ BOX shift, and go to state 13
+ CIRCLE shift, and go to state 14
+ ELLIPSE shift, and go to state 15
+ ARC shift, and go to state 16
+ LINE shift, and go to state 17
+ ARROW shift, and go to state 18
+ MOVE shift, and go to state 19
+ SPLINE shift, and go to state 20
+ COPY shift, and go to state 21
+ SH shift, and go to state 22
+ PRINT shift, and go to state 23
+ FOR shift, and go to state 24
+ IF shift, and go to state 25
+ RESET shift, and go to state 26
+ PLOT shift, and go to state 27
+ SPRINTF shift, and go to state 28
+ COMMAND shift, and go to state 29
+ ';' shift, and go to state 39
+ '{' shift, and go to state 30
+ '[' shift, and go to state 31
+
+ $default reduce using rule 7 (optional_separator)
+
+ placeless_element go to state 33
+ reset_variables go to state 34
+ simple_if go to state 35
+ element go to state 242
+ object_spec go to state 37
+ text go to state 38
+
+
+
+state 117
+
+ reset_variables -> reset_variables VARIABLE . (rule 36)
+
+ $default reduce using rule 36 (reset_variables)
+
+
+
+state 118
+
+ reset_variables -> reset_variables ',' . VARIABLE (rule 37)
+
+ VARIABLE shift, and go to state 243
+
+
+
+state 119
+
+ placeless_element -> simple_if ELSE . @7 DELIMITED (rule 32)
+
+ $default reduce using rule 31 (@7)
+
+ @7 go to state 244
+
+
+
+state 120
+
+ object_spec -> object_spec LEFT_ARROW_HEAD . (rule 113)
+
+ $default reduce using rule 113 (object_spec)
+
+
+
+state 121
+
+ object_spec -> object_spec RIGHT_ARROW_HEAD . (rule 114)
+
+ $default reduce using rule 114 (object_spec)
+
+
+
+state 122
+
+ object_spec -> object_spec DOUBLE_ARROW_HEAD . (rule 115)
+
+ $default reduce using rule 115 (object_spec)
+
+
+
+state 123
+
+ object_spec -> object_spec UP . (rule 89)
+ object_spec -> object_spec UP . expr (rule 90)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 89 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 245
+
+
+
+state 124
+
+ object_spec -> object_spec DOWN . (rule 91)
+ object_spec -> object_spec DOWN . expr (rule 92)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 91 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 246
+
+
+
+state 125
+
+ object_spec -> object_spec LEFT . (rule 95)
+ object_spec -> object_spec LEFT . expr (rule 96)
+ corner -> LEFT . (rule 187)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ BY [reduce using rule 95 (object_spec)]
+ THEN [reduce using rule 95 (object_spec)]
+ DOTTED [reduce using rule 95 (object_spec)]
+ INVISIBLE [reduce using rule 95 (object_spec)]
+ OF [reduce using rule 187 (corner)]
+ ']' [reduce using rule 95 (object_spec)]
+ $default reduce using rule 95 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 247
+
+
+
+state 126
+
+ object_spec -> object_spec RIGHT . (rule 93)
+ object_spec -> object_spec RIGHT . expr (rule 94)
+ corner -> RIGHT . (rule 188)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ BY [reduce using rule 93 (object_spec)]
+ THEN [reduce using rule 93 (object_spec)]
+ DOTTED [reduce using rule 93 (object_spec)]
+ INVISIBLE [reduce using rule 93 (object_spec)]
+ OF [reduce using rule 188 (corner)]
+ ']' [reduce using rule 93 (object_spec)]
+ $default reduce using rule 93 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 248
+
+
+
+state 127
+
+ object_spec -> object_spec HEIGHT . expr (rule 84)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 249
+
+
+
+state 128
+
+ object_spec -> object_spec RADIUS . expr (rule 85)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 250
+
+
+
+state 129
+
+ object_spec -> object_spec WIDTH . expr (rule 86)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 251
+
+
+
+state 130
+
+ object_spec -> object_spec DIAMETER . expr (rule 87)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 252
+
+
+
+state 131
+
+ object_spec -> object_spec FROM . position (rule 97)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 253
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 132
+
+ object_spec -> object_spec TO . position (rule 98)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 255
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 133
+
+ object_spec -> object_spec AT . position (rule 99)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 256
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 134
+
+ object_spec -> object_spec WITH . path (rule 100)
+
+ LABEL shift, and go to state 257
+ ORDINAL shift, and go to state 258
+ LAST shift, and go to state 259
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 260
+
+ label_path go to state 261
+ relative_path go to state 262
+ path go to state 263
+ corner go to state 264
+
+
+
+state 135
+
+ object_spec -> object_spec BY . expr_pair (rule 101)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 265
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ expr_pair go to state 266
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 267
+
+
+
+state 136
+
+ object_spec -> object_spec THEN . (rule 102)
+
+ $default reduce using rule 102 (object_spec)
+
+
+
+state 137
+
+ object_spec -> object_spec DOTTED . (rule 103)
+ object_spec -> object_spec DOTTED . expr (rule 104)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 103 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 268
+
+
+
+state 138
+
+ object_spec -> object_spec DASHED . (rule 105)
+ object_spec -> object_spec DASHED . expr (rule 106)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 105 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 269
+
+
+
+state 139
+
+ object_spec -> object_spec CHOP . (rule 109)
+ object_spec -> object_spec CHOP . expr (rule 110)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 109 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 270
+
+
+
+state 140
+
+ object_spec -> object_spec SAME . (rule 111)
+
+ $default reduce using rule 111 (object_spec)
+
+
+
+state 141
+
+ object_spec -> object_spec INVISIBLE . (rule 112)
+
+ $default reduce using rule 112 (object_spec)
+
+
+
+state 142
+
+ object_spec -> object_spec LJUST . (rule 119)
+
+ $default reduce using rule 119 (object_spec)
+
+
+
+state 143
+
+ object_spec -> object_spec RJUST . (rule 120)
+
+ $default reduce using rule 120 (object_spec)
+
+
+
+state 144
+
+ object_spec -> object_spec ABOVE . (rule 121)
+
+ $default reduce using rule 121 (object_spec)
+
+
+
+state 145
+
+ object_spec -> object_spec BELOW . (rule 122)
+
+ $default reduce using rule 122 (object_spec)
+
+
+
+state 146
+
+ object_spec -> object_spec CW . (rule 116)
+
+ $default reduce using rule 116 (object_spec)
+
+
+
+state 147
+
+ object_spec -> object_spec CCW . (rule 117)
+
+ $default reduce using rule 117 (object_spec)
+
+
+
+state 148
+
+ object_spec -> object_spec THICKNESS . expr (rule 123)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 271
+
+
+
+state 149
+
+ object_spec -> object_spec FILL . (rule 107)
+ object_spec -> object_spec FILL . expr (rule 108)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ $default reduce using rule 107 (object_spec)
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 272
+
+
+
+state 150
+
+ object_spec -> object_spec ALIGNED . (rule 124)
+
+ $default reduce using rule 124 (object_spec)
+
+
+
+state 151
+
+ object_spec -> object_spec text . (rule 118)
+
+ $default reduce using rule 118 (object_spec)
+
+
+
+state 152
+
+ object_spec -> object_spec expr . (rule 88)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 88 (object_spec)
+
+
+
+state 153
+
+ element -> LABEL ':' optional_separator . element (rule 62)
+ element -> LABEL ':' optional_separator . position_not_place (rule 63)
+ element -> LABEL ':' optional_separator . place (rule 64)
+
+ LABEL shift, and go to state 273
+ VARIABLE shift, and go to state 274
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ COMMAND_LINE shift, and go to state 8
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ UP shift, and go to state 9
+ DOWN shift, and go to state 10
+ LEFT shift, and go to state 275
+ RIGHT shift, and go to state 276
+ BOX shift, and go to state 13
+ CIRCLE shift, and go to state 14
+ ELLIPSE shift, and go to state 15
+ ARC shift, and go to state 16
+ LINE shift, and go to state 17
+ ARROW shift, and go to state 18
+ MOVE shift, and go to state 19
+ SPLINE shift, and go to state 20
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ COPY shift, and go to state 21
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ SH shift, and go to state 22
+ PRINT shift, and go to state 23
+ FOR shift, and go to state 24
+ IF shift, and go to state 25
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ RESET shift, and go to state 26
+ PLOT shift, and go to state 27
+ SPRINTF shift, and go to state 28
+ COMMAND shift, and go to state 29
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+ '{' shift, and go to state 30
+ '[' shift, and go to state 31
+
+ placeless_element go to state 33
+ reset_variables go to state 34
+ simple_if go to state 35
+ element go to state 277
+ object_spec go to state 37
+ text go to state 38
+ position go to state 278
+ position_not_place go to state 279
+ expr_pair go to state 93
+ place go to state 280
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 154
+
+ placeless_element -> VARIABLE '=' any_expr . (rule 10)
+
+ $default reduce using rule 10 (placeless_element)
+
+
+
+state 155
+
+ placeless_element -> VARIABLE ':' '=' . any_expr (rule 11)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 281
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 156
+
+ placeless_element -> COPY TEXT THRU . @2 DELIMITED @3 until (rule 24)
+
+ $default reduce using rule 22 (@2)
+
+ @2 go to state 282
+
+
+
+state 157
+
+ placeless_element -> COPY THRU @4 . DELIMITED @5 until (rule 27)
+
+ DELIMITED shift, and go to state 283
+
+
+
+state 158
+
+ placeless_element -> SH @1 DELIMITED . (rule 20)
+
+ $default reduce using rule 20 (placeless_element)
+
+
+
+state 159
+
+ expr -> SIN '(' . any_expr ')' (rule 217)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 284
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 160
+
+ expr -> COS '(' . any_expr ')' (rule 218)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 285
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 161
+
+ expr -> ATAN2 '(' . any_expr ',' any_expr ')' (rule 219)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 286
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 162
+
+ expr -> LOG '(' . any_expr ')' (rule 220)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 287
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 163
+
+ expr -> EXP '(' . any_expr ')' (rule 221)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 288
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 164
+
+ expr -> SQRT '(' . any_expr ')' (rule 222)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 289
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 165
+
+ expr -> MAX '(' . any_expr ',' any_expr ')' (rule 223)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 290
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 166
+
+ expr -> MIN '(' . any_expr ',' any_expr ')' (rule 224)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 291
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 167
+
+ expr -> INT '(' . any_expr ')' (rule 225)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 292
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 168
+
+ expr -> RAND '(' . any_expr ')' (rule 226)
+ expr -> RAND '(' . ')' (rule 227)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+ ')' shift, and go to state 293
+
+ any_expr go to state 294
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 169
+
+ corner -> UPPER LEFT . (rule 189)
+
+ $default reduce using rule 189 (corner)
+
+
+
+state 170
+
+ corner -> UPPER RIGHT . (rule 191)
+
+ $default reduce using rule 191 (corner)
+
+
+
+state 171
+
+ corner -> UPPER LEFT_CORNER . (rule 195)
+
+ $default reduce using rule 195 (corner)
+
+
+
+state 172
+
+ corner -> UPPER RIGHT_CORNER . (rule 197)
+
+ $default reduce using rule 197 (corner)
+
+
+
+state 173
+
+ corner -> LOWER LEFT . (rule 190)
+
+ $default reduce using rule 190 (corner)
+
+
+
+state 174
+
+ corner -> LOWER RIGHT . (rule 192)
+
+ $default reduce using rule 192 (corner)
+
+
+
+state 175
+
+ corner -> LOWER LEFT_CORNER . (rule 196)
+
+ $default reduce using rule 196 (corner)
+
+
+
+state 176
+
+ corner -> LOWER RIGHT_CORNER . (rule 198)
+
+ $default reduce using rule 198 (corner)
+
+
+
+state 177
+
+ expr -> '(' any_expr . ')' (rule 216)
+
+ ')' shift, and go to state 295
+
+
+
+state 178
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> '(' position . ',' position ')' (rule 134)
+
+ ',' shift, and go to state 296
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+
+
+state 179
+
+ position_not_place -> expr_pair . (rule 131)
+ expr_pair -> '(' expr_pair . ')' (rule 140)
+
+ ')' shift, and go to state 297
+
+ $default reduce using rule 131 (position_not_place)
+
+
+
+state 180
+
+ any_expr -> expr . (rule 47)
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ position_not_place -> expr . between position AND position (rule 135)
+ position_not_place -> expr . '<' position ',' position '>' (rule 136)
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ OF shift, and go to state 208
+ BETWEEN shift, and go to state 209
+ ANDAND shift, and go to state 234
+ OROR shift, and go to state 235
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ ',' shift, and go to state 216
+ '<' shift, and go to state 217
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 47 (any_expr)
+
+ between go to state 225
+
+
+
+state 181
+
+ ordinal -> '`' any_expr . TH (rule 150)
+
+ TH shift, and go to state 298
+
+
+
+state 182
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> '-' expr . (rule 215)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 215 (expr)
+
+
+
+state 183
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+ expr -> '!' expr . (rule 236)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 236 (expr)
+
+
+
+state 184
+
+ print_args -> print_args print_arg . (rule 39)
+
+ $default reduce using rule 39 (print_args)
+
+
+
+state 185
+
+ position_not_place -> position '+' . expr_pair (rule 132)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 265
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ expr_pair go to state 299
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 267
+
+
+
+state 186
+
+ position_not_place -> position '-' . expr_pair (rule 133)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 265
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ expr_pair go to state 300
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 267
+
+
+
+state 187
+
+ expr -> place DOT_X . (rule 204)
+
+ $default reduce using rule 204 (expr)
+
+
+
+state 188
+
+ expr -> place DOT_Y . (rule 205)
+
+ $default reduce using rule 205 (expr)
+
+
+
+state 189
+
+ expr -> place DOT_HT . (rule 206)
+
+ $default reduce using rule 206 (expr)
+
+
+
+state 190
+
+ expr -> place DOT_WID . (rule 207)
+
+ $default reduce using rule 207 (expr)
+
+
+
+state 191
+
+ expr -> place DOT_RAD . (rule 208)
+
+ $default reduce using rule 208 (expr)
+
+
+
+state 192
+
+ label -> label '.' . LABEL (rule 148)
+
+ LABEL shift, and go to state 301
+
+
+
+state 193
+
+ place -> label corner . (rule 142)
+
+ $default reduce using rule 142 (place)
+
+
+
+state 194
+
+ object_type -> TEXT . (rule 163)
+
+ $default reduce using rule 163 (object_type)
+
+
+
+state 195
+
+ optional_ordinal_last -> ordinal LAST . (rule 152)
+
+ $default reduce using rule 152 (optional_ordinal_last)
+
+
+
+state 196
+
+ object_type -> BOX . (rule 155)
+
+ $default reduce using rule 155 (object_type)
+
+
+
+state 197
+
+ object_type -> CIRCLE . (rule 156)
+
+ $default reduce using rule 156 (object_type)
+
+
+
+state 198
+
+ object_type -> ELLIPSE . (rule 157)
+
+ $default reduce using rule 157 (object_type)
+
+
+
+state 199
+
+ object_type -> ARC . (rule 158)
+
+ $default reduce using rule 158 (object_type)
+
+
+
+state 200
+
+ object_type -> LINE . (rule 159)
+
+ $default reduce using rule 159 (object_type)
+
+
+
+state 201
+
+ object_type -> ARROW . (rule 160)
+
+ $default reduce using rule 160 (object_type)
+
+
+
+state 202
+
+ object_type -> SPLINE . (rule 161)
+
+ $default reduce using rule 161 (object_type)
+
+
+
+state 203
+
+ object_type -> '[' . ']' (rule 162)
+
+ ']' shift, and go to state 302
+
+
+
+state 204
+
+ nth_primitive -> ordinal object_type . (rule 153)
+
+ $default reduce using rule 153 (nth_primitive)
+
+
+
+state 205
+
+ nth_primitive -> optional_ordinal_last object_type . (rule 154)
+
+ $default reduce using rule 154 (nth_primitive)
+
+
+
+state 206
+
+ place -> corner OF . label (rule 144)
+
+ LABEL shift, and go to state 46
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ '`' shift, and go to state 85
+
+ label go to state 303
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+
+
+
+state 207
+
+ place -> corner label . (rule 143)
+ label -> label . '.' LABEL (rule 148)
+
+ '.' shift, and go to state 192
+
+ $default reduce using rule 143 (place)
+
+
+
+state 208
+
+ between -> OF . THE WAY BETWEEN (rule 138)
+
+ THE shift, and go to state 304
+
+
+
+state 209
+
+ between -> BETWEEN . (rule 137)
+
+ $default reduce using rule 137 (between)
+
+
+
+state 210
+
+ expr -> expr ANDAND . expr (rule 234)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 305
+
+
+
+state 211
+
+ expr -> expr OROR . expr (rule 235)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 306
+
+
+
+state 212
+
+ expr -> expr NOTEQUAL . expr (rule 233)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 307
+
+
+
+state 213
+
+ expr -> expr EQUALEQUAL . expr (rule 232)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 308
+
+
+
+state 214
+
+ expr -> expr LESSEQUAL . expr (rule 229)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 309
+
+
+
+state 215
+
+ expr -> expr GREATEREQUAL . expr (rule 231)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 310
+
+
+
+state 216
+
+ expr_pair -> expr ',' . expr (rule 139)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 311
+
+
+
+state 217
+
+ position_not_place -> expr '<' . position ',' position '>' (rule 136)
+ expr -> expr '<' . expr (rule 228)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 312
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 313
+
+
+
+state 218
+
+ expr -> expr '>' . expr (rule 230)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 314
+
+
+
+state 219
+
+ expr -> expr '+' . expr (rule 209)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 315
+
+
+
+state 220
+
+ expr -> expr '-' . expr (rule 210)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 316
+
+
+
+state 221
+
+ expr -> expr '*' . expr (rule 211)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 317
+
+
+
+state 222
+
+ expr -> expr '/' . expr (rule 212)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 318
+
+
+
+state 223
+
+ expr -> expr '%' . expr (rule 213)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 319
+
+
+
+state 224
+
+ expr -> expr '^' . expr (rule 214)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 320
+
+
+
+state 225
+
+ position_not_place -> expr between . position AND position (rule 135)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 321
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 226
+
+ placeless_element -> FOR VARIABLE '=' . expr TO expr optional_by DO @6 DELIMITED (rule 29)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 322
+
+
+
+state 227
+
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+ text_expr -> '!' text_expr . (rule 57)
+
+
+ $default reduce using rule 57 (text_expr)
+
+
+
+state 228
+
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+ expr -> '!' expr . (rule 236)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 236 (expr)
+
+
+
+state 229
+
+ simple_if -> IF any_expr THEN . @8 DELIMITED (rule 44)
+
+ $default reduce using rule 43 (@8)
+
+ @8 go to state 323
+
+
+
+state 230
+
+ text_expr -> text_expr ANDAND . text_expr (rule 51)
+ text_expr -> text_expr ANDAND . expr (rule 52)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ text_expr go to state 324
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 325
+
+
+
+state 231
+
+ text_expr -> text_expr OROR . text_expr (rule 54)
+ text_expr -> text_expr OROR . expr (rule 55)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ text_expr go to state 326
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 327
+
+
+
+state 232
+
+ text_expr -> text NOTEQUAL . text (rule 50)
+
+ TEXT shift, and go to state 7
+ SPRINTF shift, and go to state 28
+
+ text go to state 328
+
+
+
+state 233
+
+ text_expr -> text EQUALEQUAL . text (rule 49)
+
+ TEXT shift, and go to state 7
+ SPRINTF shift, and go to state 28
+
+ text go to state 329
+
+
+
+state 234
+
+ text_expr -> expr ANDAND . text_expr (rule 53)
+ expr -> expr ANDAND . expr (rule 234)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ text_expr go to state 330
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 331
+
+
+
+state 235
+
+ text_expr -> expr OROR . text_expr (rule 56)
+ expr -> expr OROR . expr (rule 235)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ text_expr go to state 332
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 333
+
+
+
+state 236
+
+ expr -> expr '<' . expr (rule 228)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 334
+
+
+
+state 237
+
+ object_spec -> PLOT expr text . (rule 81)
+
+ $default reduce using rule 81 (object_spec)
+
+
+
+state 238
+
+ text -> SPRINTF '(' TEXT . sprintf_args ')' (rule 126)
+
+ $default reduce using rule 127 (sprintf_args)
+
+ sprintf_args go to state 335
+
+
+
+state 239
+
+ element -> '{' @9 element_list . '}' @10 optional_element (rule 67)
+
+ '}' shift, and go to state 336
+
+
+
+state 240
+
+ element_list -> optional_separator . middle_element_list optional_separator (rule 3)
+
+ LABEL shift, and go to state 5
+ VARIABLE shift, and go to state 6
+ TEXT shift, and go to state 7
+ COMMAND_LINE shift, and go to state 8
+ UP shift, and go to state 9
+ DOWN shift, and go to state 10
+ LEFT shift, and go to state 11
+ RIGHT shift, and go to state 12
+ BOX shift, and go to state 13
+ CIRCLE shift, and go to state 14
+ ELLIPSE shift, and go to state 15
+ ARC shift, and go to state 16
+ LINE shift, and go to state 17
+ ARROW shift, and go to state 18
+ MOVE shift, and go to state 19
+ SPLINE shift, and go to state 20
+ COPY shift, and go to state 21
+ SH shift, and go to state 22
+ PRINT shift, and go to state 23
+ FOR shift, and go to state 24
+ IF shift, and go to state 25
+ RESET shift, and go to state 26
+ PLOT shift, and go to state 27
+ SPRINTF shift, and go to state 28
+ COMMAND shift, and go to state 29
+ '{' shift, and go to state 30
+ '[' shift, and go to state 31
+
+ middle_element_list go to state 32
+ placeless_element go to state 33
+ reset_variables go to state 34
+ simple_if go to state 35
+ element go to state 36
+ object_spec go to state 37
+ text go to state 38
+
+
+
+state 241
+
+ object_spec -> '[' @11 element_list . ']' (rule 83)
+
+ ']' shift, and go to state 337
+
+
+
+state 242
+
+ middle_element_list -> middle_element_list separator element . (rule 5)
+
+ $default reduce using rule 5 (middle_element_list)
+
+
+
+state 243
+
+ reset_variables -> reset_variables ',' VARIABLE . (rule 37)
+
+ $default reduce using rule 37 (reset_variables)
+
+
+
+state 244
+
+ placeless_element -> simple_if ELSE @7 . DELIMITED (rule 32)
+
+ DELIMITED shift, and go to state 338
+
+
+
+state 245
+
+ object_spec -> object_spec UP expr . (rule 90)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 90 (object_spec)
+
+
+
+state 246
+
+ object_spec -> object_spec DOWN expr . (rule 92)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 92 (object_spec)
+
+
+
+state 247
+
+ object_spec -> object_spec LEFT expr . (rule 96)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 96 (object_spec)
+
+
+
+state 248
+
+ object_spec -> object_spec RIGHT expr . (rule 94)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 94 (object_spec)
+
+
+
+state 249
+
+ object_spec -> object_spec HEIGHT expr . (rule 84)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 84 (object_spec)
+
+
+
+state 250
+
+ object_spec -> object_spec RADIUS expr . (rule 85)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 85 (object_spec)
+
+
+
+state 251
+
+ object_spec -> object_spec WIDTH expr . (rule 86)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 86 (object_spec)
+
+
+
+state 252
+
+ object_spec -> object_spec DIAMETER expr . (rule 87)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 87 (object_spec)
+
+
+
+state 253
+
+ object_spec -> object_spec FROM position . (rule 97)
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+ $default reduce using rule 97 (object_spec)
+
+
+
+state 254
+
+ position_not_place -> expr . between position AND position (rule 135)
+ position_not_place -> expr . '<' position ',' position '>' (rule 136)
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ OF shift, and go to state 208
+ BETWEEN shift, and go to state 209
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ ',' shift, and go to state 216
+ '<' shift, and go to state 217
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ between go to state 225
+
+
+
+state 255
+
+ object_spec -> object_spec TO position . (rule 98)
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+ $default reduce using rule 98 (object_spec)
+
+
+
+state 256
+
+ object_spec -> object_spec AT position . (rule 99)
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+ $default reduce using rule 99 (object_spec)
+
+
+
+state 257
+
+ path -> LABEL . relative_path (rule 173)
+
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 260
+
+ label_path go to state 261
+ relative_path go to state 339
+ corner go to state 264
+
+
+
+state 258
+
+ path -> ORDINAL . LAST object_type relative_path (rule 170)
+ path -> ORDINAL . object_type relative_path (rule 172)
+
+ TEXT shift, and go to state 194
+ LAST shift, and go to state 340
+ BOX shift, and go to state 196
+ CIRCLE shift, and go to state 197
+ ELLIPSE shift, and go to state 198
+ ARC shift, and go to state 199
+ LINE shift, and go to state 200
+ ARROW shift, and go to state 201
+ SPLINE shift, and go to state 202
+ '[' shift, and go to state 203
+
+ object_type go to state 341
+
+
+
+state 259
+
+ path -> LAST . object_type relative_path (rule 171)
+
+ TEXT shift, and go to state 194
+ BOX shift, and go to state 196
+ CIRCLE shift, and go to state 197
+ ELLIPSE shift, and go to state 198
+ ARC shift, and go to state 199
+ LINE shift, and go to state 200
+ ARROW shift, and go to state 201
+ SPLINE shift, and go to state 202
+ '[' shift, and go to state 203
+
+ object_type go to state 342
+
+
+
+state 260
+
+ label_path -> '.' . LABEL (rule 164)
+
+ LABEL shift, and go to state 343
+
+
+
+state 261
+
+ label_path -> label_path . '.' LABEL (rule 165)
+ relative_path -> label_path . (rule 167)
+ relative_path -> label_path . corner (rule 168)
+
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 344
+
+ $default reduce using rule 167 (relative_path)
+
+ corner go to state 345
+
+
+
+state 262
+
+ path -> relative_path . (rule 169)
+
+ $default reduce using rule 169 (path)
+
+
+
+state 263
+
+ object_spec -> object_spec WITH path . (rule 100)
+
+ $default reduce using rule 100 (object_spec)
+
+
+
+state 264
+
+ relative_path -> corner . (rule 166)
+
+ $default reduce using rule 166 (relative_path)
+
+
+
+state 265
+
+ expr_pair -> '(' . expr_pair ')' (rule 140)
+ expr -> '(' . any_expr ')' (rule 216)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 265
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 177
+ text_expr go to state 105
+ text go to state 106
+ expr_pair go to state 346
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 347
+
+
+
+state 266
+
+ object_spec -> object_spec BY expr_pair . (rule 101)
+
+ $default reduce using rule 101 (object_spec)
+
+
+
+state 267
+
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ ',' shift, and go to state 216
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+
+
+state 268
+
+ object_spec -> object_spec DOTTED expr . (rule 104)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 104 (object_spec)
+
+
+
+state 269
+
+ object_spec -> object_spec DASHED expr . (rule 106)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 106 (object_spec)
+
+
+
+state 270
+
+ object_spec -> object_spec CHOP expr . (rule 110)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 110 (object_spec)
+
+
+
+state 271
+
+ object_spec -> object_spec THICKNESS expr . (rule 123)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 123 (object_spec)
+
+
+
+state 272
+
+ object_spec -> object_spec FILL expr . (rule 108)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 108 (object_spec)
+
+
+
+state 273
+
+ element -> LABEL . ':' optional_separator element (rule 62)
+ element -> LABEL . ':' optional_separator position_not_place (rule 63)
+ element -> LABEL . ':' optional_separator place (rule 64)
+ label -> LABEL . (rule 146)
+
+ ':' shift, and go to state 40
+
+ $default reduce using rule 146 (label)
+
+
+
+state 274
+
+ placeless_element -> VARIABLE . '=' any_expr (rule 10)
+ placeless_element -> VARIABLE . ':' '=' any_expr (rule 11)
+ expr -> VARIABLE . (rule 202)
+
+ '=' shift, and go to state 41
+ ':' shift, and go to state 42
+
+ $default reduce using rule 202 (expr)
+
+
+
+state 275
+
+ placeless_element -> LEFT . (rule 14)
+ corner -> LEFT . (rule 187)
+
+ $ reduce using rule 14 (placeless_element)
+ ';' reduce using rule 14 (placeless_element)
+ '}' reduce using rule 14 (placeless_element)
+ ']' reduce using rule 14 (placeless_element)
+ $default reduce using rule 187 (corner)
+
+
+
+state 276
+
+ placeless_element -> RIGHT . (rule 15)
+ corner -> RIGHT . (rule 188)
+
+ $ reduce using rule 15 (placeless_element)
+ ';' reduce using rule 15 (placeless_element)
+ '}' reduce using rule 15 (placeless_element)
+ ']' reduce using rule 15 (placeless_element)
+ $default reduce using rule 188 (corner)
+
+
+
+state 277
+
+ element -> LABEL ':' optional_separator element . (rule 62)
+
+ $default reduce using rule 62 (element)
+
+
+
+state 278
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+
+
+state 279
+
+ element -> LABEL ':' optional_separator position_not_place . (rule 63)
+ position -> position_not_place . (rule 129)
+
+ '+' reduce using rule 129 (position)
+ '-' reduce using rule 129 (position)
+ $default reduce using rule 63 (element)
+
+
+
+state 280
+
+ element -> LABEL ':' optional_separator place . (rule 64)
+ position -> place . (rule 130)
+ expr -> place . DOT_X (rule 204)
+ expr -> place . DOT_Y (rule 205)
+ expr -> place . DOT_HT (rule 206)
+ expr -> place . DOT_WID (rule 207)
+ expr -> place . DOT_RAD (rule 208)
+
+ DOT_X shift, and go to state 187
+ DOT_Y shift, and go to state 188
+ DOT_HT shift, and go to state 189
+ DOT_WID shift, and go to state 190
+ DOT_RAD shift, and go to state 191
+
+ '+' reduce using rule 130 (position)
+ '-' reduce using rule 130 (position)
+ $default reduce using rule 64 (element)
+
+
+
+state 281
+
+ placeless_element -> VARIABLE ':' '=' any_expr . (rule 11)
+
+ $default reduce using rule 11 (placeless_element)
+
+
+
+state 282
+
+ placeless_element -> COPY TEXT THRU @2 . DELIMITED @3 until (rule 24)
+
+ DELIMITED shift, and go to state 348
+
+
+
+state 283
+
+ placeless_element -> COPY THRU @4 DELIMITED . @5 until (rule 27)
+
+ $default reduce using rule 26 (@5)
+
+ @5 go to state 349
+
+
+
+state 284
+
+ expr -> SIN '(' any_expr . ')' (rule 217)
+
+ ')' shift, and go to state 350
+
+
+
+state 285
+
+ expr -> COS '(' any_expr . ')' (rule 218)
+
+ ')' shift, and go to state 351
+
+
+
+state 286
+
+ expr -> ATAN2 '(' any_expr . ',' any_expr ')' (rule 219)
+
+ ',' shift, and go to state 352
+
+
+
+state 287
+
+ expr -> LOG '(' any_expr . ')' (rule 220)
+
+ ')' shift, and go to state 353
+
+
+
+state 288
+
+ expr -> EXP '(' any_expr . ')' (rule 221)
+
+ ')' shift, and go to state 354
+
+
+
+state 289
+
+ expr -> SQRT '(' any_expr . ')' (rule 222)
+
+ ')' shift, and go to state 355
+
+
+
+state 290
+
+ expr -> MAX '(' any_expr . ',' any_expr ')' (rule 223)
+
+ ',' shift, and go to state 356
+
+
+
+state 291
+
+ expr -> MIN '(' any_expr . ',' any_expr ')' (rule 224)
+
+ ',' shift, and go to state 357
+
+
+
+state 292
+
+ expr -> INT '(' any_expr . ')' (rule 225)
+
+ ')' shift, and go to state 358
+
+
+
+state 293
+
+ expr -> RAND '(' ')' . (rule 227)
+
+ $default reduce using rule 227 (expr)
+
+
+
+state 294
+
+ expr -> RAND '(' any_expr . ')' (rule 226)
+
+ ')' shift, and go to state 359
+
+
+
+state 295
+
+ expr -> '(' any_expr ')' . (rule 216)
+
+ $default reduce using rule 216 (expr)
+
+
+
+state 296
+
+ position_not_place -> '(' position ',' . position ')' (rule 134)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 360
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 297
+
+ expr_pair -> '(' expr_pair ')' . (rule 140)
+
+ $default reduce using rule 140 (expr_pair)
+
+
+
+state 298
+
+ ordinal -> '`' any_expr TH . (rule 150)
+
+ $default reduce using rule 150 (ordinal)
+
+
+
+state 299
+
+ position_not_place -> position '+' expr_pair . (rule 132)
+
+ $default reduce using rule 132 (position_not_place)
+
+
+
+state 300
+
+ position_not_place -> position '-' expr_pair . (rule 133)
+
+ $default reduce using rule 133 (position_not_place)
+
+
+
+state 301
+
+ label -> label '.' LABEL . (rule 148)
+
+ $default reduce using rule 148 (label)
+
+
+
+state 302
+
+ object_type -> '[' ']' . (rule 162)
+
+ $default reduce using rule 162 (object_type)
+
+
+
+state 303
+
+ place -> corner OF label . (rule 144)
+ label -> label . '.' LABEL (rule 148)
+
+ '.' shift, and go to state 192
+
+ $default reduce using rule 144 (place)
+
+
+
+state 304
+
+ between -> OF THE . WAY BETWEEN (rule 138)
+
+ WAY shift, and go to state 361
+
+
+
+state 305
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr ANDAND expr . (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 234 (expr)
+
+
+
+state 306
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+ expr -> expr OROR expr . (rule 235)
+
+ ANDAND shift, and go to state 210
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 235 (expr)
+
+
+
+state 307
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr NOTEQUAL expr . (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 233 (expr)
+
+
+
+state 308
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr EQUALEQUAL expr . (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 232 (expr)
+
+
+
+state 309
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr LESSEQUAL expr . (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 229 (expr)
+
+
+
+state 310
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr GREATEREQUAL expr . (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 231 (expr)
+
+
+
+state 311
+
+ expr_pair -> expr ',' expr . (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 139 (expr_pair)
+
+
+
+state 312
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> expr '<' position . ',' position '>' (rule 136)
+
+ ',' shift, and go to state 362
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+
+
+state 313
+
+ position_not_place -> expr . between position AND position (rule 135)
+ position_not_place -> expr . '<' position ',' position '>' (rule 136)
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr '<' expr . (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ OF shift, and go to state 208
+ BETWEEN shift, and go to state 209
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 228 (expr)
+
+ between go to state 225
+
+
+
+state 314
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr '>' expr . (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 230 (expr)
+
+
+
+state 315
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr '+' expr . (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 209 (expr)
+
+
+
+state 316
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr '-' expr . (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 210 (expr)
+
+
+
+state 317
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr '*' expr . (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 211 (expr)
+
+
+
+state 318
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr '/' expr . (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 212 (expr)
+
+
+
+state 319
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr '%' expr . (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 213 (expr)
+
+
+
+state 320
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr '^' expr . (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '^' shift, and go to state 224
+
+ $default reduce using rule 214 (expr)
+
+
+
+state 321
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> expr between position . AND position (rule 135)
+
+ AND shift, and go to state 363
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+
+
+state 322
+
+ placeless_element -> FOR VARIABLE '=' expr . TO expr optional_by DO @6 DELIMITED (rule 29)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ TO shift, and go to state 364
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+
+
+state 323
+
+ simple_if -> IF any_expr THEN @8 . DELIMITED (rule 44)
+
+ DELIMITED shift, and go to state 365
+
+
+
+state 324
+
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr ANDAND text_expr . (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+
+
+ $default reduce using rule 51 (text_expr)
+
+
+
+state 325
+
+ text_expr -> text_expr ANDAND expr . (rule 52)
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 52 (text_expr)
+
+
+
+state 326
+
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr OROR text_expr . (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+
+ ANDAND shift, and go to state 230
+
+ $default reduce using rule 54 (text_expr)
+
+
+
+state 327
+
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> text_expr OROR expr . (rule 55)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 234
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 55 (text_expr)
+
+
+
+state 328
+
+ text_expr -> text NOTEQUAL text . (rule 50)
+
+ $default reduce using rule 50 (text_expr)
+
+
+
+state 329
+
+ text_expr -> text EQUALEQUAL text . (rule 49)
+
+ $default reduce using rule 49 (text_expr)
+
+
+
+state 330
+
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> expr ANDAND text_expr . (rule 53)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+
+
+ $default reduce using rule 53 (text_expr)
+
+
+
+state 331
+
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr ANDAND expr . (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 234 (expr)
+
+
+
+state 332
+
+ text_expr -> text_expr . ANDAND text_expr (rule 51)
+ text_expr -> text_expr . ANDAND expr (rule 52)
+ text_expr -> text_expr . OROR text_expr (rule 54)
+ text_expr -> text_expr . OROR expr (rule 55)
+ text_expr -> expr OROR text_expr . (rule 56)
+
+ ANDAND shift, and go to state 230
+
+ $default reduce using rule 56 (text_expr)
+
+
+
+state 333
+
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+ expr -> expr OROR expr . (rule 235)
+
+ ANDAND shift, and go to state 234
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 235 (expr)
+
+
+
+state 334
+
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr '<' expr . (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 228 (expr)
+
+
+
+state 335
+
+ text -> SPRINTF '(' TEXT sprintf_args . ')' (rule 126)
+ sprintf_args -> sprintf_args . ',' expr (rule 128)
+
+ ',' shift, and go to state 366
+ ')' shift, and go to state 367
+
+
+
+state 336
+
+ element -> '{' @9 element_list '}' . @10 optional_element (rule 67)
+
+ $default reduce using rule 66 (@10)
+
+ @10 go to state 368
+
+
+
+state 337
+
+ object_spec -> '[' @11 element_list ']' . (rule 83)
+
+ $default reduce using rule 83 (object_spec)
+
+
+
+state 338
+
+ placeless_element -> simple_if ELSE @7 DELIMITED . (rule 32)
+
+ $default reduce using rule 32 (placeless_element)
+
+
+
+state 339
+
+ path -> LABEL relative_path . (rule 173)
+
+ $default reduce using rule 173 (path)
+
+
+
+state 340
+
+ path -> ORDINAL LAST . object_type relative_path (rule 170)
+
+ TEXT shift, and go to state 194
+ BOX shift, and go to state 196
+ CIRCLE shift, and go to state 197
+ ELLIPSE shift, and go to state 198
+ ARC shift, and go to state 199
+ LINE shift, and go to state 200
+ ARROW shift, and go to state 201
+ SPLINE shift, and go to state 202
+ '[' shift, and go to state 203
+
+ object_type go to state 369
+
+
+
+state 341
+
+ path -> ORDINAL object_type . relative_path (rule 172)
+
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 260
+
+ label_path go to state 261
+ relative_path go to state 370
+ corner go to state 264
+
+
+
+state 342
+
+ path -> LAST object_type . relative_path (rule 171)
+
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 260
+
+ label_path go to state 261
+ relative_path go to state 371
+ corner go to state 264
+
+
+
+state 343
+
+ label_path -> '.' LABEL . (rule 164)
+
+ $default reduce using rule 164 (label_path)
+
+
+
+state 344
+
+ label_path -> label_path '.' . LABEL (rule 165)
+
+ LABEL shift, and go to state 372
+
+
+
+state 345
+
+ relative_path -> label_path corner . (rule 168)
+
+ $default reduce using rule 168 (relative_path)
+
+
+
+state 346
+
+ expr_pair -> '(' expr_pair . ')' (rule 140)
+
+ ')' shift, and go to state 297
+
+
+
+state 347
+
+ any_expr -> expr . (rule 47)
+ text_expr -> expr . ANDAND text_expr (rule 53)
+ text_expr -> expr . OROR text_expr (rule 56)
+ expr_pair -> expr . ',' expr (rule 139)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 234
+ OROR shift, and go to state 235
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ ',' shift, and go to state 216
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 47 (any_expr)
+
+
+
+state 348
+
+ placeless_element -> COPY TEXT THRU @2 DELIMITED . @3 until (rule 24)
+
+ $default reduce using rule 23 (@3)
+
+ @3 go to state 373
+
+
+
+state 349
+
+ placeless_element -> COPY THRU @4 DELIMITED @5 . until (rule 27)
+
+ UNTIL shift, and go to state 374
+
+ $default reduce using rule 45 (until)
+
+ until go to state 375
+
+
+
+state 350
+
+ expr -> SIN '(' any_expr ')' . (rule 217)
+
+ $default reduce using rule 217 (expr)
+
+
+
+state 351
+
+ expr -> COS '(' any_expr ')' . (rule 218)
+
+ $default reduce using rule 218 (expr)
+
+
+
+state 352
+
+ expr -> ATAN2 '(' any_expr ',' . any_expr ')' (rule 219)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 376
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 353
+
+ expr -> LOG '(' any_expr ')' . (rule 220)
+
+ $default reduce using rule 220 (expr)
+
+
+
+state 354
+
+ expr -> EXP '(' any_expr ')' . (rule 221)
+
+ $default reduce using rule 221 (expr)
+
+
+
+state 355
+
+ expr -> SQRT '(' any_expr ')' . (rule 222)
+
+ $default reduce using rule 222 (expr)
+
+
+
+state 356
+
+ expr -> MAX '(' any_expr ',' . any_expr ')' (rule 223)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 377
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 357
+
+ expr -> MIN '(' any_expr ',' . any_expr ')' (rule 224)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ TEXT shift, and go to state 7
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ SPRINTF shift, and go to state 28
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 103
+
+ any_expr go to state 378
+ text_expr go to state 105
+ text go to state 106
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 108
+
+
+
+state 358
+
+ expr -> INT '(' any_expr ')' . (rule 225)
+
+ $default reduce using rule 225 (expr)
+
+
+
+state 359
+
+ expr -> RAND '(' any_expr ')' . (rule 226)
+
+ $default reduce using rule 226 (expr)
+
+
+
+state 360
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> '(' position ',' position . ')' (rule 134)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+ ')' shift, and go to state 379
+
+
+
+state 361
+
+ between -> OF THE WAY . BETWEEN (rule 138)
+
+ BETWEEN shift, and go to state 380
+
+
+
+state 362
+
+ position_not_place -> expr '<' position ',' . position '>' (rule 136)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 381
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 363
+
+ position_not_place -> expr between position AND . position (rule 135)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 84
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ position go to state 382
+ position_not_place go to state 92
+ expr_pair go to state 93
+ place go to state 94
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 254
+
+
+
+state 364
+
+ placeless_element -> FOR VARIABLE '=' expr TO . expr optional_by DO @6 DELIMITED (rule 29)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 383
+
+
+
+state 365
+
+ simple_if -> IF any_expr THEN @8 DELIMITED . (rule 44)
+
+ $default reduce using rule 44 (simple_if)
+
+
+
+state 366
+
+ sprintf_args -> sprintf_args ',' . expr (rule 128)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 384
+
+
+
+state 367
+
+ text -> SPRINTF '(' TEXT sprintf_args ')' . (rule 126)
+
+ $default reduce using rule 126 (text)
+
+
+
+state 368
+
+ element -> '{' @9 element_list '}' @10 . optional_element (rule 67)
+
+ LABEL shift, and go to state 5
+ VARIABLE shift, and go to state 6
+ TEXT shift, and go to state 7
+ COMMAND_LINE shift, and go to state 8
+ UP shift, and go to state 9
+ DOWN shift, and go to state 10
+ LEFT shift, and go to state 11
+ RIGHT shift, and go to state 12
+ BOX shift, and go to state 13
+ CIRCLE shift, and go to state 14
+ ELLIPSE shift, and go to state 15
+ ARC shift, and go to state 16
+ LINE shift, and go to state 17
+ ARROW shift, and go to state 18
+ MOVE shift, and go to state 19
+ SPLINE shift, and go to state 20
+ COPY shift, and go to state 21
+ SH shift, and go to state 22
+ PRINT shift, and go to state 23
+ FOR shift, and go to state 24
+ IF shift, and go to state 25
+ RESET shift, and go to state 26
+ PLOT shift, and go to state 27
+ SPRINTF shift, and go to state 28
+ COMMAND shift, and go to state 29
+ '{' shift, and go to state 30
+ '[' shift, and go to state 31
+
+ $default reduce using rule 69 (optional_element)
+
+ placeless_element go to state 33
+ reset_variables go to state 34
+ simple_if go to state 35
+ element go to state 385
+ optional_element go to state 386
+ object_spec go to state 37
+ text go to state 38
+
+
+
+state 369
+
+ path -> ORDINAL LAST object_type . relative_path (rule 170)
+
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '.' shift, and go to state 260
+
+ label_path go to state 261
+ relative_path go to state 387
+ corner go to state 264
+
+
+
+state 370
+
+ path -> ORDINAL object_type relative_path . (rule 172)
+
+ $default reduce using rule 172 (path)
+
+
+
+state 371
+
+ path -> LAST object_type relative_path . (rule 171)
+
+ $default reduce using rule 171 (path)
+
+
+
+state 372
+
+ label_path -> label_path '.' LABEL . (rule 165)
+
+ $default reduce using rule 165 (label_path)
+
+
+
+state 373
+
+ placeless_element -> COPY TEXT THRU @2 DELIMITED @3 . until (rule 24)
+
+ UNTIL shift, and go to state 374
+
+ $default reduce using rule 45 (until)
+
+ until go to state 388
+
+
+
+state 374
+
+ until -> UNTIL . TEXT (rule 46)
+
+ TEXT shift, and go to state 389
+
+
+
+state 375
+
+ placeless_element -> COPY THRU @4 DELIMITED @5 until . (rule 27)
+
+ $default reduce using rule 27 (placeless_element)
+
+
+
+state 376
+
+ expr -> ATAN2 '(' any_expr ',' any_expr . ')' (rule 219)
+
+ ')' shift, and go to state 390
+
+
+
+state 377
+
+ expr -> MAX '(' any_expr ',' any_expr . ')' (rule 223)
+
+ ')' shift, and go to state 391
+
+
+
+state 378
+
+ expr -> MIN '(' any_expr ',' any_expr . ')' (rule 224)
+
+ ')' shift, and go to state 392
+
+
+
+state 379
+
+ position_not_place -> '(' position ',' position ')' . (rule 134)
+
+ $default reduce using rule 134 (position_not_place)
+
+
+
+state 380
+
+ between -> OF THE WAY BETWEEN . (rule 138)
+
+ $default reduce using rule 138 (between)
+
+
+
+state 381
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> expr '<' position ',' position . '>' (rule 136)
+
+ '>' shift, and go to state 393
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+
+
+state 382
+
+ position_not_place -> position . '+' expr_pair (rule 132)
+ position_not_place -> position . '-' expr_pair (rule 133)
+ position_not_place -> expr between position AND position . (rule 135)
+
+ '+' shift, and go to state 185
+ '-' shift, and go to state 186
+
+ $default reduce using rule 135 (position_not_place)
+
+
+
+state 383
+
+ placeless_element -> FOR VARIABLE '=' expr TO expr . optional_by DO @6 DELIMITED (rule 29)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ BY shift, and go to state 394
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 58 (optional_by)
+
+ optional_by go to state 395
+
+
+
+state 384
+
+ sprintf_args -> sprintf_args ',' expr . (rule 128)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 128 (sprintf_args)
+
+
+
+state 385
+
+ optional_element -> element . (rule 70)
+
+ $default reduce using rule 70 (optional_element)
+
+
+
+state 386
+
+ element -> '{' @9 element_list '}' @10 optional_element . (rule 67)
+
+ $default reduce using rule 67 (element)
+
+
+
+state 387
+
+ path -> ORDINAL LAST object_type relative_path . (rule 170)
+
+ $default reduce using rule 170 (path)
+
+
+
+state 388
+
+ placeless_element -> COPY TEXT THRU @2 DELIMITED @3 until . (rule 24)
+
+ $default reduce using rule 24 (placeless_element)
+
+
+
+state 389
+
+ until -> UNTIL TEXT . (rule 46)
+
+ $default reduce using rule 46 (until)
+
+
+
+state 390
+
+ expr -> ATAN2 '(' any_expr ',' any_expr ')' . (rule 219)
+
+ $default reduce using rule 219 (expr)
+
+
+
+state 391
+
+ expr -> MAX '(' any_expr ',' any_expr ')' . (rule 223)
+
+ $default reduce using rule 223 (expr)
+
+
+
+state 392
+
+ expr -> MIN '(' any_expr ',' any_expr ')' . (rule 224)
+
+ $default reduce using rule 224 (expr)
+
+
+
+state 393
+
+ position_not_place -> expr '<' position ',' position '>' . (rule 136)
+
+ $default reduce using rule 136 (position_not_place)
+
+
+
+state 394
+
+ optional_by -> BY . expr (rule 59)
+ optional_by -> BY . '*' expr (rule 60)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '*' shift, and go to state 396
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 397
+
+
+
+state 395
+
+ placeless_element -> FOR VARIABLE '=' expr TO expr optional_by . DO @6 DELIMITED (rule 29)
+
+ DO shift, and go to state 398
+
+
+
+state 396
+
+ optional_by -> BY '*' . expr (rule 60)
+
+ LABEL shift, and go to state 46
+ VARIABLE shift, and go to state 47
+ NUMBER shift, and go to state 48
+ ORDINAL shift, and go to state 49
+ LAST shift, and go to state 50
+ LEFT shift, and go to state 51
+ RIGHT shift, and go to state 52
+ HERE shift, and go to state 53
+ DOT_N shift, and go to state 54
+ DOT_E shift, and go to state 55
+ DOT_W shift, and go to state 56
+ DOT_S shift, and go to state 57
+ DOT_NE shift, and go to state 58
+ DOT_SE shift, and go to state 59
+ DOT_NW shift, and go to state 60
+ DOT_SW shift, and go to state 61
+ DOT_C shift, and go to state 62
+ DOT_START shift, and go to state 63
+ DOT_END shift, and go to state 64
+ SIN shift, and go to state 65
+ COS shift, and go to state 66
+ ATAN2 shift, and go to state 67
+ LOG shift, and go to state 68
+ EXP shift, and go to state 69
+ SQRT shift, and go to state 70
+ MAX shift, and go to state 71
+ MIN shift, and go to state 72
+ INT shift, and go to state 73
+ RAND shift, and go to state 74
+ TOP shift, and go to state 75
+ BOTTOM shift, and go to state 76
+ UPPER shift, and go to state 77
+ LOWER shift, and go to state 78
+ LEFT_CORNER shift, and go to state 79
+ RIGHT_CORNER shift, and go to state 80
+ CENTER shift, and go to state 81
+ END shift, and go to state 82
+ START shift, and go to state 83
+ '(' shift, and go to state 102
+ '`' shift, and go to state 85
+ '-' shift, and go to state 86
+ '!' shift, and go to state 87
+
+ place go to state 107
+ label go to state 95
+ ordinal go to state 96
+ optional_ordinal_last go to state 97
+ nth_primitive go to state 98
+ corner go to state 99
+ expr go to state 399
+
+
+
+state 397
+
+ optional_by -> BY expr . (rule 59)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 59 (optional_by)
+
+
+
+state 398
+
+ placeless_element -> FOR VARIABLE '=' expr TO expr optional_by DO . @6 DELIMITED (rule 29)
+
+ $default reduce using rule 28 (@6)
+
+ @6 go to state 400
+
+
+
+state 399
+
+ optional_by -> BY '*' expr . (rule 60)
+ expr -> expr . '+' expr (rule 209)
+ expr -> expr . '-' expr (rule 210)
+ expr -> expr . '*' expr (rule 211)
+ expr -> expr . '/' expr (rule 212)
+ expr -> expr . '%' expr (rule 213)
+ expr -> expr . '^' expr (rule 214)
+ expr -> expr . '<' expr (rule 228)
+ expr -> expr . LESSEQUAL expr (rule 229)
+ expr -> expr . '>' expr (rule 230)
+ expr -> expr . GREATEREQUAL expr (rule 231)
+ expr -> expr . EQUALEQUAL expr (rule 232)
+ expr -> expr . NOTEQUAL expr (rule 233)
+ expr -> expr . ANDAND expr (rule 234)
+ expr -> expr . OROR expr (rule 235)
+
+ ANDAND shift, and go to state 210
+ OROR shift, and go to state 211
+ NOTEQUAL shift, and go to state 212
+ EQUALEQUAL shift, and go to state 213
+ LESSEQUAL shift, and go to state 214
+ GREATEREQUAL shift, and go to state 215
+ '<' shift, and go to state 236
+ '>' shift, and go to state 218
+ '+' shift, and go to state 219
+ '-' shift, and go to state 220
+ '*' shift, and go to state 221
+ '/' shift, and go to state 222
+ '%' shift, and go to state 223
+ '^' shift, and go to state 224
+
+ $default reduce using rule 60 (optional_by)
+
+
+
+state 400
+
+ placeless_element -> FOR VARIABLE '=' expr TO expr optional_by DO @6 . DELIMITED (rule 29)
+
+ DELIMITED shift, and go to state 401
+
+
+
+state 401
+
+ placeless_element -> FOR VARIABLE '=' expr TO expr optional_by DO @6 DELIMITED . (rule 29)
+
+ $default reduce using rule 29 (placeless_element)
+
+
+
+state 402
+
+ $ go to state 403
+
+
+
+state 403
+
+ $ go to state 404
+
+
+
+state 404
+
+ $default accept
diff --git a/ps/Makefile b/ps/Makefile
deleted file mode 100644
index 599389f7b..000000000
--- a/ps/Makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA)
-# and define it to be A4, if it uses A4 paper (rest of the world)
-PAGE=A4
-#PAGE=letter
-BINDIR=/usr/local/bin
-CC=g++
-BROKEN_SPOOLER_FLAGS=0
-CFLAGS=-g
-OLDCC=gcc
-OLDCFLAGS=-g
-MLIBS=-lm
-INCLUDES=-I../driver -I../lib
-LDFLAGS=-g
-OBJECTS=ps.o psrm.o
-SOURCES=ps.c psrm.c ps.h
-MISC=Makefile devgps
-BINDIR=/usr/local/bin
-FONTDIR=/usr/local/lib/groff/font
-MACRODIR=/usr/local/lib/groff/tmac
-ETAGS=etags
-ETAGSFLAGS=-p
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: grops psbb pfbtops devps
-
-grops: $(OBJECTS) ../driver/libdriver.a ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
- ../driver/libdriver.a ../lib/libgroff.a $(MLIBS)
-
-ps.o: broken.h ps.h ../driver/printer.h ../driver/driver.h ../lib/font.h \
- ../lib/stringclass.h ../lib/cset.h
-
-psrm.o: ps.h ../driver/printer.h ../driver/driver.h ../lib/font.h \
- ../lib/stringclass.h ../lib/cset.h
-
-broken.h: FORCE
- @$(SHELL) ../gendef $@ "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)"
-
-psbb: psbb.o
- $(OLDCC) $(LDFLAGS) -o $@ psbb.o
-
-psbb.o: psbb.c
- $(OLDCC) $(OLDCFLAGS) -c psbb.c
-
-pfbtops: pfbtops.o ../lib/libgroff.a
- $(OLDCC) $(LDFLAGS) -o $@ pfbtops.o ../lib/libgroff.a
-
-pfbtops.o: pfbtops.c
- $(OLDCC) $(OLDCFLAGS) -c pfbtops.c
-
-saber_grops:
- #load $(INCLUDES) $(CFLAGS) $(DEFINES) psrm.c ps.c \
- -L../driver -ldriver -L../lib -lgroff -lm
-
-install.bin: grops psbb pfbtops
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/grops $(BINDIR)/psbb
- cp grops psbb pfbtops $(BINDIR)
- @cd devps; \
- $(MAKE) \
- "FONTDIR=$(FONTDIR)" "PAGE=$(PAGE)" "BINDIR=$(BINDIR)" install.bin
-
-install.nobin:
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.ps
- cp tmac.ps $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.pspic
- cp tmac.pspic $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.psatk
- cp tmac.psatk $(MACRODIR)
- @echo Making install.nobin in devps
- @cd devps; \
- $(MAKE) \
- "FONTDIR=$(FONTDIR)" "PAGE=$(PAGE)" "BINDIR=$(BINDIR)" install.nobin
-
-install: install.bin install.nobin
-
-
-TAGS : $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o psbb pfbtops core grops broken.h
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-devps: FORCE
- @echo Making all in devps
- @cd devps; $(MAKE) "FONTDIR=$(FONTDIR)" "PAGE=$(PAGE)" all
-
-FORCE:
diff --git a/ps/devps/AB b/ps/devps/AB
deleted file mode 100644
index 779d4670d..000000000
--- a/ps/devps/AB
+++ /dev/null
@@ -1,408 +0,0 @@
-name AB
-internalname AvantGarde-Demi
-spacewidth 280
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -50
-A w -50
-A v -50
-A Y -139
-A W -96
-A V -127
-A T -73
-F . -42
-F , -42
-F A -95
-L y -75
-L Y -90
-L W -90
-L V -90
-L T -50
-P . -16
-P , -16
-P A -100
-R y 31
-R Y -20
-R W -20
-R V -26
-R T 16
-T y -12
-T w -15
-T u -56
-T ; -12
-T s -43
-T r -42
-T . 4
-T o -50
-T i -5
-T - -10
-T hy -10
-T char173 -10
-T e -50
-T , 4
-T : -12
-T c -50
-T a -40
-T A -70
-V y -15
-V u -68
-V ; -13
-V r -40
-V . -13
-V o -80
-V i -9
-V - -20
-V hy -20
-V char173 -20
-V e -80
-V , -13
-V : -13
-V a -80
-V A -125
-W y 1
-W u -40
-W ; -12
-W r -39
-W . -12
-W o -50
-W i -7
-W - -10
-W hy -10
-W char173 -10
-W e -50
-W , -12
-W : -12
-W a -50
-W A -94
-Y v -25
-Y u -82
-Y ; -8
-Y q -100
-Y . -8
-Y p -60
-Y o -100
-Y i -5
-Y - -60
-Y hy -60
-Y char173 -60
-Y e -100
-Y , -8
-Y : -8
-Y a -100
-Y A -138
-f f 38
-r q -18
-r . 9
-r o -18
-r n 5
-r m 5
-r - -10
-r hy -10
-r char173 -10
-r h 0
-r g -8
-r f 38
-r e -8
-r d -8
-r , 9
-r c -27
-charset
-ha 600,739 2 0000 asciicircum
-ti 600,421 0 0001 asciitilde
-vS 520,943,18 2 0002 Scaron
-vZ 500,943 2 0003 Zcaron
-vs 440,758,18 2 0004 scaron
-vz 460,758 2 0005 zcaron
-:Y 620,938 2 0006 Ydieresis
-tm 1000,739 2 0007 trademark
-space 280 0 0040
-! 280,739 2 0041 exclam
-" 360,739 2 0042 quotedbl
-# 600,740 2 0043 numbersign
-sh "
-$ 560,855,85 3 0044 dollar
-Do "
-% 860,753,18 2 0045 percent
-& 680,753,18 2 0046 ampersand
-' 280,739 2 0047 quoteright
-( 380,739,128 3 0050 parenleft
-) 380,739,128 3 0051 parenright
-* 440,753 2 0052 asterisk
-+ 600,570 0 0053 plus
-, 280,133,140 1 0054 comma
-- 420,377 0 0055 hyphen
-hy "
-char173 "
-. 280,133 0 0056 period
-/ 460,739,128 3 0057 slash
-sl "
-0 560,753,18 2 0060 zero
-1 560,739 2 0061 one
-2 560,753 2 0062 two
-3 560,753,18 2 0063 three
-4 560,739 2 0064 four
-5 560,739,18 2 0065 five
-6 560,739,18 2 0066 six
-7 560,739 2 0067 seven
-8 560,753,18 2 0070 eight
-9 560,753 2 0071 nine
-: 280,502 0 0072 colon
-; 280,502,140 1 0073 semicolon
-< 600,593 0 0074 less
-= 600,473 0 0075 equal
-> 600,593 0 0076 greater
-? 560,753 2 0077 question
-@ 740,753,18 2 0100 at
-at "
-A 740,739 2 0101 A
-B 580,739 2 0102 B
-C 780,753,18 2 0103 C
-D 700,739 2 0104 D
-E 520,739 2 0105 E
-F 480,739 2 0106 F
-G 840,753,18 2 0107 G
-H 680,739 2 0110 H
-I 280,739 2 0111 I
-J 480,739,18 2 0112 J
-K 620,739 2 0113 K
-L 440,739 2 0114 L
-M 900,739 2 0115 M
-N 740,739 2 0116 N
-O 840,753,18 2 0117 O
-P 560,739 2 0120 P
-Q 840,753,18 2 0121 Q
-R 580,739 2 0122 R
-S 520,753,18 2 0123 S
-T 420,739 2 0124 T
-U 640,739,18 2 0125 U
-V 700,739 2 0126 V
-W 900,739 2 0127 W
-X 680,739 2 0130 X
-Y 620,739 2 0131 Y
-Z 500,739 2 0132 Z
-[ 320,739,127 3 0133 bracketleft
-lB "
-\ 640,739 2 0134 backslash
-rs "
-] 320,739,127 3 0135 bracketright
-rB "
-a^ 540,758 2 0136 circumflex
-^ "
-_ 500,0,138 1 0137 underscore
-` 280,753 2 0140 quoteleft
-oq "
-a 660,572,18 0 0141 a
-b 660,739,18 2 0142 b
-c 640,572,18 0 0143 c
-d 660,739,18 2 0144 d
-e 640,572,18 0 0145 e
-f 280,753 2 0146 f
-g 660,572,225 1 0147 g
-h 600,739 2 0150 h
-i 240,739 2 0151 i
-j 260,739,185 3 0152 j
-k 580,739 2 0153 k
-l 240,739 2 0154 l
-m 940,572 0 0155 m
-n 600,572 0 0156 n
-o 640,572,18 0 0157 o
-p 660,572,185 1 0160 p
-q 660,572,185 1 0161 q
-r 320,572 0 0162 r
-s 440,572,18 0 0163 s
-t 300,739 2 0164 t
-u 600,554,18 0 0165 u
-v 560,554 0 0166 v
-w 800,554 0 0167 w
-x 560,554 0 0170 x
-y 580,554,185 1 0171 y
-z 460,554 0 0172 z
-lC 340,738,127 3 0173 braceleft
-{ "
-ba 600,739 2 0174 bar
-| "
-rC 340,738,127 3 0175 braceright
-} "
-a~ 480,749 2 0176 tilde
-~ "
---- 280,133,140 1 0200 quotesinglbase
-Fo 460,498 0 0201 guillemotleft
-char171 "
-Fc 460,498 0 0202 guillemotright
-char187 "
-bu 600,486 0 0203 bullet
---- 560,822,150 3 0204 florin
-f/ 160,739 2 0205 fraction
-%0 1280,753,18 2 0206 perthousand
-dg 560,739,128 3 0207 dagger
-dd 560,739,128 3 0210 daggerdbl
-en 500,377 0 0211 endash
-em 1000,377 0 0212 emdash
-fi 520,753 2 0214 fi
-fl 520,753 2 0215 fl
-.i 240,554 0 0220 dotlessi
-ga 420,840 2 0222 grave
-a" 700,845 2 0223 hungarumlaut
-a. 280,753 2 0224 dotaccent
-ab 480,756 2 0225 breve
-ah 540,758 2 0226 caron
-ao 360,826 2 0227 ring
-ho 340,0,203 1 0230 ogonek
-lq 480,753 2 0231 quotedblleft
-rq 480,739 2 0232 quotedblright
-oe 1080,572,18 0 0233 oe
-/l 320,739 2 0234 lslash
---- 480,133,140 1 0235 quotedblbase
-OE 1060,753,14 2 0236 OE
-/L 480,739 2 0237 Lslash
-r! 280,554,185 1 0241 exclamdown
-char161 "
-ct 560,713 2 0242 cent
-char162 "
-Po 560,753 2 0243 sterling
-char163 "
-Cs 600,653 2 0244 currency
-char164 "
-Ye 560,739 2 0245 yen
-char165 "
-sc 560,768,141 3 0247 section
-char167 "
-ad 500,753 2 0250 dieresis
-char168 "
-co 740,753,18 2 0251 copyright
-char169 "
-Of 360,753 2 0252 ordfeminine
-char170 "
-fo 240,498 0 0253 guilsinglleft
-no 600,473 0 0254 logicalnot
-char172 "
-\- 600,376 0 0255 minus
-rg 740,753,18 2 0256 registered
-char174 "
-a- 420,730 2 0257 macron
-char175 "
-aa 420,838 2 0264 acute
-char180 "
-ps 600,739,128 3 0266 paragraph
-char182 "
-char183 280,384 0 0267 periodcentered
-ac 340,0,251 1 0270 cedilla
-char184 "
-Om 360,753 2 0272 ordmasculine
-char186 "
-fc 240,498 0 0273 guilsinglright
-r? 560,554,199 1 0277 questiondown
-char191 "
-`A 740,1025 2 0300 Agrave
-char192 "
-'A 740,1023 2 0301 Aacute
-char193 "
-^A 740,943 2 0302 Acircumflex
-char194 "
-~A 740,934 2 0303 Atilde
-char195 "
-:A 740,938 2 0304 Adieresis
-char196 "
-oA 740,1011 2 0305 Aring
-char197 "
-AE 900,739 2 0306 AE
-char198 "
-,C 780,753,251 3 0307 Ccedilla
-char199 "
-`E 520,1025 2 0310 Egrave
-char200 "
-'E 520,1023 2 0311 Eacute
-char201 "
-^E 520,943 2 0312 Ecircumflex
-char202 "
-:E 520,938 2 0313 Edieresis
-char203 "
-`I 280,1025 2 0314 Igrave
-char204 "
-'I 280,1023 2 0315 Iacute
-char205 "
-^I 280,943 2 0316 Icircumflex
-char206 "
-:I 280,938 2 0317 Idieresis
-char207 "
-~N 740,934 2 0321 Ntilde
-char209 "
-`O 840,1025,18 2 0322 Ograve
-char210 "
-'O 840,1023,18 2 0323 Oacute
-char211 "
-^O 840,943,18 2 0324 Ocircumflex
-char212 "
-~O 840,934,18 2 0325 Otilde
-char213 "
-:O 840,938,18 2 0326 Odieresis
-char214 "
-/O 840,813,70 3 0330 Oslash
-char216 "
-`U 640,1025,18 2 0331 Ugrave
-char217 "
-'U 640,1023,18 2 0332 Uacute
-char218 "
-^U 640,943,18 2 0333 Ucircumflex
-char219 "
-:U 640,938,18 2 0334 Udieresis
-char220 "
-ss 600,753,18 2 0337 germandbls
-char223 "
-`a 660,840,18 2 0340 agrave
-char224 "
-'a 660,838,18 2 0341 aacute
-char225 "
-^a 660,758,18 2 0342 acircumflex
-char226 "
-~a 660,749,18 2 0343 atilde
-char227 "
-:a 660,753,18 2 0344 adieresis
-char228 "
-oa 660,826,18 2 0345 aring
-char229 "
-ae 1080,572,18 0 0346 ae
-char230 "
-,c 640,572,251 1 0347 ccedilla
-char231 "
-`e 640,840,18 2 0350 egrave
-char232 "
-'e 640,838,18 2 0351 eacute
-char233 "
-^e 640,758,18 2 0352 ecircumflex
-char234 "
-:e 640,753,18 2 0353 edieresis
-char235 "
-`i 240,840 2 0354 igrave
-char236 "
-'i 240,838 2 0355 iacute
-char237 "
-^i 240,758 2 0356 icircumflex
-char238 "
-:i 240,753 2 0357 idieresis
-char239 "
-~n 600,749 2 0361 ntilde
-char241 "
-`o 640,840,18 2 0362 ograve
-char242 "
-'o 640,838,18 2 0363 oacute
-char243 "
-^o 640,758,18 2 0364 ocircumflex
-char244 "
-~o 640,749,18 2 0365 otilde
-char245 "
-:o 640,753,18 2 0366 odieresis
-char246 "
-/o 660,606,50 0 0370 oslash
-char248 "
-`u 600,840,18 2 0371 ugrave
-char249 "
-'u 600,838,18 2 0372 uacute
-char250 "
-^u 600,758,18 2 0373 ucircumflex
-char251 "
-:u 600,753,18 2 0374 udieresis
-char252 "
-:y 580,753,185 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/ABI b/ps/devps/ABI
deleted file mode 100644
index 0c30ca722..000000000
--- a/ps/devps/ABI
+++ /dev/null
@@ -1,409 +0,0 @@
-name ABI
-internalname AvantGarde-DemiOblique
-slant 10.5
-spacewidth 280
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -60
-A w -60
-A v -60
-A Y -139
-A W -96
-A V -127
-A T -73
-F . -42
-F , -42
-F A -95
-L y -60
-L Y -90
-L W -90
-L V -90
-L T -50
-P . -15
-P , -15
-P A -100
-R y 31
-R Y -10
-R W -10
-R V -10
-R T 16
-T y -12
-T w -15
-T u -40
-T ; -12
-T s -35
-T r -42
-T . 4
-T o -35
-T i 5
-T - -10
-T hy -10
-T char173 -10
-T e -35
-T , 4
-T : -12
-T c -35
-T a -35
-T A -70
-V y -15
-V u -68
-V ; -13
-V r -40
-V . -30
-V o -80
-V i -9
-V - -20
-V hy -20
-V char173 -20
-V e -80
-V , -30
-V : -13
-V a -80
-V A -125
-W y 1
-W u -40
-W ; -12
-W r -39
-W . -12
-W o -50
-W i -7
-W - -10
-W hy -10
-W char173 -10
-W e -50
-W , -12
-W : -12
-W a -50
-W A -94
-Y v -25
-Y u -82
-Y ; -8
-Y q -100
-Y . -8
-Y p -60
-Y o -100
-Y i -5
-Y - -60
-Y hy -60
-Y char173 -60
-Y e -100
-Y , -20
-Y : -8
-Y a -100
-Y A -138
-f f 38
-r q -18
-r . 9
-r o -25
-r n 15
-r m 15
-r - -10
-r hy -10
-r char173 -10
-r h 0
-r g -8
-r f 38
-r e -8
-r d -8
-r , 9
-r c -27
-charset
-ha 600,739,0,60,-80,60 2 0000 asciicircum
-ti 600,421,0,69,-55,69 0 0001 asciitilde
-vS 520,943,18,167,1,82 2 0002 Scaron
-vZ 500,943,0,177,32,82 2 0003 Zcaron
-vs 440,758,18,173,1,82 2 0004 scaron
-vz 460,758,0,163,30,82 2 0005 zcaron
-:Y 620,938,0,193,-90,82 2 0006 Ydieresis
-tm 1000,739,0,116,-144,82 2 0007 trademark
-space 280 0 0040
-! 280,739,0,112,-22,82 2 0041 exclam
-" 360,739,0,110,-119,82 2 0042 quotedbl
-# 600,740,0,96,-50,82 2 0043 numbersign
-sh "
-$ 560,855,85,65,-50,65 3 0044 dollar
-Do "
-% 860,753,18,58,-74,58 2 0045 percent
-& 680,753,18,111,-21,82 2 0046 ampersand
-' 280,739,0,112,-109,82 2 0047 quoteright
-( 380,739,128,156,-72,82 3 0050 parenleft
-) 380,739,128,47,37,47 3 0051 parenright
-* 440,753,0,100,-126,82 2 0052 asterisk
-+ 600,570,0,75,-50,75 0 0053 plus
-, 280,133,140,0,3 1 0054 comma
-- 420,377,0,51,-72,51 0 0055 hyphen
-hy "
-char173 "
-. 280,133,0,0,-22 0 0056 period
-/ 460,739,128,170,48,82 3 0057 slash
-sl "
-0 560,753,18,113,-18,82 2 0060 zero
-1 560,739,0,6,-196,6 2 0061 one
-2 560,753,0,109,8,82 2 0062 two
-3 560,753,18,61,-3,61 2 0063 three
-4 560,739,0,79,30,79 2 0064 four
-5 560,739,18,76,0,76 2 0065 five
-6 560,739,18,74,-12,74 2 0066 six
-7 560,739,0,127,-35,82 2 0067 seven
-8 560,753,18,72,-19,72 2 0070 eight
-9 560,753,0,118,-58,82 2 0071 nine
-: 280,502,0,68,-22,68 0 0072 colon
-; 280,502,140,68,3,68 1 0073 semicolon
-< 600,593,0,118,-48,82 0 0074 less
-= 600,473,0,93,-31,82 0 0075 equal
-> 600,593,0,75,-6,75 0 0076 greater
-? 560,753,0,76,-79,76 2 0077 question
-@ 740,753,18,141,-14,82 2 0100 at
-at "
-A 740,739,0,43,43,43 2 0101 A
-B 580,739,0,77,-18,77 2 0102 B
-C 780,753,18,128,-42,82 2 0103 C
-D 700,739,0,84,-18,82 2 0104 D
-E 520,739,0,132,-18,82 2 0105 E
-F 480,739,0,151,-18,82 2 0106 F
-G 840,753,18,98,-41,82 2 0107 G
-H 680,739,0,113,-18,82 2 0110 H
-I 280,739,0,112,-18,82 2 0111 I
-J 480,739,18,121,12,82 2 0112 J
-K 620,739,0,166,-18,82 2 0113 K
-L 440,739,0,66,-18,66 2 0114 L
-M 900,739,0,127,-18,82 2 0115 M
-N 740,739,0,114,-18,82 2 0116 N
-O 840,753,18,86,-41,82 2 0117 O
-P 560,739,0,129,-18,82 2 0120 P
-Q 840,753,18,99,-41,82 2 0121 Q
-R 580,739,0,127,-18,82 2 0122 R
-S 520,753,18,109,1,82 2 0123 S
-T 420,739,0,185,-69,82 2 0124 T
-U 640,739,18,114,-59,82 2 0125 U
-V 700,739,0,181,-95,82 2 0126 V
-W 900,739,0,185,-94,82 2 0127 W
-X 680,739,0,183,45,82 2 0130 X
-Y 620,739,0,193,-90,82 2 0131 Y
-Z 500,739,0,148,32,82 2 0132 Z
-[ 320,739,127,159,-50,82 3 0133 bracketleft
-lB "
-\ 640,739,0,0,-171 2 0134 backslash
-rs "
-] 320,739,127,76,37,76 3 0135 bracketright
-rB "
-a^ 540,758,0,98,-139,82 2 0136 circumflex
-^ "
-_ 500,0,138,41,76,41 1 0137 underscore
-` 280,753,0,113,-111,82 2 0140 quoteleft
-oq "
-a 660,572,18,108,-25,82 0 0141 a
-b 660,739,18,85,-4,82 2 0142 b
-c 640,572,18,80,-27,80 0 0143 c
-d 660,739,18,140,-26,82 2 0144 d
-e 640,572,18,75,-26,75 0 0145 e
-f 280,753,0,183,-7,82 2 0146 f
-g 660,572,225,104,20,82 1 0147 g
-h 600,739,0,63,-4,63 2 0150 h
-i 240,739,0,134,-4,82 2 0151 i
-j 260,739,185,132,67,82 3 0152 j
-k 580,739,0,95,-4,82 2 0153 k
-l 240,739,0,134,-4,82 2 0154 l
-m 940,572,0,62,-4,62 0 0155 m
-n 600,572,0,63,-4,63 0 0156 n
-o 640,572,18,85,-26,82 0 0157 o
-p 660,572,185,81,30,81 1 0160 p
-q 660,572,185,104,-27,82 1 0161 q
-r 320,572,0,142,-4,82 0 0162 r
-s 440,572,18,92,1,82 0 0163 s
-t 300,739,0,140,-24,82 2 0164 t
-u 600,554,18,100,-38,82 0 0165 u
-v 560,554,0,146,-54,82 0 0166 v
-w 800,554,0,138,-63,82 0 0167 w
-x 560,554,0,119,49,82 0 0170 x
-y 580,554,185,141,-23,82 1 0171 y
-z 460,554,0,118,30,82 0 0172 z
-lC 340,738,127,149,-44,82 3 0173 braceleft
-{ "
-ba 600,739,0,0,-193 2 0174 bar
-| "
-rC 340,738,127,70,36,70 3 0175 braceright
-} "
-a~ 480,749,0,98,-156,82 2 0176 tilde
-~ "
---- 280,133,140,0,4 1 0200 quotesinglbase
-Fo 460,498,0,70,-35,70 0 0201 guillemotleft
-char171 "
-Fc 460,498,0,83,-48,82 0 0202 guillemotright
-char187 "
-bu 600,486,0,0,-140 0 0203 bullet
---- 560,822,150,136,94,82 3 0204 florin
-f/ 160,739,0,307,171,82 2 0205 fraction
-%0 1280,753,18,51,-74,51 2 0206 perthousand
-dg 560,739,128,98,-79,82 3 0207 dagger
-dd 560,739,128,105,-46,82 3 0210 daggerdbl
-en 500,377,0,118,-1,82 0 0211 endash
-em 1000,377,0,38,-81,38 0 0212 emdash
-fi 520,753,0,128,-5,82 2 0214 fi
-fl 520,753,0,128,-5,82 2 0215 fl
-.i 240,554,0,100,-4,82 0 0220 dotlessi
-ga 420,840,0,114,-161,82 2 0222 grave
-a" 700,845,0,118,-154,82 2 0223 hungarumlaut
-a. 280,753,0,117,-139,82 2 0224 dotaccent
-ab 480,756,0,114,-164,82 2 0225 breve
-ah 540,758,0,123,-164,82 2 0226 caron
-ao 360,826,0,106,-156,82 2 0227 ring
-ho 340,0,203,0,-2 1 0230 ogonek
-lq 480,753,0,118,-109,82 2 0231 quotedblleft
-rq 480,739,0,117,-107,82 2 0232 quotedblright
-oe 1080,572,18,75,-26,75 0 0233 oe
-/l 320,739,0,150,-9,82 2 0234 lslash
---- 480,133,140,5,5,5 1 0235 quotedblbase
-OE 1060,753,14,131,-50,82 2 0236 OE
-/L 480,739,0,68,1,68 2 0237 Lslash
-r! 280,554,185,78,12,78 1 0241 exclamdown
-char161 "
-ct 560,713,0,83,-56,82 2 0242 cent
-char162 "
-Po 560,753,0,106,10,82 2 0243 sterling
-char163 "
-Cs 600,653,0,112,-41,82 2 0244 currency
-char164 "
-Ye 560,739,0,216,-1,82 2 0245 yen
-char165 "
-sc 560,768,141,98,-18,82 3 0247 section
-char167 "
-ad 500,753,0,107,-139,82 2 0250 dieresis
-char168 "
-co 740,753,18,144,0,82 2 0251 copyright
-char169 "
-Of 360,753,0,170,-40,82 2 0252 ordfeminine
-char170 "
-fo 240,498,0,77,-35,77 0 0253 guilsinglleft
-no 600,473,0,93,-67,82 0 0254 logicalnot
-char172 "
-\- 600,376,0,75,-49,75 0 0255 minus
-rg 740,753,18,144,0,82 2 0256 registered
-char174 "
-a- 420,730,0,116,-139,82 2 0257 macron
-char175 "
-aa 420,838,0,118,-155,82 2 0264 acute
-char180 "
-ps 600,739,128,114,-83,82 3 0266 paragraph
-char182 "
-char183 280,384,0,46,-69,46 0 0267 periodcentered
-ac 340,0,251,0,8 1 0270 cedilla
-char184 "
-Om 360,753,0,141,-40,82 2 0272 ordmasculine
-char186 "
-fc 240,498,0,90,-48,82 0 0273 guilsinglright
-r? 560,554,199,18,-21,18 1 0277 questiondown
-char191 "
-`A 740,1025,0,43,43,43 2 0300 Agrave
-char192 "
-'A 740,1023,0,43,43,43 2 0301 Aacute
-char193 "
-^A 740,943,0,43,43,43 2 0302 Acircumflex
-char194 "
-~A 740,934,0,43,43,43 2 0303 Atilde
-char195 "
-:A 740,938,0,43,43,43 2 0304 Adieresis
-char196 "
-oA 740,1011,0,43,43,43 2 0305 Aring
-char197 "
-AE 900,739,0,130,33,82 2 0306 AE
-char198 "
-,C 780,753,251,128,-42,82 3 0307 Ccedilla
-char199 "
-`E 520,1025,0,132,-18,82 2 0310 Egrave
-char200 "
-'E 520,1023,0,132,-18,82 2 0311 Eacute
-char201 "
-^E 520,943,0,142,-18,82 2 0312 Ecircumflex
-char202 "
-:E 520,938,0,132,-18,82 2 0313 Edieresis
-char203 "
-`I 280,1025,0,218,-18,82 2 0314 Igrave
-char204 "
-'I 280,1023,0,222,-18,82 2 0315 Iacute
-char205 "
-^I 280,943,0,262,-18,82 2 0316 Icircumflex
-char206 "
-:I 280,938,0,251,-18,82 2 0317 Idieresis
-char207 "
-~N 740,934,0,114,-18,82 2 0321 Ntilde
-char209 "
-`O 840,1025,18,86,-41,82 2 0322 Ograve
-char210 "
-'O 840,1023,18,86,-41,82 2 0323 Oacute
-char211 "
-^O 840,943,18,86,-41,82 2 0324 Ocircumflex
-char212 "
-~O 840,934,18,86,-41,82 2 0325 Otilde
-char213 "
-:O 840,938,18,86,-41,82 2 0326 Odieresis
-char214 "
-/O 840,813,70,97,-41,82 3 0330 Oslash
-char216 "
-`U 640,1025,18,114,-59,82 2 0331 Ugrave
-char217 "
-'U 640,1023,18,114,-59,82 2 0332 Uacute
-char218 "
-^U 640,943,18,114,-59,82 2 0333 Ucircumflex
-char219 "
-:U 640,938,18,114,-59,82 2 0334 Udieresis
-char220 "
-ss 600,753,18,78,-1,78 2 0337 germandbls
-char223 "
-`a 660,840,18,108,-25,82 2 0340 agrave
-char224 "
-'a 660,838,18,108,-25,82 2 0341 aacute
-char225 "
-^a 660,758,18,108,-25,82 2 0342 acircumflex
-char226 "
-~a 660,749,18,108,-25,82 2 0343 atilde
-char227 "
-:a 660,753,18,108,-25,82 2 0344 adieresis
-char228 "
-oa 660,826,18,108,-25,82 2 0345 aring
-char229 "
-ae 1080,572,18,78,-26,78 0 0346 ae
-char230 "
-,c 640,572,251,80,-27,80 1 0347 ccedilla
-char231 "
-`e 640,840,18,75,-26,75 2 0350 egrave
-char232 "
-'e 640,838,18,75,-26,75 2 0351 eacute
-char233 "
-^e 640,758,18,75,-26,75 2 0352 ecircumflex
-char234 "
-:e 640,753,18,75,-26,75 2 0353 edieresis
-char235 "
-`i 240,840,0,204,-4,82 2 0354 igrave
-char236 "
-'i 240,838,0,208,-4,82 2 0355 iacute
-char237 "
-^i 240,758,0,248,11,82 2 0356 icircumflex
-char238 "
-:i 240,753,0,237,-4,82 2 0357 idieresis
-char239 "
-~n 600,749,0,63,-4,63 2 0361 ntilde
-char241 "
-`o 640,840,18,85,-26,82 2 0362 ograve
-char242 "
-'o 640,838,18,85,-26,82 2 0363 oacute
-char243 "
-^o 640,758,18,85,-26,82 2 0364 ocircumflex
-char244 "
-~o 640,749,18,85,-26,82 2 0365 otilde
-char245 "
-:o 640,753,18,85,-26,82 2 0366 odieresis
-char246 "
-/o 660,606,50,70,-26,70 0 0370 oslash
-char248 "
-`u 600,840,18,100,-38,82 2 0371 ugrave
-char249 "
-'u 600,838,18,100,-38,82 2 0372 uacute
-char250 "
-^u 600,758,18,100,-38,82 2 0373 ucircumflex
-char251 "
-:u 600,753,18,100,-38,82 2 0374 udieresis
-char252 "
-:y 580,753,185,141,-23,82 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/AI b/ps/devps/AI
deleted file mode 100644
index b388efef3..000000000
--- a/ps/devps/AI
+++ /dev/null
@@ -1,409 +0,0 @@
-name AI
-internalname AvantGarde-BookOblique
-slant 10.5
-spacewidth 277
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -72
-A w -65
-A v -73
-A Y -122
-A W -73
-A V -122
-A T -81
-F . -79
-F , -122
-F A -60
-L y -23
-L Y -91
-L W -67
-L V -113
-L T -46
-P . -91
-P , -123
-P A -74
-R y 32
-R Y -20
-R W 2
-R V -39
-R T 6
-T y 5
-T w 7
-T u -20
-T ; -29
-T s -23
-T r -20
-T . -71
-T o -49
-T i 40
-T - 0
-T hy 0
-T char173 0
-T e -49
-T , -102
-T : 3
-T c -51
-T a -52
-T A -60
-V y -25
-V u -40
-V ; -33
-V r -20
-V . -75
-V o -80
-V i 15
-V - 0
-V hy 0
-V char173 0
-V e -80
-V , -106
-V : -1
-V a -80
-V A -122
-W y -2
-W u -30
-W r -29
-W o -46
-W i 12
-W e -47
-W a -50
-W ; -33
-W . -74
-W - 0
-W hy 0
-W char173 0
-W , -106
-W : -1
-W A -73
-Y v -17
-Y u -55
-Y ; -40
-Y q -93
-Y . -75
-Y p -67
-Y o -89
-Y i 13
-Y - 0
-Y hy 0
-Y char173 0
-Y e -89
-Y , -110
-Y : -10
-Y a -93
-Y A -122
-f f 3
-r q -8
-r . -73
-r o -4
-r n 35
-r m 35
-r - 0
-r hy 0
-r char173 0
-r h 29
-r g 1
-r f 48
-r e -4
-r d -6
-r , -105
-r c -7
-charset
-ha 672,739,0,32,-34,32 2 0000 asciicircum
-ti 606,391,0,63,-49,63 0 0001 asciitilde
-vS 498,931,13,151,-6,81 2 0002 Scaron
-vZ 480,931,0,170,33,81 2 0003 Zcaron
-vs 388,739,13,170,7,81 2 0004 scaron
-vz 425,739,0,152,40,81 2 0005 zcaron
-:Y 592,931,0,185,-89,81 2 0006 Ydieresis
-tm 1000,739,0,125,-139,81 2 0007 trademark
-space 277 0 0040
-! 295,739,0,77,-61,77 2 0041 exclam
-" 309,739,0,115,-119,81 2 0042 quotedbl
-# 720,739,0,116,-21,81 2 0043 numbersign
-sh "
-$ 554,808,54,71,-62,71 2 0044 dollar
-Do "
-% 775,751,13,60,-67,60 2 0045 percent
-& 757,751,13,67,-43,67 2 0046 ampersand
-' 351,739,0,89,-142,81 2 0047 quoteright
-( 369,739,127,153,-56,81 3 0050 parenleft
-) 369,739,127,58,40,58 3 0051 parenright
-* 425,751,0,102,-122,81 2 0052 asterisk
-+ 606,554,0,62,-50,62 0 0053 plus
-, 277,126,67,49,-29,49 1 0054 comma
-- 332,334,0,82,-30,81 0 0055 hyphen
-hy "
-char173 "
-. 277,126,0,0,-51 0 0056 period
-/ 437,739,128,147,34,81 3 0057 slash
-sl "
-0 554,751,13,117,-21,81 2 0060 zero
-1 554,739,0,0,-230 2 0061 one
-2 554,751,0,103,17,81 2 0062 two
-3 554,751,13,60,-21,60 2 0063 three
-4 554,739,0,93,13,81 2 0064 four
-5 554,739,13,100,-17,81 2 0065 five
-6 554,739,13,75,-16,75 2 0066 six
-7 554,739,0,123,-58,81 2 0067 seven
-8 554,751,13,76,-28,76 2 0070 eight
-9 554,751,0,121,-62,81 2 0071 nine
-: 277,510,0,43,-51,43 0 0072 colon
-; 277,510,67,71,21,71 1 0073 semicolon
-< 606,565,0,107,-49,81 0 0074 less
-= 606,436,0,80,-32,80 0 0075 equal
-> 606,565,0,63,-5,63 0 0076 greater
-? 591,751,0,86,-109,81 2 0077 question
-@ 867,752,12,66,-83,66 2 0100 at
-at "
-A 740,739,0,39,39,39 2 0101 A
-B 574,739,0,83,-26,81 2 0102 B
-C 813,751,13,106,-56,81 2 0103 C
-D 744,739,0,80,-26,80 2 0104 D
-E 536,739,0,131,-26,81 2 0105 E
-F 485,739,0,153,-26,81 2 0106 F
-G 872,751,13,72,-57,72 2 0107 G
-H 683,739,0,111,-26,81 2 0110 H
-I 226,739,0,111,-26,81 2 0111 I
-J 482,739,13,111,9,81 2 0112 J
-K 591,739,0,181,-26,81 2 0113 K
-L 462,739,0,56,-26,56 2 0114 L
-M 919,739,0,111,-26,81 2 0115 M
-N 740,739,0,111,-26,81 2 0116 N
-O 869,750,13,81,-56,81 2 0117 O
-P 592,739,0,123,-26,81 2 0120 P
-Q 871,751,13,92,-55,81 2 0121 Q
-R 607,739,0,116,-26,81 2 0122 R
-S 498,751,13,116,-6,81 2 0123 S
-T 426,739,0,180,-82,81 2 0124 T
-U 655,739,13,111,-69,81 2 0125 U
-V 702,739,0,177,-97,81 2 0126 V
-W 960,739,0,177,-97,81 2 0127 W
-X 609,739,0,164,42,81 2 0130 X
-Y 592,739,0,185,-89,81 2 0131 Y
-Z 480,739,0,170,33,81 2 0132 Z
-[ 351,739,127,149,-82,81 3 0133 bracketleft
-lB "
-\ 605,739,0,0,-171 2 0134 backslash
-rs "
-] 351,739,127,31,36,31 3 0135 bracketright
-rB "
-a^ 502,739,0,90,-138,81 2 0136 circumflex
-^ "
-_ 500,0,125,38,73,38 1 0137 underscore
-` 351,739,0,60,-185,60 2 0140 quoteleft
-oq "
-a 683,559,13,88,-38,81 0 0141 a
-b 682,739,13,64,-13,64 2 0142 b
-c 647,559,13,82,-38,81 0 0143 c
-d 685,739,13,124,-38,81 2 0144 d
-e 650,559,13,65,-38,65 0 0145 e
-f 314,739,0,183,-51,81 2 0146 f
-g 673,559,214,88,-10,81 1 0147 g
-h 610,739,0,49,-13,49 2 0150 h
-i 200,739,0,124,-13,81 2 0151 i
-j 203,739,192,124,131,81 3 0152 j
-k 502,739,0,132,-13,81 2 0153 k
-l 200,739,0,124,-13,81 2 0154 l
-m 938,559,0,53,-13,53 0 0155 m
-n 610,559,0,49,-13,49 0 0156 n
-o 655,559,13,64,-37,64 0 0157 o
-p 682,559,192,63,23,63 1 0160 p
-q 682,559,192,88,-37,81 1 0161 q
-r 301,559,0,145,-13,81 0 0162 r
-s 388,559,13,87,7,81 0 0163 s
-t 339,739,0,139,-51,81 2 0164 t
-u 608,547,13,88,-49,81 0 0165 u
-v 554,547,0,143,-59,81 0 0166 v
-w 831,547,0,144,-58,81 0 0167 w
-x 480,547,0,143,42,81 0 0170 x
-y 536,547,192,142,-47,81 1 0171 y
-z 425,547,0,122,40,81 0 0172 z
-lC 351,739,127,107,-44,81 3 0173 braceleft
-{ "
-ba 672,739,0,0,-254 2 0174 bar
-| "
-rC 351,739,127,25,36,25 3 0175 braceright
-} "
-a~ 439,715,0,97,-150,81 2 0176 tilde
-~ "
---- 354,126,67,0,-27 1 0200 quotesinglbase
-Fo 425,500,0,97,-46,81 0 0201 guillemotleft
-char171 "
-Fc 425,500,0,66,-15,66 0 0202 guillemotright
-char187 "
-bu 606,486,0,0,-121 0 0203 bullet
---- 554,751,214,181,71,81 3 0204 florin
-f/ 166,739,0,302,165,81 2 0205 fraction
-%0 1174,751,13,60,-67,60 2 0206 perthousand
-dg 553,739,127,91,-96,81 3 0207 dagger
-dd 553,739,128,95,-71,81 3 0210 daggerdbl
-en 500,334,0,105,-7,81 0 0211 endash
-em 1000,334,0,22,-89,22 0 0212 emdash
-fi 487,739,0,124,-48,81 2 0214 fi
-fl 485,739,0,124,-48,81 2 0215 fl
-.i 200,547,0,88,-13,81 0 0220 dotlessi
-ga 378,779,0,100,-157,81 2 0222 grave
-a" 552,785,0,113,-147,81 2 0223 hungarumlaut
-a. 222,739,0,113,-138,81 2 0224 dotaccent
-ab 453,716,0,108,-157,81 2 0225 breve
-ah 502,739,0,113,-161,81 2 0226 caron
-ao 332,797,0,108,-153,81 2 0227 ring
-ho 302,0,190,0,-3 1 0230 ogonek
-lq 502,739,0,55,-183,55 2 0231 quotedblleft
-rq 484,739,0,96,-138,81 2 0232 quotedblright
-oe 1137,559,13,66,-38,66 0 0233 oe
-/l 300,739,0,120,-44,81 2 0234 lslash
---- 502,126,67,0,-27 1 0235 quotedblbase
-OE 1194,751,13,131,-56,81 2 0236 OE
-/L 517,739,0,47,-20,47 2 0237 Lslash
-r! 295,547,192,41,-25,41 1 0241 exclamdown
-char161 "
-ct 554,705,0,91,-63,81 2 0242 cent
-char162 "
-Po 554,751,0,151,-8,81 2 0243 sterling
-char163 "
-Cs 554,553,0,111,-1,81 0 0244 currency
-char164 "
-Ye 554,739,0,222,-47,81 2 0245 yen
-char165 "
-sc 615,751,139,31,-64,31 3 0247 section
-char167 "
-ad 369,739,0,113,-138,81 2 0250 dieresis
-char168 "
-co 747,751,13,133,-3,81 2 0251 copyright
-char169 "
-Of 369,751,0,158,-41,81 2 0252 ordfeminine
-char170 "
-fo 251,500,0,97,-46,81 0 0253 guilsinglleft
-no 606,436,0,80,-68,80 0 0254 logicalnot
-char172 "
-\- 606,339,0,62,-50,62 0 0255 minus
-rg 747,751,13,133,-3,81 2 0256 registered
-char174 "
-a- 485,680,0,102,-138,81 2 0257 macron
-char175 "
-aa 375,785,0,111,-148,81 2 0264 acute
-char180 "
-ps 564,739,127,114,-85,81 3 0266 paragraph
-char182 "
-char183 277,364,0,15,-95,15 0 0267 periodcentered
-ac 324,0,223,0,4 1 0270 cedilla
-char184 "
-Om 369,751,0,131,-42,81 2 0272 ordmasculine
-char186 "
-fc 251,500,0,66,-15,66 0 0273 guilsinglright
-r? 591,547,214,0,-14 1 0277 questiondown
-char191 "
-`A 740,971,0,39,39,39 2 0300 Agrave
-char192 "
-'A 740,977,0,39,39,39 2 0301 Aacute
-char193 "
-^A 740,931,0,39,39,39 2 0302 Acircumflex
-char194 "
-~A 740,907,0,39,39,39 2 0303 Atilde
-char195 "
-:A 740,931,0,39,39,39 2 0304 Adieresis
-char196 "
-oA 740,989,0,39,39,39 2 0305 Aring
-char197 "
-AE 992,739,0,131,39,81 2 0306 AE
-char198 "
-,C 813,751,223,106,-56,81 3 0307 Ccedilla
-char199 "
-`E 536,971,0,131,-26,81 2 0310 Egrave
-char200 "
-'E 536,977,0,131,-26,81 2 0311 Eacute
-char201 "
-^E 536,931,0,131,-26,81 2 0312 Ecircumflex
-char202 "
-:E 536,931,0,131,-26,81 2 0313 Edieresis
-char203 "
-`I 226,971,0,212,-26,81 2 0314 Igrave
-char204 "
-'I 226,977,0,222,-26,81 2 0315 Iacute
-char205 "
-^I 226,931,0,264,-26,81 2 0316 Icircumflex
-char206 "
-:I 226,931,0,221,-26,81 2 0317 Idieresis
-char207 "
-~N 740,907,0,111,-26,81 2 0321 Ntilde
-char209 "
-`O 869,971,13,81,-56,81 2 0322 Ograve
-char210 "
-'O 869,977,13,81,-56,81 2 0323 Oacute
-char211 "
-^O 869,931,13,81,-56,81 2 0324 Ocircumflex
-char212 "
-~O 869,907,13,81,-56,81 2 0325 Otilde
-char213 "
-:O 869,931,13,81,-56,81 2 0326 Odieresis
-char214 "
-/O 868,821,83,107,-22,81 3 0330 Oslash
-char216 "
-`U 655,971,13,111,-69,81 2 0331 Ugrave
-char217 "
-'U 655,977,13,111,-69,81 2 0332 Uacute
-char218 "
-^U 655,931,13,111,-69,81 2 0333 Ucircumflex
-char219 "
-:U 655,931,13,111,-69,81 2 0334 Udieresis
-char220 "
-ss 554,751,13,72,-9,72 2 0337 germandbls
-char223 "
-`a 683,779,13,88,-38,81 2 0340 agrave
-char224 "
-'a 683,785,13,88,-38,81 2 0341 aacute
-char225 "
-^a 683,739,13,88,-38,81 2 0342 acircumflex
-char226 "
-~a 683,715,13,88,-38,81 2 0343 atilde
-char227 "
-:a 683,739,13,88,-38,81 2 0344 adieresis
-char228 "
-oa 683,797,13,88,-38,81 2 0345 aring
-char229 "
-ae 1157,559,13,65,-38,65 0 0346 ae
-char230 "
-,c 647,559,223,82,-38,81 1 0347 ccedilla
-char231 "
-`e 650,779,13,65,-38,65 2 0350 egrave
-char232 "
-'e 650,785,13,65,-38,65 2 0351 eacute
-char233 "
-^e 650,739,13,65,-38,65 2 0352 ecircumflex
-char234 "
-:e 650,739,13,65,-38,65 2 0353 edieresis
-char235 "
-`i 200,779,0,189,-13,81 2 0354 igrave
-char236 "
-'i 200,785,0,199,-13,81 2 0355 iacute
-char237 "
-^i 200,739,0,241,13,81 2 0356 icircumflex
-char238 "
-:i 200,739,0,198,-13,81 2 0357 idieresis
-char239 "
-~n 610,715,0,49,-13,49 2 0361 ntilde
-char241 "
-`o 655,779,13,64,-37,64 2 0362 ograve
-char242 "
-'o 655,785,13,64,-37,64 2 0363 oacute
-char243 "
-^o 655,739,13,64,-37,64 2 0364 ocircumflex
-char244 "
-~o 655,715,13,64,-37,64 2 0365 otilde
-char245 "
-:o 655,739,13,64,-37,64 2 0366 odieresis
-char246 "
-/o 653,594,45,84,-26,81 0 0370 oslash
-char248 "
-`u 608,779,13,88,-49,81 2 0371 ugrave
-char249 "
-'u 608,785,13,88,-49,81 2 0372 uacute
-char250 "
-^u 608,739,13,88,-49,81 2 0373 ucircumflex
-char251 "
-:u 608,739,13,88,-49,81 2 0374 udieresis
-char252 "
-:y 536,739,192,142,-47,81 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/AR b/ps/devps/AR
deleted file mode 100644
index 29f606fbc..000000000
--- a/ps/devps/AR
+++ /dev/null
@@ -1,408 +0,0 @@
-name AR
-internalname AvantGarde-Book
-spacewidth 277
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -72
-A w -65
-A v -73
-A Y -122
-A W -95
-A V -122
-A T -81
-F . -79
-F , -122
-F A -60
-L y -23
-L Y -91
-L W -67
-L V -113
-L T -46
-P . -91
-P , -123
-P A -74
-R y 32
-R Y -20
-R W 2
-R V -39
-R T 6
-T y 5
-T w 7
-T u -46
-T ; -29
-T s -23
-T r -30
-T . -71
-T o -49
-T i 31
-T - 0
-T hy 0
-T char173 0
-T e -49
-T , -102
-T : 3
-T c -51
-T a -52
-T A -81
-V y -25
-V u -40
-V ; -33
-V r -40
-V . -75
-V o -101
-V i 5
-V - 0
-V hy 0
-V char173 0
-V e -101
-V , -106
-V : -1
-V a -104
-V A -122
-W y -2
-W u -30
-W r -29
-W o -46
-W i 6
-W e -47
-W a -50
-W ; -33
-W . -74
-W - 0
-W hy 0
-W char173 0
-W , -106
-W : -1
-W A -73
-Y v -17
-Y u -69
-Y ; -23
-Y q -93
-Y . -65
-Y p -67
-Y o -89
-Y i 13
-Y - 0
-Y hy 0
-Y char173 0
-Y e -89
-Y , -97
-Y : 9
-Y a -93
-Y A -122
-f f 3
-r q -8
-r . -73
-r o -4
-r n 21
-r m 28
-r - 0
-r hy 0
-r char173 0
-r h 29
-r g 1
-r f 48
-r e -4
-r d -6
-r , -105
-r c -7
-charset
-ha 672,739 2 0000 asciicircum
-ti 606,391 0 0001 asciitilde
-vS 498,931,13 2 0002 Scaron
-vZ 480,931 2 0003 Zcaron
-vs 388,739,13 2 0004 scaron
-vz 425,739 2 0005 zcaron
-:Y 592,931 2 0006 Ydieresis
-tm 1000,739 2 0007 trademark
-space 277 0 0040
-! 295,739 2 0041 exclam
-" 309,739 2 0042 quotedbl
-# 720,739 2 0043 numbersign
-sh "
-$ 554,808,54 2 0044 dollar
-Do "
-% 775,751,13 2 0045 percent
-& 757,751,13 2 0046 ampersand
-' 351,739 2 0047 quoteright
-( 369,739,127 3 0050 parenleft
-) 369,739,127 3 0051 parenright
-* 425,751 2 0052 asterisk
-+ 606,554 0 0053 plus
-, 277,126,67 1 0054 comma
-- 332,334 0 0055 hyphen
-hy "
-char173 "
-. 277,126 0 0056 period
-/ 437,739,128 3 0057 slash
-sl "
-0 554,751,13 2 0060 zero
-1 554,739 2 0061 one
-2 554,751 2 0062 two
-3 554,751,13 2 0063 three
-4 554,739 2 0064 four
-5 554,739,13 2 0065 five
-6 554,739,13 2 0066 six
-7 554,739 2 0067 seven
-8 554,751,13 2 0070 eight
-9 554,751 2 0071 nine
-: 277,510 0 0072 colon
-; 277,510,67 1 0073 semicolon
-< 606,565 0 0074 less
-= 606,436 0 0075 equal
-> 606,565 0 0076 greater
-? 591,751 2 0077 question
-@ 867,752,12 2 0100 at
-at "
-A 740,739 2 0101 A
-B 574,739 2 0102 B
-C 813,751,13 2 0103 C
-D 744,739 2 0104 D
-E 536,739 2 0105 E
-F 485,739 2 0106 F
-G 872,751,13 2 0107 G
-H 683,739 2 0110 H
-I 226,739 2 0111 I
-J 482,739,13 2 0112 J
-K 591,739 2 0113 K
-L 462,739 2 0114 L
-M 919,739 2 0115 M
-N 740,739 2 0116 N
-O 869,750,13 2 0117 O
-P 592,739 2 0120 P
-Q 871,751,13 2 0121 Q
-R 607,739 2 0122 R
-S 498,751,13 2 0123 S
-T 426,739 2 0124 T
-U 655,739,13 2 0125 U
-V 702,739 2 0126 V
-W 960,739 2 0127 W
-X 609,739 2 0130 X
-Y 592,739 2 0131 Y
-Z 480,739 2 0132 Z
-[ 351,739,127 3 0133 bracketleft
-lB "
-\ 605,739 2 0134 backslash
-rs "
-] 351,739,127 3 0135 bracketright
-rB "
-a^ 502,739 2 0136 circumflex
-^ "
-_ 500,0,125 1 0137 underscore
-` 351,739 2 0140 quoteleft
-oq "
-a 683,559,13 0 0141 a
-b 682,739,13 2 0142 b
-c 647,559,13 0 0143 c
-d 685,739,13 2 0144 d
-e 650,559,13 0 0145 e
-f 314,739 2 0146 f
-g 673,559,214 1 0147 g
-h 610,739 2 0150 h
-i 200,739 2 0151 i
-j 203,739,192 3 0152 j
-k 502,739 2 0153 k
-l 200,739 2 0154 l
-m 938,559 0 0155 m
-n 610,559 0 0156 n
-o 655,559,13 0 0157 o
-p 682,559,192 1 0160 p
-q 682,559,192 1 0161 q
-r 301,559 0 0162 r
-s 388,559,13 0 0163 s
-t 339,739 2 0164 t
-u 608,547,13 0 0165 u
-v 554,547 0 0166 v
-w 831,547 0 0167 w
-x 480,547 0 0170 x
-y 536,547,192 1 0171 y
-z 425,547 0 0172 z
-lC 351,739,127 3 0173 braceleft
-{ "
-ba 672,739 2 0174 bar
-| "
-rC 351,739,127 3 0175 braceright
-} "
-a~ 439,715 2 0176 tilde
-~ "
---- 354,126,67 1 0200 quotesinglbase
-Fo 425,500 0 0201 guillemotleft
-char171 "
-Fc 425,500 0 0202 guillemotright
-char187 "
-bu 606,486 0 0203 bullet
---- 554,751,214 3 0204 florin
-f/ 166,739 2 0205 fraction
-%0 1174,751,13 2 0206 perthousand
-dg 553,739,127 3 0207 dagger
-dd 553,739,128 3 0210 daggerdbl
-en 500,334 0 0211 endash
-em 1000,334 0 0212 emdash
-fi 487,739 2 0214 fi
-fl 485,739 2 0215 fl
-.i 200,547 0 0220 dotlessi
-ga 378,779 2 0222 grave
-a" 552,785 2 0223 hungarumlaut
-a. 222,739 2 0224 dotaccent
-ab 453,716 2 0225 breve
-ah 502,739 2 0226 caron
-ao 332,797 2 0227 ring
-ho 302,0,190 1 0230 ogonek
-lq 502,739 2 0231 quotedblleft
-rq 484,739 2 0232 quotedblright
-oe 1137,559,13 0 0233 oe
-/l 300,739 2 0234 lslash
---- 502,126,67 1 0235 quotedblbase
-OE 1194,751,13 2 0236 OE
-/L 517,739 2 0237 Lslash
-r! 295,547,192 1 0241 exclamdown
-char161 "
-ct 554,705 2 0242 cent
-char162 "
-Po 554,751 2 0243 sterling
-char163 "
-Cs 554,553 0 0244 currency
-char164 "
-Ye 554,739 2 0245 yen
-char165 "
-sc 615,751,139 3 0247 section
-char167 "
-ad 369,739 2 0250 dieresis
-char168 "
-co 747,751,13 2 0251 copyright
-char169 "
-Of 369,751 2 0252 ordfeminine
-char170 "
-fo 251,500 0 0253 guilsinglleft
-no 606,436 0 0254 logicalnot
-char172 "
-\- 606,339 0 0255 minus
-rg 747,751,13 2 0256 registered
-char174 "
-a- 485,680 2 0257 macron
-char175 "
-aa 375,785 2 0264 acute
-char180 "
-ps 564,739,127 3 0266 paragraph
-char182 "
-char183 277,364 0 0267 periodcentered
-ac 324,0,223 1 0270 cedilla
-char184 "
-Om 369,751 2 0272 ordmasculine
-char186 "
-fc 251,500 0 0273 guilsinglright
-r? 591,547,214 1 0277 questiondown
-char191 "
-`A 740,971 2 0300 Agrave
-char192 "
-'A 740,977 2 0301 Aacute
-char193 "
-^A 740,931 2 0302 Acircumflex
-char194 "
-~A 740,907 2 0303 Atilde
-char195 "
-:A 740,931 2 0304 Adieresis
-char196 "
-oA 740,989 2 0305 Aring
-char197 "
-AE 992,739 2 0306 AE
-char198 "
-,C 813,751,223 3 0307 Ccedilla
-char199 "
-`E 536,971 2 0310 Egrave
-char200 "
-'E 536,977 2 0311 Eacute
-char201 "
-^E 536,931 2 0312 Ecircumflex
-char202 "
-:E 536,931 2 0313 Edieresis
-char203 "
-`I 226,971 2 0314 Igrave
-char204 "
-'I 226,977 2 0315 Iacute
-char205 "
-^I 226,931 2 0316 Icircumflex
-char206 "
-:I 226,931 2 0317 Idieresis
-char207 "
-~N 740,907 2 0321 Ntilde
-char209 "
-`O 869,971,13 2 0322 Ograve
-char210 "
-'O 869,977,13 2 0323 Oacute
-char211 "
-^O 869,931,13 2 0324 Ocircumflex
-char212 "
-~O 869,907,13 2 0325 Otilde
-char213 "
-:O 869,931,13 2 0326 Odieresis
-char214 "
-/O 868,821,83 3 0330 Oslash
-char216 "
-`U 655,971,13 2 0331 Ugrave
-char217 "
-'U 655,977,13 2 0332 Uacute
-char218 "
-^U 655,931,13 2 0333 Ucircumflex
-char219 "
-:U 655,931,13 2 0334 Udieresis
-char220 "
-ss 554,751,13 2 0337 germandbls
-char223 "
-`a 683,779,13 2 0340 agrave
-char224 "
-'a 683,785,13 2 0341 aacute
-char225 "
-^a 683,739,13 2 0342 acircumflex
-char226 "
-~a 683,715,13 2 0343 atilde
-char227 "
-:a 683,739,13 2 0344 adieresis
-char228 "
-oa 683,797,13 2 0345 aring
-char229 "
-ae 1157,559,13 0 0346 ae
-char230 "
-,c 647,559,223 1 0347 ccedilla
-char231 "
-`e 650,779,13 2 0350 egrave
-char232 "
-'e 650,785,13 2 0351 eacute
-char233 "
-^e 650,739,13 2 0352 ecircumflex
-char234 "
-:e 650,739,13 2 0353 edieresis
-char235 "
-`i 200,779 2 0354 igrave
-char236 "
-'i 200,785 2 0355 iacute
-char237 "
-^i 200,739 2 0356 icircumflex
-char238 "
-:i 200,739 2 0357 idieresis
-char239 "
-~n 610,715 2 0361 ntilde
-char241 "
-`o 655,779,13 2 0362 ograve
-char242 "
-'o 655,785,13 2 0363 oacute
-char243 "
-^o 655,739,13 2 0364 ocircumflex
-char244 "
-~o 655,715,13 2 0365 otilde
-char245 "
-:o 655,739,13 2 0366 odieresis
-char246 "
-/o 653,594,45 0 0370 oslash
-char248 "
-`u 608,779,13 2 0371 ugrave
-char249 "
-'u 608,785,13 2 0372 uacute
-char250 "
-^u 608,739,13 2 0373 ucircumflex
-char251 "
-:u 608,739,13 2 0374 udieresis
-char252 "
-:y 536,739,192 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/CB b/ps/devps/CB
deleted file mode 100644
index 357b76272..000000000
--- a/ps/devps/CB
+++ /dev/null
@@ -1,286 +0,0 @@
-name CB
-internalname Courier-Bold
-spacewidth 600
-encoding text.enc
-charset
-ha 600,674 2 0000 asciicircum
-ti 600,433 0 0001 asciitilde
-vS 600,824,65 2 0002 Scaron
-vZ 600,824,50 2 0003 Zcaron
-vs 600,695,65 2 0004 scaron
-vz 600,695,50 2 0005 zcaron
-:Y 600,781,50 2 0006 Ydieresis
-space 600 0 0040
-! 600,689,65 2 0041 exclam
-" 600,663 2 0042 quotedbl
-# 600,725,142 3 0043 numbersign
-sh "
-$ 600,735,173 3 0044 dollar
-Do "
-% 600,689,65 2 0045 percent
-& 600,600,65 2 0046 ampersand
-' 600,674 2 0047 quoteright
-( 600,683,204 3 0050 parenleft
-) 600,683,204 3 0051 parenright
-* 600,674 2 0052 asterisk
-+ 600,610,48 2 0053 plus
-, 600,215,215 1 0054 comma
-- 600,381 0 0055 hyphen
-hy "
-char173 "
-. 600,150,50 0 0056 period
-/ 600,746,163 3 0057 slash
-sl "
-0 600,689,65 2 0060 zero
-1 600,674,50 2 0061 one
-2 600,689,50 2 0062 two
-3 600,689,65 2 0063 three
-4 600,674,50 2 0064 four
-5 600,674,65 2 0065 five
-6 600,689,65 2 0066 six
-7 600,674,50 2 0067 seven
-8 600,689,65 2 0070 eight
-9 600,689,65 2 0071 nine
-: 600,472,50 0 0072 colon
-; 600,472,176 1 0073 semicolon
-< 600,610,48 2 0074 less
-= 600,474 0 0075 equal
-> 600,610,48 2 0076 greater
-? 600,648,65 2 0077 question
-@ 600,705,142 3 0100 at
-at "
-A 600,633,50 2 0101 A
-B 600,633,50 2 0102 B
-C 600,648,65 2 0103 C
-D 600,633,50 2 0104 D
-E 600,633,50 2 0105 E
-F 600,633,50 2 0106 F
-G 600,648,65 2 0107 G
-H 600,633,50 2 0110 H
-I 600,633,50 2 0111 I
-J 600,633,65 2 0112 J
-K 600,633,50 2 0113 K
-L 600,633,50 2 0114 L
-M 600,633,50 2 0115 M
-N 600,633,50 2 0116 N
-O 600,648,65 2 0117 O
-P 600,633,50 2 0120 P
-Q 600,648,196 3 0121 Q
-R 600,633,50 2 0122 R
-S 600,648,65 2 0123 S
-T 600,633,50 2 0124 T
-U 600,633,65 2 0125 U
-V 600,633,50 2 0126 V
-W 600,633,50 2 0127 W
-X 600,633,50 2 0130 X
-Y 600,633,50 2 0131 Y
-Z 600,633,50 2 0132 Z
-[ 600,674,204 3 0133 bracketleft
-lB "
-\ 600,746,163 3 0134 backslash
-rs "
-] 600,674,204 3 0135 bracketright
-rB "
-a^ 600,674 2 0136 circumflex
-^ "
-_ 600,0,350 1 0137 underscore
-` 600,674 2 0140 quoteleft
-oq "
-a 600,502,65 0 0141 a
-b 600,674,65 2 0142 b
-c 600,502,65 0 0143 c
-d 600,674,65 2 0144 d
-e 600,502,65 0 0145 e
-f 600,674,50 2 0146 f
-g 600,502,257 1 0147 g
-h 600,674,50 2 0150 h
-i 600,725,50 2 0151 i
-j 600,725,257 3 0152 j
-k 600,674,50 2 0153 k
-l 600,674,50 2 0154 l
-m 600,502,50 0 0155 m
-n 600,502,50 0 0156 n
-o 600,502,65 0 0157 o
-p 600,502,257 1 0160 p
-q 600,502,257 1 0161 q
-r 600,501,50 0 0162 r
-s 600,502,65 0 0163 s
-t 600,642,65 2 0164 t
-u 600,487,65 0 0165 u
-v 600,487,50 0 0166 v
-w 600,487,50 0 0167 w
-x 600,487,50 0 0170 x
-y 600,487,257 1 0171 y
-z 600,487,50 0 0172 z
-lC 600,674,204 3 0173 braceleft
-{ "
-ba 600,674,204 3 0174 bar
-| "
-rC 600,674,204 3 0175 braceright
-} "
-a~ 600,640 2 0176 tilde
-~ "
---- 600,204,225 1 0200 quotesinglbase
-Fo 600,487,50 0 0201 guillemotleft
-char171 "
-Fc 600,487,50 0 0202 guillemotright
-char187 "
-bu 600,406 0 0203 bullet
---- 600,689,173 3 0204 florin
-f/ 600,552 0 0205 fraction
-dg 600,674,142 3 0207 dagger
-dd 600,674,142 3 0210 daggerdbl
-en 600,381 0 0211 endash
-em 600,381 0 0212 emdash
-.i 600,487,50 0 0220 dotlessi
-ga 600,689 2 0222 grave
-a" 600,689 2 0223 hungarumlaut
-a. 600,631 2 0224 dotaccent
-ab 600,674 2 0225 breve
-ah 600,674 2 0226 caron
-ao 600,694 2 0227 ring
-ho 600,100,225 1 0230 ogonek
-lq 600,678 2 0231 quotedblleft
-rq 600,678 2 0232 quotedblright
-/l 600,674,50 2 0234 lslash
---- 600,199,199 1 0235 quotedblbase
-/L 600,633,50 2 0237 Lslash
-r! 600,475,257 1 0241 exclamdown
-char161 "
-ct 600,725,79 2 0242 cent
-char162 "
-Po 600,648,50 2 0243 sterling
-char163 "
-Cs 600,569 2 0244 currency
-char164 "
-Ye 600,633,50 2 0245 yen
-char165 "
-sc 600,689,147 3 0247 section
-char167 "
-ad 600,631 2 0250 dieresis
-char168 "
-Of 600,649 2 0252 ordfeminine
-char170 "
-fo 600,487,50 0 0253 guilsinglleft
-a- 600,616 2 0257 macron
-char175 "
-aa 600,689 2 0264 acute
-char180 "
-ps 600,689,147 3 0266 paragraph
-char182 "
-char183 600,406 0 0267 periodcentered
-ac 600,100,246 1 0270 cedilla
-char184 "
-Om 600,649 2 0272 ordmasculine
-char186 "
-fc 600,487,50 0 0273 guilsinglright
-r? 600,475,257 1 0277 questiondown
-char191 "
-`A 600,839,50 2 0300 Agrave
-char192 "
-'A 600,839,50 2 0301 Aacute
-char193 "
-^A 600,824,50 2 0302 Acircumflex
-char194 "
-~A 600,790,50 2 0303 Atilde
-char195 "
-:A 600,781,50 2 0304 Adieresis
-char196 "
-oA 600,855,50 2 0305 Aring
-char197 "
-,C 600,648,246 3 0307 Ccedilla
-char199 "
-`E 600,839,50 2 0310 Egrave
-char200 "
-'E 600,839,50 2 0311 Eacute
-char201 "
-^E 600,824,50 2 0312 Ecircumflex
-char202 "
-:E 600,781,50 2 0313 Edieresis
-char203 "
-`I 600,839,50 2 0314 Igrave
-char204 "
-'I 600,839,50 2 0315 Iacute
-char205 "
-^I 600,824,50 2 0316 Icircumflex
-char206 "
-:I 600,781,50 2 0317 Idieresis
-char207 "
-~N 600,790,50 2 0321 Ntilde
-char209 "
-`O 600,839,65 2 0322 Ograve
-char210 "
-'O 600,839,65 2 0323 Oacute
-char211 "
-^O 600,824,65 2 0324 Ocircumflex
-char212 "
-~O 600,790,65 2 0325 Otilde
-char213 "
-:O 600,781,65 2 0326 Odieresis
-char214 "
-/O 600,683,121 3 0330 Oslash
-char216 "
-`U 600,839,65 2 0331 Ugrave
-char217 "
-'U 600,839,65 2 0332 Uacute
-char218 "
-^U 600,824,65 2 0333 Ucircumflex
-char219 "
-:U 600,781,65 2 0334 Udieresis
-char220 "
-ss 600,674,65 2 0337 germandbls
-char223 "
-`a 600,710,65 2 0340 agrave
-char224 "
-'a 600,710,65 2 0341 aacute
-char225 "
-^a 600,703,65 2 0342 acircumflex
-char226 "
-~a 600,678,65 2 0343 atilde
-char227 "
-:a 600,652,65 2 0344 adieresis
-char228 "
-oa 600,746,65 2 0345 aring
-char229 "
-,c 600,502,246 1 0347 ccedilla
-char231 "
-`e 600,714,65 2 0350 egrave
-char232 "
-'e 600,714,65 2 0351 eacute
-char233 "
-^e 600,703,65 2 0352 ecircumflex
-char234 "
-:e 600,652,65 2 0353 edieresis
-char235 "
-`i 600,706,50 2 0354 igrave
-char236 "
-'i 600,710,50 2 0355 iacute
-char237 "
-^i 600,684,50 2 0356 icircumflex
-char238 "
-:i 600,652,50 2 0357 idieresis
-char239 "
-~n 600,678,50 2 0361 ntilde
-char241 "
-`o 600,699,65 2 0362 ograve
-char242 "
-'o 600,699,65 2 0363 oacute
-char243 "
-^o 600,703,65 2 0364 ocircumflex
-char244 "
-~o 600,657,65 2 0365 otilde
-char245 "
-:o 600,652,65 2 0366 odieresis
-char246 "
-/o 600,538,121 1 0370 oslash
-char248 "
-`u 600,706,65 2 0371 ugrave
-char249 "
-'u 600,706,65 2 0372 uacute
-char250 "
-^u 600,684,65 2 0373 ucircumflex
-char251 "
-:u 600,652,65 2 0374 udieresis
-char252 "
-:y 600,631,257 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/CBI b/ps/devps/CBI
deleted file mode 100644
index 6fe267dc4..000000000
--- a/ps/devps/CBI
+++ /dev/null
@@ -1,287 +0,0 @@
-name CBI
-internalname Courier-BoldOblique
-slant 12
-spacewidth 600
-encoding text.enc
-charset
-ha 600,674,0,97,-63,83 2 0000 asciicircum
-ti 600,433,0,102,-17,83 0 0001 asciitilde
-vS 600,824,65,130,27,83 2 0002 Scaron
-vZ 600,824,50,129,16,83 2 0003 Zcaron
-vs 600,695,65,101,16,83 2 0004 scaron
-vz 600,695,50,101,4,83 2 0005 zcaron
-:Y 600,781,50,192,-26,83 2 0006 Ydieresis
-space 600 0 0040
-! 600,689,65,0,-147 2 0041 exclam
-" 600,663,0,104,-121,83 2 0042 quotedbl
-# 600,725,142,122,-2,83 3 0043 numbersign
-sh "
-$ 600,735,173,109,-1,83 3 0044 dollar
-Do "
-% 600,689,65,121,-8,83 2 0045 percent
-& 600,600,65,57,-2,57 2 0046 ampersand
-' 600,674,0,0,-98 2 0047 quoteright
-( 600,683,204,112,-205,83 3 0050 parenleft
-) 600,683,204,0,5 3 0051 parenright
-* 600,674,0,115,-81,83 2 0052 asterisk
-+ 600,610,48,118,-2,83 2 0053 plus
-, 600,215,215,0,-1 1 0054 comma
-- 600,381,0,118,-2,83 0 0055 hyphen
-hy "
-char173 "
-. 600,150,50,0,-151 0 0056 period
-/ 600,746,163,154,30,83 3 0057 slash
-sl "
-0 600,689,65,99,-32,83 2 0060 zero
-1 600,674,50,28,6,28 2 0061 one
-2 600,689,50,106,35,83 2 0062 two
-3 600,689,65,109,20,83 2 0063 three
-4 600,674,50,68,-15,68 2 0064 four
-5 600,674,65,110,17,83 2 0065 five
-6 600,689,65,162,-58,83 2 0066 six
-7 600,674,50,130,-86,83 2 0067 seven
-8 600,689,65,105,-14,83 2 0070 eight
-9 600,689,65,115,-17,83 2 0071 nine
-: 600,472,50,0,-151 0 0072 colon
-; 600,472,176,0,-13 1 0073 semicolon
-< 600,610,48,166,-2,83 2 0074 less
-= 600,474,0,158,39,83 0 0075 equal
-> 600,610,48,118,47,83 2 0076 greater
-? 600,648,65,107,-98,83 2 0077 question
-@ 600,705,142,90,-11,83 3 0100 at
-at "
-A 600,633,50,132,110,83 2 0101 A
-B 600,633,50,120,76,83 2 0102 B
-C 600,648,65,163,19,83 2 0103 C
-D 600,633,50,120,76,83 2 0104 D
-E 600,633,50,142,76,83 2 0105 E
-F 600,633,50,163,76,83 2 0106 F
-G 600,648,65,163,21,83 2 0107 G
-H 600,633,50,173,66,83 2 0110 H
-I 600,633,50,130,6,83 2 0111 I
-J 600,633,65,226,28,83 2 0112 J
-K 600,633,50,194,76,83 2 0113 K
-L 600,633,50,115,56,83 2 0114 L
-M 600,633,50,226,108,83 2 0115 M
-N 600,633,50,205,76,83 2 0116 N
-O 600,648,65,146,24,83 2 0117 O
-P 600,633,50,116,76,83 2 0120 P
-Q 600,648,196,146,24,83 3 0121 Q
-R 600,633,50,130,76,83 2 0122 R
-S 600,648,65,130,27,83 2 0123 S
-T 600,633,50,171,-22,83 2 0124 T
-U 600,633,65,203,-11,83 2 0125 U
-V 600,633,50,234,8,83 2 0126 V
-W 600,633,50,223,0,83 2 0127 W
-X 600,633,50,192,79,83 2 0130 X
-Y 600,633,50,192,-26,83 2 0131 Y
-Z 600,633,50,119,16,83 2 0132 Z
-[ 600,674,204,97,-128,83 3 0133 bracketleft
-lB "
-\ 600,746,163,4,-120,4 3 0134 backslash
-rs "
-] 600,674,204,0,-3 3 0135 bracketright
-rB "
-a^ 600,674,0,79,-129,79 2 0136 circumflex
-^ "
-_ 600,0,350,89,195,83 1 0137 underscore
-` 600,674,0,48,-272,48 2 0140 quoteleft
-oq "
-a 600,502,65,82,34,82 0 0141 a
-b 600,674,65,120,97,83 2 0142 b
-c 600,502,65,122,6,83 0 0143 c
-d 600,674,65,151,27,83 2 0144 d
-e 600,502,65,100,25,83 0 0145 e
-f 600,674,50,190,14,83 2 0146 f
-g 600,502,257,174,25,83 1 0147 g
-h 600,674,50,92,66,83 2 0150 h
-i 600,725,50,49,27,49 2 0151 i
-j 600,725,257,70,16,70 3 0152 j
-k 600,674,50,111,56,83 2 0153 k
-l 600,674,50,49,27,49 2 0154 l
-m 600,502,50,134,108,83 0 0155 m
-n 600,502,50,82,66,82 0 0156 n
-o 600,502,65,106,16,83 0 0157 o
-p 600,502,257,121,141,83 1 0160 p
-q 600,502,257,195,23,83 1 0161 q
-r 600,501,50,149,35,83 0 0162 r
-s 600,502,65,88,16,83 0 0163 s
-t 600,642,65,49,5,49 2 0164 t
-u 600,487,65,90,5,83 0 0165 u
-v 600,487,50,182,18,83 0 0166 v
-w 600,487,50,182,18,83 0 0167 w
-x 600,487,50,140,68,83 0 0170 x
-y 600,487,257,161,112,83 1 0171 y
-z 600,487,50,90,4,83 0 0172 z
-lC 600,674,204,55,-118,55 3 0173 braceleft
-{ "
-ba 600,674,204,0,-128 3 0174 bar
-| "
-rC 600,674,204,0,-45 3 0175 braceright
-} "
-a~ 600,640,0,96,-121,83 2 0176 tilde
-~ "
---- 600,204,225,0,2 1 0200 quotesinglbase
-Fo 600,487,50,153,23,83 0 0201 guillemotleft
-char171 "
-Fc 600,487,50,115,56,83 0 0202 guillemotright
-char187 "
-bu 600,406,0,0,-215 0 0203 bullet
---- 600,689,173,170,56,83 3 0204 florin
-f/ 600,552,0,175,45,83 0 0205 fraction
-dg 600,674,142,88,-76,83 3 0207 dagger
-dd 600,674,142,88,-25,83 3 0210 daggerdbl
-en 600,381,0,118,-2,83 0 0211 endash
-em 600,381,0,189,69,83 0 0212 emdash
-.i 600,487,50,49,27,49 0 0220 dotlessi
-ga 600,689,0,0,-150 2 0222 grave
-a" 600,689,0,100,-129,83 2 0223 hungarumlaut
-a. 600,631,0,0,-263 2 0224 dotaccent
-ab 600,674,0,97,-146,83 2 0225 breve
-ah 600,674,0,97,-147,83 2 0226 caron
-ao 600,694,0,36,-187,36 2 0227 ring
-ho 600,100,225,0,-134 1 0230 ogonek
-lq 600,678,0,98,-106,83 2 0231 quotedblleft
-rq 600,678,0,140,-64,83 2 0232 quotedblright
-/l 600,674,50,54,27,54 2 0234 lslash
---- 600,199,199,38,38,38 1 0235 quotedblbase
-/L 600,633,50,115,56,83 2 0237 Lslash
-r! 600,475,257,0,-93 1 0241 exclamdown
-char161 "
-ct 600,725,79,93,-46,83 2 0242 cent
-char162 "
-Po 600,648,50,70,35,70 2 0243 sterling
-char163 "
-Cs 600,569,0,127,3,83 2 0244 currency
-char164 "
-Ye 600,633,50,192,-27,83 2 0245 yen
-char165 "
-sc 600,689,147,147,32,83 3 0247 section
-char167 "
-ad 600,631,0,67,-159,67 2 0250 dieresis
-char168 "
-Of 600,649,0,40,-64,40 2 0252 ordfeminine
-char170 "
-fo 600,487,50,0,23 0 0253 guilsinglleft
-a- 600,616,0,85,-135,83 2 0257 macron
-char175 "
-aa 600,689,0,100,-254,83 2 0264 acute
-char180 "
-ps 600,689,147,180,-22,83 3 0266 paragraph
-char182 "
-char183 600,406,0,0,-205 0 0267 periodcentered
-ac 600,100,246,0,-53 1 0270 cedilla
-char184 "
-Om 600,649,0,73,-68,73 2 0272 ordmasculine
-char186 "
-fc 600,487,50,115,-174,83 0 0273 guilsinglright
-r? 600,475,257,0,24 1 0277 questiondown
-char191 "
-`A 600,839,50,132,110,83 2 0300 Agrave
-char192 "
-'A 600,839,50,132,110,83 2 0301 Aacute
-char193 "
-^A 600,824,50,132,110,83 2 0302 Acircumflex
-char194 "
-~A 600,790,50,132,110,83 2 0303 Atilde
-char195 "
-:A 600,781,50,132,110,83 2 0304 Adieresis
-char196 "
-oA 600,855,50,132,110,83 2 0305 Aring
-char197 "
-,C 600,648,246,163,19,83 3 0307 Ccedilla
-char199 "
-`E 600,839,50,142,76,83 2 0310 Egrave
-char200 "
-'E 600,839,50,142,76,83 2 0311 Eacute
-char201 "
-^E 600,824,50,142,76,83 2 0312 Ecircumflex
-char202 "
-:E 600,781,50,142,76,83 2 0313 Edieresis
-char203 "
-`I 600,839,50,130,6,83 2 0314 Igrave
-char204 "
-'I 600,839,50,130,6,83 2 0315 Iacute
-char205 "
-^I 600,824,50,130,6,83 2 0316 Icircumflex
-char206 "
-:I 600,781,50,130,6,83 2 0317 Idieresis
-char207 "
-~N 600,790,50,205,76,83 2 0321 Ntilde
-char209 "
-`O 600,839,65,146,24,83 2 0322 Ograve
-char210 "
-'O 600,839,65,146,24,83 2 0323 Oacute
-char211 "
-^O 600,824,65,146,24,83 2 0324 Ocircumflex
-char212 "
-~O 600,790,65,146,24,83 2 0325 Otilde
-char213 "
-:O 600,781,65,146,24,83 2 0326 Odieresis
-char214 "
-/O 600,683,121,214,94,83 3 0330 Oslash
-char216 "
-`U 600,839,65,203,-11,83 2 0331 Ugrave
-char217 "
-'U 600,839,65,203,-11,83 2 0332 Uacute
-char218 "
-^U 600,824,65,203,-11,83 2 0333 Ucircumflex
-char219 "
-:U 600,781,65,203,-11,83 2 0334 Udieresis
-char220 "
-ss 600,674,65,68,76,68 2 0337 germandbls
-char223 "
-`a 600,710,65,82,34,82 2 0340 agrave
-char224 "
-'a 600,710,65,82,34,82 2 0341 aacute
-char225 "
-^a 600,703,65,85,34,83 2 0342 acircumflex
-char226 "
-~a 600,678,65,104,34,83 2 0343 atilde
-char227 "
-:a 600,652,65,82,34,82 2 0344 adieresis
-char228 "
-oa 600,746,65,82,34,82 2 0345 aring
-char229 "
-,c 600,502,246,122,6,83 1 0347 ccedilla
-char231 "
-`e 600,714,65,100,25,83 2 0350 egrave
-char232 "
-'e 600,714,65,100,25,83 2 0351 eacute
-char233 "
-^e 600,703,65,100,25,83 2 0352 ecircumflex
-char234 "
-:e 600,652,65,100,25,83 2 0353 edieresis
-char235 "
-`i 600,706,50,49,27,49 2 0354 igrave
-char236 "
-'i 600,710,50,49,27,49 2 0355 iacute
-char237 "
-^i 600,684,50,49,27,49 2 0356 icircumflex
-char238 "
-:i 600,652,50,49,27,49 2 0357 idieresis
-char239 "
-~n 600,678,50,82,66,82 2 0361 ntilde
-char241 "
-`o 600,699,65,106,16,83 2 0362 ograve
-char242 "
-'o 600,699,65,106,16,83 2 0363 oacute
-char243 "
-^o 600,703,65,106,16,83 2 0364 ocircumflex
-char244 "
-~o 600,657,65,106,16,83 2 0365 otilde
-char245 "
-:o 600,652,65,106,16,83 2 0366 odieresis
-char246 "
-/o 600,538,121,166,81,83 1 0370 oslash
-char248 "
-`u 600,706,65,90,5,83 2 0371 ugrave
-char249 "
-'u 600,706,65,90,5,83 2 0372 uacute
-char250 "
-^u 600,684,65,90,5,83 2 0373 ucircumflex
-char251 "
-:u 600,652,65,90,5,83 2 0374 udieresis
-char252 "
-:y 600,631,257,161,112,83 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/CI b/ps/devps/CI
deleted file mode 100644
index 56a2881a3..000000000
--- a/ps/devps/CI
+++ /dev/null
@@ -1,287 +0,0 @@
-name CI
-internalname Courier-Oblique
-slant 12
-spacewidth 600
-encoding text.enc
-charset
-ha 600,624,0,37,-123,37 2 0000 asciicircum
-ti 600,373,0,42,-77,42 0 0001 asciitilde
-vS 600,774,35,72,-26,72 2 0002 Scaron
-vZ 600,774,20,71,-37,71 2 0003 Zcaron
-vs 600,645,35,43,-37,43 2 0004 scaron
-vz 600,645,20,43,-49,43 2 0005 zcaron
-:Y 600,721,20,134,-79,74 2 0006 Ydieresis
-space 600 0 0040
-! 600,639,5,0,-207 2 0041 exclam
-" 600,603,0,44,-181,44 2 0042 quotedbl
-# 600,665,82,58,-66,58 2 0043 numbersign
-sh "
-$ 600,675,113,51,-61,51 3 0044 dollar
-Do "
-% 600,639,35,61,-68,61 2 0045 percent
-& 600,540,35,0,-62 2 0046 ampersand
-' 600,613,0,0,-158 2 0047 quoteright
-( 600,623,144,52,-265,52 3 0050 parenleft
-) 600,623,144,0,-55 3 0051 parenright
-* 600,624,0,55,-141,55 2 0052 asterisk
-+ 600,550,0,58,-62,58 2 0053 plus
-, 600,155,155,0,-61 1 0054 comma
-- 600,321,0,58,-62,58 0 0055 hyphen
-hy "
-char173 "
-. 600,90,0,0,-211 0 0056 period
-/ 600,686,103,94,-30,74 3 0057 slash
-sl "
-0 600,639,35,40,-89,40 2 0060 zero
-1 600,624,20,0,-47 2 0061 one
-2 600,639,20,46,-18,46 2 0062 two
-3 600,639,35,49,-40,49 2 0063 three
-4 600,624,20,10,-75,10 2 0064 four
-5 600,624,35,52,-43,52 2 0065 five
-6 600,639,35,104,-117,74 2 0066 six
-7 600,624,20,72,-146,72 2 0067 seven
-8 600,639,35,45,-74,45 2 0070 eight
-9 600,639,35,56,-70,56 2 0071 nine
-: 600,392,0,0,-211 0 0072 colon
-; 600,392,116,0,-73 1 0073 semicolon
-< 600,550,0,106,-62,74 2 0074 less
-= 600,394,0,94,-25,74 0 0075 equal
-> 600,550,0,58,-13,58 2 0076 greater
-? 600,598,5,47,-161,47 2 0077 question
-@ 600,644,82,30,-70,30 2 0100 at
-at "
-A 600,583,20,65,57,65 2 0101 A
-B 600,583,20,60,23,60 2 0102 B
-C 600,598,35,105,-41,74 2 0103 C
-D 600,583,20,60,23,60 2 0104 D
-E 600,583,20,84,23,74 2 0105 E
-F 600,583,20,105,23,74 2 0106 F
-G 600,598,35,105,-39,74 2 0107 G
-H 600,583,20,115,13,74 2 0110 H
-I 600,583,20,72,-47,72 2 0111 I
-J 600,583,35,168,-32,74 2 0112 J
-K 600,583,20,136,23,74 2 0113 K
-L 600,583,20,55,3,55 2 0114 L
-M 600,583,20,168,55,74 2 0115 M
-N 600,583,20,147,23,74 2 0116 N
-O 600,598,35,86,-34,74 2 0117 O
-P 600,583,20,56,23,56 2 0120 P
-Q 600,598,136,86,-34,74 3 0121 Q
-R 600,583,20,63,23,63 2 0122 R
-S 600,598,35,72,-26,72 2 0123 S
-T 600,583,20,113,-79,74 2 0124 T
-U 600,583,35,145,-69,74 2 0125 U
-V 600,583,20,176,-54,74 2 0126 V
-W 600,583,20,165,-53,74 2 0127 W
-X 600,583,20,134,26,74 2 0130 X
-Y 600,583,20,134,-79,74 2 0131 Y
-Z 600,583,20,61,-37,61 2 0132 Z
-[ 600,624,144,39,-188,39 3 0133 bracketleft
-lB "
-\ 600,686,103,0,-180 3 0134 backslash
-rs "
-] 600,624,144,0,-63 3 0135 bracketright
-rB "
-a^ 600,624,0,19,-189,19 2 0136 circumflex
-^ "
-_ 600,0,290,29,135,29 1 0137 underscore
-` 600,613,0,0,-332 2 0140 quoteleft
-oq "
-a 600,452,35,15,-24,15 0 0141 a
-b 600,624,35,60,44,60 2 0142 b
-c 600,452,35,64,-54,64 0 0143 c
-d 600,624,35,93,-33,74 2 0144 d
-e 600,452,35,40,-35,40 0 0145 e
-f 600,624,20,132,-39,74 2 0146 f
-g 600,452,207,116,-35,74 1 0147 g
-h 600,624,20,25,13,25 2 0150 h
-i 600,665,20,0,-26 2 0151 i
-j 600,665,207,12,-42,12 3 0152 j
-k 600,624,20,53,3,53 2 0153 k
-l 600,624,20,0,-26 2 0154 l
-m 600,452,20,71,55,71 0 0155 m
-n 600,452,20,15,13,15 0 0156 n
-o 600,452,35,47,-41,47 0 0157 o
-p 600,452,207,62,83,62 1 0160 p
-q 600,452,207,137,-35,74 1 0161 q
-r 600,448,20,89,-18,74 0 0162 r
-s 600,452,35,30,-37,30 0 0163 s
-t 600,582,35,0,-57 2 0164 t
-u 600,437,35,32,-57,32 0 0165 u
-v 600,437,20,124,-44,74 0 0166 v
-w 600,437,20,124,-44,74 0 0167 w
-x 600,437,20,82,15,74 0 0170 x
-y 600,437,207,103,54,74 1 0171 y
-z 600,437,20,32,-49,32 0 0172 z
-lC 600,624,144,0,-178 3 0173 braceleft
-{ "
-ba 600,624,144,0,-188 3 0174 bar
-| "
-rC 600,624,144,0,-105 3 0175 braceright
-} "
-a~ 600,580,0,36,-181,36 2 0176 tilde
-~ "
---- 600,144,165,0,-58 1 0200 quotesinglbase
-Fo 600,437,20,95,-37,74 0 0201 guillemotleft
-char171 "
-Fc 600,437,20,55,3,55 0 0202 guillemotright
-char187 "
-bu 600,346,0,0,-275 0 0203 bullet
---- 600,639,113,113,-4,74 3 0204 florin
-f/ 600,492,0,115,-15,74 0 0205 fraction
-dg 600,624,82,30,-138,30 2 0207 dagger
-dd 600,624,82,30,-85,30 2 0210 daggerdbl
-en 600,321,0,58,-62,58 0 0211 endash
-em 600,321,0,129,9,74 0 0212 emdash
-.i 600,437,20,0,-26 0 0220 dotlessi
-ga 600,639,0,0,-212 2 0222 grave
-a" 600,639,0,42,-189,42 2 0223 hungarumlaut
-a. 600,571,0,0,-323 2 0224 dotaccent
-ab 600,624,0,39,-208,39 2 0225 breve
-ah 600,624,0,39,-209,39 2 0226 caron
-ao 600,634,0,0,-247 2 0227 ring
-ho 600,40,165,0,-194 1 0230 ogonek
-lq 600,619,0,38,-166,38 2 0231 quotedblleft
-rq 600,619,0,80,-124,74 2 0232 quotedblright
-/l 600,624,20,0,-26 2 0234 lslash
---- 600,139,139,0,-22 1 0235 quotedblbase
-/L 600,583,20,55,3,55 2 0237 Lslash
-r! 600,415,207,0,-159 1 0241 exclamdown
-char161 "
-ct 600,665,19,33,-106,33 2 0242 cent
-char162 "
-Po 600,598,20,10,-18,10 2 0243 sterling
-char163 "
-Cs 600,509,0,67,-57,67 2 0244 currency
-char164 "
-Ye 600,583,20,134,-87,74 2 0245 yen
-char165 "
-sc 600,629,87,87,-28,74 3 0247 section
-char167 "
-ad 600,571,0,7,-219,7 2 0250 dieresis
-char168 "
-Of 600,598,0,0,-124 2 0252 ordfeminine
-char170 "
-fo 600,437,20,0,-37 0 0253 guilsinglleft
-a- 600,556,0,25,-195,25 2 0257 macron
-char175 "
-aa 600,639,0,42,-314,42 2 0264 acute
-char180 "
-ps 600,629,87,120,-82,74 3 0266 paragraph
-char182 "
-char183 600,346,0,0,-265 0 0267 periodcentered
-ac 600,40,186,0,-113 1 0270 cedilla
-char184 "
-Om 600,598,0,13,-128,13 2 0272 ordmasculine
-char186 "
-fc 600,437,20,55,-227,55 0 0273 guilsinglright
-r? 600,415,207,0,-35 1 0277 questiondown
-char191 "
-`A 600,789,20,65,57,65 2 0300 Agrave
-char192 "
-'A 600,789,20,65,57,65 2 0301 Aacute
-char193 "
-^A 600,774,20,65,57,65 2 0302 Acircumflex
-char194 "
-~A 600,730,20,65,57,65 2 0303 Atilde
-char195 "
-:A 600,721,20,65,57,65 2 0304 Adieresis
-char196 "
-oA 600,795,20,65,57,65 2 0305 Aring
-char197 "
-,C 600,598,186,105,-41,74 3 0307 Ccedilla
-char199 "
-`E 600,789,20,84,23,74 2 0310 Egrave
-char200 "
-'E 600,789,20,84,23,74 2 0311 Eacute
-char201 "
-^E 600,774,20,84,23,74 2 0312 Ecircumflex
-char202 "
-:E 600,721,20,84,23,74 2 0313 Edieresis
-char203 "
-`I 600,789,20,72,-47,72 2 0314 Igrave
-char204 "
-'I 600,789,20,72,-47,72 2 0315 Iacute
-char205 "
-^I 600,774,20,72,-47,72 2 0316 Icircumflex
-char206 "
-:I 600,721,20,72,-47,72 2 0317 Idieresis
-char207 "
-~N 600,730,20,147,23,74 2 0321 Ntilde
-char209 "
-`O 600,789,35,86,-34,74 2 0322 Ograve
-char210 "
-'O 600,789,35,86,-34,74 2 0323 Oacute
-char211 "
-^O 600,774,35,86,-34,74 2 0324 Ocircumflex
-char212 "
-~O 600,730,35,86,-34,74 2 0325 Otilde
-char213 "
-:O 600,721,35,86,-34,74 2 0326 Odieresis
-char214 "
-/O 600,623,61,154,34,74 2 0330 Oslash
-char216 "
-`U 600,789,35,145,-69,74 2 0331 Ugrave
-char217 "
-'U 600,789,35,145,-69,74 2 0332 Uacute
-char218 "
-^U 600,774,35,145,-69,74 2 0333 Ucircumflex
-char219 "
-:U 600,721,35,145,-69,74 2 0334 Udieresis
-char220 "
-ss 600,624,35,8,23,8 2 0337 germandbls
-char223 "
-`a 600,660,35,15,-24,15 2 0340 agrave
-char224 "
-'a 600,660,35,15,-24,15 2 0341 aacute
-char225 "
-^a 600,653,35,25,-24,25 2 0342 acircumflex
-char226 "
-~a 600,618,35,44,-24,44 2 0343 atilde
-char227 "
-:a 600,592,35,15,-24,15 2 0344 adieresis
-char228 "
-oa 600,686,35,15,-24,15 2 0345 aring
-char229 "
-,c 600,452,186,64,-54,64 1 0347 ccedilla
-char231 "
-`e 600,664,35,40,-35,40 2 0350 egrave
-char232 "
-'e 600,664,35,40,-35,40 2 0351 eacute
-char233 "
-^e 600,653,35,40,-35,40 2 0352 ecircumflex
-char234 "
-:e 600,592,35,40,-35,40 2 0353 edieresis
-char235 "
-`i 600,656,20,0,-26 2 0354 igrave
-char236 "
-'i 600,660,20,0,-26 2 0355 iacute
-char237 "
-^i 600,634,20,0,-26 2 0356 icircumflex
-char238 "
-:i 600,592,20,0,-26 2 0357 idieresis
-char239 "
-~n 600,618,20,19,13,19 2 0361 ntilde
-char241 "
-`o 600,649,35,47,-41,47 2 0362 ograve
-char242 "
-'o 600,649,35,47,-41,47 2 0363 oacute
-char243 "
-^o 600,653,35,47,-41,47 2 0364 ocircumflex
-char244 "
-~o 600,597,35,47,-41,47 2 0365 otilde
-char245 "
-:o 600,592,35,47,-41,47 2 0366 odieresis
-char246 "
-/o 600,478,61,106,21,74 0 0370 oslash
-char248 "
-`u 600,656,35,32,-57,32 2 0371 ugrave
-char249 "
-'u 600,656,35,32,-57,32 2 0372 uacute
-char250 "
-^u 600,634,35,32,-57,32 2 0373 ucircumflex
-char251 "
-:u 600,592,35,32,-57,32 2 0374 udieresis
-char252 "
-:y 600,571,207,103,54,74 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/CR b/ps/devps/CR
deleted file mode 100644
index 96b39bc49..000000000
--- a/ps/devps/CR
+++ /dev/null
@@ -1,286 +0,0 @@
-name CR
-internalname Courier
-spacewidth 600
-encoding text.enc
-charset
-ha 600,624 2 0000 asciicircum
-ti 600,373 0 0001 asciitilde
-vS 600,774,35 2 0002 Scaron
-vZ 600,774,20 2 0003 Zcaron
-vs 600,645,35 2 0004 scaron
-vz 600,645,20 2 0005 zcaron
-:Y 600,721,20 2 0006 Ydieresis
-space 600 0 0040
-! 600,639,5 2 0041 exclam
-" 600,603 2 0042 quotedbl
-# 600,665,82 2 0043 numbersign
-sh "
-$ 600,675,113 3 0044 dollar
-Do "
-% 600,639,35 2 0045 percent
-& 600,540,35 2 0046 ampersand
-' 600,613 2 0047 quoteright
-( 600,623,144 3 0050 parenleft
-) 600,623,144 3 0051 parenright
-* 600,624 2 0052 asterisk
-+ 600,550 2 0053 plus
-, 600,155,155 1 0054 comma
-- 600,321 0 0055 hyphen
-hy "
-char173 "
-. 600,90 0 0056 period
-/ 600,686,103 3 0057 slash
-sl "
-0 600,639,35 2 0060 zero
-1 600,624,20 2 0061 one
-2 600,639,20 2 0062 two
-3 600,639,35 2 0063 three
-4 600,624,20 2 0064 four
-5 600,624,35 2 0065 five
-6 600,639,35 2 0066 six
-7 600,624,20 2 0067 seven
-8 600,639,35 2 0070 eight
-9 600,639,35 2 0071 nine
-: 600,392 0 0072 colon
-; 600,392,116 1 0073 semicolon
-< 600,550 2 0074 less
-= 600,394 0 0075 equal
-> 600,550 2 0076 greater
-? 600,598,5 2 0077 question
-@ 600,644,82 2 0100 at
-at "
-A 600,583,20 2 0101 A
-B 600,583,20 2 0102 B
-C 600,598,35 2 0103 C
-D 600,583,20 2 0104 D
-E 600,583,20 2 0105 E
-F 600,583,20 2 0106 F
-G 600,598,35 2 0107 G
-H 600,583,20 2 0110 H
-I 600,583,20 2 0111 I
-J 600,583,35 2 0112 J
-K 600,583,20 2 0113 K
-L 600,583,20 2 0114 L
-M 600,583,20 2 0115 M
-N 600,583,20 2 0116 N
-O 600,598,35 2 0117 O
-P 600,583,20 2 0120 P
-Q 600,598,136 3 0121 Q
-R 600,583,20 2 0122 R
-S 600,598,35 2 0123 S
-T 600,583,20 2 0124 T
-U 600,583,35 2 0125 U
-V 600,583,20 2 0126 V
-W 600,583,20 2 0127 W
-X 600,583,20 2 0130 X
-Y 600,583,20 2 0131 Y
-Z 600,583,20 2 0132 Z
-[ 600,624,144 3 0133 bracketleft
-lB "
-\ 600,686,103 3 0134 backslash
-rs "
-] 600,624,144 3 0135 bracketright
-rB "
-a^ 600,624 2 0136 circumflex
-^ "
-_ 600,0,290 1 0137 underscore
-` 600,613 2 0140 quoteleft
-oq "
-a 600,452,35 0 0141 a
-b 600,624,35 2 0142 b
-c 600,452,35 0 0143 c
-d 600,624,35 2 0144 d
-e 600,452,35 0 0145 e
-f 600,624,20 2 0146 f
-g 600,452,207 1 0147 g
-h 600,624,20 2 0150 h
-i 600,665,20 2 0151 i
-j 600,665,207 3 0152 j
-k 600,624,20 2 0153 k
-l 600,624,20 2 0154 l
-m 600,452,20 0 0155 m
-n 600,452,20 0 0156 n
-o 600,452,35 0 0157 o
-p 600,452,207 1 0160 p
-q 600,452,207 1 0161 q
-r 600,448,20 0 0162 r
-s 600,452,35 0 0163 s
-t 600,582,35 2 0164 t
-u 600,437,35 0 0165 u
-v 600,437,20 0 0166 v
-w 600,437,20 0 0167 w
-x 600,437,20 0 0170 x
-y 600,437,207 1 0171 y
-z 600,437,20 0 0172 z
-lC 600,624,144 3 0173 braceleft
-{ "
-ba 600,624,144 3 0174 bar
-| "
-rC 600,624,144 3 0175 braceright
-} "
-a~ 600,580 2 0176 tilde
-~ "
---- 600,144,165 1 0200 quotesinglbase
-Fo 600,437,20 0 0201 guillemotleft
-char171 "
-Fc 600,437,20 0 0202 guillemotright
-char187 "
-bu 600,346 0 0203 bullet
---- 600,639,113 3 0204 florin
-f/ 600,492 0 0205 fraction
-dg 600,624,82 2 0207 dagger
-dd 600,624,82 2 0210 daggerdbl
-en 600,321 0 0211 endash
-em 600,321 0 0212 emdash
-.i 600,437,20 0 0220 dotlessi
-ga 600,639 2 0222 grave
-a" 600,639 2 0223 hungarumlaut
-a. 600,571 2 0224 dotaccent
-ab 600,624 2 0225 breve
-ah 600,624 2 0226 caron
-ao 600,634 2 0227 ring
-ho 600,40,165 1 0230 ogonek
-lq 600,619 2 0231 quotedblleft
-rq 600,619 2 0232 quotedblright
-/l 600,624,20 2 0234 lslash
---- 600,139,139 1 0235 quotedblbase
-/L 600,583,20 2 0237 Lslash
-r! 600,415,207 1 0241 exclamdown
-char161 "
-ct 600,665,19 2 0242 cent
-char162 "
-Po 600,598,20 2 0243 sterling
-char163 "
-Cs 600,509 2 0244 currency
-char164 "
-Ye 600,583,20 2 0245 yen
-char165 "
-sc 600,629,87 3 0247 section
-char167 "
-ad 600,571 2 0250 dieresis
-char168 "
-Of 600,598 2 0252 ordfeminine
-char170 "
-fo 600,437,20 0 0253 guilsinglleft
-a- 600,556 2 0257 macron
-char175 "
-aa 600,639 2 0264 acute
-char180 "
-ps 600,629,87 3 0266 paragraph
-char182 "
-char183 600,346 0 0267 periodcentered
-ac 600,40,186 1 0270 cedilla
-char184 "
-Om 600,598 2 0272 ordmasculine
-char186 "
-fc 600,437,20 0 0273 guilsinglright
-r? 600,415,207 1 0277 questiondown
-char191 "
-`A 600,789,20 2 0300 Agrave
-char192 "
-'A 600,789,20 2 0301 Aacute
-char193 "
-^A 600,774,20 2 0302 Acircumflex
-char194 "
-~A 600,730,20 2 0303 Atilde
-char195 "
-:A 600,721,20 2 0304 Adieresis
-char196 "
-oA 600,795,20 2 0305 Aring
-char197 "
-,C 600,598,186 3 0307 Ccedilla
-char199 "
-`E 600,789,20 2 0310 Egrave
-char200 "
-'E 600,789,20 2 0311 Eacute
-char201 "
-^E 600,774,20 2 0312 Ecircumflex
-char202 "
-:E 600,721,20 2 0313 Edieresis
-char203 "
-`I 600,789,20 2 0314 Igrave
-char204 "
-'I 600,789,20 2 0315 Iacute
-char205 "
-^I 600,774,20 2 0316 Icircumflex
-char206 "
-:I 600,721,20 2 0317 Idieresis
-char207 "
-~N 600,730,20 2 0321 Ntilde
-char209 "
-`O 600,789,35 2 0322 Ograve
-char210 "
-'O 600,789,35 2 0323 Oacute
-char211 "
-^O 600,774,35 2 0324 Ocircumflex
-char212 "
-~O 600,730,35 2 0325 Otilde
-char213 "
-:O 600,721,35 2 0326 Odieresis
-char214 "
-/O 600,623,61 2 0330 Oslash
-char216 "
-`U 600,789,35 2 0331 Ugrave
-char217 "
-'U 600,789,35 2 0332 Uacute
-char218 "
-^U 600,774,35 2 0333 Ucircumflex
-char219 "
-:U 600,721,35 2 0334 Udieresis
-char220 "
-ss 600,624,35 2 0337 germandbls
-char223 "
-`a 600,660,35 2 0340 agrave
-char224 "
-'a 600,660,35 2 0341 aacute
-char225 "
-^a 600,653,35 2 0342 acircumflex
-char226 "
-~a 600,618,35 2 0343 atilde
-char227 "
-:a 600,592,35 2 0344 adieresis
-char228 "
-oa 600,686,35 2 0345 aring
-char229 "
-,c 600,452,186 1 0347 ccedilla
-char231 "
-`e 600,664,35 2 0350 egrave
-char232 "
-'e 600,664,35 2 0351 eacute
-char233 "
-^e 600,653,35 2 0352 ecircumflex
-char234 "
-:e 600,592,35 2 0353 edieresis
-char235 "
-`i 600,656,20 2 0354 igrave
-char236 "
-'i 600,660,20 2 0355 iacute
-char237 "
-^i 600,634,20 2 0356 icircumflex
-char238 "
-:i 600,592,20 2 0357 idieresis
-char239 "
-~n 600,618,20 2 0361 ntilde
-char241 "
-`o 600,649,35 2 0362 ograve
-char242 "
-'o 600,649,35 2 0363 oacute
-char243 "
-^o 600,653,35 2 0364 ocircumflex
-char244 "
-~o 600,597,35 2 0365 otilde
-char245 "
-:o 600,592,35 2 0366 odieresis
-char246 "
-/o 600,478,61 0 0370 oslash
-char248 "
-`u 600,656,35 2 0371 ugrave
-char249 "
-'u 600,656,35 2 0372 uacute
-char250 "
-^u 600,634,35 2 0373 ucircumflex
-char251 "
-:u 600,592,35 2 0374 udieresis
-char252 "
-:y 600,571,207 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/DESC-letter b/ps/devps/DESC-letter
deleted file mode 100644
index 2e29983d1..000000000
--- a/ps/devps/DESC-letter
+++ /dev/null
@@ -1,11 +0,0 @@
-paperlength 792000
-res 72000
-hor 1
-vert 1
-sizescale 1000
-unitwidth 1000
-sizes 3000-10000000 0
-styles R I B BI
-family T
-fonts 4 SS S ZD ZDR
-tcommand
diff --git a/ps/devps/FontMakefile b/ps/devps/FontMakefile
deleted file mode 100644
index 0108b464c..000000000
--- a/ps/devps/FontMakefile
+++ /dev/null
@@ -1,183 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-#This is the Makefile used for constructing the groff font files
-#from the afm files.
-#To use this, you need perl 3.0, and afm files.
-#The symbol.afm used has some tweaks; symbol.diff is a diff between the
-#original symbol.afm and the tweaked symbol.afm.
-
-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
-
-AFMTODIT=./afmtodit
-IFLAG=-i 50
-TEXTENC=text.enc
-EFLAG=-e $(TEXTENC)
-TEXTMAP=textmap
-SYMBOLMAP=symbolmap
-
-FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS)
-
-all: $(FONTS)
-
-VPATH=/usr/local/afm
-
-TR: timesr.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-TB: timesb.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-TI: timesi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 $< $(TEXTMAP) $@
-
-TBI: timesbi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-HR: helve.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-HB: helveb.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-HI: helveo.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-HBI: helvebo.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-CR: couri.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-CB: courib.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-CI: courio.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-CBI: couribo.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-PR: palatr.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-PB: palatb.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-PI: palati.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-PBI: palatbi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-NR: newcsr.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-NB: newcsb.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-NI: newcsi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-NBI: newcsbi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-BMR: bookml.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-BMB: bookmd.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-BMI: bookmli.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-BMBI: bookmdi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-AR: avangbk.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-AB: avangd.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-AI: avangbko.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-ABI: avangdo.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-HNR: helven.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-HNB: helvenb.afm
- $(AFMTODIT) $(EFLAG) $< $(TEXTMAP) $@
-
-HNI: helveno.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-HNBI: helvenbo.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-ZCMI: zapfcmi.afm
- $(AFMTODIT) $(EFLAG) $(IFLAG) $< $(TEXTMAP) $@
-
-SS: symbolsl.afm
- $(AFMTODIT) -s $(IFLAG) $< lgreekmap $@
-
-S: symbol.afm
- $(AFMTODIT) -s $< $(SYMBOLMAP) $@
-
-ZD: zapfd.afm
- $(AFMTODIT) -s $< dingbatsmap $@
-
-# zapdfr.afm is exatly the same as zapfd.afm but with a FontName of
-# ZapfDingbats-Reverse
-
-ZDR: zapfdr.afm
- $(AFMTODIT) -s $< dingbatsrmap $@
-
-ZD: dingbatsmap
-
-ZDR: dingbatsrmap
-
-$(FONTS): $(AFMTODIT)
-
-$(TEXTFONTS): $(TEXTMAP) $(TEXTENC)
-
-$(SPECIALFONTS): $(SYMBOLMAP)
-
-$(GREEKFONTS): lgreekmap
-
-$(SYMBOLMAP): $(TEXTMAP) symbolchars
- cat $(TEXTMAP) symbolchars >$@
-
-clean:
- -rm -f $(FONTS)
- -rm -f $(SYMBOLMAP)
diff --git a/ps/devps/HB b/ps/devps/HB
deleted file mode 100644
index 446f23dee..000000000
--- a/ps/devps/HB
+++ /dev/null
@@ -1,410 +0,0 @@
-name HB
-internalname Helvetica-Bold
-spacewidth 278
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -37
-A w -18
-A v -37
-A ' -55
-A Y -92
-A W -55
-A V -74
-A T -74
-F . -111
-F , -111
-F A -55
-L y -37
-L ' -55
-L Y -92
-L W -55
-L V -74
-L T -74
-P . -129
-P , -129
-P A -74
-R Y -37
-R W -18
-R V -18
-T y -74
-T w -74
-T u -74
-T ; -111
-T s -74
-T r -55
-T . -111
-T o -74
-T i -18
-T - -55
-T hy -55
-T char173 -55
-T e -74
-T , -111
-T : -111
-T c -74
-T a -74
-T O -18
-T A -74
-V y -37
-V u -37
-V ; -55
-V r -55
-V . -92
-V o -74
-V i -18
-V - -55
-V hy -55
-V char173 -55
-V e -55
-V , -92
-V : -55
-V a -55
-V A -74
-W y -18
-W u -18
-W ; -18
-W r -18
-W . -55
-W o -18
-W i -9
-W - -20
-W hy -20
-W char173 -20
-W e -18
-W , -55
-W : -18
-W a -37
-W A -55
-Y v -55
-Y u -55
-Y ; -74
-Y q -74
-Y . -111
-Y p -55
-Y o -74
-Y i -37
-Y - -55
-Y hy -55
-Y char173 -55
-Y e -55
-Y , -111
-Y : -74
-Y a -55
-Y A -92
-f ' 18
-1 1 -55
-` ` -37
-` oq -37
-oq ` -37
-oq oq -37
-' s -37
-' ' -37
-r ' 37
-r . -55
-r , -55
-v . -74
-v , -74
-w . -37
-w , -37
-y . -74
-y , -74
-charset
-ha 584,696 2 0000 asciicircum
-ti 584,322 0 0001 asciitilde
-vS 667,936,23 2 0002 Scaron
-vZ 611,936 2 0003 Zcaron
-vs 556,745,23 2 0004 scaron
-vz 500,745 2 0005 zcaron
-:Y 667,922 2 0006 Ydieresis
-tm 1000,745 2 0007 trademark
-space 278 0 0040
-! 333,729 2 0041 exclam
-" 474,729 2 0042 quotedbl
-# 556,696,30 2 0043 numbersign
-sh "
-$ 556,765,125 3 0044 dollar
-Do "
-% 889,708,18 2 0045 percent
-& 722,729,20 2 0046 ampersand
-' 278,729 2 0047 quoteright
-( 333,729,202 3 0050 parenleft
-) 333,729,202 3 0051 parenright
-* 389,730 2 0052 asterisk
-+ 584,474,10 0 0053 plus
-, 278,146,174 1 0054 comma
-- 333,344 0 0055 hyphen
-hy "
-char173 "
-. 278,146 0 0056 period
-/ 278,715,14 2 0057 slash
-sl "
-0 556,725,23 2 0060 zero
-1 556,709 2 0061 one
-2 556,726 2 0062 two
-3 556,726,23 2 0063 three
-4 556,709 2 0064 four
-5 556,709,24 2 0065 five
-6 556,727,23 2 0066 six
-7 556,709 2 0067 seven
-8 556,726,23 2 0070 eight
-9 556,728,23 2 0071 nine
-: 333,521 0 0072 colon
-; 333,521,174 1 0073 semicolon
-< 584,474,10 0 0074 less
-= 584,412 0 0075 equal
-> 584,474,10 0 0076 greater
-? 611,744 2 0077 question
-@ 975,746,136 3 0100 at
-at "
-A 722,729 2 0101 A
-B 722,729 2 0102 B
-C 722,741,23 2 0103 C
-D 722,729 2 0104 D
-E 667,729 2 0105 E
-F 611,729 2 0106 F
-G 778,741,24 2 0107 G
-H 722,729 2 0110 H
-I 278,729 2 0111 I
-J 556,729,23 2 0112 J
-K 722,729 2 0113 K
-L 611,729 2 0114 L
-M 833,729 2 0115 M
-N 722,729 2 0116 N
-O 778,741,23 2 0117 O
-P 667,729 2 0120 P
-Q 778,741,54 2 0121 Q
-R 722,729 2 0122 R
-S 667,741,23 2 0123 S
-T 611,729 2 0124 T
-U 722,729,23 2 0125 U
-V 667,729 2 0126 V
-W 944,729 2 0127 W
-X 667,729 2 0130 X
-Y 667,729 2 0131 Y
-Z 611,729 2 0132 Z
-[ 333,729,202 3 0133 bracketleft
-lB "
-\ 278,708,21 2 0134 backslash
-rs "
-] 333,729,202 3 0135 bracketright
-rB "
-a^ 333,745 2 0136 circumflex
-^ "
-_ 556,0,200 1 0137 underscore
-` 278,729 2 0140 quoteleft
-oq "
-a 556,551,24 0 0141 a
-b 611,729,23 2 0142 b
-c 556,551,23 0 0143 c
-d 611,729,23 2 0144 d
-e 556,551,23 0 0145 e
-f 333,729 2 0146 f
-g 611,551,220 1 0147 g
-h 611,729 2 0150 h
-i 278,729 2 0151 i
-j 278,729,219 3 0152 j
-k 556,729 2 0153 k
-l 278,729 2 0154 l
-m 889,553 0 0155 m
-n 611,551 0 0156 n
-o 611,551,23 0 0157 o
-p 611,551,219 1 0160 p
-q 611,551,219 1 0161 q
-r 389,553 0 0162 r
-s 556,551,23 0 0163 s
-t 333,678,23 2 0164 t
-u 611,542,23 0 0165 u
-v 556,542 0 0166 v
-w 778,542 0 0167 w
-x 556,542 0 0170 x
-y 556,542,219 1 0171 y
-z 500,542 0 0172 z
-lC 389,729,202 3 0173 braceleft
-{ "
-ba 280,729,202 3 0174 bar
-| "
-rC 389,729,202 3 0175 braceright
-} "
-a~ 333,729 2 0176 tilde
-~ "
---- 278,125,135 1 0200 quotesinglbase
-Fo 556,484 0 0201 guillemotleft
-char171 "
-Fc 556,482 0 0202 guillemotright
-char187 "
-bu 350,425 0 0203 bullet
---- 556,745,221 3 0204 florin
-f/ 167,715,20 2 0205 fraction
-%0 1000,745,20 2 0206 perthousand
-dg 556,708,195 3 0207 dagger
-dd 556,708,195 3 0210 daggerdbl
-en 556,313 0 0211 endash
-em 1000,313 0 0212 emdash
-fi 611,729 2 0214 fi
-fl 611,729 2 0215 fl
-.i 278,542 0 0220 dotlessi
-ga 333,745 2 0222 grave
-a" 333,745 2 0223 hungarumlaut
-a. 333,729 2 0224 dotaccent
-ab 333,736 2 0225 breve
-ah 333,745 2 0226 caron
-ao 333,745 2 0227 ring
-ho 333,38,195 1 0230 ogonek
-lq 500,729 2 0231 quotedblleft
-rq 500,729 2 0232 quotedblright
-oe 944,554,21 0 0233 oe
-/l 278,729 2 0234 lslash
---- 500,141,164 1 0235 quotedblbase
-OE 1000,741,20 2 0236 OE
-/L 611,729 2 0237 Lslash
-r! 333,542,187 1 0241 exclamdown
-char161 "
-ct 556,637,122 3 0242 cent
-char162 "
-Po 556,717,20 2 0243 sterling
-char163 "
-Cs 556,604 2 0244 currency
-char164 "
-Ye 556,705 2 0245 yen
-char165 "
-sc 556,728,201 3 0247 section
-char167 "
-ad 333,731 2 0250 dieresis
-char168 "
-co 737,745,20 2 0251 copyright
-char169 "
-Of 370,746 2 0252 ordfeminine
-char170 "
-fo 333,476 0 0253 guilsinglleft
-no 584,412 0 0254 logicalnot
-char172 "
-\- 584,290 0 0255 minus
-rg 737,745,20 2 0256 registered
-char174 "
-a- 333,717 2 0257 macron
-char175 "
-aa 333,745 2 0264 acute
-char180 "
-ps 556,729,195 3 0266 paragraph
-char182 "
-char183 278,442 0 0267 periodcentered
-ac 333,0,220 1 0270 cedilla
-char184 "
-Om 365,745 2 0272 ordmasculine
-char186 "
-fc 333,476 0 0273 guilsinglright
-r? 611,542,192 1 0277 questiondown
-char191 "
-`A 722,936 2 0300 Agrave
-char192 "
-'A 722,936 2 0301 Aacute
-char193 "
-^A 722,936 2 0302 Acircumflex
-char194 "
-~A 722,920 2 0303 Atilde
-char195 "
-:A 722,922 2 0304 Adieresis
-char196 "
-oA 722,936 2 0305 Aring
-char197 "
-AE 1000,729 2 0306 AE
-char198 "
-,C 722,741,220 3 0307 Ccedilla
-char199 "
-`E 667,936 2 0310 Egrave
-char200 "
-'E 667,936 2 0311 Eacute
-char201 "
-^E 667,936 2 0312 Ecircumflex
-char202 "
-:E 667,922 2 0313 Edieresis
-char203 "
-`I 278,936 2 0314 Igrave
-char204 "
-'I 278,936 2 0315 Iacute
-char205 "
-^I 278,936 2 0316 Icircumflex
-char206 "
-:I 278,922 2 0317 Idieresis
-char207 "
-~N 722,920 2 0321 Ntilde
-char209 "
-`O 778,936,23 2 0322 Ograve
-char210 "
-'O 778,936,23 2 0323 Oacute
-char211 "
-^O 778,936,23 2 0324 Ocircumflex
-char212 "
-~O 778,920,23 2 0325 Otilde
-char213 "
-:O 778,922,23 2 0326 Odieresis
-char214 "
-/O 778,754,34 2 0330 Oslash
-char216 "
-`U 722,936,23 2 0331 Ugrave
-char217 "
-'U 722,936,23 2 0332 Uacute
-char218 "
-^U 722,936,23 2 0333 Ucircumflex
-char219 "
-:U 722,922,23 2 0334 Udieresis
-char220 "
-ss 611,730,16 2 0337 germandbls
-char223 "
-`a 556,745,24 2 0340 agrave
-char224 "
-'a 556,745,24 2 0341 aacute
-char225 "
-^a 556,745,24 2 0342 acircumflex
-char226 "
-~a 556,729,24 2 0343 atilde
-char227 "
-:a 556,731,24 2 0344 adieresis
-char228 "
-oa 556,745,24 2 0345 aring
-char229 "
-ae 889,555,20 0 0346 ae
-char230 "
-,c 556,551,220 1 0347 ccedilla
-char231 "
-`e 556,745,23 2 0350 egrave
-char232 "
-'e 556,745,23 2 0351 eacute
-char233 "
-^e 556,745,23 2 0352 ecircumflex
-char234 "
-:e 556,731,23 2 0353 edieresis
-char235 "
-`i 278,745 2 0354 igrave
-char236 "
-'i 278,745 2 0355 iacute
-char237 "
-^i 278,745 2 0356 icircumflex
-char238 "
-:i 278,731 2 0357 idieresis
-char239 "
-~n 611,729 2 0361 ntilde
-char241 "
-`o 611,745,23 2 0362 ograve
-char242 "
-'o 611,745,23 2 0363 oacute
-char243 "
-^o 611,745,23 2 0364 ocircumflex
-char244 "
-~o 611,729,23 2 0365 otilde
-char245 "
-:o 611,731,23 2 0366 odieresis
-char246 "
-/o 611,561,34 0 0370 oslash
-char248 "
-`u 611,745,23 2 0371 ugrave
-char249 "
-'u 611,745,23 2 0372 uacute
-char250 "
-^u 611,745,23 2 0373 ucircumflex
-char251 "
-:u 611,731,23 2 0374 udieresis
-char252 "
-:y 556,731,219 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HBI b/ps/devps/HBI
deleted file mode 100644
index 6459493d8..000000000
--- a/ps/devps/HBI
+++ /dev/null
@@ -1,409 +0,0 @@
-name HBI
-internalname Helvetica-BoldOblique
-slant 12
-spacewidth 278
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A ' -55
-A Y -74
-A W -55
-A V -74
-A T -74
-F . -111
-F , -111
-F A -55
-L ' -74
-L Y -74
-L W -55
-L V -55
-L T -74
-P . -129
-P , -129
-P A -74
-R Y -18
-R W -18
-R T -18
-T y -37
-T w -37
-T u -18
-T ; -74
-T s -37
-T r -18
-T . -74
-T o -37
-T i -18
-T - -55
-T hy -55
-T char173 -55
-T e -37
-T , -74
-T : -74
-T c -37
-T a -37
-T O -18
-T A -74
-V y -18
-V u -18
-V ; -37
-V r -18
-V . -92
-V o -37
-V i -37
-V - -37
-V hy -37
-V char173 -37
-V e -37
-V , -92
-V : -37
-V a -37
-V A -74
-W y -18
-W u -18
-W ; -37
-W r -18
-W . -74
-W o -18
-W i -9
-W - -37
-W hy -37
-W char173 -37
-W e -18
-W , -74
-W : -37
-W a -18
-W A -55
-Y v -37
-Y u -37
-Y ; -55
-Y q -37
-Y . -92
-Y p -37
-Y i -37
-Y o -37
-Y - -74
-Y hy -74
-Y char173 -74
-Y e -37
-Y , -92
-Y : -55
-Y a -37
-Y A -74
-f ' 18
-f f -18
-1 1 -74
-` ` -37
-` oq -37
-oq ` -37
-oq oq -37
-' t 18
-' s -18
-' ' -37
-r ' 37
-r . -55
-r , -55
-v . -55
-v , -55
-w . -37
-w , -37
-y . -37
-y , -37
-charset
-ha 584,696,0,46,-69,46 2 0000 asciicircum
-ti 584,322,0,47,-47,47 0 0001 asciitilde
-vS 667,936,23,108,-26,92 2 0002 Scaron
-vZ 611,936,0,172,20,92 2 0003 Zcaron
-vs 556,745,23,91,-10,91 2 0004 scaron
-vz 500,745,0,125,29,92 2 0005 zcaron
-:Y 667,922,0,188,-132,92 2 0006 Ydieresis
-tm 1000,745,0,137,-163,92 2 0007 trademark
-space 278 0 0040
-! 333,729,0,134,-62,92 2 0041 exclam
-" 474,729,0,155,-127,92 2 0042 quotedbl
-# 556,696,30,154,17,92 2 0043 numbersign
-sh "
-$ 556,765,125,122,-9,92 3 0044 dollar
-Do "
-% 889,708,18,64,-79,64 2 0045 percent
-& 722,729,20,48,-39,48 2 0046 ampersand
-' 278,729,0,128,-116,92 2 0047 quoteright
-( 333,729,202,175,-34,92 3 0050 parenleft
-) 333,729,202,73,71,73 3 0051 parenright
-* 389,730,0,139,-95,92 2 0052 asterisk
-+ 584,474,10,62,-37,62 0 0053 plus
-, 278,146,174,17,23,17 1 0054 comma
-- 333,344,0,88,-20,88 0 0055 hyphen
-hy "
-char173 "
-. 278,146,0,17,-14,17 0 0056 period
-/ 278,715,14,199,51,92 2 0057 slash
-sl "
-0 556,725,23,108,-31,92 2 0060 zero
-1 556,709,0,23,-122,23 2 0061 one
-2 556,726,0,122,20,92 2 0062 two
-3 556,726,23,107,-17,92 2 0063 three
-4 556,709,0,93,-7,92 2 0064 four
-5 556,709,24,135,-9,92 2 0065 five
-6 556,727,23,119,-35,92 2 0066 six
-7 556,709,0,173,-81,92 2 0067 seven
-8 556,726,23,114,-10,92 2 0070 eight
-9 556,728,23,105,-18,92 2 0071 nine
-: 333,521,0,91,-63,91 0 0072 colon
-; 333,521,174,91,-26,91 1 0073 semicolon
-< 584,474,10,96,-27,92 0 0074 less
-= 584,412,0,88,-11,88 0 0075 equal
-> 584,474,10,57,12,57 0 0076 greater
-? 611,744,0,111,-118,92 2 0077 question
-@ 975,746,136,107,-23,92 3 0100 at
-at "
-A 722,729,0,31,24,31 2 0101 A
-B 722,729,0,90,-32,90 2 0102 B
-C 722,741,23,121,-57,92 2 0103 C
-D 722,729,0,104,-27,92 2 0104 D
-E 667,729,0,145,-29,92 2 0105 E
-F 611,729,0,180,-24,92 2 0106 F
-G 778,741,24,91,-57,91 2 0107 G
-H 722,729,0,140,-18,92 2 0110 H
-I 278,729,0,140,-13,92 2 0111 I
-J 556,729,23,135,-9,92 2 0112 J
-K 722,729,0,171,-24,92 2 0113 K
-L 611,729,0,45,-30,45 2 0114 L
-M 833,729,0,148,-16,92 2 0115 M
-N 722,729,0,144,-18,92 2 0116 N
-O 778,741,23,100,-56,92 2 0117 O
-P 667,729,0,130,-26,92 2 0120 P
-Q 778,741,54,103,-59,92 2 0121 Q
-R 722,729,0,113,-30,92 2 0122 R
-S 667,741,23,108,-26,92 2 0123 S
-T 611,729,0,192,-92,92 2 0124 T
-U 722,729,23,137,-69,92 2 0125 U
-V 667,729,0,185,-129,92 2 0126 V
-W 944,729,0,193,-118,92 2 0127 W
-X 667,729,0,185,28,92 2 0130 X
-Y 667,729,0,188,-132,92 2 0131 Y
-Z 611,729,0,172,20,92 2 0132 Z
-[ 333,729,202,180,27,92 3 0133 bracketleft
-lB "
-\ 278,708,21,57,-88,57 2 0134 backslash
-rs "
-] 333,729,202,132,75,92 3 0135 bracketright
-rB "
-a^ 333,745,0,170,-85,92 2 0136 circumflex
-^ "
-_ 556,0,200,44,115,44 1 0137 underscore
-` 278,729,0,129,-117,92 2 0140 quoteleft
-oq "
-a 556,551,24,72,0,72 0 0141 a
-b 611,729,23,79,-9,79 2 0142 b
-c 556,551,23,91,-27,91 0 0143 c
-d 611,729,23,139,-29,92 2 0144 d
-e 556,551,23,85,-14,85 0 0145 e
-f 333,729,0,181,-40,92 2 0146 f
-g 611,551,220,95,24,92 1 0147 g
-h 611,729,0,68,-17,68 2 0150 h
-i 278,729,0,134,-17,92 2 0151 i
-j 278,729,219,137,93,92 3 0152 j
-k 556,729,0,145,-9,92 2 0153 k
-l 278,729,0,134,-17,92 2 0154 l
-m 889,553,0,72,-10,72 0 0155 m
-n 611,551,0,68,-13,68 0 0156 n
-o 611,551,23,73,-32,73 0 0157 o
-p 611,551,219,76,39,76 1 0160 p
-q 611,551,219,98,-22,92 1 0161 q
-r 389,553,0,148,-13,92 0 0162 r
-s 556,551,23,83,-10,83 0 0163 s
-t 333,678,23,131,-51,92 2 0164 t
-u 611,542,23,95,-38,92 0 0165 u
-v 556,542,0,145,-79,92 0 0166 v
-w 778,542,0,153,-70,92 0 0167 w
-x 556,542,0,142,34,92 0 0170 x
-y 556,542,219,147,13,92 1 0171 y
-z 500,542,0,125,29,92 0 0172 z
-lC 389,729,202,133,-34,92 3 0173 braceleft
-{ "
-ba 280,729,202,105,-7,92 3 0174 bar
-| "
-rC 389,729,202,80,21,80 3 0175 braceright
-} "
-a~ 333,729,0,217,-67,92 2 0176 tilde
-~ "
---- 278,125,135,0,13 1 0200 quotesinglbase
-Fo 556,484,0,65,-85,65 0 0201 guillemotleft
-char171 "
-Fc 556,482,0,27,-53,27 0 0202 guillemotright
-char187 "
-bu 350,425,0,67,-61,67 0 0203 bullet
---- 556,745,221,184,71,92 3 0204 florin
-f/ 167,715,20,372,227,92 2 0205 fraction
-%0 1000,745,20,71,-22,71 2 0206 perthousand
-dg 556,708,195,120,-59,92 3 0207 dagger
-dd 556,708,195,117,15,92 3 0210 daggerdbl
-en 556,313,0,118,15,92 0 0211 endash
-em 1000,313,0,120,13,92 0 0212 emdash
-fi 611,729,0,142,-35,92 2 0214 fi
-fl 611,729,0,140,-38,92 2 0215 fl
-.i 278,542,0,94,-17,92 0 0220 dotlessi
-ga 333,745,0,56,-125,56 2 0222 grave
-a" 333,745,0,215,-32,92 2 0223 hungarumlaut
-a. 333,729,0,94,-191,92 2 0224 dotaccent
-ab 333,736,0,172,-138,92 2 0225 breve
-ah 333,745,0,202,-117,92 2 0226 caron
-ao 333,745,0,115,-164,92 2 0227 ring
-ho 333,38,195,0,27 1 0230 ogonek
-lq 500,729,0,138,-121,92 2 0231 quotedblleft
-rq 500,729,0,145,-123,92 2 0232 quotedblright
-oe 944,554,21,92,-21,92 0 0233 oe
-/l 278,729,0,144,0,92 2 0234 lslash
---- 500,141,164,12,13,12 1 0235 quotedblbase
-OE 1000,741,20,157,-40,92 2 0236 OE
-/L 611,729,0,63,-4,63 2 0237 Lslash
-r! 333,542,187,48,24,48 1 0241 exclamdown
-char161 "
-ct 556,637,122,92,-29,92 3 0242 cent
-char162 "
-Po 556,717,20,123,1,92 2 0243 sterling
-char163 "
-Cs 556,604,0,138,-16,92 2 0244 currency
-char164 "
-Ye 556,705,0,196,-57,92 2 0245 yen
-char165 "
-sc 556,728,201,90,-6,90 3 0247 section
-char167 "
-ad 333,731,0,186,-97,92 2 0250 dieresis
-char168 "
-co 737,745,20,150,-4,92 2 0251 copyright
-char169 "
-Of 370,746,0,131,-46,92 2 0252 ordfeminine
-char170 "
-fo 333,476,0,68,-78,68 0 0253 guilsinglleft
-no 584,412,0,98,-53,92 0 0254 logicalnot
-char172 "
-\- 584,290,0,72,-27,72 0 0255 minus
-rg 737,745,20,150,-5,92 2 0256 registered
-char174 "
-a- 333,717,0,184,-100,92 2 0257 macron
-char175 "
-aa 333,745,0,192,-197,92 2 0264 acute
-char180 "
-ps 556,729,195,178,-71,92 3 0266 paragraph
-char182 "
-char183 278,442,0,42,-93,42 0 0267 periodcentered
-ac 333,0,220,0,63 1 0270 cedilla
-char184 "
-Om 365,745,0,156,-42,92 2 0272 ordmasculine
-char186 "
-fc 333,476,0,36,-46,36 0 0273 guilsinglright
-r? 611,542,192,0,-2 1 0277 questiondown
-char191 "
-`A 722,936,0,31,24,31 2 0300 Agrave
-char192 "
-'A 722,936,0,42,24,42 2 0301 Aacute
-char193 "
-^A 722,936,0,31,24,31 2 0302 Acircumflex
-char194 "
-~A 722,920,0,67,24,67 2 0303 Atilde
-char195 "
-:A 722,922,0,36,24,36 2 0304 Adieresis
-char196 "
-oA 722,936,0,31,24,31 2 0305 Aring
-char197 "
-AE 1000,729,0,154,49,92 2 0306 AE
-char198 "
-,C 722,741,220,121,-57,92 3 0307 Ccedilla
-char199 "
-`E 667,936,0,145,-29,92 2 0310 Egrave
-char200 "
-'E 667,936,0,145,-29,92 2 0311 Eacute
-char201 "
-^E 667,936,0,145,-29,92 2 0312 Ecircumflex
-char202 "
-:E 667,922,0,145,-29,92 2 0313 Edieresis
-char203 "
-`I 278,936,0,140,-13,92 2 0314 Igrave
-char204 "
-'I 278,936,0,261,-13,92 2 0315 Iacute
-char205 "
-^I 278,936,0,239,-13,92 2 0316 Icircumflex
-char206 "
-:I 278,922,0,255,-13,92 2 0317 Idieresis
-char207 "
-~N 722,920,0,144,-18,92 2 0321 Ntilde
-char209 "
-`O 778,936,23,100,-56,92 2 0322 Ograve
-char210 "
-'O 778,936,23,100,-56,92 2 0323 Oacute
-char211 "
-^O 778,936,23,100,-56,92 2 0324 Ocircumflex
-char212 "
-~O 778,920,23,100,-56,92 2 0325 Otilde
-char213 "
-:O 778,922,23,100,-56,92 2 0326 Odieresis
-char214 "
-/O 778,754,34,178,16,92 2 0330 Oslash
-char216 "
-`U 722,936,23,137,-69,92 2 0331 Ugrave
-char217 "
-'U 722,936,23,137,-69,92 2 0332 Uacute
-char218 "
-^U 722,936,23,137,-69,92 2 0333 Ucircumflex
-char219 "
-:U 722,922,23,137,-69,92 2 0334 Udieresis
-char220 "
-ss 611,730,16,93,-17,92 2 0337 germandbls
-char223 "
-`a 556,745,24,72,0,72 2 0340 agrave
-char224 "
-'a 556,745,24,81,0,81 2 0341 aacute
-char225 "
-^a 556,745,24,72,0,72 2 0342 acircumflex
-char226 "
-~a 556,729,24,106,0,92 2 0343 atilde
-char227 "
-:a 556,731,24,75,0,75 2 0344 adieresis
-char228 "
-oa 556,745,24,72,0,72 2 0345 aring
-char229 "
-ae 889,555,20,88,-4,88 0 0346 ae
-char230 "
-,c 556,551,220,91,-27,91 1 0347 ccedilla
-char231 "
-`e 556,745,23,85,-14,85 2 0350 egrave
-char232 "
-'e 556,745,23,85,-14,85 2 0351 eacute
-char233 "
-^e 556,745,23,85,-14,85 2 0352 ecircumflex
-char234 "
-:e 556,731,23,85,-14,85 2 0353 edieresis
-char235 "
-`i 278,745,0,94,-17,92 2 0354 igrave
-char236 "
-'i 278,745,0,220,-17,92 2 0355 iacute
-char237 "
-^i 278,745,0,198,-17,92 2 0356 icircumflex
-char238 "
-:i 278,731,0,214,-17,92 2 0357 idieresis
-char239 "
-~n 611,729,0,85,-13,85 2 0361 ntilde
-char241 "
-`o 611,745,23,73,-32,73 2 0362 ograve
-char242 "
-'o 611,745,23,73,-32,73 2 0363 oacute
-char243 "
-^o 611,745,23,73,-32,73 2 0364 ocircumflex
-char244 "
-~o 611,729,23,78,-32,78 2 0365 otilde
-char245 "
-:o 611,731,23,73,-32,73 2 0366 odieresis
-char246 "
-/o 611,561,34,148,38,92 0 0370 oslash
-char248 "
-`u 611,745,23,95,-38,92 2 0371 ugrave
-char249 "
-'u 611,745,23,95,-38,92 2 0372 uacute
-char250 "
-^u 611,745,23,95,-38,92 2 0373 ucircumflex
-char251 "
-:u 611,731,23,95,-38,92 2 0374 udieresis
-char252 "
-:y 556,731,219,147,13,92 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HI b/ps/devps/HI
deleted file mode 100644
index 81b101154..000000000
--- a/ps/devps/HI
+++ /dev/null
@@ -1,409 +0,0 @@
-name HI
-internalname Helvetica-Oblique
-slant 12
-spacewidth 278
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -9
-A w -18
-A v -18
-A ' -37
-A Y -74
-A W -18
-A V -55
-A T -74
-F . -129
-F , -129
-F A -74
-L y -18
-L ' -55
-L Y -92
-L W -37
-L V -55
-L T -74
-P . -129
-P , -129
-P A -74
-R Y -37
-R W -18
-R V -18
-R T -18
-T y -74
-T w -74
-T u -74
-T ; -74
-T s -92
-T r -74
-T . -92
-T o -92
-T i -9
-T - -92
-T hy -92
-T char173 -92
-T e -92
-T , -92
-T : -74
-T c -92
-T a -92
-T O -18
-T A -74
-V y -18
-V u -18
-V ; -18
-V r -18
-V . -74
-V o -37
-V i -18
-V - -37
-V hy -37
-V char173 -37
-V e -37
-V , -74
-V : -18
-V a -37
-V A -55
-W . -37
-W i -9
-W - -18
-W hy -18
-W char173 -18
-W e -18
-W , -37
-W a -18
-W A -18
-Y v -37
-Y u -37
-Y ; -37
-Y q -55
-Y . -92
-Y p -55
-Y o -55
-Y i -18
-Y - -74
-Y hy -74
-Y char173 -74
-Y e -55
-Y , -92
-Y : -37
-Y a -74
-Y A -55
-f ' 37
-1 1 -74
-` ` -37
-` oq -37
-oq ` -37
-oq oq -37
-' s -18
-' ' -37
-r ' 37
-r . -37
-r - -18
-r hy -18
-r char173 -18
-r , -55
-v . -74
-v , -74
-w . -55
-w , -55
-y . -74
-y , -74
-charset
-ha 469,713,0,77,-65,77 2 0000 asciicircum
-ti 584,438,0,60,-87,60 0 0001 asciitilde
-vS 667,939,23,97,-39,89 2 0002 Scaron
-vZ 611,939,0,176,22,89 2 0003 Zcaron
-vs 500,740,24,97,-11,89 2 0004 scaron
-vz 500,740,0,107,19,89 2 0005 zcaron
-:Y 667,907,0,199,-118,89 2 0006 Ydieresis
-tm 1000,741,0,146,-158,89 2 0007 trademark
-space 278 0 0040
-! 278,729,0,135,-74,89 2 0041 exclam
-" 355,708,0,150,-127,89 2 0042 quotedbl
-# 556,698,20,143,-4,89 2 0043 numbersign
-sh "
-$ 556,770,125,107,-19,89 3 0044 dollar
-Do "
-% 889,708,20,56,-84,56 2 0045 percent
-& 667,710,23,27,-33,27 2 0046 ampersand
-' 222,708,0,136,-115,89 2 0047 quoteright
-( 333,729,213,163,-63,89 3 0050 parenleft
-) 333,729,213,42,57,42 3 0051 parenright
-* 389,740,0,132,-119,89 2 0052 asterisk
-+ 584,474,10,57,-42,57 0 0053 plus
-, 278,104,150,0,-5 1 0054 comma
-- 333,313,0,68,-47,68 0 0055 hyphen
-hy "
-char173 "
-. 278,104,0,0,-37 0 0056 period
-/ 278,708,21,206,62,89 2 0057 slash
-sl "
-0 556,709,23,92,-48,89 2 0060 zero
-1 556,709,0,0,-158 2 0061 one
-2 556,710,0,114,16,89 2 0062 two
-3 556,709,23,93,-21,89 2 0063 three
-4 556,709,0,67,-13,67 2 0064 four
-5 556,709,23,123,-20,89 2 0065 five
-6 556,709,23,105,-43,89 2 0066 six
-7 556,709,0,165,-87,89 2 0067 seven
-8 556,709,23,98,-24,89 2 0070 eight
-9 556,709,23,93,-33,89 2 0071 nine
-: 278,525,0,98,-60,89 0 0072 colon
-; 278,516,150,97,-28,89 1 0073 semicolon
-< 584,474,10,101,-37,89 0 0074 less
-= 584,352,0,75,-24,75 0 0075 equal
-> 584,474,10,62,2,62 0 0076 greater
-? 556,738,0,124,-134,89 2 0077 question
-@ 1015,737,146,71,-30,71 3 0100 at
-at "
-A 667,729,0,36,33,36 2 0101 A
-B 667,729,0,94,-29,89 2 0102 B
-C 722,741,23,98,-62,89 2 0103 C
-D 722,729,0,87,-39,87 2 0104 D
-E 667,729,0,134,-40,89 2 0105 E
-F 611,729,0,173,-40,89 2 0106 F
-G 778,741,23,81,-59,81 2 0107 G
-H 722,729,0,127,-33,89 2 0110 H
-I 278,729,0,121,-50,89 2 0111 I
-J 500,729,26,131,3,89 2 0112 J
-K 667,729,0,196,-29,89 2 0113 K
-L 556,729,0,45,-30,45 2 0114 L
-M 833,729,0,133,-25,89 2 0115 M
-N 722,729,0,129,-26,89 2 0116 N
-O 778,741,23,100,-54,89 2 0117 O
-P 667,730,0,116,-41,89 2 0120 P
-Q 778,741,59,100,-54,89 2 0121 Q
-R 722,729,0,98,-43,89 2 0122 R
-S 667,741,23,97,-39,89 2 0123 S
-T 611,729,0,187,-108,89 2 0124 T
-U 722,729,23,128,-74,89 2 0125 U
-V 667,729,0,183,-135,89 2 0126 V
-W 944,729,0,190,-127,89 2 0127 W
-X 667,729,0,177,28,89 2 0130 X
-Y 667,729,0,199,-118,89 2 0131 Y
-Z 611,729,0,176,22,89 2 0132 Z
-[ 278,729,214,177,31,89 3 0133 bracketleft
-lB "
-\ 278,729,20,52,-97,52 2 0134 backslash
-rs "
-] 278,729,215,136,73,89 3 0135 bracketright
-rB "
-a^ 333,741,0,150,-96,89 2 0136 circumflex
-^ "
-_ 556,0,175,45,109,45 1 0137 underscore
-` 222,708,0,136,-113,89 2 0140 quoteleft
-oq "
-a 556,540,23,62,-15,62 0 0141 a
-b 556,729,23,82,-4,82 2 0142 b
-c 500,540,23,104,-26,89 0 0143 c
-d 556,729,23,144,-23,89 2 0144 d
-e 556,541,23,74,-34,74 0 0145 e
-f 278,733,0,185,-39,89 2 0146 f
-g 556,540,220,95,18,89 1 0147 g
-h 556,729,0,68,-20,68 2 0150 h
-i 222,729,0,133,-16,89 2 0151 i
-j 222,729,220,136,115,89 3 0152 j
-k 500,729,0,134,-8,89 2 0153 k
-l 222,729,0,135,-18,89 2 0154 l
-m 833,540,0,69,-21,69 0 0155 m
-n 556,540,0,68,-20,68 0 0156 n
-o 556,540,23,70,-30,70 0 0157 o
-p 556,540,219,80,43,80 1 0160 p
-q 556,540,219,101,-21,89 1 0161 q
-r 333,540,0,153,-19,89 0 0162 r
-s 500,540,24,70,-11,70 0 0163 s
-t 278,667,24,138,-47,89 2 0164 t
-u 556,525,23,88,-38,88 0 0165 u
-v 500,525,0,148,-72,89 0 0166 v
-w 722,525,0,148,-68,89 0 0167 w
-x 500,525,0,133,33,89 0 0170 x
-y 500,525,219,140,42,89 1 0171 y
-z 500,525,0,107,19,89 0 0172 z
-lC 334,731,214,147,-41,89 3 0173 braceleft
-{ "
-ba 260,729,215,105,-4,89 3 0174 bar
-| "
-rC 334,731,214,40,66,40 3 0175 braceright
-} "
-a~ 333,716,0,188,-80,89 2 0176 tilde
-~ "
---- 222,103,129,8,13,8 1 0200 quotesinglbase
-Fo 556,438,0,42,-97,42 0 0201 guillemotleft
-char171 "
-Fc 556,438,0,12,-71,12 0 0202 guillemotright
-char187 "
-bu 350,470,0,76,-70,76 0 0203 bullet
---- 556,742,214,190,82,89 3 0204 florin
-f/ 167,708,21,369,228,89 2 0205 fraction
-%0 1000,740,20,74,-43,74 2 0206 perthousand
-dg 556,710,178,114,-77,89 3 0207 dagger
-dd 556,710,178,114,-1,89 3 0210 daggerdbl
-en 556,313,0,122,4,89 0 0211 endash
-em 1000,313,0,118,8,89 0 0212 emdash
-fi 500,733,0,141,-33,89 2 0214 fi
-fl 500,733,0,135,-38,89 2 0215 fl
-.i 278,525,0,62,-44,62 0 0220 dotlessi
-ga 333,740,0,74,-129,74 2 0222 grave
-a" 333,740,0,222,-41,89 2 0223 hungarumlaut
-a. 333,709,0,87,-194,87 2 0224 dotaccent
-ab 333,729,0,188,-115,89 2 0225 breve
-ah 333,740,0,180,-126,89 2 0226 caron
-ao 333,741,0,113,-166,89 2 0227 ring
-ho 333,15,189,0,15 1 0230 ogonek
-lq 333,708,0,166,-96,89 2 0231 quotedblleft
-rq 333,708,0,169,-100,89 2 0232 quotedblright
-oe 944,540,22,72,-35,72 0 0233 oe
-/l 222,729,0,140,-12,89 2 0234 lslash
---- 333,103,129,39,30,39 1 0235 quotedblbase
-OE 1000,739,20,158,-51,89 2 0236 OE
-/L 556,729,0,64,-11,64 2 0237 Lslash
-r! 333,525,214,34,-26,34 1 0241 exclamdown
-char161 "
-ct 556,628,120,79,-46,79 3 0242 cent
-char162 "
-Po 556,726,21,122,6,89 2 0243 sterling
-char163 "
-Cs 556,554,0,87,-60,87 0 0244 currency
-char164 "
-Ye 556,710,0,190,-50,89 2 0245 yen
-char165 "
-sc 556,729,215,83,-13,83 3 0247 section
-char167 "
-ad 333,708,0,163,-109,89 2 0250 dieresis
-char168 "
-co 737,741,23,149,-5,89 2 0251 copyright
-char169 "
-Of 370,740,0,121,-57,89 2 0252 ordfeminine
-char170 "
-fo 333,436,0,53,-90,53 0 0253 guilsinglleft
-no 584,352,0,85,-49,85 0 0254 logicalnot
-char172 "
-\- 584,270,0,67,-31,67 0 0255 minus
-rg 737,741,23,149,-5,89 2 0256 registered
-char174 "
-a- 333,694,0,167,-110,89 2 0257 macron
-char175 "
-aa 333,740,0,175,-168,89 2 0264 acute
-char180 "
-ps 537,729,178,190,-95,89 3 0266 paragraph
-char182 "
-char183 278,442,0,65,-116,65 0 0267 periodcentered
-ac 333,0,214,0,49 1 0270 cedilla
-char184 "
-Om 365,741,0,137,-64,89 2 0272 ordmasculine
-char186 "
-fc 333,436,0,24,-59,24 0 0273 guilsinglright
-r? 611,525,213,0,-36 1 0277 questiondown
-char191 "
-`A 667,939,0,36,33,36 2 0300 Agrave
-char192 "
-'A 667,939,0,50,33,50 2 0301 Aacute
-char193 "
-^A 667,940,0,36,33,36 2 0302 Acircumflex
-char194 "
-~A 667,915,0,63,33,63 2 0303 Atilde
-char195 "
-:A 667,907,0,38,33,38 2 0304 Adieresis
-char196 "
-oA 667,940,0,36,33,36 2 0305 Aring
-char197 "
-AE 1000,729,0,137,39,89 2 0306 AE
-char198 "
-,C 722,741,214,98,-62,89 3 0307 Ccedilla
-char199 "
-`E 667,939,0,134,-40,89 2 0310 Egrave
-char200 "
-'E 667,939,0,134,-40,89 2 0311 Eacute
-char201 "
-^E 667,940,0,134,-40,89 2 0312 Ecircumflex
-char202 "
-:E 667,907,0,134,-40,89 2 0313 Edieresis
-char203 "
-`I 278,939,0,150,-50,89 2 0314 Igrave
-char204 "
-'I 278,939,0,251,-50,89 2 0315 Iacute
-char205 "
-^I 278,940,0,226,-50,89 2 0316 Icircumflex
-char206 "
-:I 278,907,0,239,-50,89 2 0317 Idieresis
-char207 "
-~N 722,915,0,129,-26,89 2 0321 Ntilde
-char209 "
-`O 778,939,23,100,-54,89 2 0322 Ograve
-char210 "
-'O 778,939,23,100,-54,89 2 0323 Oacute
-char211 "
-^O 778,940,23,100,-54,89 2 0324 Ocircumflex
-char212 "
-~O 778,915,23,100,-54,89 2 0325 Otilde
-char213 "
-:O 778,907,23,100,-54,89 2 0326 Odieresis
-char214 "
-/O 778,742,23,139,18,89 2 0330 Oslash
-char216 "
-`U 722,939,23,128,-74,89 2 0331 Ugrave
-char217 "
-'U 722,939,23,128,-74,89 2 0332 Uacute
-char218 "
-^U 722,940,23,128,-74,89 2 0333 Ucircumflex
-char219 "
-:U 722,907,23,128,-74,89 2 0334 Udieresis
-char220 "
-ss 611,729,20,94,-76,89 2 0337 germandbls
-char223 "
-`a 556,740,23,62,-15,62 2 0340 agrave
-char224 "
-'a 556,740,23,64,-15,64 2 0341 aacute
-char225 "
-^a 556,741,23,62,-15,62 2 0342 acircumflex
-char226 "
-~a 556,716,23,77,-15,77 2 0343 atilde
-char227 "
-:a 556,708,23,62,-15,62 2 0344 adieresis
-char228 "
-oa 556,741,23,62,-15,62 2 0345 aring
-char229 "
-ae 889,546,20,76,-9,76 0 0346 ae
-char230 "
-,c 500,540,214,104,-26,89 1 0347 ccedilla
-char231 "
-`e 556,740,23,74,-34,74 2 0350 egrave
-char232 "
-'e 556,740,23,74,-34,74 2 0351 eacute
-char233 "
-^e 556,741,23,74,-34,74 2 0352 ecircumflex
-char234 "
-:e 556,708,23,74,-34,74 2 0353 edieresis
-char235 "
-`i 278,740,0,102,-44,89 2 0354 igrave
-char236 "
-'i 278,740,0,203,-44,89 2 0355 iacute
-char237 "
-^i 278,741,0,178,-44,89 2 0356 icircumflex
-char238 "
-:i 278,708,0,191,-44,89 2 0357 idieresis
-char239 "
-~n 556,716,0,83,-20,83 2 0361 ntilde
-char241 "
-`o 556,740,23,70,-30,70 2 0362 ograve
-char242 "
-'o 556,740,23,70,-30,70 2 0363 oacute
-char243 "
-^o 556,741,23,70,-30,70 2 0364 ocircumflex
-char244 "
-~o 556,716,23,77,-30,77 2 0365 otilde
-char245 "
-:o 556,708,23,70,-30,70 2 0366 odieresis
-char246 "
-/o 611,548,27,78,31,78 0 0370 oslash
-char248 "
-`u 556,740,23,88,-38,88 2 0371 ugrave
-char249 "
-'u 556,740,23,88,-38,88 2 0372 uacute
-char250 "
-^u 556,741,23,88,-38,88 2 0373 ucircumflex
-char251 "
-:u 556,708,23,88,-38,88 2 0374 udieresis
-char252 "
-:y 500,708,219,140,42,89 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HNB b/ps/devps/HNB
deleted file mode 100644
index 2ec3b8721..000000000
--- a/ps/devps/HNB
+++ /dev/null
@@ -1,410 +0,0 @@
-name HNB
-internalname Helvetica-Narrow-Bold
-spacewidth 228
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -30
-A w -14
-A v -30
-A ' -45
-A Y -75
-A W -45
-A V -60
-A T -60
-F . -91
-F , -91
-F A -45
-L y -30
-L ' -45
-L Y -75
-L W -45
-L V -60
-L T -60
-P . -105
-P , -105
-P A -60
-R Y -30
-R W -14
-R V -14
-T y -60
-T w -60
-T u -60
-T ; -91
-T s -60
-T r -45
-T . -91
-T o -60
-T i -14
-T - -45
-T hy -45
-T char173 -45
-T e -60
-T , -91
-T : -91
-T c -60
-T a -60
-T O -14
-T A -60
-V y -30
-V u -30
-V ; -45
-V r -45
-V . -75
-V o -60
-V i -14
-V - -45
-V hy -45
-V char173 -45
-V e -45
-V , -75
-V : -45
-V a -45
-V A -60
-W y -14
-W u -14
-W ; -14
-W r -14
-W . -45
-W o -14
-W i -7
-W - -16
-W hy -16
-W char173 -16
-W e -14
-W , -45
-W : -14
-W a -30
-W A -45
-Y v -45
-Y u -45
-Y ; -60
-Y q -60
-Y . -91
-Y p -45
-Y o -60
-Y i -30
-Y - -45
-Y hy -45
-Y char173 -45
-Y e -45
-Y , -91
-Y : -60
-Y a -45
-Y A -75
-f ' 14
-1 1 -45
-` ` -30
-` oq -30
-oq ` -30
-oq oq -30
-' s -30
-' ' -30
-r ' 30
-r . -45
-r , -45
-v . -60
-v , -60
-w . -30
-w , -30
-y . -60
-y , -60
-charset
-ha 479,696 2 0000 asciicircum
-ti 479,322 0 0001 asciitilde
-vS 547,936,23 2 0002 Scaron
-vZ 501,936 2 0003 Zcaron
-vs 456,745,23 2 0004 scaron
-vz 410,745 2 0005 zcaron
-:Y 547,922 2 0006 Ydieresis
-tm 820,745 2 0007 trademark
-space 228 0 0040
-! 273,729 2 0041 exclam
-" 389,729 2 0042 quotedbl
-# 456,696,30 2 0043 numbersign
-sh "
-$ 456,765,125 3 0044 dollar
-Do "
-% 729,708,18 2 0045 percent
-& 592,729,20 2 0046 ampersand
-' 228,729 2 0047 quoteright
-( 273,729,202 3 0050 parenleft
-) 273,729,202 3 0051 parenright
-* 319,730 2 0052 asterisk
-+ 479,474,10 0 0053 plus
-, 228,146,174 1 0054 comma
-- 273,344 0 0055 hyphen
-hy "
-char173 "
-. 228,146 0 0056 period
-/ 228,715,14 2 0057 slash
-sl "
-0 456,725,23 2 0060 zero
-1 456,709 2 0061 one
-2 456,726 2 0062 two
-3 456,726,23 2 0063 three
-4 456,709 2 0064 four
-5 456,709,24 2 0065 five
-6 456,727,23 2 0066 six
-7 456,709 2 0067 seven
-8 456,726,23 2 0070 eight
-9 456,728,23 2 0071 nine
-: 273,521 0 0072 colon
-; 273,521,174 1 0073 semicolon
-< 479,474,10 0 0074 less
-= 479,412 0 0075 equal
-> 479,474,10 0 0076 greater
-? 501,744 2 0077 question
-@ 800,746,136 3 0100 at
-at "
-A 592,729 2 0101 A
-B 592,729 2 0102 B
-C 592,741,23 2 0103 C
-D 592,729 2 0104 D
-E 547,729 2 0105 E
-F 501,729 2 0106 F
-G 638,741,24 2 0107 G
-H 592,729 2 0110 H
-I 228,729 2 0111 I
-J 456,729,23 2 0112 J
-K 592,729 2 0113 K
-L 501,729 2 0114 L
-M 683,729 2 0115 M
-N 592,729 2 0116 N
-O 638,741,23 2 0117 O
-P 547,729 2 0120 P
-Q 638,741,54 2 0121 Q
-R 592,729 2 0122 R
-S 547,741,23 2 0123 S
-T 501,729 2 0124 T
-U 592,729,23 2 0125 U
-V 547,729 2 0126 V
-W 774,729 2 0127 W
-X 547,729 2 0130 X
-Y 547,729 2 0131 Y
-Z 501,729 2 0132 Z
-[ 273,729,202 3 0133 bracketleft
-lB "
-\ 228,708,21 2 0134 backslash
-rs "
-] 273,729,202 3 0135 bracketright
-rB "
-a^ 273,745 2 0136 circumflex
-^ "
-_ 456,0,200 1 0137 underscore
-` 228,729 2 0140 quoteleft
-oq "
-a 456,551,24 0 0141 a
-b 501,729,23 2 0142 b
-c 456,551,23 0 0143 c
-d 501,729,23 2 0144 d
-e 456,551,23 0 0145 e
-f 273,729 2 0146 f
-g 501,551,220 1 0147 g
-h 501,729 2 0150 h
-i 228,729 2 0151 i
-j 228,729,219 3 0152 j
-k 456,729 2 0153 k
-l 228,729 2 0154 l
-m 729,553 0 0155 m
-n 501,551 0 0156 n
-o 501,551,23 0 0157 o
-p 501,551,219 1 0160 p
-q 501,551,219 1 0161 q
-r 319,553 0 0162 r
-s 456,551,23 0 0163 s
-t 273,678,23 2 0164 t
-u 501,542,23 0 0165 u
-v 456,542 0 0166 v
-w 638,542 0 0167 w
-x 456,542 0 0170 x
-y 456,542,219 1 0171 y
-z 410,542 0 0172 z
-lC 319,729,202 3 0173 braceleft
-{ "
-ba 230,729,202 3 0174 bar
-| "
-rC 319,729,202 3 0175 braceright
-} "
-a~ 273,729 2 0176 tilde
-~ "
---- 228,125,135 1 0200 quotesinglbase
-Fo 456,484 0 0201 guillemotleft
-char171 "
-Fc 456,482 0 0202 guillemotright
-char187 "
-bu 287,425 0 0203 bullet
---- 456,745,221 3 0204 florin
-f/ 137,715,20 2 0205 fraction
-%0 820,745,20 2 0206 perthousand
-dg 456,708,195 3 0207 dagger
-dd 456,708,195 3 0210 daggerdbl
-en 456,313 0 0211 endash
-em 820,313 0 0212 emdash
-fi 501,729 2 0214 fi
-fl 501,729 2 0215 fl
-.i 228,542 0 0220 dotlessi
-ga 273,745 2 0222 grave
-a" 273,745 2 0223 hungarumlaut
-a. 273,729 2 0224 dotaccent
-ab 273,736 2 0225 breve
-ah 273,745 2 0226 caron
-ao 273,745 2 0227 ring
-ho 273,38,195 1 0230 ogonek
-lq 410,729 2 0231 quotedblleft
-rq 410,729 2 0232 quotedblright
-oe 774,554,21 0 0233 oe
-/l 228,729 2 0234 lslash
---- 410,141,164 1 0235 quotedblbase
-OE 820,741,20 2 0236 OE
-/L 501,729 2 0237 Lslash
-r! 273,542,187 1 0241 exclamdown
-char161 "
-ct 456,637,122 3 0242 cent
-char162 "
-Po 456,717,20 2 0243 sterling
-char163 "
-Cs 456,604 2 0244 currency
-char164 "
-Ye 456,705 2 0245 yen
-char165 "
-sc 456,728,201 3 0247 section
-char167 "
-ad 273,731 2 0250 dieresis
-char168 "
-co 604,745,20 2 0251 copyright
-char169 "
-Of 303,746 2 0252 ordfeminine
-char170 "
-fo 273,476 0 0253 guilsinglleft
-no 479,412 0 0254 logicalnot
-char172 "
-\- 479,290 0 0255 minus
-rg 604,745,20 2 0256 registered
-char174 "
-a- 273,717 2 0257 macron
-char175 "
-aa 273,745 2 0264 acute
-char180 "
-ps 456,729,195 3 0266 paragraph
-char182 "
-char183 228,442 0 0267 periodcentered
-ac 273,0,220 1 0270 cedilla
-char184 "
-Om 299,745 2 0272 ordmasculine
-char186 "
-fc 273,476 0 0273 guilsinglright
-r? 501,542,192 1 0277 questiondown
-char191 "
-`A 592,936 2 0300 Agrave
-char192 "
-'A 592,936 2 0301 Aacute
-char193 "
-^A 592,936 2 0302 Acircumflex
-char194 "
-~A 592,920 2 0303 Atilde
-char195 "
-:A 592,922 2 0304 Adieresis
-char196 "
-oA 592,936 2 0305 Aring
-char197 "
-AE 820,729 2 0306 AE
-char198 "
-,C 592,741,220 3 0307 Ccedilla
-char199 "
-`E 547,936 2 0310 Egrave
-char200 "
-'E 547,936 2 0311 Eacute
-char201 "
-^E 547,936 2 0312 Ecircumflex
-char202 "
-:E 547,922 2 0313 Edieresis
-char203 "
-`I 228,936 2 0314 Igrave
-char204 "
-'I 228,936 2 0315 Iacute
-char205 "
-^I 228,936 2 0316 Icircumflex
-char206 "
-:I 228,922 2 0317 Idieresis
-char207 "
-~N 592,920 2 0321 Ntilde
-char209 "
-`O 638,936,23 2 0322 Ograve
-char210 "
-'O 638,936,23 2 0323 Oacute
-char211 "
-^O 638,936,23 2 0324 Ocircumflex
-char212 "
-~O 638,920,23 2 0325 Otilde
-char213 "
-:O 638,922,23 2 0326 Odieresis
-char214 "
-/O 638,754,34 2 0330 Oslash
-char216 "
-`U 592,936,23 2 0331 Ugrave
-char217 "
-'U 592,936,23 2 0332 Uacute
-char218 "
-^U 592,936,23 2 0333 Ucircumflex
-char219 "
-:U 592,922,23 2 0334 Udieresis
-char220 "
-ss 501,730,16 2 0337 germandbls
-char223 "
-`a 456,745,24 2 0340 agrave
-char224 "
-'a 456,745,24 2 0341 aacute
-char225 "
-^a 456,745,24 2 0342 acircumflex
-char226 "
-~a 456,729,24 2 0343 atilde
-char227 "
-:a 456,731,24 2 0344 adieresis
-char228 "
-oa 456,745,24 2 0345 aring
-char229 "
-ae 729,555,20 0 0346 ae
-char230 "
-,c 456,551,220 1 0347 ccedilla
-char231 "
-`e 456,745,23 2 0350 egrave
-char232 "
-'e 456,745,23 2 0351 eacute
-char233 "
-^e 456,745,23 2 0352 ecircumflex
-char234 "
-:e 456,731,23 2 0353 edieresis
-char235 "
-`i 228,745 2 0354 igrave
-char236 "
-'i 228,745 2 0355 iacute
-char237 "
-^i 228,745 2 0356 icircumflex
-char238 "
-:i 228,731 2 0357 idieresis
-char239 "
-~n 501,729 2 0361 ntilde
-char241 "
-`o 501,745,23 2 0362 ograve
-char242 "
-'o 501,745,23 2 0363 oacute
-char243 "
-^o 501,745,23 2 0364 ocircumflex
-char244 "
-~o 501,729,23 2 0365 otilde
-char245 "
-:o 501,731,23 2 0366 odieresis
-char246 "
-/o 501,561,34 0 0370 oslash
-char248 "
-`u 501,745,23 2 0371 ugrave
-char249 "
-'u 501,745,23 2 0372 uacute
-char250 "
-^u 501,745,23 2 0373 ucircumflex
-char251 "
-:u 501,731,23 2 0374 udieresis
-char252 "
-:y 456,731,219 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HNBI b/ps/devps/HNBI
deleted file mode 100644
index 840c93112..000000000
--- a/ps/devps/HNBI
+++ /dev/null
@@ -1,409 +0,0 @@
-name HNBI
-internalname Helvetica-Narrow-BoldOblique
-slant 12
-spacewidth 228
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A ' -45
-A Y -60
-A W -45
-A V -60
-A T -60
-F . -91
-F , -91
-F A -45
-L ' -75
-L Y -60
-L W -45
-L V -45
-L T -60
-P . -105
-P , -105
-P A -60
-R Y -14
-R W -14
-R T -14
-T y -30
-T w -30
-T u -6
-T ; -60
-T s -30
-T r -6
-T . -60
-T o -30
-T i -6
-T - -45
-T hy -45
-T char173 -45
-T e -30
-T , -60
-T : -60
-T c -30
-T a -30
-T O -14
-T A -60
-V y -14
-V u -14
-V ; -30
-V r -14
-V . -75
-V o -30
-V i -30
-V - -30
-V hy -30
-V char173 -30
-V e -30
-V , -75
-V : -30
-V a -30
-V A -60
-W y -14
-W u -14
-W ; -30
-W r -14
-W . -60
-W o -14
-W i -7
-W - -30
-W hy -30
-W char173 -30
-W e -14
-W , -60
-W : -30
-W a -14
-W A -45
-Y v -30
-Y u -30
-Y ; -45
-Y q -30
-Y . -75
-Y p -30
-Y i -30
-Y o -30
-Y - -60
-Y hy -60
-Y char173 -60
-Y e -30
-Y , -75
-Y : -45
-Y a -30
-Y A -60
-f ' 14
-f f -14
-1 1 -60
-` ` -30
-` oq -30
-oq ` -30
-oq oq -30
-' t 14
-' s -14
-' ' -30
-r ' 30
-r . -45
-r , -45
-v . -45
-v , -45
-w . -30
-w , -30
-y . -30
-y , -30
-charset
-ha 479,696,0,46,-47,46 2 0000 asciicircum
-ti 479,322,0,48,-30,48 0 0001 asciitilde
-vS 547,936,23,98,-12,92 2 0002 Scaron
-vZ 501,936,0,150,25,92 2 0003 Zcaron
-vs 456,745,23,84,1,84 2 0004 scaron
-vz 410,745,0,112,33,92 2 0005 zcaron
-:Y 547,922,0,163,-99,92 2 0006 Ydieresis
-tm 820,745,0,122,-125,92 2 0007 trademark
-space 228 0 0040
-! 273,729,0,119,-42,92 2 0041 exclam
-" 389,729,0,136,-95,92 2 0042 quotedbl
-# 456,696,30,135,23,92 2 0043 numbersign
-sh "
-$ 456,765,125,109,2,92 3 0044 dollar
-Do "
-% 729,708,18,62,-56,62 2 0045 percent
-& 592,729,20,48,-23,48 2 0046 ampersand
-' 228,729,0,114,-86,92 2 0047 quoteright
-( 273,729,202,153,-19,92 3 0050 parenleft
-) 273,729,202,69,67,69 3 0051 parenright
-* 319,730,0,123,-69,92 2 0052 asterisk
-+ 479,474,10,59,-21,59 0 0053 plus
-, 228,146,174,22,28,22 1 0054 comma
-- 273,344,0,81,-8,81 0 0055 hyphen
-hy "
-char173 "
-. 228,146,0,22,-2,22 0 0056 period
-/ 228,715,14,172,51,92 2 0057 slash
-sl "
-0 456,725,23,98,-17,92 2 0060 zero
-1 456,709,0,27,-91,27 2 0061 one
-2 456,726,0,109,25,92 2 0062 two
-3 456,726,23,97,-6,92 2 0063 three
-4 456,709,0,84,4,84 2 0064 four
-5 456,709,24,119,2,92 2 0065 five
-6 456,727,23,106,-20,92 2 0066 six
-7 456,709,0,151,-58,92 2 0067 seven
-8 456,726,23,102,1,92 2 0070 eight
-9 456,728,23,95,-6,92 2 0071 nine
-: 273,521,0,84,-43,84 0 0072 colon
-; 273,521,174,84,-13,84 1 0073 semicolon
-< 479,474,10,87,-13,87 0 0074 less
-= 479,412,0,81,0,81 0 0075 equal
-> 479,474,10,56,19,56 0 0076 greater
-? 501,744,0,100,-88,92 2 0077 question
-@ 800,746,136,97,-10,92 3 0100 at
-at "
-A 592,729,0,34,29,34 2 0101 A
-B 592,729,0,83,-17,83 2 0102 B
-C 592,741,23,108,-38,92 2 0103 C
-D 592,729,0,95,-13,92 2 0104 D
-E 547,729,0,128,-15,92 2 0105 E
-F 501,729,0,157,-11,92 2 0106 F
-G 638,741,24,84,-38,84 2 0107 G
-H 592,729,0,124,-6,92 2 0110 H
-I 228,729,0,124,-2,92 2 0111 I
-J 456,729,23,120,1,92 2 0112 J
-K 592,729,0,150,-11,92 2 0113 K
-L 501,729,0,46,-16,46 2 0114 L
-M 683,729,0,131,-4,92 2 0115 M
-N 592,729,0,127,-6,92 2 0116 N
-O 638,741,23,91,-37,91 2 0117 O
-P 547,729,0,116,-12,92 2 0120 P
-Q 638,741,54,94,-39,92 2 0121 Q
-R 592,729,0,102,-16,92 2 0122 R
-S 547,741,23,98,-12,92 2 0123 S
-T 501,729,0,167,-67,92 2 0124 T
-U 592,729,23,121,-47,92 2 0125 U
-V 547,729,0,161,-97,92 2 0126 V
-W 774,729,0,167,-88,92 2 0127 W
-X 547,729,0,161,32,92 2 0130 X
-Y 547,729,0,163,-99,92 2 0131 Y
-Z 501,729,0,150,25,92 2 0132 Z
-[ 273,729,202,156,31,92 3 0133 bracketleft
-lB "
-\ 228,708,21,55,-64,55 2 0134 backslash
-rs "
-] 273,729,202,117,70,92 3 0135 bracketright
-rB "
-a^ 273,745,0,148,-60,92 2 0136 circumflex
-^ "
-_ 456,0,200,45,103,45 1 0137 underscore
-` 228,729,0,115,-87,92 2 0140 quoteleft
-oq "
-a 456,551,24,68,8,68 0 0141 a
-b 501,729,23,74,2,74 2 0142 b
-c 456,551,23,83,-13,83 0 0143 c
-d 501,729,23,123,-15,92 2 0144 d
-e 456,551,23,79,-3,79 0 0145 e
-f 273,729,0,158,-24,92 2 0146 f
-g 501,551,220,87,29,87 1 0147 g
-h 501,729,0,65,-5,65 2 0150 h
-i 228,729,0,119,-5,92 2 0151 i
-j 228,729,219,121,85,92 3 0152 j
-k 456,729,0,128,2,92 2 0153 k
-l 228,729,0,119,-5,92 2 0154 l
-m 729,553,0,68,1,68 0 0155 m
-n 501,551,0,65,-2,65 0 0156 n
-o 501,551,23,69,-17,69 0 0157 o
-p 501,551,219,71,41,71 1 0160 p
-q 501,551,219,89,-9,89 1 0161 q
-r 319,553,0,131,-2,92 0 0162 r
-s 456,551,23,77,1,77 0 0163 s
-t 273,678,23,116,-33,92 2 0164 t
-u 501,542,23,87,-22,87 0 0165 u
-v 456,542,0,128,-56,92 0 0166 v
-w 638,542,0,135,-49,92 0 0167 w
-x 456,542,0,126,37,92 0 0170 x
-y 456,542,219,130,19,92 1 0171 y
-z 410,542,0,112,33,92 0 0172 z
-lC 319,729,202,118,-19,92 3 0173 braceleft
-{ "
-ba 230,729,202,95,3,92 3 0174 bar
-| "
-rC 319,729,202,74,26,74 3 0175 braceright
-} "
-a~ 273,729,0,187,-46,92 2 0176 tilde
-~ "
---- 228,125,135,9,19,9 1 0200 quotesinglbase
-Fo 456,484,0,62,-60,62 0 0201 guillemotleft
-char171 "
-Fc 456,482,0,31,-34,31 0 0202 guillemotright
-char187 "
-bu 287,425,0,64,-41,64 0 0203 bullet
---- 456,745,221,160,67,92 3 0204 florin
-f/ 137,715,20,314,195,92 2 0205 fraction
-%0 820,745,20,67,-9,67 2 0206 perthousand
-dg 456,708,195,108,-40,92 3 0207 dagger
-dd 456,708,195,105,21,92 3 0210 daggerdbl
-en 456,313,0,105,21,92 0 0211 endash
-em 820,313,0,107,19,92 0 0212 emdash
-fi 501,729,0,125,-20,92 2 0214 fi
-fl 501,729,0,124,-22,92 2 0215 fl
-.i 228,542,0,86,-5,86 0 0220 dotlessi
-ga 273,745,0,56,-94,56 2 0222 grave
-a" 273,745,0,186,-18,92 2 0223 hungarumlaut
-a. 273,729,0,86,-148,86 2 0224 dotaccent
-ab 273,736,0,150,-104,92 2 0225 breve
-ah 273,745,0,175,-87,92 2 0226 caron
-ao 273,745,0,104,-126,92 2 0227 ring
-ho 273,38,195,0,31 1 0230 ogonek
-lq 410,729,0,122,-90,92 2 0231 quotedblleft
-rq 410,729,0,128,-92,92 2 0232 quotedblright
-oe 774,554,21,85,-8,85 0 0233 oe
-/l 228,729,0,126,9,92 2 0234 lslash
---- 410,141,164,18,19,18 1 0235 quotedblbase
-OE 820,741,20,138,-24,92 2 0236 OE
-/L 501,729,0,61,6,61 2 0237 Lslash
-r! 273,542,187,48,29,48 1 0241 exclamdown
-char161 "
-ct 456,637,122,85,-14,85 3 0242 cent
-char162 "
-Po 456,717,20,110,9,92 2 0243 sterling
-char163 "
-Cs 456,604,0,122,-4,92 2 0244 currency
-char164 "
-Ye 456,705,0,170,-38,92 2 0245 yen
-char165 "
-sc 456,728,201,83,4,83 3 0247 section
-char167 "
-ad 273,731,0,162,-71,92 2 0250 dieresis
-char168 "
-co 604,745,20,132,5,92 2 0251 copyright
-char169 "
-Of 303,746,0,116,-28,92 2 0252 ordfeminine
-char170 "
-fo 273,476,0,65,-55,65 0 0253 guilsinglleft
-no 479,412,0,89,-35,89 0 0254 logicalnot
-char172 "
-\- 479,290,0,68,-13,68 0 0255 minus
-rg 604,745,20,132,5,92 2 0256 registered
-char174 "
-a- 273,717,0,160,-73,92 2 0257 macron
-char175 "
-aa 273,745,0,167,-153,92 2 0264 acute
-char180 "
-ps 456,729,195,154,-49,92 3 0266 paragraph
-char182 "
-char183 228,442,0,43,-67,43 0 0267 periodcentered
-ac 273,0,220,0,61 1 0270 cedilla
-char184 "
-Om 299,745,0,136,-25,92 2 0272 ordmasculine
-char186 "
-fc 273,476,0,39,-29,39 0 0273 guilsinglright
-r? 501,542,192,5,7,5 1 0277 questiondown
-char191 "
-`A 592,936,0,34,29,34 2 0300 Agrave
-char192 "
-'A 592,936,0,44,29,44 2 0301 Aacute
-char193 "
-^A 592,936,0,34,29,34 2 0302 Acircumflex
-char194 "
-~A 592,920,0,64,29,64 2 0303 Atilde
-char195 "
-:A 592,922,0,39,29,39 2 0304 Adieresis
-char196 "
-oA 592,936,0,34,29,34 2 0305 Aring
-char197 "
-AE 820,729,0,135,49,92 2 0306 AE
-char198 "
-,C 592,741,220,108,-38,92 3 0307 Ccedilla
-char199 "
-`E 547,936,0,128,-15,92 2 0310 Egrave
-char200 "
-'E 547,936,0,128,-15,92 2 0311 Eacute
-char201 "
-^E 547,936,0,128,-15,92 2 0312 Ecircumflex
-char202 "
-:E 547,922,0,128,-15,92 2 0313 Edieresis
-char203 "
-`I 228,936,0,124,-2,92 2 0314 Igrave
-char204 "
-'I 228,936,0,223,-2,92 2 0315 Iacute
-char205 "
-^I 228,936,0,204,-2,92 2 0316 Icircumflex
-char206 "
-:I 228,922,0,218,-2,92 2 0317 Idieresis
-char207 "
-~N 592,920,0,127,-6,92 2 0321 Ntilde
-char209 "
-`O 638,936,23,91,-37,91 2 0322 Ograve
-char210 "
-'O 638,936,23,91,-37,91 2 0323 Oacute
-char211 "
-^O 638,936,23,91,-37,91 2 0324 Ocircumflex
-char212 "
-~O 638,920,23,91,-37,91 2 0325 Otilde
-char213 "
-:O 638,922,23,91,-37,91 2 0326 Odieresis
-char214 "
-/O 638,754,34,155,23,92 2 0330 Oslash
-char216 "
-`U 592,936,23,121,-47,92 2 0331 Ugrave
-char217 "
-'U 592,936,23,121,-47,92 2 0332 Uacute
-char218 "
-^U 592,936,23,121,-47,92 2 0333 Ucircumflex
-char219 "
-:U 592,922,23,121,-47,92 2 0334 Udieresis
-char220 "
-ss 501,730,16,85,-5,85 2 0337 germandbls
-char223 "
-`a 456,745,24,68,8,68 2 0340 agrave
-char224 "
-'a 456,745,24,76,8,76 2 0341 aacute
-char225 "
-^a 456,745,24,68,8,68 2 0342 acircumflex
-char226 "
-~a 456,729,24,96,8,92 2 0343 atilde
-char227 "
-:a 456,731,24,71,8,71 2 0344 adieresis
-char228 "
-oa 456,745,24,68,8,68 2 0345 aring
-char229 "
-ae 729,555,20,81,6,81 0 0346 ae
-char230 "
-,c 456,551,220,83,-13,83 1 0347 ccedilla
-char231 "
-`e 456,745,23,79,-3,79 2 0350 egrave
-char232 "
-'e 456,745,23,79,-3,79 2 0351 eacute
-char233 "
-^e 456,745,23,79,-3,79 2 0352 ecircumflex
-char234 "
-:e 456,731,23,79,-3,79 2 0353 edieresis
-char235 "
-`i 228,745,0,86,-5,86 2 0354 igrave
-char236 "
-'i 228,745,0,190,-5,92 2 0355 iacute
-char237 "
-^i 228,745,0,171,-5,92 2 0356 icircumflex
-char238 "
-:i 228,731,0,185,-5,92 2 0357 idieresis
-char239 "
-~n 501,729,0,79,-2,79 2 0361 ntilde
-char241 "
-`o 501,745,23,69,-17,69 2 0362 ograve
-char242 "
-'o 501,745,23,69,-17,69 2 0363 oacute
-char243 "
-^o 501,745,23,69,-17,69 2 0364 ocircumflex
-char244 "
-~o 501,729,23,73,-17,73 2 0365 otilde
-char245 "
-:o 501,731,23,69,-17,69 2 0366 odieresis
-char246 "
-/o 501,561,34,130,41,92 0 0370 oslash
-char248 "
-`u 501,745,23,87,-22,87 2 0371 ugrave
-char249 "
-'u 501,745,23,87,-22,87 2 0372 uacute
-char250 "
-^u 501,745,23,87,-22,87 2 0373 ucircumflex
-char251 "
-:u 501,731,23,87,-22,87 2 0374 udieresis
-char252 "
-:y 456,731,219,130,19,92 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HNI b/ps/devps/HNI
deleted file mode 100644
index 3f3cbeed3..000000000
--- a/ps/devps/HNI
+++ /dev/null
@@ -1,409 +0,0 @@
-name HNI
-internalname Helvetica-Narrow-Oblique
-slant 12
-spacewidth 228
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -7
-A w -14
-A v -14
-A ' -40
-A Y -60
-A W -30
-A V -60
-A T -60
-F . -105
-F , -105
-F A -60
-L y -14
-L ' -45
-L Y -75
-L W -30
-L V -45
-L T -60
-P . -105
-P , -105
-P A -60
-R Y -30
-R W -14
-R V -14
-R T -14
-T y -60
-T w -60
-T u -60
-T ; -60
-T s -75
-T r -45
-T . -75
-T o -75
-T i 0
-T - -75
-T hy -75
-T char173 -75
-T e -75
-T , -75
-T : -60
-T c -75
-T a -75
-T O -14
-T A -60
-V y -14
-V u -14
-V ; -14
-V r -14
-V . -60
-V o -30
-V i -14
-V - -30
-V hy -30
-V char173 -30
-V e -30
-V , -60
-V : -14
-V a -30
-V A -60
-W . -30
-W i -7
-W - -14
-W hy -14
-W char173 -14
-W e -14
-W , -30
-W a -14
-W A -14
-Y v -30
-Y u -30
-Y ; -30
-Y q -45
-Y . -75
-Y p -45
-Y o -45
-Y i -14
-Y - -60
-Y hy -60
-Y char173 -60
-Y e -45
-Y , -75
-Y : -30
-Y a -60
-Y A -45
-f ' 30
-1 1 -60
-` ` -30
-` oq -30
-oq ` -30
-oq oq -30
-' s -14
-' ' -30
-r ' 30
-r . -30
-r - -14
-r hy -14
-r char173 -14
-r , -45
-v . -60
-v , -60
-w . -45
-w , -45
-y . -60
-y , -60
-charset
-ha 385,713,0,72,-44,72 2 0000 asciicircum
-ti 479,438,0,58,-63,58 0 0001 asciitilde
-vS 547,939,23,88,-23,88 2 0002 Scaron
-vZ 501,939,0,153,27,89 2 0003 Zcaron
-vs 410,740,24,89,1,89 2 0004 scaron
-vz 410,740,0,96,25,89 2 0005 zcaron
-:Y 547,907,0,172,-87,89 2 0006 Ydieresis
-tm 820,741,0,128,-120,89 2 0007 trademark
-space 228 0 0040
-! 228,729,0,120,-52,89 2 0041 exclam
-" 291,708,0,133,-96,89 2 0042 quotedbl
-# 456,698,20,126,5,89 2 0043 numbersign
-sh "
-$ 456,770,125,97,-7,89 3 0044 dollar
-Do "
-% 729,708,20,55,-60,55 2 0045 percent
-& 547,710,23,31,-18,31 2 0046 ampersand
-' 182,708,0,121,-86,89 2 0047 quoteright
-( 273,729,213,143,-43,89 3 0050 parenleft
-) 273,729,213,44,56,44 3 0051 parenright
-* 319,740,0,117,-89,89 2 0052 asterisk
-+ 479,474,10,55,-25,55 0 0053 plus
-, 228,104,150,0,5 1 0054 comma
-- 273,313,0,64,-30,64 0 0055 hyphen
-hy "
-char173 "
-. 228,104,0,0,-21 0 0056 period
-/ 228,708,21,178,60,89 2 0057 slash
-sl "
-0 456,709,23,84,-30,84 2 0060 zero
-1 456,709,0,3,-121,3 2 0061 one
-2 456,710,0,102,22,89 2 0062 two
-3 456,709,23,85,-8,85 2 0063 three
-4 456,709,0,64,-2,64 2 0064 four
-5 456,709,23,110,-8,89 2 0065 five
-6 456,709,23,96,-26,89 2 0066 six
-7 456,709,0,144,-62,89 2 0067 seven
-8 456,709,23,89,-11,89 2 0070 eight
-9 456,709,23,85,-18,85 2 0071 nine
-: 228,525,0,89,-40,89 0 0072 colon
-; 228,516,150,88,-14,88 1 0073 semicolon
-< 479,474,10,92,-21,89 0 0074 less
-= 479,352,0,70,-11,70 0 0075 equal
-> 479,474,10,60,11,60 0 0076 greater
-? 456,738,0,110,-101,89 2 0077 question
-@ 832,737,146,68,-15,68 3 0100 at
-at "
-A 547,729,0,38,36,38 2 0101 A
-B 547,729,0,87,-15,87 2 0102 B
-C 592,741,23,89,-42,89 2 0103 C
-D 592,729,0,80,-23,80 2 0104 D
-E 547,729,0,119,-24,89 2 0105 E
-F 501,729,0,151,-24,89 2 0106 F
-G 638,741,23,75,-39,75 2 0107 G
-H 592,729,0,113,-18,89 2 0110 H
-I 228,729,0,108,-32,89 2 0111 I
-J 410,729,26,116,11,89 2 0112 J
-K 547,729,0,170,-15,89 2 0113 K
-L 456,729,0,46,-16,46 2 0114 L
-M 683,729,0,118,-11,89 2 0115 M
-N 592,729,0,115,-12,89 2 0116 N
-O 638,741,23,91,-35,89 2 0117 O
-P 547,730,0,104,-25,89 2 0120 P
-Q 638,741,59,91,-35,89 2 0121 Q
-R 592,729,0,90,-26,89 2 0122 R
-S 547,741,23,88,-23,88 2 0123 S
-T 501,729,0,162,-80,89 2 0124 T
-U 592,729,23,114,-52,89 2 0125 U
-V 547,729,0,159,-102,89 2 0126 V
-W 774,729,0,165,-95,89 2 0127 W
-X 547,729,0,154,32,89 2 0130 X
-Y 547,729,0,172,-87,89 2 0131 Y
-Z 501,729,0,153,27,89 2 0132 Z
-[ 228,729,214,154,35,89 3 0133 bracketleft
-lB "
-\ 228,729,20,51,-71,51 2 0134 backslash
-rs "
-] 228,729,215,121,68,89 3 0135 bracketright
-rB "
-a^ 273,741,0,131,-69,89 2 0136 circumflex
-^ "
-_ 456,0,175,46,99,46 1 0137 underscore
-` 182,708,0,121,-84,89 2 0140 quoteleft
-oq "
-a 456,540,23,60,-3,60 0 0141 a
-b 456,729,23,76,6,76 2 0142 b
-c 410,540,23,94,-12,89 0 0143 c
-d 456,729,23,127,-10,89 2 0144 d
-e 456,541,23,69,-19,69 0 0145 e
-f 228,733,0,161,-23,89 2 0146 f
-g 456,540,220,86,23,86 1 0147 g
-h 456,729,0,65,-7,65 2 0150 h
-i 182,729,0,118,-4,89 2 0151 i
-j 182,729,220,121,102,89 3 0152 j
-k 410,729,0,119,2,89 2 0153 k
-l 182,729,0,120,-6,89 2 0154 l
-m 683,540,0,65,-8,65 0 0155 m
-n 456,540,0,64,-7,64 0 0156 n
-o 456,540,23,66,-16,66 0 0157 o
-p 456,540,219,75,44,75 1 0160 p
-q 456,540,219,91,-8,89 1 0161 q
-r 273,540,0,135,-7,89 0 0162 r
-s 410,540,24,66,1,66 0 0163 s
-t 228,667,24,122,-30,89 2 0164 t
-u 456,525,23,80,-22,80 0 0165 u
-v 410,525,0,130,-49,89 0 0166 v
-w 592,525,0,131,-47,89 0 0167 w
-x 410,525,0,118,36,89 0 0170 x
-y 410,525,219,123,44,89 1 0171 y
-z 410,525,0,96,25,89 0 0172 z
-lC 274,731,214,129,-24,89 3 0173 braceleft
-{ "
-ba 213,729,215,95,6,89 3 0174 bar
-| "
-rC 274,731,214,42,64,42 3 0175 braceright
-} "
-a~ 273,716,0,164,-57,89 2 0176 tilde
-~ "
---- 182,103,129,16,20,16 1 0200 quotesinglbase
-Fo 456,438,0,43,-70,43 0 0201 guillemotleft
-char171 "
-Fc 456,438,0,19,-49,19 0 0202 guillemotright
-char187 "
-bu 287,470,0,71,-49,71 0 0203 bullet
---- 456,742,214,164,77,89 3 0204 florin
-f/ 137,708,21,312,196,89 2 0205 fraction
-%0 820,740,20,70,-26,70 2 0206 perthousand
-dg 456,710,178,103,-55,89 3 0207 dagger
-dd 456,710,178,102,8,89 3 0210 daggerdbl
-en 456,313,0,109,12,89 0 0211 endash
-em 820,313,0,105,16,89 0 0212 emdash
-fi 410,733,0,125,-18,89 2 0214 fi
-fl 410,733,0,120,-22,89 2 0215 fl
-.i 228,525,0,59,-27,59 0 0220 dotlessi
-ga 273,740,0,70,-97,70 2 0222 grave
-a" 273,740,0,191,-24,89 2 0223 hungarumlaut
-a. 273,709,0,80,-149,80 2 0224 dotaccent
-ab 273,729,0,163,-85,89 2 0225 breve
-ah 273,740,0,157,-94,89 2 0226 caron
-ao 273,741,0,101,-127,89 2 0227 ring
-ho 273,15,189,0,21 1 0230 ogonek
-lq 273,708,0,145,-70,89 2 0231 quotedblleft
-rq 273,708,0,148,-73,89 2 0232 quotedblright
-oe 774,540,22,68,-19,68 0 0233 oe
-/l 182,729,0,123,-1,89 2 0234 lslash
---- 273,103,129,41,34,41 1 0235 quotedblbase
-OE 820,739,20,139,-32,89 2 0236 OE
-/L 456,729,0,61,-1,61 2 0237 Lslash
-r! 273,525,214,36,-12,36 1 0241 exclamdown
-char161 "
-ct 456,628,120,74,-29,74 3 0242 cent
-char162 "
-Po 456,726,21,109,14,89 2 0243 sterling
-char163 "
-Cs 456,554,0,80,-40,80 0 0244 currency
-char164 "
-Ye 456,710,0,165,-32,89 2 0245 yen
-char165 "
-sc 456,729,215,77,-1,77 3 0247 section
-char167 "
-ad 273,708,0,144,-80,89 2 0250 dieresis
-char168 "
-co 604,741,23,132,5,89 2 0251 copyright
-char169 "
-Of 303,740,0,109,-38,89 2 0252 ordfeminine
-char170 "
-fo 273,436,0,53,-65,53 0 0253 guilsinglleft
-no 479,352,0,79,-31,79 0 0254 logicalnot
-char172 "
-\- 479,270,0,64,-17,64 0 0255 minus
-rg 604,741,23,132,5,89 2 0256 registered
-char174 "
-a- 273,694,0,146,-81,89 2 0257 macron
-char175 "
-aa 273,740,0,153,-129,89 2 0264 acute
-char180 "
-ps 440,729,178,165,-69,89 3 0266 paragraph
-char182 "
-char183 228,442,0,62,-86,62 0 0267 periodcentered
-ac 273,0,214,0,49 1 0270 cedilla
-char184 "
-Om 299,741,0,122,-44,89 2 0272 ordmasculine
-char186 "
-fc 273,436,0,29,-39,29 0 0273 guilsinglright
-r? 501,525,213,0,-20 1 0277 questiondown
-char191 "
-`A 547,939,0,38,36,38 2 0300 Agrave
-char192 "
-'A 547,939,0,51,36,51 2 0301 Aacute
-char193 "
-^A 547,940,0,38,36,38 2 0302 Acircumflex
-char194 "
-~A 547,915,0,62,36,62 2 0303 Atilde
-char195 "
-:A 547,907,0,42,36,42 2 0304 Adieresis
-char196 "
-oA 547,940,0,38,36,38 2 0305 Aring
-char197 "
-AE 820,729,0,121,41,89 2 0306 AE
-char198 "
-,C 592,741,214,89,-42,89 3 0307 Ccedilla
-char199 "
-`E 547,939,0,119,-24,89 2 0310 Egrave
-char200 "
-'E 547,939,0,119,-24,89 2 0311 Eacute
-char201 "
-^E 547,940,0,119,-24,89 2 0312 Ecircumflex
-char202 "
-:E 547,907,0,119,-24,89 2 0313 Edieresis
-char203 "
-`I 228,939,0,132,-32,89 2 0314 Igrave
-char204 "
-'I 228,939,0,215,-32,89 2 0315 Iacute
-char205 "
-^I 228,940,0,193,-32,89 2 0316 Icircumflex
-char206 "
-:I 228,907,0,206,-32,89 2 0317 Idieresis
-char207 "
-~N 592,915,0,115,-12,89 2 0321 Ntilde
-char209 "
-`O 638,939,23,91,-35,89 2 0322 Ograve
-char210 "
-'O 638,939,23,91,-35,89 2 0323 Oacute
-char211 "
-^O 638,940,23,91,-35,89 2 0324 Ocircumflex
-char212 "
-~O 638,915,23,91,-35,89 2 0325 Otilde
-char213 "
-:O 638,907,23,91,-35,89 2 0326 Odieresis
-char214 "
-/O 638,742,23,122,24,89 2 0330 Oslash
-char216 "
-`U 592,939,23,114,-52,89 2 0331 Ugrave
-char217 "
-'U 592,939,23,114,-52,89 2 0332 Uacute
-char218 "
-^U 592,940,23,114,-52,89 2 0333 Ucircumflex
-char219 "
-:U 592,907,23,114,-52,89 2 0334 Udieresis
-char220 "
-ss 501,729,20,86,-53,86 2 0337 germandbls
-char223 "
-`a 456,740,23,60,-3,60 2 0340 agrave
-char224 "
-'a 456,740,23,62,-3,62 2 0341 aacute
-char225 "
-^a 456,741,23,60,-3,60 2 0342 acircumflex
-char226 "
-~a 456,716,23,73,-3,73 2 0343 atilde
-char227 "
-:a 456,708,23,60,-3,60 2 0344 adieresis
-char228 "
-oa 456,741,23,60,-3,60 2 0345 aring
-char229 "
-ae 729,546,20,71,2,71 0 0346 ae
-char230 "
-,c 410,540,214,94,-12,89 1 0347 ccedilla
-char231 "
-`e 456,740,23,69,-19,69 2 0350 egrave
-char232 "
-'e 456,740,23,69,-19,69 2 0351 eacute
-char233 "
-^e 456,741,23,69,-19,69 2 0352 ecircumflex
-char234 "
-:e 456,708,23,69,-19,69 2 0353 edieresis
-char235 "
-`i 228,740,0,93,-27,89 2 0354 igrave
-char236 "
-'i 228,740,0,176,-27,89 2 0355 iacute
-char237 "
-^i 228,741,0,154,-27,89 2 0356 icircumflex
-char238 "
-:i 228,708,0,167,-27,89 2 0357 idieresis
-char239 "
-~n 456,716,0,78,-7,78 2 0361 ntilde
-char241 "
-`o 456,740,23,66,-16,66 2 0362 ograve
-char242 "
-'o 456,740,23,66,-16,66 2 0363 oacute
-char243 "
-^o 456,741,23,66,-16,66 2 0364 ocircumflex
-char244 "
-~o 456,716,23,73,-16,73 2 0365 otilde
-char245 "
-:o 456,708,23,66,-16,66 2 0366 odieresis
-char246 "
-/o 501,548,27,73,35,73 0 0370 oslash
-char248 "
-`u 456,740,23,80,-22,80 2 0371 ugrave
-char249 "
-'u 456,740,23,80,-22,80 2 0372 uacute
-char250 "
-^u 456,741,23,80,-22,80 2 0373 ucircumflex
-char251 "
-:u 456,708,23,80,-22,80 2 0374 udieresis
-char252 "
-:y 410,708,219,123,44,89 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HNR b/ps/devps/HNR
deleted file mode 100644
index 1b42a3bad..000000000
--- a/ps/devps/HNR
+++ /dev/null
@@ -1,412 +0,0 @@
-name HNR
-internalname Helvetica-Narrow
-spacewidth 228
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -14
-A w -14
-A v -14
-A ' -60
-A Y -60
-A W -30
-A V -60
-A T -60
-F . -91
-F , -91
-F A -45
-L y -30
-L ' -45
-L Y -60
-L W -60
-L V -60
-L T -60
-P . -105
-P , -105
-P A -60
-R Y -14
-R W -14
-R V -14
-R T -14
-T y -45
-T w -45
-T u -30
-T ; -91
-T s -70
-T r -30
-T . -91
-T o -91
-T i -18
-T - -45
-T hy -45
-T char173 -45
-T e -91
-T , -91
-T : -91
-T c -91
-T a -91
-T O -14
-T A -60
-V y -30
-V u -30
-V ; -30
-V r -30
-V . -75
-V o -45
-V i -14
-V - -45
-V hy -45
-V char173 -45
-V e -45
-V , -75
-V : -30
-V a -60
-V A -60
-W y -7
-W u -14
-W ; -14
-W r -14
-W . -45
-W o -14
-W i 0
-W - -14
-W hy -14
-W char173 -14
-W e -14
-W , -45
-W : -14
-W a -30
-W A -30
-Y v -45
-Y u -45
-Y ; -53
-Y q -75
-Y . -105
-Y p -60
-Y o -75
-Y i -30
-Y - -75
-Y hy -75
-Y char173 -75
-Y e -75
-Y , -105
-Y : -45
-Y a -60
-Y A -60
-f ' 14
-f f -14
-1 1 -60
-` ` -14
-` oq -14
-oq ` -14
-oq oq -14
-' s -14
-' ' -14
-r ' 30
-r . -45
-r , -45
-v . -60
-v , -60
-w . -45
-w , -45
-y . -60
-y , -60
-charset
-ha 385,713 2 0000 asciicircum
-ti 479,438 0 0001 asciitilde
-vS 547,939,23 2 0002 Scaron
-vZ 501,939 2 0003 Zcaron
-vs 410,740,24 2 0004 scaron
-vz 410,740 2 0005 zcaron
-:Y 547,907 2 0006 Ydieresis
-tm 820,741 2 0007 trademark
-space 228 0 0040
-! 228,729 2 0041 exclam
-" 291,708 2 0042 quotedbl
-# 456,698,20 2 0043 numbersign
-sh "
-$ 456,770,125 3 0044 dollar
-Do "
-% 729,708,20 2 0045 percent
-& 547,710,23 2 0046 ampersand
-' 182,708 2 0047 quoteright
-( 273,729,213 3 0050 parenleft
-) 273,729,213 3 0051 parenright
-* 319,740 2 0052 asterisk
-+ 479,474,10 0 0053 plus
-, 228,104,150 1 0054 comma
-- 273,313 0 0055 hyphen
-hy "
-char173 "
-. 228,104 0 0056 period
-/ 228,708,21 2 0057 slash
-sl "
-0 456,709,23 2 0060 zero
-1 456,709 2 0061 one
-2 456,710 2 0062 two
-3 456,709,23 2 0063 three
-4 456,709 2 0064 four
-5 456,709,23 2 0065 five
-6 456,709,23 2 0066 six
-7 456,709 2 0067 seven
-8 456,709,23 2 0070 eight
-9 456,709,23 2 0071 nine
-: 228,525 0 0072 colon
-; 228,516,150 1 0073 semicolon
-< 479,474,10 0 0074 less
-= 479,352 0 0075 equal
-> 479,474,10 0 0076 greater
-? 456,738 2 0077 question
-@ 832,737,146 3 0100 at
-at "
-A 547,729 2 0101 A
-B 547,729 2 0102 B
-C 592,741,23 2 0103 C
-D 592,729 2 0104 D
-E 547,729 2 0105 E
-F 501,729 2 0106 F
-G 638,741,23 2 0107 G
-H 592,729 2 0110 H
-I 228,729 2 0111 I
-J 410,729,26 2 0112 J
-K 547,729 2 0113 K
-L 456,729 2 0114 L
-M 683,729 2 0115 M
-N 592,729 2 0116 N
-O 638,741,23 2 0117 O
-P 547,730 2 0120 P
-Q 638,741,59 2 0121 Q
-R 592,729 2 0122 R
-S 547,741,23 2 0123 S
-T 501,729 2 0124 T
-U 592,729,23 2 0125 U
-V 547,729 2 0126 V
-W 774,729 2 0127 W
-X 547,729 2 0130 X
-Y 547,729 2 0131 Y
-Z 501,729 2 0132 Z
-[ 228,729,214 3 0133 bracketleft
-lB "
-\ 228,729,20 2 0134 backslash
-rs "
-] 228,729,215 3 0135 bracketright
-rB "
-a^ 273,741 2 0136 circumflex
-^ "
-_ 456,0,175 1 0137 underscore
-` 182,708 2 0140 quoteleft
-oq "
-a 456,540,23 0 0141 a
-b 456,729,23 2 0142 b
-c 410,540,23 0 0143 c
-d 456,729,23 2 0144 d
-e 456,541,23 0 0145 e
-f 228,733 2 0146 f
-g 456,540,220 1 0147 g
-h 456,729 2 0150 h
-i 182,729 2 0151 i
-j 182,729,220 3 0152 j
-k 410,729 2 0153 k
-l 182,729 2 0154 l
-m 683,540 0 0155 m
-n 456,540 0 0156 n
-o 456,540,23 0 0157 o
-p 456,540,219 1 0160 p
-q 456,540,219 1 0161 q
-r 273,540 0 0162 r
-s 410,540,24 0 0163 s
-t 228,667,24 2 0164 t
-u 456,525,23 0 0165 u
-v 410,525 0 0166 v
-w 592,525 0 0167 w
-x 410,525 0 0170 x
-y 410,525,219 1 0171 y
-z 410,525 0 0172 z
-lC 274,731,214 3 0173 braceleft
-{ "
-ba 213,729,215 3 0174 bar
-| "
-rC 274,731,214 3 0175 braceright
-} "
-a~ 273,716 2 0176 tilde
-~ "
---- 182,103,129 1 0200 quotesinglbase
-Fo 456,438 0 0201 guillemotleft
-char171 "
-Fc 456,438 0 0202 guillemotright
-char187 "
-bu 287,470 0 0203 bullet
---- 456,742,214 3 0204 florin
-f/ 137,708,21 2 0205 fraction
-%0 820,740,20 2 0206 perthousand
-dg 456,710,178 3 0207 dagger
-dd 456,710,178 3 0210 daggerdbl
-en 456,313 0 0211 endash
-em 820,313 0 0212 emdash
-fi 410,733 2 0214 fi
-fl 410,733 2 0215 fl
-.i 228,525 0 0220 dotlessi
-ga 273,740 2 0222 grave
-a" 273,740 2 0223 hungarumlaut
-a. 273,709 2 0224 dotaccent
-ab 273,729 2 0225 breve
-ah 273,740 2 0226 caron
-ao 273,741 2 0227 ring
-ho 273,15,189 1 0230 ogonek
-lq 273,708 2 0231 quotedblleft
-rq 273,708 2 0232 quotedblright
-oe 774,540,22 0 0233 oe
-/l 182,729 2 0234 lslash
---- 273,103,129 1 0235 quotedblbase
-OE 820,739,20 2 0236 OE
-/L 456,729 2 0237 Lslash
-r! 273,525,214 1 0241 exclamdown
-char161 "
-ct 456,628,120 3 0242 cent
-char162 "
-Po 456,726,21 2 0243 sterling
-char163 "
-Cs 456,554 0 0244 currency
-char164 "
-Ye 456,710 2 0245 yen
-char165 "
-sc 456,729,215 3 0247 section
-char167 "
-ad 273,708 2 0250 dieresis
-char168 "
-co 604,741,23 2 0251 copyright
-char169 "
-Of 303,740 2 0252 ordfeminine
-char170 "
-fo 273,436 0 0253 guilsinglleft
-no 479,352 0 0254 logicalnot
-char172 "
-\- 479,270 0 0255 minus
-rg 604,741,23 2 0256 registered
-char174 "
-a- 273,694 2 0257 macron
-char175 "
-aa 273,740 2 0264 acute
-char180 "
-ps 440,729,178 3 0266 paragraph
-char182 "
-char183 228,442 0 0267 periodcentered
-ac 273,0,214 1 0270 cedilla
-char184 "
-Om 299,741 2 0272 ordmasculine
-char186 "
-fc 273,436 0 0273 guilsinglright
-r? 501,525,213 1 0277 questiondown
-char191 "
-`A 547,939 2 0300 Agrave
-char192 "
-'A 547,939 2 0301 Aacute
-char193 "
-^A 547,940 2 0302 Acircumflex
-char194 "
-~A 547,915 2 0303 Atilde
-char195 "
-:A 547,907 2 0304 Adieresis
-char196 "
-oA 547,940 2 0305 Aring
-char197 "
-AE 820,729 2 0306 AE
-char198 "
-,C 592,741,214 3 0307 Ccedilla
-char199 "
-`E 547,939 2 0310 Egrave
-char200 "
-'E 547,939 2 0311 Eacute
-char201 "
-^E 547,940 2 0312 Ecircumflex
-char202 "
-:E 547,907 2 0313 Edieresis
-char203 "
-`I 228,939 2 0314 Igrave
-char204 "
-'I 228,939 2 0315 Iacute
-char205 "
-^I 228,940 2 0316 Icircumflex
-char206 "
-:I 228,907 2 0317 Idieresis
-char207 "
-~N 592,915 2 0321 Ntilde
-char209 "
-`O 638,939,23 2 0322 Ograve
-char210 "
-'O 638,939,23 2 0323 Oacute
-char211 "
-^O 638,940,23 2 0324 Ocircumflex
-char212 "
-~O 638,915,23 2 0325 Otilde
-char213 "
-:O 638,907,23 2 0326 Odieresis
-char214 "
-/O 638,742,23 2 0330 Oslash
-char216 "
-`U 592,939,23 2 0331 Ugrave
-char217 "
-'U 592,939,23 2 0332 Uacute
-char218 "
-^U 592,940,23 2 0333 Ucircumflex
-char219 "
-:U 592,907,23 2 0334 Udieresis
-char220 "
-ss 501,729,20 2 0337 germandbls
-char223 "
-`a 456,740,23 2 0340 agrave
-char224 "
-'a 456,740,23 2 0341 aacute
-char225 "
-^a 456,741,23 2 0342 acircumflex
-char226 "
-~a 456,716,23 2 0343 atilde
-char227 "
-:a 456,708,23 2 0344 adieresis
-char228 "
-oa 456,741,23 2 0345 aring
-char229 "
-ae 729,546,20 0 0346 ae
-char230 "
-,c 410,540,214 1 0347 ccedilla
-char231 "
-`e 456,740,23 2 0350 egrave
-char232 "
-'e 456,740,23 2 0351 eacute
-char233 "
-^e 456,741,23 2 0352 ecircumflex
-char234 "
-:e 456,708,23 2 0353 edieresis
-char235 "
-`i 228,740 2 0354 igrave
-char236 "
-'i 228,740 2 0355 iacute
-char237 "
-^i 228,741 2 0356 icircumflex
-char238 "
-:i 228,708 2 0357 idieresis
-char239 "
-~n 456,716 2 0361 ntilde
-char241 "
-`o 456,740,23 2 0362 ograve
-char242 "
-'o 456,740,23 2 0363 oacute
-char243 "
-^o 456,741,23 2 0364 ocircumflex
-char244 "
-~o 456,716,23 2 0365 otilde
-char245 "
-:o 456,708,23 2 0366 odieresis
-char246 "
-/o 501,548,27 0 0370 oslash
-char248 "
-`u 456,740,23 2 0371 ugrave
-char249 "
-'u 456,740,23 2 0372 uacute
-char250 "
-^u 456,741,23 2 0373 ucircumflex
-char251 "
-:u 456,708,23 2 0374 udieresis
-char252 "
-:y 410,708,219 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/HR b/ps/devps/HR
deleted file mode 100644
index 749ed1746..000000000
--- a/ps/devps/HR
+++ /dev/null
@@ -1,412 +0,0 @@
-name HR
-internalname Helvetica
-spacewidth 278
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -18
-A w -18
-A v -18
-A ' -74
-A Y -74
-A W -37
-A V -74
-A T -74
-F . -111
-F , -111
-F A -55
-L y -37
-L ' -55
-L Y -74
-L W -74
-L V -74
-L T -74
-P . -129
-P , -129
-P A -74
-R Y -18
-R W -18
-R V -18
-R T -18
-T y -55
-T w -55
-T u -37
-T ; -111
-T s -111
-T r -37
-T . -111
-T o -111
-T i -37
-T - -55
-T hy -55
-T char173 -55
-T e -111
-T , -111
-T : -111
-T c -111
-T a -111
-T O -18
-T A -74
-V y -37
-V u -37
-V ; -37
-V r -37
-V . -92
-V o -55
-V i -18
-V - -55
-V hy -55
-V char173 -55
-V e -55
-V , -92
-V : -37
-V a -74
-V A -74
-W y -9
-W u -18
-W ; -18
-W r -18
-W . -55
-W o -18
-W i 0
-W - -18
-W hy -18
-W char173 -18
-W e -18
-W , -55
-W : -18
-W a -37
-W A -37
-Y v -55
-Y u -55
-Y ; -65
-Y q -92
-Y . -129
-Y p -74
-Y o -92
-Y i -37
-Y - -92
-Y hy -92
-Y char173 -92
-Y e -92
-Y , -129
-Y : -55
-Y a -74
-Y A -74
-f ' 18
-f f -18
-1 1 -74
-` ` -18
-` oq -18
-oq ` -18
-oq oq -18
-' s -18
-' ' -18
-r ' 37
-r . -55
-r , -55
-v . -74
-v , -74
-w . -55
-w , -55
-y . -74
-y , -74
-charset
-ha 469,713 2 0000 asciicircum
-ti 584,438 0 0001 asciitilde
-vS 667,939,23 2 0002 Scaron
-vZ 611,939 2 0003 Zcaron
-vs 500,740,24 2 0004 scaron
-vz 500,740 2 0005 zcaron
-:Y 667,907 2 0006 Ydieresis
-tm 1000,741 2 0007 trademark
-space 278 0 0040
-! 278,729 2 0041 exclam
-" 355,708 2 0042 quotedbl
-# 556,698,20 2 0043 numbersign
-sh "
-$ 556,770,125 3 0044 dollar
-Do "
-% 889,708,20 2 0045 percent
-& 667,710,23 2 0046 ampersand
-' 222,708 2 0047 quoteright
-( 333,729,213 3 0050 parenleft
-) 333,729,213 3 0051 parenright
-* 389,740 2 0052 asterisk
-+ 584,474,10 0 0053 plus
-, 278,104,150 1 0054 comma
-- 333,313 0 0055 hyphen
-hy "
-char173 "
-. 278,104 0 0056 period
-/ 278,708,21 2 0057 slash
-sl "
-0 556,709,23 2 0060 zero
-1 556,709 2 0061 one
-2 556,710 2 0062 two
-3 556,709,23 2 0063 three
-4 556,709 2 0064 four
-5 556,709,23 2 0065 five
-6 556,709,23 2 0066 six
-7 556,709 2 0067 seven
-8 556,709,23 2 0070 eight
-9 556,709,23 2 0071 nine
-: 278,525 0 0072 colon
-; 278,516,150 1 0073 semicolon
-< 584,474,10 0 0074 less
-= 584,352 0 0075 equal
-> 584,474,10 0 0076 greater
-? 556,738 2 0077 question
-@ 1015,737,146 3 0100 at
-at "
-A 667,729 2 0101 A
-B 667,729 2 0102 B
-C 722,741,23 2 0103 C
-D 722,729 2 0104 D
-E 667,729 2 0105 E
-F 611,729 2 0106 F
-G 778,741,23 2 0107 G
-H 722,729 2 0110 H
-I 278,729 2 0111 I
-J 500,729,26 2 0112 J
-K 667,729 2 0113 K
-L 556,729 2 0114 L
-M 833,729 2 0115 M
-N 722,729 2 0116 N
-O 778,741,23 2 0117 O
-P 667,730 2 0120 P
-Q 778,741,59 2 0121 Q
-R 722,729 2 0122 R
-S 667,741,23 2 0123 S
-T 611,729 2 0124 T
-U 722,729,23 2 0125 U
-V 667,729 2 0126 V
-W 944,729 2 0127 W
-X 667,729 2 0130 X
-Y 667,729 2 0131 Y
-Z 611,729 2 0132 Z
-[ 278,729,214 3 0133 bracketleft
-lB "
-\ 278,729,20 2 0134 backslash
-rs "
-] 278,729,215 3 0135 bracketright
-rB "
-a^ 333,741 2 0136 circumflex
-^ "
-_ 556,0,175 1 0137 underscore
-` 222,708 2 0140 quoteleft
-oq "
-a 556,540,23 0 0141 a
-b 556,729,23 2 0142 b
-c 500,540,23 0 0143 c
-d 556,729,23 2 0144 d
-e 556,541,23 0 0145 e
-f 278,733 2 0146 f
-g 556,540,220 1 0147 g
-h 556,729 2 0150 h
-i 222,729 2 0151 i
-j 222,729,220 3 0152 j
-k 500,729 2 0153 k
-l 222,729 2 0154 l
-m 833,540 0 0155 m
-n 556,540 0 0156 n
-o 556,540,23 0 0157 o
-p 556,540,219 1 0160 p
-q 556,540,219 1 0161 q
-r 333,540 0 0162 r
-s 500,540,24 0 0163 s
-t 278,667,24 2 0164 t
-u 556,525,23 0 0165 u
-v 500,525 0 0166 v
-w 722,525 0 0167 w
-x 500,525 0 0170 x
-y 500,525,219 1 0171 y
-z 500,525 0 0172 z
-lC 334,731,214 3 0173 braceleft
-{ "
-ba 260,729,215 3 0174 bar
-| "
-rC 334,731,214 3 0175 braceright
-} "
-a~ 333,716 2 0176 tilde
-~ "
---- 222,103,129 1 0200 quotesinglbase
-Fo 556,438 0 0201 guillemotleft
-char171 "
-Fc 556,438 0 0202 guillemotright
-char187 "
-bu 350,470 0 0203 bullet
---- 556,742,214 3 0204 florin
-f/ 167,708,21 2 0205 fraction
-%0 1000,740,20 2 0206 perthousand
-dg 556,710,178 3 0207 dagger
-dd 556,710,178 3 0210 daggerdbl
-en 556,313 0 0211 endash
-em 1000,313 0 0212 emdash
-fi 500,733 2 0214 fi
-fl 500,733 2 0215 fl
-.i 278,525 0 0220 dotlessi
-ga 333,740 2 0222 grave
-a" 333,740 2 0223 hungarumlaut
-a. 333,709 2 0224 dotaccent
-ab 333,729 2 0225 breve
-ah 333,740 2 0226 caron
-ao 333,741 2 0227 ring
-ho 333,15,189 1 0230 ogonek
-lq 333,708 2 0231 quotedblleft
-rq 333,708 2 0232 quotedblright
-oe 944,540,22 0 0233 oe
-/l 222,729 2 0234 lslash
---- 333,103,129 1 0235 quotedblbase
-OE 1000,739,20 2 0236 OE
-/L 556,729 2 0237 Lslash
-r! 333,525,214 1 0241 exclamdown
-char161 "
-ct 556,628,120 3 0242 cent
-char162 "
-Po 556,726,21 2 0243 sterling
-char163 "
-Cs 556,554 0 0244 currency
-char164 "
-Ye 556,710 2 0245 yen
-char165 "
-sc 556,729,215 3 0247 section
-char167 "
-ad 333,708 2 0250 dieresis
-char168 "
-co 737,741,23 2 0251 copyright
-char169 "
-Of 370,740 2 0252 ordfeminine
-char170 "
-fo 333,436 0 0253 guilsinglleft
-no 584,352 0 0254 logicalnot
-char172 "
-\- 584,270 0 0255 minus
-rg 737,741,23 2 0256 registered
-char174 "
-a- 333,694 2 0257 macron
-char175 "
-aa 333,740 2 0264 acute
-char180 "
-ps 537,729,178 3 0266 paragraph
-char182 "
-char183 278,442 0 0267 periodcentered
-ac 333,0,214 1 0270 cedilla
-char184 "
-Om 365,741 2 0272 ordmasculine
-char186 "
-fc 333,436 0 0273 guilsinglright
-r? 611,525,213 1 0277 questiondown
-char191 "
-`A 667,939 2 0300 Agrave
-char192 "
-'A 667,939 2 0301 Aacute
-char193 "
-^A 667,940 2 0302 Acircumflex
-char194 "
-~A 667,915 2 0303 Atilde
-char195 "
-:A 667,907 2 0304 Adieresis
-char196 "
-oA 667,940 2 0305 Aring
-char197 "
-AE 1000,729 2 0306 AE
-char198 "
-,C 722,741,214 3 0307 Ccedilla
-char199 "
-`E 667,939 2 0310 Egrave
-char200 "
-'E 667,939 2 0311 Eacute
-char201 "
-^E 667,940 2 0312 Ecircumflex
-char202 "
-:E 667,907 2 0313 Edieresis
-char203 "
-`I 278,939 2 0314 Igrave
-char204 "
-'I 278,939 2 0315 Iacute
-char205 "
-^I 278,940 2 0316 Icircumflex
-char206 "
-:I 278,907 2 0317 Idieresis
-char207 "
-~N 722,915 2 0321 Ntilde
-char209 "
-`O 778,939,23 2 0322 Ograve
-char210 "
-'O 778,939,23 2 0323 Oacute
-char211 "
-^O 778,940,23 2 0324 Ocircumflex
-char212 "
-~O 778,915,23 2 0325 Otilde
-char213 "
-:O 778,907,23 2 0326 Odieresis
-char214 "
-/O 778,742,23 2 0330 Oslash
-char216 "
-`U 722,939,23 2 0331 Ugrave
-char217 "
-'U 722,939,23 2 0332 Uacute
-char218 "
-^U 722,940,23 2 0333 Ucircumflex
-char219 "
-:U 722,907,23 2 0334 Udieresis
-char220 "
-ss 611,729,20 2 0337 germandbls
-char223 "
-`a 556,740,23 2 0340 agrave
-char224 "
-'a 556,740,23 2 0341 aacute
-char225 "
-^a 556,741,23 2 0342 acircumflex
-char226 "
-~a 556,716,23 2 0343 atilde
-char227 "
-:a 556,708,23 2 0344 adieresis
-char228 "
-oa 556,741,23 2 0345 aring
-char229 "
-ae 889,546,20 0 0346 ae
-char230 "
-,c 500,540,214 1 0347 ccedilla
-char231 "
-`e 556,740,23 2 0350 egrave
-char232 "
-'e 556,740,23 2 0351 eacute
-char233 "
-^e 556,741,23 2 0352 ecircumflex
-char234 "
-:e 556,708,23 2 0353 edieresis
-char235 "
-`i 278,740 2 0354 igrave
-char236 "
-'i 278,740 2 0355 iacute
-char237 "
-^i 278,741 2 0356 icircumflex
-char238 "
-:i 278,708 2 0357 idieresis
-char239 "
-~n 556,716 2 0361 ntilde
-char241 "
-`o 556,740,23 2 0362 ograve
-char242 "
-'o 556,740,23 2 0363 oacute
-char243 "
-^o 556,741,23 2 0364 ocircumflex
-char244 "
-~o 556,716,23 2 0365 otilde
-char245 "
-:o 556,708,23 2 0366 odieresis
-char246 "
-/o 611,548,27 0 0370 oslash
-char248 "
-`u 556,740,23 2 0371 ugrave
-char249 "
-'u 556,740,23 2 0372 uacute
-char250 "
-^u 556,741,23 2 0373 ucircumflex
-char251 "
-:u 556,708,23 2 0374 udieresis
-char252 "
-:y 500,708,219 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/Makefile b/ps/devps/Makefile
deleted file mode 100644
index ce184e1a4..000000000
--- a/ps/devps/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-#PAGE=letter
-PAGE=A4
-BINDIR=/usr/local/bin
-FONTDIR=/usr/local/lib/groff/font
-DEVICEDIR=$(FONTDIR)/devps
-FONTS = 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 S SS ZD ZDR
-
-DOWNLOAD=symbolsl.ps zapfdr.ps
-
-DEVICEFILES=$(FONTS) $(DOWNLOAD) text.enc prologue eqnchar download textmap
-
-all: $(DEVICEFILES)
-
-install.nobin: $(DEVICEFILES)
- -[ -d $(FONTDIR) ] || mkdir $(FONTDIR)
- -[ -d $(DEVICEDIR) ] || mkdir $(DEVICEDIR)
- -cd $(DEVICEDIR); rm -f $(DEVICEFILES) DESC
- cp $(DEVICEFILES) $(DEVICEDIR)
- cp DESC-$(PAGE) $(DEVICEDIR)/DESC
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/afmtodit
- cp afmtodit $(BINDIR)
- chmod +x $(BINDIR)/afmtodit
-
-install.bin:
-
-install: install.bin install.nobin
-
-clean:
-
-realclean: clean
-
-distclean: clean
-
-fonts: FORCE DESC
- $(MAKE) -f FontMakefile
-TAGS:
-
-FORCE:
diff --git a/ps/devps/PB b/ps/devps/PB
deleted file mode 100644
index 4b5dee7ba..000000000
--- a/ps/devps/PB
+++ /dev/null
@@ -1,416 +0,0 @@
-name PB
-internalname Palatino-Bold
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -70
-A w -70
-A v -70
-A ' -92
-A Y -111
-A W -90
-A V -129
-A T -92
-F . -111
-F , -111
-F A -55
-L y -74
-L ' -74
-L Y -92
-L W -92
-L V -92
-L T -74
-P . -129
-P , -129
-P A -74
-R y -30
-R Y -55
-R W -37
-R V -74
-R T -55
-T y -90
-T w -90
-T u -129
-T ; -74
-T s -111
-T r -111
-T . -92
-T o -111
-T i -55
-T - -92
-T hy -92
-T char173 -92
-T e -111
-T , -92
-T : -74
-T c -129
-T a -111
-T A -92
-V y -90
-V u -92
-V ; -74
-V r -111
-V . -129
-V o -111
-V i -55
-V - -92
-V hy -92
-V char173 -92
-V e -111
-V , -129
-V : -74
-V a -111
-V A -129
-W y -74
-W u -74
-W ; -37
-W r -74
-W . 92
-W o -74
-W i -37
-W - -37
-W hy -37
-W char173 -37
-W e -74
-W , -92
-W : -37
-W a -74
-W A -90
-Y v -74
-Y u -74
-Y ; -55
-Y q -92
-Y . -74
-Y p -74
-Y o -74
-Y i -55
-Y - -74
-Y hy -74
-Y char173 -74
-Y e -74
-Y , -74
-Y : -55
-Y a -74
-Y A -55
-f ' 37
-f f -18
-1 1 -37
-` ` -55
-` oq -55
-oq ` -55
-oq oq -55
-' t -18
-' s -55
-' ' -55
-r ' 55
-r . -55
-r - -18
-r hy -18
-r char173 -18
-r , -55
-v . -111
-v , -111
-w . -92
-w , -92
-y . -92
-y , -92
-charset
-ha 606,678 2 0000 asciicircum
-ti 606,342 0 0001 asciitilde
-vS 611,933,17 2 0002 Scaron
-vZ 667,933,5 2 0003 Zcaron
-vs 444,709,17 2 0004 scaron
-vz 500,709 2 0005 zcaron
-:Y 667,902,5 2 0006 Ydieresis
-tm 998,678 2 0007 trademark
-space 250 0 0040
-! 278,688,12 2 0041 exclam
-" 402,695 2 0042 quotedbl
-# 606,673 2 0043 numbersign
-sh "
-$ 500,721,115 3 0044 dollar
-Do "
-% 889,678,17 2 0045 percent
-& 833,684,17 2 0046 ampersand
-' 278,695 2 0047 quoteright
-( 333,723,104 3 0050 parenleft
-) 333,723,105 3 0051 parenright
-* 444,695 2 0052 asterisk
-+ 606,505 0 0053 plus
-, 250,141,166 1 0054 comma
-- 333,305 0 0055 hyphen
-hy "
-char173 "
-. 250,144,12 0 0056 period
-/ 296,695,17 2 0057 slash
-sl "
-0 500,660,17 2 0060 zero
-1 500,671,5 2 0061 one
-2 500,662,2 2 0062 two
-3 500,660,17 2 0063 three
-4 500,670,3 2 0064 four
-5 500,657,17 2 0065 five
-6 500,664,17 2 0066 six
-7 500,656,2 2 0067 seven
-8 500,660,17 2 0070 eight
-9 500,662,17 2 0071 nine
-: 250,454,12 0 0072 colon
-; 250,454,166 1 0073 semicolon
-< 606,519,15 0 0074 less
-= 606,396 0 0075 equal
-> 606,519,15 0 0076 greater
-? 444,687,12 2 0077 question
-@ 747,681,12 2 0100 at
-at "
-A 778,686,5 2 0101 A
-B 667,683,5 2 0102 B
-C 722,695,17 2 0103 C
-D 833,683 2 0104 D
-E 611,683,5 2 0105 E
-F 556,683,5 2 0106 F
-G 833,695,17 2 0107 G
-H 833,683,5 2 0110 H
-I 389,683,5 2 0111 I
-J 389,683,213 3 0112 J
-K 778,683,5 2 0113 K
-L 611,683,5 2 0114 L
-M 1000,683,10 2 0115 M
-N 833,683,16 2 0116 N
-O 833,695,17 2 0117 O
-P 611,678,5 2 0120 P
-Q 833,695,188 3 0121 Q
-R 722,683,5 2 0122 R
-S 611,695,17 2 0123 S
-T 667,683,5 2 0124 T
-U 778,683,17 2 0125 U
-V 778,683,3 2 0126 V
-W 1000,686,3 2 0127 W
-X 667,695 2 0130 X
-Y 667,695,5 2 0131 Y
-Z 667,683,5 2 0132 Z
-[ 333,720,104 3 0133 bracketleft
-lB "
-\ 606,723 2 0134 backslash
-rs "
-] 333,720,104 3 0135 bracketright
-rB "
-a^ 333,709 2 0136 circumflex
-^ "
-_ 500,0,148 1 0137 underscore
-` 278,695 2 0140 quoteleft
-oq "
-a 500,471,15 0 0141 a
-b 611,719,17 2 0142 b
-c 444,471,17 0 0143 c
-d 611,719,17 2 0144 d
-e 500,471,17 0 0145 e
-f 389,725,5 2 0146 f
-g 556,471,266 1 0147 g
-h 611,720,5 2 0150 h
-i 333,706,5 2 0151 i
-j 333,705,265 3 0152 j
-k 611,720,5 2 0153 k
-l 333,720,5 2 0154 l
-m 889,471,5 0 0155 m
-n 611,471,5 0 0156 n
-o 556,471,17 0 0157 o
-p 611,471,258 1 0160 p
-q 611,471,258 1 0161 q
-r 389,471,5 0 0162 r
-s 444,471,17 0 0163 s
-t 333,632,17 2 0164 t
-u 611,471,17 0 0165 u
-v 556,459,3 0 0166 v
-w 833,472,3 0 0167 w
-x 500,471 0 0170 x
-y 556,459,263 1 0171 y
-z 500,459 0 0172 z
-lC 310,725,116 3 0173 braceleft
-{ "
-ba 606,723 2 0174 bar
-| "
-rC 310,725,116 3 0175 braceright
-} "
-a~ 333,678 2 0176 tilde
-~ "
---- 333,130,160 1 0200 quotesinglbase
-Fo 500,438 0 0201 guillemotleft
-char171 "
-Fc 500,438 0 0202 guillemotright
-char187 "
-bu 606,502 0 0203 bullet
---- 500,697,246 3 0204 florin
-f/ 167,623 2 0205 fraction
-%0 1000,678,17 2 0206 perthousand
-dg 500,682,6 2 0207 dagger
-dd 500,683,244 3 0210 daggerdbl
-en 500,291 0 0211 endash
-em 1000,291 0 0212 emdash
-fi 611,722,5 2 0214 fi
-fl 611,722,5 2 0215 fl
-.i 333,471,5 0 0220 dotlessi
-ga 333,719 2 0222 grave
-a" 333,719 2 0223 hungarumlaut
-a. 333,678 2 0224 dotaccent
-ab 333,697 2 0225 breve
-ah 333,709 2 0226 caron
-ao 333,742 2 0227 ring
-ho 333,0,228 1 0230 ogonek
-lq 500,693 2 0231 quotedblleft
-rq 500,695 2 0232 quotedblright
-oe 833,471,17 0 0233 oe
-/l 333,720,5 2 0234 lslash
---- 500,130,160 1 0235 quotedblbase
-OE 1000,695,17 2 0236 OE
-/L 611,683,5 2 0237 Lslash
-r! 278,471,230 1 0241 exclamdown
-char161 "
-ct 500,554,106 3 0242 cent
-char162 "
-Po 500,676,19 2 0243 sterling
-char163 "
-Cs 606,588 2 0244 currency
-char164 "
-Ye 500,670,3 2 0245 yen
-char165 "
-sc 500,695,217 3 0247 section
-char167 "
-ad 333,678 2 0250 dieresis
-char168 "
-co 747,695,17 2 0251 copyright
-char169 "
-Of 438,678 2 0252 ordfeminine
-char170 "
-fo 389,438 0 0253 guilsinglleft
-no 606,396 0 0254 logicalnot
-char172 "
-\- 606,298 0 0255 minus
-rg 747,695,17 2 0256 registered
-char174 "
-a- 333,642 2 0257 macron
-char175 "
-aa 333,719 2 0264 acute
-char180 "
-ps 641,678,95 3 0266 paragraph
-char182 "
-char183 250,336 0 0267 periodcentered
-ac 333,0,218 1 0270 cedilla
-char184 "
-Om 488,678 2 0272 ordmasculine
-char186 "
-fc 389,438 0 0273 guilsinglright
-r? 444,471,230 1 0277 questiondown
-char191 "
-`A 778,943,5 2 0300 Agrave
-char192 "
-'A 778,943,5 2 0301 Aacute
-char193 "
-^A 778,933,5 2 0302 Acircumflex
-char194 "
-~A 778,902,5 2 0303 Atilde
-char195 "
-:A 778,902,5 2 0304 Adieresis
-char196 "
-oA 778,966,5 2 0305 Aring
-char197 "
-AE 1000,683,5 2 0306 AE
-char198 "
-,C 722,695,218 3 0307 Ccedilla
-char199 "
-`E 611,943,5 2 0310 Egrave
-char200 "
-'E 611,943,5 2 0311 Eacute
-char201 "
-^E 611,933,5 2 0312 Ecircumflex
-char202 "
-:E 611,902,5 2 0313 Edieresis
-char203 "
-`I 389,943,5 2 0314 Igrave
-char204 "
-'I 389,943,5 2 0315 Iacute
-char205 "
-^I 389,933,5 2 0316 Icircumflex
-char206 "
-:I 389,902,5 2 0317 Idieresis
-char207 "
-~N 833,902,16 2 0321 Ntilde
-char209 "
-`O 833,943,17 2 0322 Ograve
-char210 "
-'O 833,943,17 2 0323 Oacute
-char211 "
-^O 833,933,17 2 0324 Ocircumflex
-char212 "
-~O 833,902,17 2 0325 Otilde
-char213 "
-:O 833,902,17 2 0326 Odieresis
-char214 "
-/O 833,698,20 2 0330 Oslash
-char216 "
-`U 778,943,17 2 0331 Ugrave
-char217 "
-'U 778,943,17 2 0332 Uacute
-char218 "
-^U 778,933,17 2 0333 Ucircumflex
-char219 "
-:U 778,902,17 2 0334 Udieresis
-char220 "
-ss 611,720,17 2 0337 germandbls
-char223 "
-`a 500,719,15 2 0340 agrave
-char224 "
-'a 500,719,15 2 0341 aacute
-char225 "
-^a 500,709,15 2 0342 acircumflex
-char226 "
-~a 500,678,15 2 0343 atilde
-char227 "
-:a 500,678,15 2 0344 adieresis
-char228 "
-oa 500,742,15 2 0345 aring
-char229 "
-ae 778,471,17 0 0346 ae
-char230 "
-,c 444,471,218 1 0347 ccedilla
-char231 "
-`e 500,719,17 2 0350 egrave
-char232 "
-'e 500,719,17 2 0351 eacute
-char233 "
-^e 500,709,17 2 0352 ecircumflex
-char234 "
-:e 500,678,17 2 0353 edieresis
-char235 "
-`i 333,719,5 2 0354 igrave
-char236 "
-'i 333,719,5 2 0355 iacute
-char237 "
-^i 333,709,5 2 0356 icircumflex
-char238 "
-:i 333,678,5 2 0357 idieresis
-char239 "
-~n 611,678,5 2 0361 ntilde
-char241 "
-`o 556,719,17 2 0362 ograve
-char242 "
-'o 556,719,17 2 0363 oacute
-char243 "
-^o 556,709,17 2 0364 ocircumflex
-char244 "
-~o 556,678,17 2 0365 otilde
-char245 "
-:o 556,678,17 2 0366 odieresis
-char246 "
-/o 556,471,18 0 0370 oslash
-char248 "
-`u 611,719,17 2 0371 ugrave
-char249 "
-'u 611,719,17 2 0372 uacute
-char250 "
-^u 611,709,17 2 0373 ucircumflex
-char251 "
-:u 611,678,17 2 0374 udieresis
-char252 "
-:y 556,678,263 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/PBI b/ps/devps/PBI
deleted file mode 100644
index 00248e731..000000000
--- a/ps/devps/PBI
+++ /dev/null
@@ -1,418 +0,0 @@
-name PBI
-internalname Palatino-BoldItalic
-slant 10
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -55
-A w -37
-A v -55
-A ' -55
-A Y -74
-A W -74
-A V -74
-A T -55
-F . -111
-F , -111
-F A -74
-L y -37
-L ' -55
-L Y -74
-L W -74
-L V -74
-L T -74
-P . -129
-P , -129
-P A -92
-R y -20
-R Y -37
-R W -55
-R V -55
-R T -37
-T y -80
-T w -50
-T u -92
-T ; -55
-T s -92
-T r -92
-T . -55
-T o -111
-T i -74
-T - -92
-T hy -92
-T char173 -92
-T e -111
-T , -55
-T : -55
-T c -92
-T a -111
-T O -18
-T A -55
-V y -50
-V u -50
-V ; -37
-V r -74
-V . -111
-V o -74
-V i -50
-V - -37
-V hy -37
-V char173 -37
-V e -74
-V , -111
-V : -37
-V a -92
-V A -74
-W y -30
-W u -30
-W ; -18
-W r -30
-W . -55
-W o -55
-W i -30
-W e -55
-W , -55
-W : -28
-W a -74
-W A -74
-Y v -30
-Y u -50
-Y ; -55
-Y q -92
-Y . -55
-Y p -74
-Y o -111
-Y i -54
-Y - -55
-Y hy -55
-Y char173 -55
-Y e -92
-Y , -55
-Y : -55
-Y a -111
-Y A -55
-f ' 37
-f f -37
-1 1 -55
-` ` -55
-` oq -55
-oq ` -55
-oq oq -55
-' t -18
-' s -37
-' ' -55
-r ' 55
-r q -18
-r . -55
-r o -18
-r h -18
-r g -18
-r e -18
-r , -55
-r c -18
-v . -55
-v , -55
-w . -55
-w , -55
-y . -37
-y , -37
-charset
-ha 606,678,0,0,-13 2 0000 asciicircum
-ti 606,346,0,0,-1 0 0001 asciitilde
-vS 556,919,17,42,8,42 2 0002 Scaron
-vZ 667,919,5,57,49,57 2 0003 Zcaron
-vs 444,705,17,98,25,66 2 0004 scaron
-vz 500,705,17,70,-8,66 2 0005 zcaron
-:Y 611,884,5,114,-4,66 2 0006 Ydieresis
-tm 1000,683,0,32,8,32 2 0007 trademark
-space 250 0 0040
-! 333,695,17,39,2,39 2 0041 exclam
-" 500,693,0,47,-40,47 2 0042 quotedbl
-# 606,671,0,0,-7 2 0043 numbersign
-sh "
-$ 500,737,108,27,29,27 3 0044 dollar
-Do "
-% 889,683,10,0,-32 2 0045 percent
-& 833,695,17,28,-24,28 2 0046 ampersand
-' 278,695,0,72,-26,66 2 0047 quoteright
-( 333,726,126,106,-29,66 3 0050 parenleft
-) 333,726,126,0,84 3 0051 parenright
-* 444,685,0,63,-59,63 2 0052 asterisk
-+ 606,501,5 0 0053 plus
-, 250,147,164,8,83,8 1 0054 comma
-- 389,300,0,22,13,22 0 0055 hyphen
-hy "
-char173 "
-. 250,135,17,0,-4 0 0056 period
-/ 315,726,0,58,54,58 2 0057 slash
-sl "
-0 500,683,17,37,8,37 2 0060 zero
-1 500,683,5,0,9 2 0061 one
-2 500,683,5,4,49,4 2 0062 two
-3 500,683,17,0,42 2 0063 three
-4 500,685,5,37,47,37 2 0064 four
-5 500,671,17,25,43,25 2 0065 five
-6 500,683,17,38,11,38 2 0066 six
-7 500,671,5,94,-19,66 2 0067 seven
-8 500,683,17,34,24,34 2 0070 eight
-9 500,683,17,41,23,41 2 0071 nine
-: 250,452,5,84,-19,66 0 0072 colon
-; 250,452,152,65,62,65 1 0073 semicolon
-< 606,517,21,2,1,2 0 0074 less
-= 606,390,0,0,-1 0 0075 equal
-> 606,517,21,1,2,1 0 0076 greater
-? 444,695,17,56,-41,56 2 0077 question
-@ 833,695,17,0,8 2 0100 at
-at "
-A 722,683,5,13,85,13 2 0101 A
-B 667,683,5,12,42,12 2 0102 B
-C 685,695,17,63,-22,63 2 0103 C
-D 778,683,5,19,50,19 2 0104 D
-E 611,683,5,45,43,45 2 0105 E
-F 556,683,5,87,51,66 2 0106 F
-G 778,695,17,22,-23,22 2 0107 G
-H 778,683,5,90,62,66 2 0110 H
-I 389,683,5,86,50,66 2 0111 I
-J 389,683,207,96,63,66 3 0112 J
-K 722,683,5,86,47,66 2 0113 K
-L 611,683,5,21,27,21 2 0114 L
-M 944,683,17,91,73,66 2 0115 M
-N 778,683,5,101,52,66 2 0116 N
-O 833,695,17,8,-23,8 2 0117 O
-P 667,683,5,56,41,56 2 0120 P
-Q 833,695,222,9,-24,9 3 0121 Q
-R 722,683,5,28,43,28 2 0122 R
-S 556,695,17,24,8,24 2 0123 S
-T 611,683,5,113,-7,66 2 0124 T
-U 778,683,17,94,-30,66 2 0125 U
-V 667,683,5,128,-17,66 2 0126 V
-W 1000,689,5,123,-18,66 2 0127 W
-X 722,683,5,100,59,66 2 0130 X
-Y 611,692,5,114,-4,66 2 0131 Y
-Z 667,683,5,57,49,57 2 0132 Z
-[ 333,726,102,111,8,66 3 0133 bracketleft
-lB "
-\ 606,726,0,0,-17 2 0134 backslash
-rs "
-] 333,726,102,33,84,33 3 0135 bracketright
-rB "
-a^ 333,705,0,109,-15,66 2 0136 circumflex
-^ "
-_ 500,0,169,50,50,50 1 0137 underscore
-` 278,695,0,63,-15,63 2 0140 quoteleft
-oq "
-a 556,470,17,15,3,15 0 0141 a
-b 537,726,17,7,6,7 2 0142 b
-c 444,469,17,48,12,48 0 0143 c
-d 556,726,17,47,12,47 2 0144 d
-e 444,469,17,27,19,27 0 0145 e
-f 333,726,271,128,106,66 3 0146 f
-g 500,469,271,79,100,66 1 0147 g
-h 556,726,17,16,26,16 2 0150 h
-i 333,695,17,32,22,32 2 0151 i
-j 333,695,271,38,117,38 3 0152 j
-k 556,726,17,23,12,23 2 0153 k
-l 333,726,17,36,-17,36 2 0154 l
-m 833,469,13,21,31,21 0 0155 m
-n 556,469,17,22,33,22 0 0156 n
-o 556,469,17,0,2 0 0157 o
-p 556,469,271,11,71,11 1 0160 p
-q 537,469,271,26,18,26 1 0161 q
-r 389,468,17,75,27,66 0 0162 r
-s 444,469,17,12,25,12 0 0163 s
-t 389,636,16,73,5,66 2 0164 t
-u 556,467,18,15,28,15 0 0165 u
-v 556,469,17,7,31,7 0 0166 v
-w 833,469,17,9,35,9 0 0167 w
-x 500,469,17,50,58,50 0 0170 x
-y 556,464,271,35,36,35 1 0171 y
-z 500,469,17,47,-8,47 0 0172 z
-lC 333,726,101,42,41,42 3 0173 braceleft
-{ "
-ba 606,726,0,0,-208 2 0174 bar
-| "
-rC 333,726,101,41,41,41 3 0175 braceright
-} "
-a~ 333,670,0,149,-23,66 2 0176 tilde
-~ "
---- 250,145,144,38,37,38 1 0200 quotesinglbase
-Fo 500,446,0,8,15,8 0 0201 guillemotleft
-char171 "
-Fc 500,446,0,7,15,7 0 0202 guillemotright
-char187 "
-bu 606,508,0,0,-84 0 0203 bullet
---- 500,694,250,37,35,37 3 0204 florin
-f/ 167,685,17,216,216,66 2 0205 fraction
-%0 1000,678,15,35,33,35 2 0206 perthousand
-dg 556,683,5,0,-17 2 0207 dagger
-dd 556,693,153,31,21,31 3 0210 daggerdbl
-en 500,282,0,57,57,57 0 0211 endash
-em 1000,282,0,65,66,65 0 0212 emdash
-fi 611,726,270,41,109,41 3 0214 fi
-fl 611,726,271,51,106,51 3 0215 fl
-.i 333,468,15,13,22,13 0 0220 dotlessi
-ga 333,712,0,39,-60,39 2 0222 grave
-a" 333,712,0,120,-114,66 2 0223 hungarumlaut
-a. 333,670,0,0,-52 2 0224 dotaccent
-ab 333,693,0,129,-46,66 2 0225 breve
-ah 333,705,0,153,-54,66 2 0226 caron
-ao 556,738,0,0,-217 2 0227 ring
-ho 333,0,206,0,18 1 0230 ogonek
-lq 500,695,0,60,-15,60 2 0231 quotedblleft
-rq 500,695,0,67,-25,66 2 0232 quotedblright
-oe 778,469,17,27,4,27 0 0233 oe
-/l 333,726,17,101,51,66 2 0234 lslash
---- 500,145,144,0,70 1 0235 quotedblbase
-OE 944,695,17,69,11,66 2 0236 OE
-/L 611,683,5,21,27,21 2 0237 Lslash
-r! 333,469,235,0,48 1 0241 exclamdown
-char161 "
-ct 500,546,105,13,-9,13 3 0242 cent
-char162 "
-Po 500,683,5,64,5,64 2 0243 sterling
-char163 "
-Cs 606,588 2 0244 currency
-char164 "
-Ye 500,695,5,98,61,66 2 0245 yen
-char165 "
-sc 556,695,151,0,3 3 0247 section
-char167 "
-ad 333,670,0,139,-30,66 2 0250 dieresis
-char168 "
-co 747,695,17,73,-26,66 2 0251 copyright
-char169 "
-Of 333,726,0,72,6,66 2 0252 ordfeminine
-char170 "
-fo 333,446,0,9,-10,9 0 0253 guilsinglleft
-no 606,395,0,0,-1 0 0254 logicalnot
-char172 "
-\- 606,292,0,0,-1 0 0255 minus
-rg 747,695,17,73,-27,66 2 0256 registered
-char174 "
-a- 333,638,0,135,-26,66 2 0257 macron
-char175 "
-aa 333,712,0,120,-114,66 2 0264 acute
-char180 "
-ps 556,695,151,76,50,66 3 0266 paragraph
-char182 "
-char183 250,324,0,26,-37,26 0 0267 periodcentered
-ac 333,5,218,0,50 1 0270 cedilla
-char184 "
-Om 333,726,0,63,2,63 2 0272 ordmasculine
-char186 "
-fc 333,446,0,0,15 0 0273 guilsinglright
-r? 444,469,235,0,58 1 0277 questiondown
-char191 "
-`A 722,926,5,13,85,13 2 0300 Agrave
-char192 "
-'A 722,926,5,13,85,13 2 0301 Aacute
-char193 "
-^A 722,919,5,13,85,13 2 0302 Acircumflex
-char194 "
-~A 722,884,5,13,85,13 2 0303 Atilde
-char195 "
-:A 722,884,5,13,85,13 2 0304 Adieresis
-char196 "
-oA 722,952,5,13,85,13 2 0305 Aring
-char197 "
-AE 944,683,5,39,79,39 2 0306 AE
-char198 "
-,C 685,695,218,63,-22,63 3 0307 Ccedilla
-char199 "
-`E 611,926,5,45,43,45 2 0310 Egrave
-char200 "
-'E 611,926,5,45,43,45 2 0311 Eacute
-char201 "
-^E 611,919,5,45,43,45 2 0312 Ecircumflex
-char202 "
-:E 611,884,5,45,43,45 2 0313 Edieresis
-char203 "
-`I 389,926,5,86,50,66 2 0314 Igrave
-char204 "
-'I 389,926,5,92,50,66 2 0315 Iacute
-char205 "
-^I 389,919,5,86,50,66 2 0316 Icircumflex
-char206 "
-:I 389,884,5,111,50,66 2 0317 Idieresis
-char207 "
-~N 778,884,5,101,52,66 2 0321 Ntilde
-char209 "
-`O 833,926,17,8,-23,8 2 0322 Ograve
-char210 "
-'O 833,926,17,8,-23,8 2 0323 Oacute
-char211 "
-^O 833,919,17,8,-23,8 2 0324 Ocircumflex
-char212 "
-~O 833,884,17,8,-23,8 2 0325 Otilde
-char213 "
-:O 833,884,17,8,-23,8 2 0326 Odieresis
-char214 "
-/O 833,732,53,12,-4,12 2 0330 Oslash
-char216 "
-`U 778,926,17,94,-30,66 2 0331 Ugrave
-char217 "
-'U 778,926,17,94,-30,66 2 0332 Uacute
-char218 "
-^U 778,919,17,94,-30,66 2 0333 Ucircumflex
-char219 "
-:U 778,884,17,94,-30,66 2 0334 Udieresis
-char220 "
-ss 556,726,281,29,108,29 3 0337 germandbls
-char223 "
-`a 556,712,17,15,3,15 2 0340 agrave
-char224 "
-'a 556,712,17,15,3,15 2 0341 aacute
-char225 "
-^a 556,705,17,15,3,15 2 0342 acircumflex
-char226 "
-~a 556,670,17,38,3,38 2 0343 atilde
-char227 "
-:a 556,670,17,28,3,28 2 0344 adieresis
-char228 "
-oa 556,738,17,15,3,15 2 0345 aring
-char229 "
-ae 738,469,17,27,3,27 0 0346 ae
-char230 "
-,c 444,469,218,48,12,48 1 0347 ccedilla
-char231 "
-`e 444,712,17,27,19,27 2 0350 egrave
-char232 "
-'e 444,712,17,65,19,65 2 0351 eacute
-char233 "
-^e 444,705,17,54,19,54 2 0352 ecircumflex
-char234 "
-:e 444,670,17,84,19,66 2 0353 edieresis
-char235 "
-`i 333,712,15,39,22,39 2 0354 igrave
-char236 "
-'i 333,712,15,120,22,66 2 0355 iacute
-char237 "
-^i 333,705,15,109,22,66 2 0356 icircumflex
-char238 "
-:i 333,670,15,139,22,66 2 0357 idieresis
-char239 "
-~n 556,670,17,38,33,38 2 0361 ntilde
-char241 "
-`o 556,712,17,0,2 2 0362 ograve
-char242 "
-'o 556,712,17,9,2,9 2 0363 oacute
-char243 "
-^o 556,705,17,0,2 2 0364 ocircumflex
-char244 "
-~o 556,670,17,38,2,38 2 0365 otilde
-char245 "
-:o 556,670,17,28,2,28 2 0366 odieresis
-char246 "
-/o 556,506,53,16,36,16 0 0370 oslash
-char248 "
-`u 556,712,18,15,28,15 2 0371 ugrave
-char249 "
-'u 556,712,18,15,28,15 2 0372 uacute
-char250 "
-^u 556,705,18,15,28,15 2 0373 ucircumflex
-char251 "
-:u 556,670,18,28,28,28 2 0374 udieresis
-char252 "
-:y 556,670,271,35,36,35 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/PI b/ps/devps/PI
deleted file mode 100644
index 12be8d64a..000000000
--- a/ps/devps/PI
+++ /dev/null
@@ -1,420 +0,0 @@
-name PI
-internalname Palatino-Italic
-slant 10
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -55
-A w -37
-A v -37
-A ' -55
-A Y -55
-A W -55
-A V -74
-A T -55
-F . -111
-F , -111
-F A -111
-L y -37
-L ' -37
-L Y -74
-L W -74
-L V -74
-L T -74
-P . -129
-P , -129
-P A -129
-R y -37
-R Y -55
-R W -55
-R V -74
-R T -55
-T y -92
-T w -92
-T u -111
-T ; -74
-T s -111
-T r -111
-T . -74
-T o -111
-T i -55
-T - -55
-T hy -55
-T char173 -55
-T e -111
-T , -74
-T : -74
-T c -111
-T a -111
-T O -18
-T A -92
-V y -74
-V u -74
-V ; -37
-V r -92
-V . -129
-V o -74
-V i -74
-V - -55
-V hy -55
-V char173 -55
-V e -92
-V , -129
-V : -37
-V a -74
-V A -210
-W y -20
-W u -20
-W ; -18
-W r -20
-W . -55
-W o -20
-W i -20
-W - -18
-W hy -18
-W char173 -18
-W e -20
-W , -55
-W : -18
-W a -20
-W A -92
-Y v -74
-Y u -92
-Y ; -74
-Y q -92
-Y . -92
-Y p -74
-Y o -111
-Y i -55
-Y - -74
-Y hy -74
-Y char173 -74
-Y e -111
-Y , -92
-Y : -74
-Y a -92
-Y A -92
-f ' 55
-1 1 -55
-` ` -74
-` oq -74
-oq ` -74
-oq oq -74
-' t -37
-' s -55
-' ' -74
-r ' 37
-r q -18
-r . -74
-r o -18
-r h -18
-r g -18
-r e -18
-r , -74
-r c -18
-v . -55
-v , -55
-w . -55
-w , -55
-y . -37
-y , -37
-charset
-ha 606,693,0,0,-1 2 0000 asciicircum
-ti 606,339,0,0,-1 0 0001 asciitilde
-vS 556,946,18,27,1,27 2 0002 Scaron
-vZ 667,946,5,20,30,20 2 0003 Zcaron
-vs 389,733,11,110,41,68 2 0004 scaron
-vz 444,733,5,83,51,68 2 0005 zcaron
-:Y 667,858,5,58,-2,58 2 0006 Ydieresis
-tm 1000,693,0,0,-2 2 0007 trademark
-space 250 0 0040
-! 333,733,5,9,-26,9 2 0041 exclam
-" 500,706,0,15,-120,15 2 0042 quotedbl
-# 606,693,0,0,-7 2 0043 numbersign
-sh "
-$ 500,737,113,3,35,3 3 0044 dollar
-Do "
-% 889,693,16,0,-29 2 0045 percent
-& 778,693,18,38,3,38 2 0046 ampersand
-' 278,733,0,16,-9,16 2 0047 quoteright
-( 333,733,103,47,-4,47 3 0050 parenleft
-) 333,733,101,0,44 3 0051 parenright
-* 389,705,0,61,-26,61 2 0052 asterisk
-+ 606,504,0,0,-2 0 0053 plus
-, 250,123,143,23,22,23 1 0054 comma
-- 333,281,0,21,31,21 0 0055 hyphen
-hy "
-char173 "
-. 250,112,5,0,-23 0 0056 period
-/ 296,733,181,56,49,56 3 0057 slash
-sl "
-0 500,699,11,18,26,18 2 0060 zero
-1 500,699,5,0,8 2 0061 one
-2 500,699,5,0,50 2 0062 two
-3 500,699,11,0,50 2 0063 three
-4 500,699,5,16,51,16 2 0064 four
-5 500,693,11,29,48,29 2 0065 five
-6 500,702,11,7,13,7 2 0066 six
-7 500,693,5,40,9,40 2 0067 seven
-8 500,699,11,7,26,7 2 0070 eight
-9 500,699,11,6,30,6 2 0071 nine
-: 250,460,3,7,6,7 0 0072 colon
-; 250,459,143,39,39,39 1 0073 semicolon
-< 606,514,8,2,1,2 0 0074 less
-= 606,382,0,0,-1 0 0075 equal
-> 606,514,8,1,2,1 0 0076 greater
-? 500,705,6,0,-57 2 0077 question
-@ 747,705,18,21,23,21 2 0100 at
-at "
-A 722,705,5,20,54,20 2 0101 A
-B 611,693,5,2,19,2 2 0102 B
-C 667,705,18,34,5,34 2 0103 C
-D 778,693,5,16,19,16 2 0104 D
-E 611,693,5,11,14,11 2 0105 E
-F 556,693,5,47,60,47 2 0106 F
-G 722,705,18,22,0,22 2 0107 G
-H 778,693,5,82,64,68 2 0110 H
-I 333,693,5,84,60,68 2 0111 I
-J 333,693,208,80,85,68 3 0112 J
-K 667,693,5,66,41,66 2 0113 K
-L 556,693,5,16,30,16 2 0114 L
-M 944,693,19,46,71,46 2 0115 M
-N 778,693,11,86,48,68 2 0116 N
-O 778,705,18,23,-6,23 2 0117 O
-P 611,693,5,33,47,33 2 0120 P
-Q 778,705,201,23,-6,23 3 0121 Q
-R 667,693,5,22,41,22 2 0122 R
-S 556,705,18,7,1,7 2 0123 S
-T 611,693,5,76,-3,68 2 0124 T
-U 778,693,18,86,-34,68 2 0125 U
-V 722,693,8,70,-13,68 2 0126 V
-W 944,700,8,126,-61,68 2 0127 W
-X 722,693,5,62,30,62 2 0130 X
-Y 667,705,5,58,-2,58 2 0131 Y
-Z 667,693,5,20,30,20 2 0132 Z
-[ 333,733,101,43,33,43 3 0133 bracketleft
-lB "
-\ 606,693,0,0,-31 2 0134 backslash
-rs "
-] 333,733,102,34,43,34 3 0135 bracketright
-rB "
-a^ 333,699,0,91,-30,68 2 0136 circumflex
-^ "
-_ 500,0,163,50,50,50 1 0137 underscore
-` 278,733,0,46,-44,46 2 0140 quoteleft
-oq "
-a 444,481,11,8,49,8 0 0141 a
-b 463,733,11,20,13,20 2 0142 b
-c 407,480,11,30,25,30 0 0143 c
-d 500,733,11,26,36,26 2 0144 d
-e 389,480,11,35,35,35 0 0145 e
-f 278,729,276,132,121,68 3 0146 f
-g 500,480,276,40,77,40 1 0147 g
-h 500,733,11,15,40,15 2 0150 h
-i 278,712,10,36,15,36 2 0151 i
-j 278,712,276,41,117,41 3 0152 j
-k 444,733,11,55,41,55 2 0153 k
-l 278,733,10,23,12,23 2 0154 l
-m 778,483,11,7,30,7 0 0155 m
-n 556,483,11,2,22,2 0 0156 n
-o 444,480,11,17,33,17 0 0157 o
-p 500,483,276,25,47,25 1 0160 p
-q 463,480,276,12,33,12 1 0161 q
-r 389,483,11,45,24,45 0 0162 r
-s 389,480,11,6,41,6 0 0163 s
-t 333,646,10,27,9,27 2 0164 t
-u 556,483,11,1,18,1 0 0165 u
-v 500,480,11,27,34,27 0 0166 v
-w 722,480,11,27,33,27 0 0167 w
-x 500,480,11,34,41,34 0 0170 x
-y 500,484,276,40,58,40 1 0171 y
-z 444,480,5,22,51,22 0 0172 z
-lC 333,713,116,36,35,36 3 0173 braceleft
-{ "
-ba 606,733,0,0,-220 2 0174 bar
-| "
-rC 333,713,116,34,35,34 3 0175 braceright
-} "
-a~ 333,661,0,137,-43,68 2 0176 tilde
-~ "
---- 278,120,122,3,3,3 1 0200 quotesinglbase
-Fo 500,438,0,0,-4 0 0201 guillemotleft
-char171 "
-Fc 500,438,0,0,-4 0 0202 guillemotright
-char187 "
-bu 500,530,0,30,-76,30 0 0203 bullet
---- 500,705,276,36,37,36 3 0204 florin
-f/ 167,693,0,216,216,68 2 0205 fraction
-%0 1000,714,41,42,44,42 2 0206 perthousand
-dg 500,693,0,9,12,9 2 0207 dagger
-dd 500,693,162,44,41,44 3 0210 daggerdbl
-en 500,278,0,59,58,59 0 0211 endash
-em 1000,278,0,66,65,66 0 0212 emdash
-fi 528,733,276,33,121,33 3 0214 fi
-fl 545,733,277,21,121,21 3 0215 fl
-.i 278,483,10,9,15,9 0 0220 dotlessi
-ga 333,704,0,23,-66,23 2 0222 grave
-a" 333,741,0,180,-133,68 2 0223 hungarumlaut
-a. 333,307,0,0,-59 0 0224 dotaccent
-ab 333,723,0,130,-62,68 2 0225 breve
-ah 333,733,0,138,-66,68 2 0226 caron
-ao 333,733,0,83,-116,68 2 0227 ring
-ho 333,0,207,13,-88,13 1 0230 ogonek
-lq 500,733,0,25,-48,25 2 0231 quotedblleft
-rq 500,733,0,0,-22 2 0232 quotedblright
-oe 669,480,11,35,33,35 0 0233 oe
-/l 278,733,10,63,43,63 2 0234 lslash
---- 500,120,122,0,-19 1 0235 quotedblbase
-OE 1028,705,18,11,-6,11 2 0236 OE
-/L 556,693,5,16,30,16 2 0237 Lslash
-r! 333,467,276,0,15 1 0241 exclamdown
-char161 "
-ct 500,551,96,0,-26 3 0242 cent
-char162 "
-Po 500,705,18,31,43,31 2 0243 sterling
-char163 "
-Cs 606,597 2 0244 currency
-char164 "
-Ye 667,699,5,57,-1,57 2 0245 yen
-char165 "
-sc 500,705,221,13,36,13 3 0247 section
-char167 "
-ad 333,645,0,119,-52,68 2 0250 dieresis
-char168 "
-co 747,705,18,38,38,38 2 0251 copyright
-char169 "
-Of 333,705,0,97,-31,68 2 0252 ordfeminine
-char170 "
-fo 333,438,0,0,-7 0 0253 guilsinglleft
-no 606,382,0,0,-1 0 0254 logicalnot
-char172 "
-\- 606,285,0,0,-1 0 0255 minus
-rg 747,705,18,38,38,38 2 0256 registered
-char174 "
-a- 333,622,0,123,-44,68 2 0257 macron
-char175 "
-aa 333,700,0,115,-125,68 2 0264 acute
-char180 "
-ps 500,693,221,120,7,68 3 0266 paragraph
-char182 "
-char183 250,312,0,0,-23 0 0267 periodcentered
-ac 333,9,207,0,-1 1 0270 cedilla
-char184 "
-Om 333,705,0,79,-33,68 2 0272 ordmasculine
-char186 "
-fc 333,438,0,0,-8 0 0273 guilsinglright
-r? 500,437,276,0,-23 1 0277 questiondown
-char191 "
-`A 722,917,5,20,54,20 2 0300 Agrave
-char192 "
-'A 722,913,5,20,54,20 2 0301 Aacute
-char193 "
-^A 722,912,5,20,54,20 2 0302 Acircumflex
-char194 "
-~A 722,874,5,20,54,20 2 0303 Atilde
-char195 "
-:A 722,858,5,20,54,20 2 0304 Adieresis
-char196 "
-oA 722,946,5,20,54,20 2 0305 Aring
-char197 "
-AE 941,693,5,11,54,11 2 0306 AE
-char198 "
-,C 667,705,207,34,5,34 3 0307 Ccedilla
-char199 "
-`E 611,917,5,11,14,11 2 0310 Egrave
-char200 "
-'E 611,913,5,11,14,11 2 0311 Eacute
-char201 "
-^E 611,912,5,11,14,11 2 0312 Ecircumflex
-char202 "
-:E 611,858,5,11,14,11 2 0313 Edieresis
-char203 "
-`I 333,917,5,84,60,68 2 0314 Igrave
-char204 "
-'I 333,913,5,115,60,68 2 0315 Iacute
-char205 "
-^I 333,912,5,91,60,68 2 0316 Icircumflex
-char206 "
-:I 333,858,5,119,60,68 2 0317 Idieresis
-char207 "
-~N 778,874,11,86,48,68 2 0321 Ntilde
-char209 "
-`O 778,917,18,23,-6,23 2 0322 Ograve
-char210 "
-'O 778,913,18,23,-6,23 2 0323 Oacute
-char211 "
-^O 778,912,18,23,-6,23 2 0324 Ocircumflex
-char212 "
-~O 778,874,18,23,-6,23 2 0325 Otilde
-char213 "
-:O 778,858,18,23,-6,23 2 0326 Odieresis
-char214 "
-/O 778,721,39,37,15,37 2 0330 Oslash
-char216 "
-`U 778,917,18,86,-34,68 2 0331 Ugrave
-char217 "
-'U 778,913,18,86,-34,68 2 0332 Uacute
-char218 "
-^U 778,912,18,86,-34,68 2 0333 Ucircumflex
-char219 "
-:U 778,858,18,86,-34,68 2 0334 Udieresis
-char220 "
-ss 500,733,274,30,130,30 3 0337 germandbls
-char223 "
-`a 444,704,11,8,49,8 2 0340 agrave
-char224 "
-'a 444,700,11,60,49,60 2 0341 aacute
-char225 "
-^a 444,699,11,36,49,36 2 0342 acircumflex
-char226 "
-~a 444,661,11,82,49,68 2 0343 atilde
-char227 "
-:a 444,645,11,64,49,64 2 0344 adieresis
-char228 "
-oa 444,733,11,28,49,28 2 0345 aring
-char229 "
-ae 638,480,11,35,49,35 0 0346 ae
-char230 "
-,c 407,480,207,30,25,30 1 0347 ccedilla
-char231 "
-`e 389,704,11,35,35,35 2 0350 egrave
-char232 "
-'e 389,700,11,87,35,68 2 0351 eacute
-char233 "
-^e 389,699,11,63,35,63 2 0352 ecircumflex
-char234 "
-:e 389,645,11,91,35,68 2 0353 edieresis
-char235 "
-`i 278,704,10,51,15,51 2 0354 igrave
-char236 "
-'i 278,700,10,143,15,68 2 0355 iacute
-char237 "
-^i 278,699,10,119,15,68 2 0356 icircumflex
-char238 "
-:i 278,645,10,147,15,68 2 0357 idieresis
-char239 "
-~n 556,661,11,26,22,26 2 0361 ntilde
-char241 "
-`o 444,704,11,17,33,17 2 0362 ograve
-char242 "
-'o 444,700,11,60,33,60 2 0363 oacute
-char243 "
-^o 444,699,11,36,33,36 2 0364 ocircumflex
-char244 "
-~o 444,661,11,82,33,68 2 0365 otilde
-char245 "
-:o 444,645,11,64,33,64 2 0366 odieresis
-char246 "
-/o 444,506,29,63,68,63 0 0370 oslash
-char248 "
-`u 556,704,11,1,18,1 2 0371 ugrave
-char249 "
-'u 556,700,11,4,18,4 2 0372 uacute
-char250 "
-^u 556,699,11,1,18,1 2 0373 ucircumflex
-char251 "
-:u 556,645,11,8,18,8 2 0374 udieresis
-char252 "
-:y 500,645,276,40,58,40 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/PR b/ps/devps/PR
deleted file mode 100644
index f61a59ec6..000000000
--- a/ps/devps/PR
+++ /dev/null
@@ -1,423 +0,0 @@
-name PR
-internalname Palatino-Roman
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -74
-A w -74
-A v -92
-A ' -74
-A Y -111
-A W -74
-A V -111
-A T -74
-F . -92
-F , -92
-F A -74
-L y -55
-L ' -74
-L Y -92
-L W -74
-L V -92
-L T -74
-P . -129
-P , -129
-P A -92
-R y -37
-R Y -37
-R W -37
-R V -55
-R T -37
-T y -90
-T w -90
-T u -90
-T ; -55
-T s -90
-T r -90
-T . -74
-T o -92
-T i -55
-T - -55
-T hy -55
-T char173 -55
-T e -92
-T , -74
-T : -55
-T c -111
-T a -92
-T O -18
-T A -74
-V y -92
-V u -92
-V ; -55
-V r -92
-V . -129
-V o -111
-V i -55
-V - -74
-V hy -74
-V char173 -74
-V e -111
-V , -129
-V : -55
-V a -92
-V A -111
-W y -50
-W u -50
-W ; -18
-W r -74
-W . -92
-W o -92
-W i -55
-W - -55
-W hy -55
-W char173 -55
-W e -92
-W , -92
-W : -18
-W a -92
-W A -92
-Y v -90
-Y u -90
-Y ; -74
-Y q -90
-Y . -111
-Y p -111
-Y o -92
-Y i -55
-Y - -92
-Y hy -92
-Y char173 -92
-Y e -92
-Y , -111
-Y : -74
-Y a -92
-Y A -92
-f ' 55
-f f -18
-1 1 -55
-` ` -37
-` oq -37
-oq ` -37
-oq oq -37
-' ' -37
-r u -8
-r ' 74
-r q -18
-r . -74
-r o -18
-r - -18
-r hy -18
-r char173 -18
-r h -18
-r g -18
-r e -18
-r d -18
-r , -74
-r c -18
-v . -111
-v , -111
-w . -92
-w , -92
-y . -111
-y , -111
-charset
-ha 606,731 2 0000 asciicircum
-ti 606,347 0 0001 asciitilde
-vS 525,915,20 2 0002 Scaron
-vZ 667,915,5 2 0003 Zcaron
-vs 424,689,20 2 0004 scaron
-vz 500,689,5 2 0005 zcaron
-:Y 667,902,5 2 0006 Ydieresis
-tm 979,689 2 0007 trademark
-space 250 0 0040
-! 278,694,5 2 0041 exclam
-" 371,694 2 0042 quotedbl
-# 606,684 2 0043 numbersign
-sh "
-$ 500,731,116 3 0044 dollar
-Do "
-% 840,689,20 2 0045 percent
-& 778,689,20 2 0046 ampersand
-' 278,694 2 0047 quoteright
-( 333,731,116 3 0050 parenleft
-) 333,731,116 3 0051 parenright
-* 389,689 2 0052 asterisk
-+ 606,512 0 0053 plus
-, 250,123,155 1 0054 comma
-- 333,287 0 0055 hyphen
-hy "
-char173 "
-. 250,111,5 0 0056 period
-/ 606,731,116 3 0057 slash
-sl "
-0 500,689,20 2 0060 zero
-1 500,684,5 2 0061 one
-2 500,689,5 2 0062 two
-3 500,689,16 2 0063 three
-4 500,689,5 2 0064 four
-5 500,689,20 2 0065 five
-6 500,689,20 2 0066 six
-7 500,689,5 2 0067 seven
-8 500,689,20 2 0070 eight
-9 500,689,20 2 0071 nine
-: 250,457,5 0 0072 colon
-; 250,457,153 1 0073 semicolon
-< 606,522 2 0074 less
-= 606,390 0 0075 equal
-> 606,522 2 0076 greater
-? 444,694,5 2 0077 question
-@ 747,694,20 2 0100 at
-at "
-A 778,700,5 2 0101 A
-B 611,694,6 2 0102 B
-C 709,709,20 2 0103 C
-D 774,694,6 2 0104 D
-E 611,694,5 2 0105 E
-F 556,694,5 2 0106 F
-G 763,709,20 2 0107 G
-H 832,694,5 2 0110 H
-I 337,694,5 2 0111 I
-J 333,694,194 3 0112 J
-K 726,694,5 2 0113 K
-L 611,694,5 2 0114 L
-M 946,694,13 2 0115 M
-N 831,694,20 2 0116 N
-O 786,709,20 2 0117 O
-P 604,694,5 2 0120 P
-Q 786,709,177 3 0121 Q
-R 668,694,5 2 0122 R
-S 525,709,20 2 0123 S
-T 613,694,5 2 0124 T
-U 778,694,20 2 0125 U
-V 722,694,9 2 0126 V
-W 1000,700,9 2 0127 W
-X 667,694,5 2 0130 X
-Y 667,701,5 2 0131 Y
-Z 667,694,5 2 0132 Z
-[ 333,731,116 3 0133 bracketleft
-lB "
-\ 606,731 2 0134 backslash
-rs "
-] 333,731,116 3 0135 bracketright
-rB "
-a^ 333,689 2 0136 circumflex
-^ "
-_ 500,0,160 1 0137 underscore
-` 278,694 2 0140 quoteleft
-oq "
-a 500,469,20 0 0141 a
-b 553,723,12 2 0142 b
-c 444,469,20 0 0143 c
-d 611,723,12 2 0144 d
-e 479,469,20 0 0145 e
-f 333,723,5 2 0146 f
-g 556,469,283 1 0147 g
-h 582,723,5 2 0150 h
-i 291,687,5 2 0151 i
-j 234,689,283 3 0152 j
-k 556,723,12 2 0153 k
-l 291,723,5 2 0154 l
-m 883,469,5 0 0155 m
-n 582,469,5 0 0156 n
-o 546,469,20 0 0157 o
-p 601,469,283 1 0160 p
-q 560,469,283 1 0161 q
-r 395,469,5 0 0162 r
-s 424,469,20 0 0163 s
-t 326,621,12 2 0164 t
-u 603,469,12 0 0165 u
-v 565,459,7 0 0166 v
-w 834,464,7 0 0167 w
-x 516,468,5 0 0170 x
-y 556,459,283 1 0171 y
-z 500,464,5 0 0172 z
-lC 333,731,116 3 0173 braceleft
-{ "
-ba 606,731 2 0174 bar
-| "
-rC 333,731,116 3 0175 braceright
-} "
-a~ 333,654 2 0176 tilde
-~ "
---- 278,110,153 1 0200 quotesinglbase
-Fo 500,428 0 0201 guillemotleft
-char171 "
-Fc 500,428 0 0202 guillemotright
-char187 "
-bu 606,516 0 0203 bullet
---- 500,706,262 3 0204 florin
-f/ 167,692,13 2 0205 fraction
-%0 1144,709,50 2 0206 perthousand
-dg 500,694,5 2 0207 dagger
-dd 500,694,249 3 0210 daggerdbl
-en 500,277 0 0211 endash
-em 1000,277 0 0212 emdash
-fi 605,723,5 2 0214 fi
-fl 608,723,5 2 0215 fl
-.i 287,469,5 0 0220 dotlessi
-ga 333,695 2 0222 grave
-a" 380,700 2 0223 hungarumlaut
-a. 250,639 2 0224 dotaccent
-ab 333,681 2 0225 breve
-ah 333,689 2 0226 caron
-ao 333,720 2 0227 ring
-ho 313,0,155 1 0230 ogonek
-lq 500,694 2 0231 quotedblleft
-rq 500,694 2 0232 quotedblright
-oe 827,469,20 0 0233 oe
-/l 291,723,5 2 0234 lslash
---- 500,110,153 1 0235 quotedblbase
-OE 998,709,20 2 0236 OE
-/L 611,694,5 2 0237 Lslash
-r! 278,469,225 1 0241 exclamdown
-char161 "
-ct 500,562,101 3 0242 cent
-char162 "
-Po 500,694,13 2 0243 sterling
-char163 "
-Cs 606,595 2 0244 currency
-char164 "
-Ye 500,701,5 2 0245 yen
-char165 "
-sc 500,694,197 3 0247 section
-char167 "
-ad 333,676 2 0250 dieresis
-char168 "
-co 747,694,20 2 0251 copyright
-char169 "
-Of 333,694 2 0252 ordfeminine
-char170 "
-fo 331,428 0 0253 guilsinglleft
-no 606,390 0 0254 logicalnot
-char172 "
-\- 606,293 0 0255 minus
-rg 747,694,20 2 0256 registered
-char174 "
-a- 333,617 2 0257 macron
-char175 "
-aa 333,696 2 0264 acute
-char180 "
-ps 628,689,150 3 0266 paragraph
-char182 "
-char183 250,319 0 0267 periodcentered
-ac 333,9,206 1 0270 cedilla
-char184 "
-Om 333,694 2 0272 ordmasculine
-char186 "
-fc 331,428 0 0273 guilsinglright
-r? 444,469,230 1 0277 questiondown
-char191 "
-`A 778,921,5 2 0300 Agrave
-char192 "
-'A 778,922,5 2 0301 Aacute
-char193 "
-^A 778,915,5 2 0302 Acircumflex
-char194 "
-~A 778,880,5 2 0303 Atilde
-char195 "
-:A 778,902,5 2 0304 Adieresis
-char196 "
-oA 778,925,5 2 0305 Aring
-char197 "
-AE 944,694,5 2 0306 AE
-char198 "
-,C 709,709,206 3 0307 Ccedilla
-char199 "
-`E 611,921,5 2 0310 Egrave
-char200 "
-'E 611,922,5 2 0311 Eacute
-char201 "
-^E 611,915,5 2 0312 Ecircumflex
-char202 "
-:E 611,902,5 2 0313 Edieresis
-char203 "
-`I 337,921,5 2 0314 Igrave
-char204 "
-'I 337,922,5 2 0315 Iacute
-char205 "
-^I 337,915,5 2 0316 Icircumflex
-char206 "
-:I 337,902,5 2 0317 Idieresis
-char207 "
-~N 831,880,20 2 0321 Ntilde
-char209 "
-`O 786,921,20 2 0322 Ograve
-char210 "
-'O 786,922,20 2 0323 Oacute
-char211 "
-^O 786,915,20 2 0324 Ocircumflex
-char212 "
-~O 786,880,20 2 0325 Otilde
-char213 "
-:O 786,902,20 2 0326 Odieresis
-char214 "
-/O 833,709,20 2 0330 Oslash
-char216 "
-`U 778,921,20 2 0331 Ugrave
-char217 "
-'U 778,922,20 2 0332 Uacute
-char218 "
-^U 778,915,20 2 0333 Ucircumflex
-char219 "
-:U 778,902,20 2 0334 Udieresis
-char220 "
-ss 556,731,9 2 0337 germandbls
-char223 "
-`a 500,695,20 2 0340 agrave
-char224 "
-'a 500,696,20 2 0341 aacute
-char225 "
-^a 500,689,20 2 0342 acircumflex
-char226 "
-~a 500,654,20 2 0343 atilde
-char227 "
-:a 500,676,20 2 0344 adieresis
-char228 "
-oa 500,720,20 2 0345 aring
-char229 "
-ae 758,469,20 0 0346 ae
-char230 "
-,c 444,469,206 1 0347 ccedilla
-char231 "
-`e 479,695,20 2 0350 egrave
-char232 "
-'e 479,696,20 2 0351 eacute
-char233 "
-^e 479,689,20 2 0352 ecircumflex
-char234 "
-:e 479,676,20 2 0353 edieresis
-char235 "
-`i 287,695,5 2 0354 igrave
-char236 "
-'i 287,696,5 2 0355 iacute
-char237 "
-^i 287,689,5 2 0356 icircumflex
-char238 "
-:i 287,676,5 2 0357 idieresis
-char239 "
-~n 582,654,5 2 0361 ntilde
-char241 "
-`o 546,695,20 2 0362 ograve
-char242 "
-'o 546,696,20 2 0363 oacute
-char243 "
-^o 546,689,20 2 0364 ocircumflex
-char244 "
-~o 546,654,20 2 0365 otilde
-char245 "
-:o 546,676,20 2 0366 odieresis
-char246 "
-/o 556,474,23 0 0370 oslash
-char248 "
-`u 603,695,12 2 0371 ugrave
-char249 "
-'u 603,696,12 2 0372 uacute
-char250 "
-^u 603,689,12 2 0373 ucircumflex
-char251 "
-:u 603,676,12 2 0374 udieresis
-char252 "
-:y 556,676,283 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/S b/ps/devps/S
deleted file mode 100644
index 139b9c14a..000000000
--- a/ps/devps/S
+++ /dev/null
@@ -1,226 +0,0 @@
-name S
-internalname Symbol
-special
-spacewidth 250
-charset
-space 250 0 0040
-! 333,673,17 2 0041 exclam
-fa 713,705 2 0042 universal
-# 500,673,17 2 0043 numbersign
-sh "
-te 549,707 2 0044 existential
-% 833,655,36 2 0045 percent
-& 778,661,18 2 0046 ampersand
-st 439,499,17 2 0047 suchthat
-( 333,673,191 3 0050 parenleft
-) 333,674,191 3 0051 parenright
-** 500,551 2 0052 asteriskmath
-+ 549,533 2 0053 plus
-pl "
-, 250,104,152 3 0054 comma
-\- 549,288 2 0055 minus
-mi "
-. 250,95,17 2 0056 period
-/ 278,646,17 2 0057 slash
-sl "
-0 500,685,17 2 0060 zero
-1 500,673 2 0061 one
-2 500,686 2 0062 two
-3 500,687,17 2 0063 three
-4 500,685 2 0064 four
-5 500,685,17 2 0065 five
-6 500,685,17 2 0066 six
-7 500,673,17 2 0067 seven
-8 500,686,18 2 0070 eight
-9 500,685,17 2 0071 nine
-: 278,460,17 2 0072 colon
-; 278,460,152 3 0073 semicolon
-< 549,522 2 0074 less
-= 549,390 2 0075 equal
-eq "
-> 549,522 2 0076 greater
-? 444,685,17 2 0077 question
-=~ 549,475 2 0100 congruent
-*A 722,673 2 0101 Alpha
-*B 667,672 2 0102 Beta
-*X 722,673 2 0103 Chi
-*D 612,688 2 0104 Delta
-*E 611,673 2 0105 Epsilon
-*F 763,672 2 0106 Phi
-*G 603,673 2 0107 Gamma
-*Y 722,673 2 0110 Eta
-*I 333,673 2 0111 Iota
---- 631,689,17 2 0112 theta1
-*K 722,672 2 0113 Kappa
-*L 686,688 2 0114 Lambda
-*M 889,673 2 0115 Mu
-*N 722,673,8 2 0116 Nu
-*O 722,685,17 2 0117 Omicron
-*P 768,673 2 0120 Pi
-*H 741,685,17 2 0121 Theta
-*R 556,673 2 0122 Rho
-*S 592,673 2 0123 Sigma
-*T 611,673 2 0124 Tau
---- 690,673 2 0125 Upsilon
-ts 439,500,233 3 0126 sigma1
-*W 768,688 2 0127 Omega
-*C 645,672 2 0130 Xi
-*Q 795,683 2 0131 Psi
-*Z 611,673 2 0132 Zeta
-[ 333,673,155 3 0133 bracketleft
-lB "
-3d 863,478 2 0134 therefore
-tf "
-] 333,673,155 3 0135 bracketright
-rB "
-pp 658,674 2 0136 perpendicular
-_ 500,0,252 1 0137 underscore
-rn 500,917 2 0140 radicalex
-*a 631,500,17 2 0141 alpha
-*b 549,741,222 3 0142 beta
-*x 549,500,231 3 0143 chi
-*d 494,740,17 2 0144 delta
-*e 439,502,19 2 0145 epsilon
-*f 521,670,224 3 0146 phi
-*g 411,499,225 3 0147 gamma
-*y 603,514,202 3 0150 eta
-*i 329,503,18 2 0151 iota
---- 603,499,224 3 0152 phi1
-*k 549,502 2 0153 kappa
-*l 549,739,18 2 0154 lambda
-*m 576,500,223 3 0155 mu
-char181 "
-*n 521,507,17 2 0156 nu
-*o 549,499,19 2 0157 omicron
-*p 549,486,20 2 0160 pi
-*h 521,690,18 2 0161 theta
-*r 549,499,230 3 0162 rho
-*s 603,500,21 2 0163 sigma
-*t 439,500,18 2 0164 tau
-*u 576,507,17 2 0165 upsilon
---- 713,583,17 2 0166 omega1
-*w 686,500,17 2 0167 omega
-*c 493,766,224 3 0170 xi
-*q 686,500,228 3 0171 psi
-*z 494,756,225 3 0172 zeta
-lC 480,673,183 3 0173 braceleft
-{ "
-ba 200,673,177 3 0174 bar
-| "
-rC 480,673,183 3 0175 braceright
-} "
-ap 549,307 2 0176 similar
-*U 620,684 2 0241 Upsilon1
-fm 247,735 2 0242 minute
-<= 549,639 2 0243 lessequal
-f/ 167,677,12 2 0244 fraction
-if 713,404 2 0245 infinity
---- 500,687,193 3 0246 florin
-CL 753,533,26 2 0247 club
-DI 753,550,36 2 0250 diamond
-HE 753,532,33 2 0251 heart
-SP 753,548,36 2 0252 spade
-<> 1042,511,15 2 0253 arrowboth
-<- 987,511,15 2 0254 arrowleft
-ua 603,910 2 0255 arrowup
--> 987,511,15 2 0256 arrowright
-da 603,888,22 2 0257 arrowdown
-de 400,684 2 0260 degree
-char176 "
-+- 549,645 2 0261 plusminus
-char177 "
-sd 411,737 2 0262 second
->= 549,639 2 0263 greaterequal
-mu 549,524 2 0264 multiply
-char215 "
-pt 713,404 2 0265 proportional
-pd 494,746,20 2 0266 partialdiff
-bu 460,473 2 0267 bullet
-di 549,456 2 0270 divide
-char247 "
-!= 549,549,25 2 0271 notequal
-== 549,443 2 0272 equivalence
-~~ 549,394 2 0273 approxequal
-~= "
---- 1000,95,17 2 0274 ellipsis
---- 603,1010,120 3 0275 arrowvertex
---- 1000,276 2 0276 arrowhorizex
-CR 658,629,16 2 0277 carriagereturn
-Ah 823,658,18 2 0300 aleph
-Im 686,740,53 3 0301 Ifraktur
-Re 795,734,15 2 0302 Rfraktur
-wp 987,573,211 3 0303 weierstrass
-c* 768,673,17 2 0304 circlemultiply
-c+ 768,675,15 2 0305 circleplus
-es 823,719,24 2 0306 emptyset
-ca 768,509 2 0307 intersection
-cu 768,492,17 2 0310 union
-sp 713,470 2 0311 propersuperset
-ip 713,470,125 3 0312 reflexsuperset
---- 713,540,70 3 0313 notsubset
-sb 713,470 2 0314 propersubset
-ib 713,470,125 3 0315 reflexsubset
-mo 713,468 2 0316 element
-nm 713,555,58 3 0317 notelement
-/_ 768,673 2 0320 angle
-gr 713,718,19 2 0321 gradient
---- 790,670,20 2 0322 registerserif
---- 790,675,15 2 0323 copyrightserif
---- 890,673 2 0324 trademarkserif
-product 823,751,101 3 0325 product
-sr 549,917,38 2 0326 radical
-md 250,310 2 0327 dotmath
-no 713,288 2 0330 logicalnot
-char172 "
-AN 603,454 2 0331 logicaland
-OR 603,477 2 0332 logicalor
-hA 1042,510,20 2 0333 arrowdblboth
-lA 987,513,15 2 0334 arrowdblleft
-uA 603,911 2 0335 arrowdblup
-rA 987,508,20 2 0336 arrowdblright
-dA 603,890,19 2 0337 arrowdbldown
---- 494,745 2 0340 lozenge
-la 329,746,198 3 0341 angleleft
---- 790,670,20 2 0342 registersans
---- 790,675,15 2 0343 copyrightsans
---- 786,673 2 0344 trademarksans
-sum 713,752,108 3 0345 summation
-parenlefttp 384,926,290 3 0346 parenlefttp
-parenleftex 384,920,80 3 0347 parenleftex
-parenleftbt 384,920,293 3 0350 parenleftbt
-bracketlefttp 384,925,75 3 0351 bracketlefttp
-lc "
-bracketleftex 384,925,75 3 0352 bracketleftex
-bracketleftbt 384,925,75 3 0353 bracketleftbt
-lf "
-bracelefttp 494,925,75 3 0354 bracelefttp
-lt "
-braceleftmid 494,925,75 3 0355 braceleftmid
-lk "
-braceleftbt 494,925,75 3 0356 braceleftbt
-lb "
-braceex 494,925,75 3 0357 braceex
-bracerightex "
-braceleftex "
-barex "
-bv "
---- 790,808,3 2 0360 apple
-ra 329,746,198 3 0361 angleright
-is 274,916,107,67,52,-10 3 0362 integral
---- 686,922,83 3 0363 integraltp
---- 686,975,88 3 0364 integralex
---- 686,921,81 3 0365 integralbt
-parenrighttp 384,926,293 3 0366 parenrighttp
-parenrightex 384,925,85 3 0367 parenrightex
-parenrightbt 384,926,293 3 0370 parenrightbt
-bracketrighttp 384,925,75 3 0371 bracketrighttp
-rc "
-bracketrightex 384,925,75 3 0372 bracketrightex
-bracketrightbt 384,925,75 3 0373 bracketrightbt
-rf "
-bracerighttp 494,925,75 3 0374 bracerighttp
-rt "
-bracerightmid 494,925,75 3 0375 bracerightmid
-rk "
-bracerightbt 494,925,75 3 0376 bracerightbt
-rb "
diff --git a/ps/devps/SS b/ps/devps/SS
deleted file mode 100644
index cd4ff28d8..000000000
--- a/ps/devps/SS
+++ /dev/null
@@ -1,194 +0,0 @@
-name SS
-internalname Symbol-Slanted
-special
-slant 15.5
-spacewidth 223
-charset
-space 223 0 0040
---- 296,599,15,137,-72,99 2 0041 exclam
---- 635,627,0,216,-173,99 2 0042 universal
---- 445,599,15,162,-21,99 2 0043 numbersign
---- 489,629,0,183,28,99 2 0044 existential
---- 741,583,32,75,-97,75 2 0045 percent
---- 692,589,16,103,-18,99 2 0046 ampersand
---- 391,444,15,109,6,99 2 0047 suchthat
---- 296,599,170,203,-39,99 3 0050 parenleft
---- 296,600,170,93,72,93 3 0051 parenright
---- 445,490,0,105,-76,99 2 0052 asteriskmath
---- 489,474,0,123,-26,99 2 0053 plus
---- 223,93,136,10,41,10 3 0054 comma
---- 489,256,0,117,-24,99 2 0055 minus
---- 223,85,15,1,-20,1 2 0056 period
---- 247,575,15,208,55,99 2 0057 slash
---- 445,610,15,142,-40,99 2 0060 zero
---- 445,599,0,56,-57,56 2 0061 one
---- 445,611,0,129,28,99 2 0062 two
---- 445,611,16,115,-6,99 2 0063 three
---- 445,610,0,135,-8,99 2 0064 four
---- 445,610,15,188,14,99 2 0065 five
---- 445,610,16,193,-37,99 2 0066 six
---- 445,599,15,190,-101,99 2 0067 seven
---- 445,611,16,141,-32,99 2 0070 eight
---- 445,609,15,140,-2,99 2 0071 nine
---- 247,409,15,89,-31,89 2 0072 colon
---- 247,409,136,99,17,99 3 0073 semicolon
---- 489,464,0,171,-37,99 2 0074 less
---- 489,347,0,147,1,99 2 0075 equal
---- 489,464,0,108,27,99 2 0076 greater
---- 395,610,15,172,-113,99 2 0077 question
---- 489,423,0,158,40,99 2 0100 congruent
---- 643,599,0,21,47,21 2 0101 Alpha
---- 594,598,0,101,24,99 2 0102 Beta
---- 643,599,0,205,58,99 2 0103 Chi
---- 545,612,0,46,45,46 2 0104 Delta
---- 544,599,0,194,22,99 2 0105 Epsilon
---- 679,598,0,132,-55,99 2 0106 Phi
---- 537,599,0,227,19,99 2 0107 Gamma
---- 643,599,0,243,15,99 2 0110 Eta
---- 296,599,0,222,22,99 2 0111 Iota
---- 562,614,15,133,-58,99 2 0112 theta1
---- 643,598,0,185,19,99 2 0113 Kappa
---- 611,612,0,49,45,49 2 0114 Lambda
---- 791,599,0,233,22,99 2 0115 Mu
---- 643,599,7,234,24,99 2 0116 Nu
---- 643,610,15,154,-62,99 2 0117 Omicron
---- 684,599,0,213,28,99 2 0120 Pi
---- 659,610,15,138,-62,99 2 0121 Theta
---- 495,599,0,200,25,99 2 0122 Rho
---- 527,599,0,186,45,99 2 0123 Sigma
---- 544,599,0,229,-109,99 2 0124 Tau
---- 614,599,0,240,-125,99 2 0125 Upsilon
-ts 391,445,208,151,-28,99 3 0126 sigma1
---- 684,612,0,126,20,99 2 0127 Omega
---- 574,598,0,176,14,99 2 0130 Xi
---- 708,608,0,227,-138,99 2 0131 Psi
---- 544,599,0,231,11,99 2 0132 Zeta
---- 296,599,138,207,16,99 3 0133 bracketleft
---- 768,426,0,0,-110 2 0134 therefore
---- 296,599,138,159,64,99 3 0135 bracketright
---- 586,600,0,60,37,60 2 0136 perpendicular
---- 445,0,224,0,122 1 0137 underscore
---- 445,816,0,829,-622,99 2 0140 radicalex
-*a 562,445,15,146,-34,99 2 0141 alpha
-*b 489,659,198,139,57,99 3 0142 beta
-*x 489,445,206,134,98,99 3 0143 chi
-*d 440,658,16,181,-33,99 2 0144 delta
-*e 391,447,17,127,1,99 2 0145 epsilon
-*f 464,596,200,103,-28,99 3 0146 phi
-*g 366,444,200,252,-42,99 3 0147 gamma
-*y 537,457,180,68,-50,68 3 0150 eta
-*i 293,448,16,53,-47,53 2 0151 iota
---- 537,444,199,117,-42,99 3 0152 phi1
-*k 489,447,0,182,-56,99 2 0153 kappa
-*l 489,658,16,91,29,91 2 0154 lambda
-*m 513,445,198,70,68,70 3 0155 mu
-*n 464,451,15,134,-69,99 2 0156 nu
-*o 489,444,17,87,-36,87 2 0157 omicron
-*p 489,433,18,160,-8,99 2 0160 pi
-*h 464,614,16,140,-53,99 2 0161 theta
-*r 489,444,205,82,69,82 3 0162 rho
-*s 537,445,19,175,-37,99 2 0163 sigma
-*t 391,445,16,170,-45,99 2 0164 tau
-*u 513,451,15,95,-55,95 2 0165 upsilon
---- 635,519,15,173,-28,99 2 0166 omega1
-*w 611,445,16,126,-35,99 2 0167 omega
-*c 439,681,200,126,-20,99 3 0170 xi
-*q 611,445,203,198,-91,99 3 0171 psi
-*z 440,673,200,190,-50,99 3 0172 zeta
---- 427,599,163,163,-66,99 3 0173 braceleft
---- 178,599,158,179,41,99 3 0174 bar
---- 427,599,163,67,31,67 3 0175 braceright
---- 489,273,0,110,-28,99 2 0176 similar
---- 552,609,0,208,-84,99 2 0241 Upsilon1
---- 220,654,0,223,-106,99 2 0242 minute
---- 489,569,0,206,24,99 2 0243 lessequal
---- 149,603,11,391,214,99 2 0244 fraction
---- 635,360,0,107,-41,99 2 0245 infinity
---- 445,612,172,219,86,99 3 0246 florin
---- 670,474,23,25,-69,25 2 0247 club
---- 670,490,32,0,-148 2 0250 diamond
---- 670,473,29,59,-155,59 2 0251 heart
---- 670,488,32,0,-82 2 0252 spade
---- 927,455,13,103,-40,99 2 0253 arrowboth
---- 878,455,13,87,-47,87 2 0254 arrowleft
---- 537,810,0,204,-173,99 2 0255 arrowup
---- 878,455,13,94,-55,94 2 0256 arrowright
---- 537,790,20,85,-54,85 2 0257 arrowdown
---- 356,609,0,160,-137,99 2 0260 degree
---- 489,574,0,154,41,99 2 0261 plusminus
---- 366,656,0,244,-100,99 2 0262 second
---- 489,569,0,143,24,99 2 0263 greaterequal
---- 489,466,0,170,22,99 2 0264 multiply
---- 635,360,0,82,-40,82 2 0265 proportional
---- 440,664,18,152,-12,99 2 0266 partialdiff
---- 409,421,0,95,-68,95 2 0267 bullet
---- 489,406,0,119,-24,99 2 0270 divide
---- 489,489,22,148,-1,99 2 0271 notequal
---- 489,394,0,163,15,99 2 0272 equivalence
---- 489,351,0,133,-7,99 2 0273 approxequal
---- 890,85,15,0,-57 2 0274 ellipsis
---- 537,899,107,92,-166,92 3 0275 arrowvertex
---- 890,246,0,171,42,99 2 0276 arrowhorizex
---- 586,560,14,174,10,99 2 0277 carriagereturn
---- 732,586,16,58,-109,58 2 0300 aleph
---- 611,659,47,123,24,99 2 0301 Ifraktur
---- 708,653,13,175,-21,99 2 0302 Rfraktur
---- 878,510,188,50,-62,50 3 0303 weierstrass
---- 684,599,15,124,-64,99 2 0304 circlemultiply
---- 684,601,13,125,-65,99 2 0305 circleplus
---- 732,640,21,202,12,99 2 0306 emptyset
---- 684,453,0,80,14,80 2 0307 intersection
---- 684,438,15,154,-60,99 2 0310 union
---- 635,418,0,90,32,90 2 0311 propersuperset
---- 635,418,111,89,67,89 3 0312 reflexsuperset
---- 635,481,62,159,-37,99 3 0313 notsubset
---- 635,418,0,159,-37,99 2 0314 propersubset
---- 635,418,111,159,34,99 3 0315 reflexsubset
---- 635,417,0,0,-43 2 0316 element
---- 635,494,52,0,-24 3 0317 notelement
---- 684,599,0,199,27,99 2 0320 angle
---- 635,639,17,220,-181,99 2 0321 gradient
---- 703,596,18,110,-70,99 2 0322 registerserif
---- 703,601,13,113,-72,99 2 0323 copyrightserif
---- 792,599,0,205,-119,99 2 0324 trademarkserif
---- 732,668,90,238,56,99 3 0325 product
---- 489,816,34,272,-84,99 2 0326 radical
---- 223,276,0,52,-81,52 2 0327 dotmath
---- 635,256,0,100,-28,99 2 0330 logicalnot
---- 537,404,0,32,29,32 2 0331 logicaland
---- 537,424,0,152,-101,99 2 0332 logicalor
---- 927,454,18,101,-42,99 2 0333 arrowdblboth
---- 878,457,13,114,-46,99 2 0334 arrowdblleft
---- 537,811,0,201,-102,99 2 0335 arrowdblup
---- 878,452,18,89,-21,89 2 0336 arrowdblright
---- 537,792,17,152,-53,99 2 0337 arrowdbldown
---- 440,663,0,129,-71,99 2 0340 lozenge
---- 293,664,176,229,-48,99 3 0341 angleleft
---- 703,596,18,110,-70,99 2 0342 registersans
---- 703,601,13,111,-70,99 2 0343 copyrightsans
---- 700,599,0,182,-129,99 2 0344 trademarksans
---- 635,669,96,171,65,99 3 0345 summation
---- 342,824,261,350,96,99 3 0346 parenlefttp
---- 342,823,76,46,38,46 3 0347 parenleftex
---- 342,824,261,47,-63,47 3 0350 parenleftbt
---- 342,824,71,268,72,99 3 0351 bracketlefttp
---- 342,823,70,13,72,13 3 0352 bracketleftex
---- 342,824,71,14,72,14 3 0353 bracketleftbt
---- 440,824,67,258,-108,99 3 0354 bracelefttp
---- 440,832,76,96,-76,96 3 0355 braceleftmid
---- 440,824,62,94,-169,94 3 0356 braceleftbt
---- 440,832,71,96,-107,96 3 0357 braceex
---- 293,664,176,102,79,99 3 0361 angleright
---- 244,815,95,305,63,99 3 0362 integral
---- 611,820,74,312,-222,99 3 0363 integraltp
---- 611,868,78,79,-221,79 3 0364 integralex
---- 611,820,72,64,20,64 3 0365 integralbt
---- 342,824,261,206,-223,99 3 0366 parenrighttp
---- 342,823,76,365,-281,99 3 0367 parenrightex
---- 342,824,261,365,80,99 3 0370 parenrightbt
---- 342,824,71,285,-199,99 3 0371 bracketrighttp
---- 342,823,70,285,-200,99 3 0372 bracketrightex
---- 342,824,71,285,54,99 3 0373 bracketrightbt
---- 440,824,67,35,-108,35 3 0374 bracerighttp
---- 440,832,76,127,-105,99 3 0375 bracerightmid
---- 440,824,62,94,54,94 3 0376 bracerightbt
diff --git a/ps/devps/TB b/ps/devps/TB
deleted file mode 100644
index 1c6154c48..000000000
--- a/ps/devps/TB
+++ /dev/null
@@ -1,427 +0,0 @@
-name TB
-internalname Times-Bold
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -74
-A w -74
-A v -74
-A ' -74
-A Y -92
-A W -111
-A V -129
-A T -74
-F . -92
-F , -92
-F A -74
-L y -55
-L ' -92
-L Y -92
-L W -92
-L V -92
-L T -92
-P . -92
-P , -92
-P A -74
-R y -35
-R Y -35
-R W -35
-R V -35
-R T -35
-T y -74
-T w -74
-T u -92
-T ; -74
-T s -92
-T r -74
-T . -74
-T o -92
-T i -18
-T - -92
-T hy -92
-T char173 -92
-T e -92
-T , -74
-T : -74
-T c -92
-T a -92
-T O -18
-T A -74
-V y -92
-V u -92
-V ; -92
-V r -74
-V . -129
-V o -92
-V i -37
-V - -74
-V hy -74
-V char173 -74
-V e -92
-V , -129
-V : -92
-V a -92
-V O -20
-V A -129
-W y -37
-W u -18
-W ; -55
-W r -18
-W . -92
-W o -55
-W i -18
-W - -37
-W hy -37
-W char173 -37
-W e -55
-W , -92
-W : -55
-W a -55
-W A -111
-Y v -111
-Y u -92
-Y ; -92
-Y q -111
-Y . -92
-Y p -92
-Y o -111
-Y i -37
-Y - -92
-Y hy -92
-Y char173 -92
-Y e -111
-Y , -92
-Y : -92
-Y a -111
-Y A -92
-f ' 55
-f f 0
-1 1 -55
-` ` -74
-` oq -74
-oq ` -74
-oq oq -74
-' s -37
-' ' -74
-r z 0
-r y 0
-r x 0
-r w 0
-r t 0
-r ' 18
-r q -18
-r . -92
-r o -18
-r - -37
-r hy -37
-r char173 -37
-r h 0
-r e -18
-r , -92
-r c -18
-v . -55
-v , -55
-w . -55
-w , -55
-y . -55
-y , -55
-charset
-ha 581,690 2 0000 asciicircum
-ti 520,461 0 0001 asciitilde
-vS 556,909,19 2 0002 Scaron
-vZ 667,909 2 0003 Zcaron
-vs 389,690,17 2 0004 scaron
-vz 444,690 2 0005 zcaron
-:Y 722,871 2 0006 Ydieresis
-tm 1000,681 2 0007 trademark
-space 250 0 0040
-! 333,690,18 2 0041 exclam
-" 555,690 2 0042 quotedbl
-# 500,684,17 2 0043 numbersign
-sh "
-$ 500,732,116 3 0044 dollar
-Do "
-% 1000,692,11 2 0045 percent
-& 833,690,17 2 0046 ampersand
-' 333,680 2 0047 quoteright
-( 333,699,169 3 0050 parenleft
-) 333,699,169 3 0051 parenright
-* 500,690 2 0052 asterisk
-+ 570,460,10 0 0053 plus
-, 250,157,181 1 0054 comma
-- 333,285 0 0055 hyphen
-hy "
-char173 "
-. 250,145,19 0 0056 period
-/ 278,750,17 2 0057 slash
-sl "
-0 500,690,18 2 0060 zero
-1 500,690 2 0061 one
-2 500,683 2 0062 two
-3 500,683,19 2 0063 three
-4 500,681 2 0064 four
-5 500,681,17 2 0065 five
-6 500,684,18 2 0066 six
-7 500,679 2 0067 seven
-8 500,685,17 2 0070 eight
-9 500,684,18 2 0071 nine
-: 333,473,18 0 0072 colon
-; 333,472,181 1 0073 semicolon
-< 570,460,10 0 0074 less
-= 570,375 0 0075 equal
-> 570,460,10 0 0076 greater
-? 500,681,17 2 0077 question
-@ 930,677,147 3 0100 at
-at "
-A 722,681 2 0101 A
-B 667,681 2 0102 B
-C 722,690,17 2 0103 C
-D 722,681 2 0104 D
-E 667,681 2 0105 E
-F 611,681 2 0106 F
-G 778,690,17 2 0107 G
-H 778,681 2 0110 H
-I 389,680 2 0111 I
-J 500,681,89 3 0112 J
-K 778,681 2 0113 K
-L 667,681 2 0114 L
-M 944,681 2 0115 M
-N 722,681,10 2 0116 N
-O 778,690,18 2 0117 O
-P 611,681 2 0120 P
-Q 778,690,182 3 0121 Q
-R 722,681 2 0122 R
-S 556,690,19 2 0123 S
-T 667,681 2 0124 T
-U 722,681,19 2 0125 U
-V 722,681,18 2 0126 V
-W 1000,680,18 2 0127 W
-X 722,681 2 0130 X
-Y 722,680 2 0131 Y
-Z 667,681 2 0132 Z
-[ 333,674,142 3 0133 bracketleft
-lB "
-\ 278,750,17 2 0134 backslash
-rs "
-] 333,674,142 3 0135 bracketright
-rB "
-a^ 333,690 2 0136 circumflex
-^ "
-_ 500,0,256 1 0137 underscore
-` 333,691 2 0140 quoteleft
-oq "
-a 500,472,19 0 0141 a
-b 556,670,18 2 0142 b
-c 444,472,17 0 0143 c
-d 556,670,17 2 0144 d
-e 444,474,18 0 0145 e
-f 333,690 2 0146 f
-g 500,472,210 1 0147 g
-h 556,670 2 0150 h
-i 278,690 2 0151 i
-j 333,690,212 3 0152 j
-k 556,670 2 0153 k
-l 278,670 2 0154 l
-m 833,471 0 0155 m
-n 556,473 0 0156 n
-o 500,472,18 0 0157 o
-p 556,473,210 1 0160 p
-q 556,472,210 1 0161 q
-r 444,473 0 0162 r
-s 389,472,17 0 0163 s
-t 333,627,19 2 0164 t
-u 556,460,17 0 0165 u
-v 500,460,14 0 0166 v
-w 722,460,14 0 0167 w
-x 500,460 0 0170 x
-y 500,460,212 1 0171 y
-z 444,460 0 0172 z
-lC 394,674,142 3 0173 braceleft
-{ "
-ba 220,720,195 3 0174 bar
-| "
-rC 394,674,142 3 0175 braceright
-} "
-a~ 333,671 2 0176 tilde
-~ "
---- 333,154,179 1 0200 quotesinglbase
-Fo 500,436 0 0201 guillemotleft
-char171 "
-Fc 500,436 0 0202 guillemotright
-char187 "
-bu 350,425 0 0203 bullet
---- 500,713,157 3 0204 florin
-f/ 167,690,17 2 0205 fraction
-%0 1000,718,55 2 0206 perthousand
-dg 500,690,141 3 0207 dagger
-dd 500,681,138 3 0210 daggerdbl
-en 500,270 0 0211 endash
-em 1000,280 0 0212 emdash
-fi 556,690 2 0214 fi
-fl 556,691 2 0215 fl
-.i 278,460 0 0220 dotlessi
-ga 333,695 2 0222 grave
-a" 333,753 2 0223 hungarumlaut
-a. 333,625 2 0224 dotaccent
-ab 333,667 2 0225 breve
-ah 333,690 2 0226 caron
-ao 333,746 2 0227 ring
-ho 333,70,179 1 0230 ogonek
-lq 500,679 2 0231 quotedblleft
-rq 500,680 2 0232 quotedblright
-oe 722,473,17 0 0233 oe
-/l 278,670 2 0234 lslash
---- 500,154,179 1 0235 quotedblbase
-OE 1000,683,7 2 0236 OE
-/L 667,681 2 0237 Lslash
-r! 333,498,210 1 0241 exclamdown
-char161 "
-ct 500,586,148 3 0242 cent
-char162 "
-Po 500,682,17 2 0243 sterling
-char163 "
-Cs 500,604 2 0244 currency
-char164 "
-Ye 500,681 2 0245 yen
-char165 "
-sc 500,677,148 3 0247 section
-char167 "
-ad 333,652 2 0250 dieresis
-char168 "
-co 747,690,17 2 0251 copyright
-char169 "
-Of 300,685 2 0252 ordfeminine
-char170 "
-fo 333,436 0 0253 guilsinglleft
-no 570,375 0 0254 logicalnot
-char172 "
-\- 570,262 0 0255 minus
-rg 747,690,17 2 0256 registered
-char174 "
-a- 333,600 2 0257 macron
-char175 "
-aa 333,695 2 0264 acute
-char180 "
-ps 540,681,190 3 0266 paragraph
-char182 "
-char183 250,394 0 0267 periodcentered
-ac 333,0,211 1 0270 cedilla
-char184 "
-Om 330,685 2 0272 ordmasculine
-char186 "
-fc 333,436 0 0273 guilsinglright
-r? 500,488,210 1 0277 questiondown
-char191 "
-`A 722,914 2 0300 Agrave
-char192 "
-'A 722,914 2 0301 Aacute
-char193 "
-^A 722,909 2 0302 Acircumflex
-char194 "
-~A 722,890 2 0303 Atilde
-char195 "
-:A 722,871 2 0304 Adieresis
-char196 "
-oA 722,965 2 0305 Aring
-char197 "
-AE 1000,681 2 0306 AE
-char198 "
-,C 722,690,211 3 0307 Ccedilla
-char199 "
-`E 667,914 2 0310 Egrave
-char200 "
-'E 667,914 2 0311 Eacute
-char201 "
-^E 667,909 2 0312 Ecircumflex
-char202 "
-:E 667,871 2 0313 Edieresis
-char203 "
-`I 389,914 2 0314 Igrave
-char204 "
-'I 389,914 2 0315 Iacute
-char205 "
-^I 389,909 2 0316 Icircumflex
-char206 "
-:I 389,871 2 0317 Idieresis
-char207 "
-~N 722,890,10 2 0321 Ntilde
-char209 "
-`O 778,914,18 2 0322 Ograve
-char210 "
-'O 778,914,18 2 0323 Oacute
-char211 "
-^O 778,909,18 2 0324 Ocircumflex
-char212 "
-~O 778,890,18 2 0325 Otilde
-char213 "
-:O 778,871,18 2 0326 Odieresis
-char214 "
-/O 778,740,75 3 0330 Oslash
-char216 "
-`U 722,914,19 2 0331 Ugrave
-char217 "
-'U 722,914,19 2 0332 Uacute
-char218 "
-^U 722,909,19 2 0333 Ucircumflex
-char219 "
-:U 722,871,19 2 0334 Udieresis
-char220 "
-ss 556,689,18 2 0337 germandbls
-char223 "
-`a 500,695,19 2 0340 agrave
-char224 "
-'a 500,695,19 2 0341 aacute
-char225 "
-^a 500,690,19 2 0342 acircumflex
-char226 "
-~a 500,671,19 2 0343 atilde
-char227 "
-:a 500,652,19 2 0344 adieresis
-char228 "
-oa 500,746,19 2 0345 aring
-char229 "
-ae 722,474,17 0 0346 ae
-char230 "
-,c 444,472,211 1 0347 ccedilla
-char231 "
-`e 444,695,18 2 0350 egrave
-char232 "
-'e 444,695,18 2 0351 eacute
-char233 "
-^e 444,690,18 2 0352 ecircumflex
-char234 "
-:e 444,652,18 2 0353 edieresis
-char235 "
-`i 278,695 2 0354 igrave
-char236 "
-'i 278,695 2 0355 iacute
-char237 "
-^i 278,690 2 0356 icircumflex
-char238 "
-:i 278,652 2 0357 idieresis
-char239 "
-~n 556,671 2 0361 ntilde
-char241 "
-`o 500,695,18 2 0362 ograve
-char242 "
-'o 500,695,18 2 0363 oacute
-char243 "
-^o 500,690,18 2 0364 ocircumflex
-char244 "
-~o 500,671,18 2 0365 otilde
-char245 "
-:o 500,652,18 2 0366 odieresis
-char246 "
-/o 500,550,95 3 0370 oslash
-char248 "
-`u 556,695,17 2 0371 ugrave
-char249 "
-'u 556,695,17 2 0372 uacute
-char250 "
-^u 556,690,17 2 0373 ucircumflex
-char251 "
-:u 556,652,17 2 0374 udieresis
-char252 "
-:y 500,652,212 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/TBI b/ps/devps/TBI
deleted file mode 100644
index 3acf3d14c..000000000
--- a/ps/devps/TBI
+++ /dev/null
@@ -1,414 +0,0 @@
-name TBI
-internalname Times-BoldItalic
-slant 15
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -74
-A w -74
-A v -74
-A ' -74
-A Y -55
-A W -92
-A V -74
-A T -55
-F . -129
-F , -129
-F A -92
-L y -37
-L ' -55
-L Y -37
-L W -37
-L V -37
-L T -18
-P . -129
-P , -129
-P A -74
-R y -18
-R Y -18
-R W -18
-R V -18
-T y -37
-T w -37
-T u -37
-T ; -74
-T s -92
-T r -37
-T . -92
-T o -92
-T i -37
-T - -92
-T hy -92
-T char173 -92
-T e -92
-T , -92
-T : -74
-T c -92
-T a -92
-T O -18
-T A -55
-V y -74
-V u -55
-V ; -74
-V r -55
-V . -129
-V o -111
-V i -55
-V - -55
-V hy -55
-V char173 -55
-V e -111
-V , -129
-V : -74
-V a -111
-V A -74
-W y -55
-W u -55
-W ; -55
-W r -74
-W . -74
-W o -74
-W i -37
-W - -37
-W hy -37
-W char173 -37
-W e -74
-W , -74
-W : -55
-W a -74
-W A -74
-Y v -92
-Y u -92
-Y ; -92
-Y q -111
-Y . -74
-Y p -74
-Y o -111
-Y i -55
-Y - -92
-Y hy -92
-Y char173 -92
-Y e -111
-Y , -92
-Y : -92
-Y a -92
-Y A -74
-f ' 55
-f f -18
-1 1 -55
-` ` -74
-` oq -74
-oq ` -74
-oq oq -74
-' t -37
-' s -74
-' ' -74
-r ' 37
-r . -55
-r , -55
-v . -37
-v , -37
-w . -37
-w , -37
-y . -37
-y , -37
-charset
-ha 570,662,0,16,16,16 2 0000 asciicircum
-ti 570,353,0,17,17,17 0 0001 asciitilde
-vS 556,887,18,43,44,43 2 0002 Scaron
-vZ 611,887,0,33,51,33 2 0003 Zcaron
-vs 389,683,13,126,34,98 2 0004 scaron
-vz 389,683,58,126,74,98 2 0005 zcaron
-:Y 611,852,0,64,4,64 2 0006 Ydieresis
-tm 1000,676,0,30,10,30 2 0007 trademark
-space 250 0 0040
-! 389,676,13,28,-16,28 2 0041 exclam
-" 555,693,0,44,-92,44 2 0042 quotedbl
-# 500,662,0,46,46,46 2 0043 numbersign
-sh "
-$ 500,723,101,42,70,42 3 0044 dollar
-Do "
-% 833,685,8,1,11,1 2 0045 percent
-& 778,676,19,0,9 2 0046 ampersand
-' 333,675,0,0,-30 2 0047 quoteright
-( 333,676,179,57,22,57 3 0050 parenleft
-) 333,676,179,0,94 3 0051 parenright
-* 500,676,0,0,-6 2 0052 asterisk
-+ 570,505,0,17,17,17 0 0053 plus
-, 250,132,181,0,60 1 0054 comma
-- 333,282,0,16,17,16 0 0055 hyphen
-hy "
-char173 "
-. 250,133,13,0,27 0 0056 period
-/ 278,682,18,61,61,61 2 0057 slash
-sl "
-0 500,676,13,22,33,22 2 0060 zero
-1 500,676,0,0,45 2 0061 one
-2 500,676,0,0,77 2 0062 two
-3 500,676,13,0,65 2 0063 three
-4 500,676,0,48,65,48 2 0064 four
-5 500,662,13,32,61,32 2 0065 five
-6 500,676,13,54,27,54 2 0066 six
-7 500,662,0,69,-1,69 2 0067 seven
-8 500,676,13,21,47,21 2 0070 eight
-9 500,676,13,20,62,20 2 0071 nine
-: 333,458,13,8,-2,8 0 0072 colon
-; 333,458,181,8,37,8 1 0073 semicolon
-< 570,524,14,20,19,20 2 0074 less
-= 570,401,0,17,17,17 0 0075 equal
-> 570,524,14,20,19,20 2 0076 greater
-? 500,676,13,15,-28,15 2 0077 question
-@ 832,691,150,56,59,56 3 0100 at
-at "
-A 667,676,0,0,101 2 0101 A
-B 667,662,0,1,74,1 2 0102 B
-C 667,677,18,43,28,43 2 0103 C
-D 722,662,0,21,81,21 2 0104 D
-E 667,662,0,29,77,29 2 0105 E
-F 667,662,0,29,70,29 2 0106 F
-G 722,676,18,27,29,27 2 0107 G
-H 778,662,0,63,74,63 2 0110 H
-I 389,662,0,73,72,73 2 0111 I
-J 500,662,98,69,95,69 3 0112 J
-K 667,662,0,68,81,68 2 0113 K
-L 611,662,0,23,72,23 2 0114 L
-M 889,662,12,68,79,68 2 0115 M
-N 722,662,18,68,77,68 2 0116 N
-O 722,676,18,12,23,12 2 0117 O
-P 611,662,0,47,77,47 2 0120 P
-Q 722,676,203,12,23,12 3 0121 Q
-R 667,662,0,0,79 2 0122 R
-S 556,676,18,18,44,18 2 0123 S
-T 611,662,0,71,11,71 2 0124 T
-U 722,662,18,64,-16,64 2 0125 U
-V 667,662,18,75,2,75 2 0126 V
-W 889,662,18,75,2,75 2 0127 W
-X 667,662,0,70,74,70 2 0130 X
-Y 611,662,0,64,4,64 2 0131 Y
-Z 611,662,0,33,51,33 2 0132 Z
-[ 333,682,157,105,57,98 3 0133 bracketleft
-lB "
-\ 278,682,0,237,49,98 2 0134 backslash
-rs "
-] 333,682,157,47,115,47 3 0135 bracketright
-rB "
-a^ 333,682,0,111,-20,98 2 0136 circumflex
-^ "
-_ 500,0,127,50,50,50 1 0137 underscore
-` 333,676,0,36,-67,36 2 0140 quoteleft
-oq "
-a 500,458,14,30,41,30 0 0141 a
-b 500,682,13,24,29,24 2 0142 b
-c 444,458,13,24,25,24 0 0143 c
-d 500,682,13,91,41,91 2 0144 d
-e 444,458,13,19,25,19 0 0145 e
-f 333,682,203,177,196,98 3 0146 f
-g 500,458,203,48,77,48 1 0147 g
-h 556,682,13,12,38,12 2 0150 h
-i 278,676,13,56,25,56 2 0151 i
-j 278,676,203,83,202,83 3 0152 j
-k 500,682,13,61,40,61 2 0153 k
-l 278,682,13,84,19,84 2 0154 l
-m 778,458,13,16,34,16 0 0155 m
-n 556,458,13,12,26,12 0 0156 n
-o 500,458,13,17,23,17 0 0157 o
-p 500,458,203,31,129,31 1 0160 p
-q 500,459,203,36,29,36 1 0161 q
-r 389,458,0,76,41,76 0 0162 r
-s 389,459,13,25,34,25 0 0163 s
-t 278,592,14,77,34,77 2 0164 t
-u 556,458,13,15,2,15 0 0165 u
-v 444,458,13,38,0,38 0 0166 v
-w 667,458,13,25,0,25 0 0167 w
-x 500,458,13,48,55,48 0 0170 x
-y 444,458,203,29,110,29 1 0171 y
-z 389,448,58,55,74,55 0 0172 z
-lC 348,686,154,83,19,83 3 0173 braceleft
-{ "
-ba 220,682,0,0,-20 2 0174 bar
-| "
-rC 348,679,161,21,81,21 3 0175 braceright
-} "
-a~ 333,648,0,141,-19,98 2 0176 tilde
-~ "
---- 333,132,181,0,-16 1 0200 quotesinglbase
-Fo 500,416,0,24,29,24 0 0201 guillemotleft
-char171 "
-Fc 500,421,0,24,29,24 0 0202 guillemotright
-char187 "
-bu 350,425 0 0203 bullet
---- 500,682,154,80,136,80 3 0204 florin
-f/ 167,662,0,210,211,98 2 0205 fraction
-%0 1000,699,49,35,43,35 2 0206 perthousand
-dg 500,676,146,39,-40,39 3 0207 dagger
-dd 500,675,143,37,39,37 3 0210 daggerdbl
-en 500,266,0,61,61,61 0 0211 endash
-em 1000,266,0,64,64,64 0 0212 emdash
-fi 556,682,203,32,207,32 3 0214 fi
-fl 556,682,203,71,199,71 3 0215 fl
-.i 278,458,13,32,23,32 0 0220 dotlessi
-ga 333,690,0,42,-65,42 2 0222 grave
-a" 333,750,0,56,22,56 2 0223 hungarumlaut
-a. 333,648,0,25,-130,25 2 0224 dotaccent
-ab 333,671,0,131,-49,98 2 0225 breve
-ah 333,683,0,154,-59,98 2 0226 caron
-ao 333,676,0,69,-91,69 2 0227 ring
-ho 333,44,173,0,87 1 0230 ogonek
-lq 500,676,0,63,-7,63 2 0231 quotedblleft
-rq 500,675,0,59,-6,59 2 0232 quotedblright
-oe 722,458,13,15,24,15 0 0233 oe
-/l 278,682,13,98,38,98 2 0234 lslash
---- 500,132,181,0,107 1 0235 quotedblbase
-OE 944,670,8,42,27,42 2 0236 OE
-/L 611,662,0,23,72,23 2 0237 Lslash
-r! 389,458,232,0,29 1 0241 exclamdown
-char161 "
-ct 500,570,142 3 0242 cent
-char162 "
-Po 500,676,13,55,82,55 2 0243 sterling
-char163 "
-Cs 500,612,0,53,53,53 2 0244 currency
-char164 "
-Ye 500,662,0,115,65,98 2 0245 yen
-char165 "
-sc 500,676,143,4,14,4 3 0247 section
-char167 "
-ad 333,648,0,141,-35,98 2 0250 dieresis
-char168 "
-co 747,676,18,26,27,26 2 0251 copyright
-char169 "
-Of 266,676,0,75,74,75 2 0252 ordfeminine
-char170 "
-fo 333,416,0,27,8,27 0 0253 guilsinglleft
-no 606,401,0,0,-1 0 0254 logicalnot
-char172 "
-\- 606,300,0,0,-1 0 0255 minus
-rg 747,676,18,26,27,26 2 0256 registered
-char174 "
-a- 333,616,0,137,-31,98 2 0257 macron
-char175 "
-aa 333,690,0,122,-118,98 2 0264 acute
-char180 "
-ps 500,682,189,142,-11,98 3 0266 paragraph
-char182 "
-char183 250,328,0,0,-1 0 0267 periodcentered
-ac 333,5,216,0,18 1 0270 cedilla
-char184 "
-Om 300,676,0,50,49,50 2 0272 ordmasculine
-char186 "
-fc 333,421,0,8,27,8 0 0273 guilsinglright
-r? 500,487,203,0,20 1 0277 questiondown
-char191 "
-`A 667,894,0,0,101 2 0300 Agrave
-char192 "
-'A 667,894,0,0,101 2 0301 Aacute
-char193 "
-^A 667,886,0,0,101 2 0302 Acircumflex
-char194 "
-~A 667,852,0,0,101 2 0303 Atilde
-char195 "
-:A 667,852,0,0,101 2 0304 Adieresis
-char196 "
-oA 667,880,0,0,101 2 0305 Aring
-char197 "
-AE 944,662,0,37,91,37 2 0306 AE
-char198 "
-,C 667,677,216,43,28,43 3 0307 Ccedilla
-char199 "
-`E 667,894,0,29,77,29 2 0310 Egrave
-char200 "
-'E 667,894,0,29,77,29 2 0311 Eacute
-char201 "
-^E 667,886,0,29,77,29 2 0312 Ecircumflex
-char202 "
-:E 667,852,0,29,77,29 2 0313 Edieresis
-char203 "
-`I 389,894,0,73,72,73 2 0314 Igrave
-char204 "
-'I 389,894,0,94,72,94 2 0315 Iacute
-char205 "
-^I 389,886,0,83,72,83 2 0316 Icircumflex
-char206 "
-:I 389,852,0,113,72,98 2 0317 Idieresis
-char207 "
-~N 722,852,18,68,77,68 2 0321 Ntilde
-char209 "
-`O 722,894,18,12,23,12 2 0322 Ograve
-char210 "
-'O 722,894,18,12,23,12 2 0323 Oacute
-char211 "
-^O 722,886,18,12,23,12 2 0324 Ocircumflex
-char212 "
-~O 722,852,18,12,23,12 2 0325 Otilde
-char213 "
-:O 722,852,18,12,23,12 2 0326 Odieresis
-char214 "
-/O 722,754,124,12,23,12 3 0330 Oslash
-char216 "
-`U 722,894,18,64,-16,64 2 0331 Ugrave
-char217 "
-'U 722,894,18,64,-16,64 2 0332 Uacute
-char218 "
-^U 722,886,18,64,-16,64 2 0333 Ucircumflex
-char219 "
-:U 722,852,18,64,-16,64 2 0334 Udieresis
-char220 "
-ss 500,682,203,47,218,47 3 0337 germandbls
-char223 "
-`a 500,690,14,30,41,30 2 0340 agrave
-char224 "
-'a 500,690,14,39,41,39 2 0341 aacute
-char225 "
-^a 500,682,14,30,41,30 2 0342 acircumflex
-char226 "
-~a 500,648,14,58,41,58 2 0343 atilde
-char227 "
-:a 500,648,14,58,41,58 2 0344 adieresis
-char228 "
-oa 500,676,14,30,41,30 2 0345 aring
-char229 "
-ae 722,458,13,13,35,13 0 0346 ae
-char230 "
-,c 444,458,216,24,25,24 1 0347 ccedilla
-char231 "
-`e 444,690,13,19,25,19 2 0350 egrave
-char232 "
-'e 444,690,13,67,25,67 2 0351 eacute
-char233 "
-^e 444,682,13,56,25,56 2 0352 ecircumflex
-char234 "
-:e 444,648,13,86,25,86 2 0353 edieresis
-char235 "
-`i 278,690,13,70,23,70 2 0354 igrave
-char236 "
-'i 278,690,13,150,23,98 2 0355 iacute
-char237 "
-^i 278,682,13,139,23,98 2 0356 icircumflex
-char238 "
-:i 278,648,13,169,23,98 2 0357 idieresis
-char239 "
-~n 556,648,13,30,26,30 2 0361 ntilde
-char241 "
-`o 500,690,13,17,23,17 2 0362 ograve
-char242 "
-'o 500,690,13,39,23,39 2 0363 oacute
-char243 "
-^o 500,682,13,28,23,28 2 0364 ocircumflex
-char244 "
-~o 500,648,13,58,23,58 2 0365 otilde
-char245 "
-:o 500,648,13,58,23,58 2 0366 odieresis
-char246 "
-/o 500,556,118,17,23,17 3 0370 oslash
-char248 "
-`u 556,690,13,15,2,15 2 0371 ugrave
-char249 "
-'u 556,690,13,15,2,15 2 0372 uacute
-char250 "
-^u 556,682,13,15,2,15 2 0373 ucircumflex
-char251 "
-:u 556,648,13,30,2,30 2 0374 udieresis
-char252 "
-:y 444,648,203,86,110,86 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/TI b/ps/devps/TI
deleted file mode 100644
index bd842e65f..000000000
--- a/ps/devps/TI
+++ /dev/null
@@ -1,432 +0,0 @@
-name TI
-internalname Times-Italic
-slant 7
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -55
-A w -55
-A v -55
-A ' -37
-A Y -55
-A W -37
-A V -50
-A T -37
-F . -129
-F , -129
-F A -129
-L y -30
-L ' -37
-L Y -20
-L W -37
-L V -37
-L T -20
-P . -129
-P , -129
-P A -129
-R y -18
-R Y -18
-R W -18
-R V -18
-R T 0
-T y -74
-T w -74
-T u -55
-T ; -65
-T s -92
-T r -55
-T . -74
-T o -92
-T i -55
-T - -74
-T hy -74
-T char173 -74
-T e -92
-T , -74
-T : -55
-T c -92
-T a -92
-T O -18
-T A -74
-V y -92
-V u -74
-V ; -74
-V r -74
-V . -129
-V o -111
-V i -74
-V - -55
-V hy -55
-V char173 -55
-V e -111
-V , -129
-V : -65
-V a -111
-V O -30
-V A -74
-W y -92
-W u -55
-W ; -65
-W r -55
-W . -92
-W o -92
-W i -55
-W - -37
-W hy -37
-W char173 -37
-W e -92
-W , -92
-W : -65
-W a -92
-W A -70
-Y v -92
-Y u -92
-Y ; -65
-Y q -111
-Y . -92
-Y p -92
-Y o -92
-Y i -74
-Y - -74
-Y hy -74
-Y char173 -74
-Y e -92
-Y , -92
-Y : -65
-Y a -92
-Y A -70
-f ' 92
-1 1 -74
-` ` -111
-` oq -111
-oq ` -111
-oq oq -111
-' t -111
-' s -129
-' ' -111
-r y 0
-r x 0
-r w 0
-r v 0
-r u 0
-r t 0
-r r 0
-r ' 37
-r q -37
-r . -111
-r o -37
-r - -20
-r hy -20
-r char173 -20
-r h -18
-r g -37
-r e -37
-r d -37
-r , -111
-r c -37
-v . -74
-v , -74
-w . -74
-w , -74
-y . -55
-y , -55
-charset
-ha 422,660,0,131,50,44 2 0000 asciicircum
-ti 541,340,0,31,32,31 0 0001 asciitilde
-vS 500,896,22,56,41,44 2 0002 Scaron
-vZ 556,896,0,75,69,44 2 0003 Zcaron
-vs 389,669,14,111,34,44 2 0004 scaron
-vz 389,669,0,111,48,44 2 0005 zcaron
-:Y 556,861,0,94,6,44 2 0006 Ydieresis
-tm 980,672,0,15,15,15 2 0007 trademark
-space 250 0 0040
-! 333,670,10,13,4,13 2 0041 exclam
-" 420,673,0,32,-57,32 2 0042 quotedbl
-# 500,683,6,58,57,44 2 0043 numbersign
-sh "
-$ 500,735,102,31,37,31 3 0044 dollar
-Do "
-% 833,682,14,0,-13 2 0045 percent
-& 778,673,22,0,-10 2 0046 ampersand
-' 333,678,0,0,-19 2 0047 quoteright
-( 333,662,180,29,9,29 3 0050 parenleft
-) 333,664,178,3,31,3 3 0051 parenright
-* 500,684,0,0,-10 2 0052 asterisk
-+ 675,505,0,0,-35 2 0053 plus
-, 250,94,126,0,-7 1 0054 comma
-- 333,254,0,0,-5 0 0055 hyphen
-hy "
-char173 "
-. 250,90,10,0,-25 0 0056 period
-/ 278,641,14,24,48,24 2 0057 slash
-sl "
-0 500,683,9,20,31,20 2 0060 zero
-1 500,684,0,0,19 2 0061 one
-2 500,682,0,0,57 2 0062 two
-3 500,682,12,0,57 2 0063 three
-4 500,681,0,4,58,4 2 0064 four
-5 500,666,15,12,62,12 2 0065 five
-6 500,685,8,47,26,44 2 0066 six
-7 500,666,12,62,-6,44 2 0067 seven
-8 500,681,7,25,38,25 2 0070 eight
-9 500,684,18,20,40,20 2 0071 nine
-: 333,444,10,1,-36,1 0 0072 colon
-; 333,441,124,9,-13,9 1 0073 semicolon
-< 675,515,7,0,-33 2 0074 less
-= 675,383,0,0,-35 0 0075 equal
-> 675,515,7,0,-32 2 0076 greater
-? 500,670,10,0,-55 2 0077 question
-@ 920,648,191,0,11 3 0100 at
-at "
-A 611,672,0,3,95,3 2 0101 A
-B 611,660,0,1,78,1 2 0102 B
-C 667,672,23,36,17,36 2 0103 C
-D 722,660,0,0,77 2 0104 D
-E 611,660,0,48,67,44 2 0105 E
-F 611,660,0,48,67,44 2 0106 F
-G 722,672,23,29,19,29 2 0107 G
-H 722,660,0,70,76,44 2 0110 H
-I 333,660,0,74,76,44 2 0111 I
-J 444,660,22,85,86,44 2 0112 J
-K 667,660,0,85,65,44 2 0113 K
-L 556,660,0,29,82,29 2 0114 L
-M 833,660,0,67,74,44 2 0115 M
-N 667,660,12,81,86,44 2 0116 N
-O 722,671,23,4,8,4 2 0117 O
-P 611,660,0,21,66,21 2 0120 P
-Q 722,671,186,9,9,9 3 0121 Q
-R 611,660,0,5,82,5 2 0122 R
-S 500,674,22,33,41,33 2 0123 S
-T 556,660,0,96,18,44 2 0124 T
-U 722,660,21,75,-27,44 2 0125 U
-V 611,660,20,98,6,44 2 0126 V
-W 833,660,20,92,15,44 2 0127 W
-X 611,660,0,72,95,44 2 0130 X
-Y 556,660,0,94,6,44 2 0131 Y
-Z 556,660,0,75,69,44 2 0132 Z
-[ 389,654,170,52,28,44 3 0133 bracketleft
-lB "
-\ 278,651,12,24,48,24 2 0134 backslash
-rs "
-] 389,654,170,2,81,2 3 0135 bracketright
-rB "
-a^ 333,669,0,91,-46,44 2 0136 circumflex
-^ "
-_ 500,0,252,60,59,44 1 0137 underscore
-` 333,677,0,3,-99,3 2 0140 quoteleft
-oq "
-a 500,446,11,24,35,24 0 0141 a
-b 500,682,12,25,26,25 2 0142 b
-c 444,446,11,26,18,26 0 0143 c
-d 500,684,11,71,35,44 2 0144 d
-e 444,446,13,18,16,18 0 0145 e
-f 278,684,207,187,198,44 3 0146 f
-g 500,445,209,21,40,21 1 0147 g
-h 500,684,10,23,27,23 2 0150 h
-i 278,660,10,35,7,35 2 0151 i
-j 278,660,207,59,159,44 3 0152 j
-k 444,685,12,66,34,44 2 0153 k
-l 278,685,10,48,9,44 2 0154 l
-m 722,447,10,26,39,26 0 0155 m
-n 500,447,10,21,27,21 0 0156 n
-o 500,448,13,17,23,17 0 0157 o
-p 500,446,206,15,125,15 1 0160 p
-q 500,445,206,33,30,33 1 0161 q
-r 389,446,0,53,26,44 0 0162 r
-s 389,446,14,28,34,28 0 0163 s
-t 278,548,10,60,12,44 2 0164 t
-u 500,447,11,22,8,22 0 0165 u
-v 444,444,11,29,26,29 0 0166 v
-w 667,447,10,33,36,33 0 0167 w
-x 444,446,10,56,81,44 0 0170 x
-y 444,445,209,26,77,26 1 0171 y
-z 389,434,0,41,48,41 0 0172 z
-lC 400,675,179,61,-15,44 3 0173 braceleft
-{ "
-ba 275,670,188,26,72,26 3 0174 bar
-| "
-rC 400,675,179,0,116 3 0175 braceright
-} "
-a~ 333,639,0,103,-64,44 2 0176 tilde
-~ "
---- 333,94,126,0,-33 1 0200 quotesinglbase
-Fo 500,400,0,0,-4 0 0201 guillemotleft
-char171 "
-Fc 500,406,0,0,-9 0 0202 guillemotright
-char187 "
-bu 350,425 0 0203 bullet
---- 500,688,189,42,47,42 3 0204 florin
-f/ 167,672,15,221,226,44 2 0205 fraction
-%0 1000,690,65,40,41,40 3 0206 perthousand
-dg 500,734,93,30,-42,30 3 0207 dagger
-dd 500,743,93,32,30,32 3 0210 daggerdbl
-en 500,242,0,51,53,44 0 0211 endash
-em 889,242,0,106,115,44 0 0212 emdash
-fi 500,684,207,18,186,18 3 0214 fi
-fl 500,684,207,59,190,44 3 0215 fl
-.i 278,447,10,0,3 0 0220 dotlessi
-ga 333,659,0,50,-110,44 2 0222 grave
-a" 333,749,0,65,-12,44 2 0223 hungarumlaut
-a. 333,625,0,0,-62 2 0224 dotaccent
-ab 333,645,0,118,-90,44 2 0225 breve
-ah 333,669,0,139,-88,44 2 0226 caron
-ao 333,703,0,150,-189,44 2 0227 ring
-ho 333,40,159,0,94 1 0230 ogonek
-lq 556,677,0,4,-116,4 2 0231 quotedblleft
-rq 556,678,0,0,-18 2 0232 quotedblright
-oe 667,445,15,26,24,26 0 0233 oe
-/l 278,685,10,36,50,36 2 0234 lslash
---- 556,94,126,0,-13 1 0235 quotedblbase
-OE 944,668,10,49,20,44 2 0236 OE
-/L 556,660,0,61,50,44 2 0237 Lslash
-r! 389,468,213,0,-9 1 0241 exclamdown
-char161 "
-ct 500,564,146,0,-12 3 0242 cent
-char162 "
-Po 500,672,9,48,55,44 2 0243 sterling
-char163 "
-Cs 500,604,0,48,47,44 2 0244 currency
-char164 "
-Ye 500,684,0,159,37,44 2 0245 yen
-char165 "
-sc 500,743,96,5,8,5 3 0247 section
-char167 "
-ad 333,634,0,106,-67,44 2 0250 dieresis
-char168 "
-co 760,672,22,9,10,9 2 0251 copyright
-char169 "
-Of 276,677,0,84,18,44 2 0252 ordfeminine
-char170 "
-fo 333,400,0,2,-10,2 0 0253 guilsinglleft
-no 675,383,0,0,-35 0 0254 logicalnot
-char172 "
-\- 675,286,0,0,-35 0 0255 minus
-rg 760,672,22,9,10,9 2 0256 registered
-char174 "
-a- 333,603,0,97,-70,44 2 0257 macron
-char175 "
-aa 333,680,0,92,-104,44 2 0264 acute
-char180 "
-ps 523,675,196,60,-37,44 3 0266 paragraph
-char182 "
-char183 250,316,0,0,-25 0 0267 periodcentered
-ac 333,0,206,0,80 1 0270 cedilla
-char184 "
-Om 310,679,0,50,5,44 2 0272 ordmasculine
-char186 "
-fc 333,406,0,0,1 0 0273 guilsinglright
-r? 500,462,215,0,-5 1 0277 questiondown
-char191 "
-`A 611,886,0,3,95,3 2 0300 Agrave
-char192 "
-'A 611,907,0,3,95,3 2 0301 Aacute
-char193 "
-^A 611,896,0,3,95,3 2 0302 Acircumflex
-char194 "
-~A 611,866,0,3,95,3 2 0303 Atilde
-char195 "
-:A 611,861,0,3,95,3 2 0304 Adieresis
-char196 "
-oA 611,930,0,3,95,3 2 0305 Aring
-char197 "
-AE 889,660,0,50,96,44 2 0306 AE
-char198 "
-,C 667,672,206,36,17,36 3 0307 Ccedilla
-char199 "
-`E 611,886,0,48,67,44 2 0310 Egrave
-char200 "
-'E 611,907,0,48,67,44 2 0311 Eacute
-char201 "
-^E 611,896,0,48,67,44 2 0312 Ecircumflex
-char202 "
-:E 611,861,0,48,67,44 2 0313 Edieresis
-char203 "
-`I 333,886,0,74,76,44 2 0314 Igrave
-char204 "
-'I 333,907,0,106,76,44 2 0315 Iacute
-char205 "
-^I 333,896,0,105,76,44 2 0316 Icircumflex
-char206 "
-:I 333,861,0,120,76,44 2 0317 Idieresis
-char207 "
-~N 667,866,12,81,86,44 2 0321 Ntilde
-char209 "
-`O 722,886,23,4,8,4 2 0322 Ograve
-char210 "
-'O 722,907,23,4,8,4 2 0323 Oacute
-char211 "
-^O 722,896,23,4,8,4 2 0324 Ocircumflex
-char212 "
-~O 722,866,23,4,8,4 2 0325 Otilde
-char213 "
-:O 722,861,23,4,8,4 2 0326 Odieresis
-char214 "
-/O 722,738,110,11,10,11 3 0330 Oslash
-char216 "
-`U 722,886,21,75,-27,44 2 0331 Ugrave
-char217 "
-'U 722,907,21,75,-27,44 2 0332 Uacute
-char218 "
-^U 722,896,21,75,-27,44 2 0333 Ucircumflex
-char219 "
-:U 722,861,21,75,-27,44 2 0334 Udieresis
-char220 "
-ss 500,684,209,42,217,42 3 0337 germandbls
-char223 "
-`a 500,659,11,24,35,24 2 0340 agrave
-char224 "
-'a 500,680,11,24,35,24 2 0341 aacute
-char225 "
-^a 500,669,11,24,35,24 2 0342 acircumflex
-char226 "
-~a 500,639,11,26,35,26 2 0343 atilde
-char227 "
-:a 500,634,11,29,35,29 2 0344 adieresis
-char228 "
-oa 500,703,11,24,35,24 2 0345 aring
-char229 "
-ae 667,448,12,21,26,21 0 0346 ae
-char230 "
-,c 444,446,206,26,18,26 1 0347 ccedilla
-char231 "
-`e 444,659,13,18,16,18 2 0350 egrave
-char232 "
-'e 444,680,13,50,16,44 2 0351 eacute
-char233 "
-^e 444,669,13,49,16,44 2 0352 ecircumflex
-char234 "
-:e 444,634,13,64,16,44 2 0353 edieresis
-char235 "
-`i 278,659,10,71,3,44 2 0354 igrave
-char236 "
-'i 278,680,10,113,3,44 2 0355 iacute
-char237 "
-^i 278,669,10,112,3,44 2 0356 icircumflex
-char238 "
-:i 278,634,10,127,3,44 2 0357 idieresis
-char239 "
-~n 500,639,10,21,27,21 2 0361 ntilde
-char241 "
-`o 500,659,13,17,23,17 2 0362 ograve
-char242 "
-'o 500,680,13,17,23,17 2 0363 oacute
-char243 "
-^o 500,669,13,17,23,17 2 0364 ocircumflex
-char244 "
-~o 500,639,13,26,23,26 2 0365 otilde
-char245 "
-:o 500,634,13,29,23,29 2 0366 odieresis
-char246 "
-/o 500,560,132,18,22,18 3 0370 oslash
-char248 "
-`u 500,659,11,22,8,22 2 0371 ugrave
-char249 "
-'u 500,680,11,22,8,22 2 0372 uacute
-char250 "
-^u 500,669,11,22,8,22 2 0373 ucircumflex
-char251 "
-:u 500,634,11,23,8,23 2 0374 udieresis
-char252 "
-:y 444,634,209,51,77,44 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/TR b/ps/devps/TR
deleted file mode 100644
index 8239c88a8..000000000
--- a/ps/devps/TR
+++ /dev/null
@@ -1,418 +0,0 @@
-name TR
-internalname Times-Roman
-spacewidth 250
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y -92
-A w -92
-A v -74
-A ' -111
-A Y -92
-A W -80
-A V -129
-A T -111
-F . -80
-F , -80
-F A -74
-L y -55
-L ' -92
-L Y -100
-L W -74
-L V -92
-L T -92
-P . -111
-P , -111
-P A -92
-R y -40
-R Y -55
-R W -55
-R V -80
-R T -60
-T y -70
-T w -70
-T u -35
-T ; -55
-T s -70
-T r -35
-T . -74
-T o -70
-T i -35
-T - -92
-T hy -92
-T char173 -92
-T e -70
-T , -74
-T : -50
-T c -70
-T a -70
-T O -18
-T A -80
-V y -111
-V u -60
-V ; -74
-V r -60
-V . -129
-V o -129
-V i -60
-V - -92
-V hy -92
-V char173 -92
-V e -111
-V , -129
-V : -74
-V a -111
-V A -129
-W y -60
-W u -40
-W ; -37
-W r -40
-W . -92
-W o -80
-W i -40
-W - -55
-W hy -55
-W char173 -55
-W e -80
-W , -92
-W : -37
-W a -80
-W A -111
-Y v -100
-Y u -111
-Y ; -92
-Y q -111
-Y . -129
-Y p -92
-Y o -100
-Y i -55
-Y - -111
-Y hy -111
-Y char173 -111
-Y e -100
-Y , -129
-Y : -92
-Y a -100
-Y A -111
-f ' 55
-f f -18
-1 1 -37
-` ` -74
-` oq -74
-oq ` -74
-oq oq -74
-' t -18
-' s -55
-' ' -74
-r ' 37
-r . -55
-r - -20
-r hy -20
-r char173 -20
-r g -18
-r , -40
-v . -65
-v , -65
-w . -65
-w , -65
-y . -65
-y , -65
-charset
-ha 469,662 2 0000 asciicircum
-ti 541,347 0 0001 asciitilde
-vS 556,888,14 2 0002 Scaron
-vZ 611,888 2 0003 Zcaron
-vs 389,674,10 2 0004 scaron
-vz 444,674 2 0005 zcaron
-:Y 722,837 2 0006 Ydieresis
-tm 980,662 2 0007 trademark
-space 250 0 0040
-! 333,676,14 2 0041 exclam
-" 408,685 2 0042 quotedbl
-# 500,662 2 0043 numbersign
-sh "
-$ 500,727,87 3 0044 dollar
-Do "
-% 833,676,14 2 0045 percent
-& 778,676,14 2 0046 ampersand
-' 333,676 2 0047 quoteright
-( 333,676,177 3 0050 parenleft
-) 333,676,177 3 0051 parenright
-* 500,683 2 0052 asterisk
-+ 564,512 2 0053 plus
-, 250,101,143 1 0054 comma
-- 333,257 0 0055 hyphen
-hy "
-char173 "
-. 250,101,14 0 0056 period
-/ 278,682,108 3 0057 slash
-sl "
-0 500,676,14 2 0060 zero
-1 500,676 2 0061 one
-2 500,676 2 0062 two
-3 500,676,14 2 0063 three
-4 500,676 2 0064 four
-5 500,688,14 2 0065 five
-6 500,682,14 2 0066 six
-7 500,662,14 2 0067 seven
-8 500,676,14 2 0070 eight
-9 500,676,22 2 0071 nine
-: 278,458,14 0 0072 colon
-; 278,458,143 1 0073 semicolon
-< 564,522 2 0074 less
-= 564,390 0 0075 equal
-> 564,522 2 0076 greater
-? 444,676,14 2 0077 question
-@ 921,675,155 3 0100 at
-at "
-A 722,676 2 0101 A
-B 667,662 2 0102 B
-C 667,676,14 2 0103 C
-D 722,662 2 0104 D
-E 611,662 2 0105 E
-F 556,662 2 0106 F
-G 722,676,14 2 0107 G
-H 722,662 2 0110 H
-I 333,662 2 0111 I
-J 389,662,14 2 0112 J
-K 722,662 2 0113 K
-L 611,662 2 0114 L
-M 889,662 2 0115 M
-N 722,662,14 2 0116 N
-O 722,676,14 2 0117 O
-P 556,662 2 0120 P
-Q 722,676,177 3 0121 Q
-R 667,662 2 0122 R
-S 556,676,14 2 0123 S
-T 611,662 2 0124 T
-U 722,662,14 2 0125 U
-V 722,662,14 2 0126 V
-W 944,662,14 2 0127 W
-X 722,662 2 0130 X
-Y 722,662 2 0131 Y
-Z 611,662 2 0132 Z
-[ 333,662,156 3 0133 bracketleft
-lB "
-\ 278,682 2 0134 backslash
-rs "
-] 333,662,156 3 0135 bracketright
-rB "
-a^ 333,674 2 0136 circumflex
-^ "
-_ 500,0,133 1 0137 underscore
-` 333,676 2 0140 quoteleft
-oq "
-a 444,458,10 0 0141 a
-b 500,682,10 2 0142 b
-c 444,458,10 0 0143 c
-d 500,682,13 2 0144 d
-e 444,458,10 0 0145 e
-f 333,682 2 0146 f
-g 500,458,217 1 0147 g
-h 500,682 2 0150 h
-i 278,682 2 0151 i
-j 278,682,217 3 0152 j
-k 500,682 2 0153 k
-l 278,682 2 0154 l
-m 778,458 0 0155 m
-n 500,458 0 0156 n
-o 500,458,10 0 0157 o
-p 500,458,217 1 0160 p
-q 500,459,217 1 0161 q
-r 333,458 0 0162 r
-s 389,458,10 0 0163 s
-t 278,580,10 2 0164 t
-u 500,448,10 0 0165 u
-v 500,448,10 0 0166 v
-w 722,448,10 0 0167 w
-x 500,448 0 0170 x
-y 500,448,217 1 0171 y
-z 444,448 0 0172 z
-lC 480,682,165 3 0173 braceleft
-{ "
-ba 200,682 2 0174 bar
-| "
-rC 480,682,165 3 0175 braceright
-} "
-a~ 333,638 2 0176 tilde
-~ "
---- 333,101,143 1 0200 quotesinglbase
-Fo 500,422 0 0201 guillemotleft
-char171 "
-Fc 500,422 0 0202 guillemotright
-char187 "
-bu 350,425 0 0203 bullet
---- 500,676,185 3 0204 florin
-f/ 167,676,14 2 0205 fraction
-%0 1000,676,14 2 0206 perthousand
-dg 500,676,149 3 0207 dagger
-dd 500,676,153 3 0210 daggerdbl
-en 500,250 0 0211 endash
-em 1000,250 0 0212 emdash
-fi 556,678 2 0214 fi
-fl 556,682 2 0215 fl
-.i 278,458 0 0220 dotlessi
-ga 333,678 2 0222 grave
-a" 333,700 2 0223 hungarumlaut
-a. 333,623 2 0224 dotaccent
-ab 333,664 2 0225 breve
-ah 333,674 2 0226 caron
-ao 333,682 2 0227 ring
-ho 333,0,155 1 0230 ogonek
-lq 444,676 2 0231 quotedblleft
-rq 444,676 2 0232 quotedblright
-oe 722,458,10 0 0233 oe
-/l 278,682 2 0234 lslash
---- 444,101,143 1 0235 quotedblbase
-OE 889,669,7 2 0236 OE
-/L 611,662 2 0237 Lslash
-r! 333,458,217 1 0241 exclamdown
-char161 "
-ct 500,579,138 3 0242 cent
-char162 "
-Po 500,676,14 2 0243 sterling
-char163 "
-Cs 500,600 2 0244 currency
-char164 "
-Ye 500,662 2 0245 yen
-char165 "
-sc 500,676,148 3 0247 section
-char167 "
-ad 333,623 2 0250 dieresis
-char168 "
-co 760,676,14 2 0251 copyright
-char169 "
-Of 276,676 2 0252 ordfeminine
-char170 "
-fo 333,422 0 0253 guilsinglleft
-no 564,390 0 0254 logicalnot
-char172 "
-\- 564,293 0 0255 minus
-rg 760,676,14 2 0256 registered
-char174 "
-a- 333,601 2 0257 macron
-char175 "
-aa 333,678 2 0264 acute
-char180 "
-ps 453,662,207 3 0266 paragraph
-char182 "
-char183 250,319 0 0267 periodcentered
-ac 333,0,215 1 0270 cedilla
-char184 "
-Om 310,676 2 0272 ordmasculine
-char186 "
-fc 333,423 0 0273 guilsinglright
-r? 444,458,217 1 0277 questiondown
-char191 "
-`A 722,892 2 0300 Agrave
-char192 "
-'A 722,892 2 0301 Aacute
-char193 "
-^A 722,888 2 0302 Acircumflex
-char194 "
-~A 722,852 2 0303 Atilde
-char195 "
-:A 722,837 2 0304 Adieresis
-char196 "
-oA 722,896 2 0305 Aring
-char197 "
-AE 889,662 2 0306 AE
-char198 "
-,C 667,676,215 3 0307 Ccedilla
-char199 "
-`E 611,892 2 0310 Egrave
-char200 "
-'E 611,892 2 0311 Eacute
-char201 "
-^E 611,888 2 0312 Ecircumflex
-char202 "
-:E 611,837 2 0313 Edieresis
-char203 "
-`I 333,892 2 0314 Igrave
-char204 "
-'I 333,892 2 0315 Iacute
-char205 "
-^I 333,888 2 0316 Icircumflex
-char206 "
-:I 333,837 2 0317 Idieresis
-char207 "
-~N 722,852,14 2 0321 Ntilde
-char209 "
-`O 722,892,14 2 0322 Ograve
-char210 "
-'O 722,892,14 2 0323 Oacute
-char211 "
-^O 722,888,14 2 0324 Ocircumflex
-char212 "
-~O 722,852,14 2 0325 Otilde
-char213 "
-:O 722,837,14 2 0326 Odieresis
-char214 "
-/O 722,734,80 3 0330 Oslash
-char216 "
-`U 722,892,14 2 0331 Ugrave
-char217 "
-'U 722,892,14 2 0332 Uacute
-char218 "
-^U 722,888,14 2 0333 Ucircumflex
-char219 "
-:U 722,837,14 2 0334 Udieresis
-char220 "
-ss 500,682,10 2 0337 germandbls
-char223 "
-`a 444,678,10 2 0340 agrave
-char224 "
-'a 444,678,10 2 0341 aacute
-char225 "
-^a 444,674,10 2 0342 acircumflex
-char226 "
-~a 444,638,10 2 0343 atilde
-char227 "
-:a 444,623,10 2 0344 adieresis
-char228 "
-oa 444,682,10 2 0345 aring
-char229 "
-ae 667,458,10 0 0346 ae
-char230 "
-,c 444,458,215 1 0347 ccedilla
-char231 "
-`e 444,678,10 2 0350 egrave
-char232 "
-'e 444,678,10 2 0351 eacute
-char233 "
-^e 444,674,10 2 0352 ecircumflex
-char234 "
-:e 444,623,10 2 0353 edieresis
-char235 "
-`i 278,678 2 0354 igrave
-char236 "
-'i 278,678 2 0355 iacute
-char237 "
-^i 278,674 2 0356 icircumflex
-char238 "
-:i 278,623 2 0357 idieresis
-char239 "
-~n 500,638 2 0361 ntilde
-char241 "
-`o 500,678,10 2 0362 ograve
-char242 "
-'o 500,678,10 2 0363 oacute
-char243 "
-^o 500,674,10 2 0364 ocircumflex
-char244 "
-~o 500,638,10 2 0365 otilde
-char245 "
-:o 500,623,10 2 0366 odieresis
-char246 "
-/o 500,549,108 3 0370 oslash
-char248 "
-`u 500,678,10 2 0371 ugrave
-char249 "
-'u 500,678,10 2 0372 uacute
-char250 "
-^u 500,674,10 2 0373 ucircumflex
-char251 "
-:u 500,623,10 2 0374 udieresis
-char252 "
-:y 500,623,217 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/ZCMI b/ps/devps/ZCMI
deleted file mode 100644
index fb4358fc6..000000000
--- a/ps/devps/ZCMI
+++ /dev/null
@@ -1,420 +0,0 @@
-name ZCMI
-internalname ZapfChancery-MediumItalic
-slant 14
-spacewidth 220
-encoding text.enc
-ligatures fi fl 0
-kernpairs
-A y 3
-A w -12
-A v -10
-A Y 19
-A W -21
-A V -20
-A T 25
-F . -137
-F , -63
-F A -64
-L y 0
-L Y -20
-L W -40
-L V -40
-L T -20
-P . -66
-P , -69
-P A 16
-R y 32
-R Y 70
-R W 6
-R V 6
-R T 51
-S t -20
-S p -10
-T y 2
-T w 0
-T u -1
-T ; 50
-T s 0
-T r -2
-T . -2
-T o -19
-T i 40
-T - -10
-T hy -10
-T char173 -10
-T e -15
-T , 29
-T : 34
-T c -6
-T a -8
-T A 15
-V y 0
-V u 0
-V r 0
-V o -50
-V i 21
-V e -50
-V a -50
-V ; 27
-V . -72
-V - -10
-V hy -10
-V char173 -10
-V , -16
-V : -11
-V A -14
-W y 15
-W u 15
-W ; 4
-W r 15
-W . -96
-W o -25
-W i 15
-W - -10
-W hy -10
-W char173 -10
-W e -25
-W , -38
-W : -24
-W a -25
-W A -7
-Y v -22
-Y u -8
-Y ; 25
-Y q -64
-Y . -65
-Y p -4
-Y o -65
-Y i 40
-Y - -10
-Y hy -10
-Y char173 -10
-Y e -60
-Y , 0
-Y : -4
-Y a -63
-Y A -24
-a t -10
-d t -10
-f f -57
-g g 20
-o t -20
-r r 20
-r q 0
-r . -45
-r o -8
-r n 45
-r m 45
-r l 10
-r - 10
-r hy 10
-r char173 10
-r h 3
-r g -30
-r f 11
-r e -12
-r d -25
-r , -40
-r c -16
-s t -20
-v y 20
-w e 20
-charset
-ha 520,681,0,2,-162,2 2 0000 asciicircum
-ti 520,261,0,56,-36,56 0 0001 asciitilde
-vS 460,811,67,197,50,81 3 0002 Scaron
-vZ 620,811,18,105,-12,81 2 0003 Zcaron
-vs 320,640,15,167,9,81 2 0004 scaron
-vz 440,640,12,107,4,81 2 0005 zcaron
-:Y 560,773,152,253,19,81 3 0006 Ydieresis
-tm 1000,673,0,100,-115,81 2 0007 trademark
-space 220 0 0040
-! 280,588,9,117,-59,81 2 0041 exclam
-" 220,681,0,163,-120,81 2 0042 quotedbl
-# 680,574,1,35,-72,35 2 0043 numbersign
-sh "
-$ 440,675,145,71,-10,71 3 0044 dollar
-Do "
-% 680,585,7,71,-112,71 2 0045 percent
-& 780,558,15,125,-71,81 2 0046 ampersand
-' 240,675,0,168,-178,81 2 0047 quoteright
-( 260,667,165,202,-66,81 3 0050 parenleft
-) 220,668,164,143,33,81 3 0051 parenright
-* 420,676,0,142,-170,81 2 0052 asterisk
-+ 520,410,0,43,-53,43 0 0053 plus
-, 220,171,98,45,20,45 1 0054 comma
-- 280,236,0,70,-65,70 0 0055 hyphen
-hy "
-char173 "
-. 220,127,9,58,-57,58 0 0056 period
-/ 340,677,168,245,56,81 3 0057 slash
-sl "
-0 380,576,7,134,-19,81 2 0060 zero
-1 440,584,0,24,-12,24 2 0061 one
-2 440,572,17,59,23,59 2 0062 two
-3 440,576,6,47,34,47 2 0063 three
-4 440,585,26,65,-19,65 2 0064 four
-5 440,641,8,155,3,81 2 0065 five
-6 440,585,8,142,-45,81 2 0066 six
-7 440,612,18,151,-115,81 2 0067 seven
-8 440,573,9,104,-25,81 2 0070 eight
-9 440,576,8,90,8,81 2 0071 nine
-: 260,408,9,79,-48,79 0 0072 colon
-; 240,408,98,87,21,81 1 0073 semicolon
-< 520,429,17,87,-70,81 0 0074 less
-= 520,297,0,48,-58,48 0 0075 equal
-> 520,429,17,86,-69,81 0 0076 greater
-? 380,583,9,167,-80,81 2 0077 question
-@ 700,690,15,75,-12,75 2 0100 at
-at "
-A 620,593,16,117,27,81 2 0101 A
-B 600,618,0,92,-25,81 2 0102 B
-C 520,592,73,165,-38,81 3 0103 C
-D 700,618,0,109,-36,81 2 0104 D
-E 620,587,8,98,-26,81 2 0105 E
-F 580,621,114,203,-10,81 3 0106 F
-G 620,592,236,100,-68,81 3 0107 G
-H 680,681,7,278,17,81 2 0110 H
-I 380,573,0,151,-31,81 2 0111 I
-J 400,573,122,141,49,81 3 0112 J
-K 660,578,143,241,-38,81 3 0113 K
-L 580,577,6,101,17,81 2 0114 L
-M 840,671,9,219,-8,81 2 0115 M
-N 700,682,158,265,10,81 3 0116 N
-O 600,589,13,102,-54,81 2 0117 O
-P 540,602,0,155,13,81 2 0120 P
-Q 600,589,189,301,-54,81 3 0121 Q
-R 600,615,147,276,12,81 3 0122 R
-S 460,590,67,107,50,81 3 0123 S
-T 500,650,0,268,-8,81 2 0124 T
-U 740,581,10,88,-66,81 2 0125 U
-V 640,689,8,219,-54,81 2 0126 V
-W 880,677,17,205,-54,81 2 0127 W
-X 560,580,13,161,50,81 2 0130 X
-Y 560,608,152,253,19,81 3 0131 Y
-Z 620,598,18,105,-12,81 2 0132 Z
-[ 240,667,164,224,-7,81 3 0133 bracketleft
-lB "
-\ 480,578,0,54,-135,54 2 0134 backslash
-rs "
-] 320,667,164,151,-13,81 3 0135 bracketright
-rB "
-a^ 340,640,0,107,-133,81 2 0136 circumflex
-^ "
-_ 500,0,145,50,50,50 1 0137 underscore
-` 240,675,0,194,-179,81 2 0140 quoteleft
-oq "
-a 420,415,11,122,-37,81 0 0141 a
-b 420,678,17,96,-37,81 2 0142 b
-c 340,411,13,93,-37,81 0 0143 c
-d 440,678,12,239,-37,81 2 0144 d
-e 340,412,12,90,-37,81 0 0145 e
-f 320,680,247,266,154,81 3 0146 f
-g 400,409,248,131,128,81 1 0147 g
-h 440,679,15,116,-25,81 2 0150 h
-i 240,617,12,121,-31,81 2 0151 i
-j 220,617,247,133,183,81 3 0152 j
-k 440,675,148,265,-37,81 3 0153 k
-l 240,681,11,244,-37,81 2 0154 l
-m 620,413,10,123,-31,81 0 0155 m
-n 460,411,15,110,-31,81 0 0156 n
-o 400,411,13,99,-37,81 0 0157 o
-p 440,411,248,92,58,81 1 0160 p
-q 400,480,250,135,-37,81 3 0161 q
-r 300,411,10,159,-31,81 0 0162 r
-s 320,410,15,107,9,81 0 0163 s
-t 320,504,12,125,-49,81 2 0164 t
-u 460,416,12,108,-32,81 0 0165 u
-v 440,438,13,120,-37,81 0 0166 v
-w 680,445,13,127,-37,81 0 0167 w
-x 420,408,159,213,-20,81 1 0170 x
-y 400,415,249,123,39,81 1 0171 y
-z 440,426,12,85,4,81 0 0172 z
-lC 240,667,164,225,-65,81 3 0173 braceleft
-{ "
-ba 520,578,0,0,-264 2 0174 bar
-| "
-rC 240,667,163,137,20,81 3 0175 braceright
-} "
-a~ 440,602,0,123,-133,81 2 0176 tilde
-~ "
---- 180,111,109,40,10,40 1 0200 quotesinglbase
-Fo 340,414,9,114,-48,81 0 0201 guillemotleft
-char171 "
-Fc 380,424,2,77,-37,77 0 0202 guillemotright
-char187 "
-bu 600,458,0,18,-178,18 0 0203 bullet
---- 400,682,247,217,119,81 3 0204 florin
-f/ 60,585,4,270,165,81 2 0205 fraction
-%0 960,585,7,65,-112,65 2 0206 perthousand
-dg 460,607,138,119,-48,81 3 0207 dagger
-dd 480,608,138,99,-48,81 3 0210 daggerdbl
-en 500,236,0,35,-66,35 0 0211 endash
-em 1000,236,0,0,-333 0 0212 emdash
-fi 520,681,248,136,154,81 3 0214 fi
-fl 520,690,247,240,155,81 3 0215 fl
-.i 240,412,11,121,-31,81 0 0220 dotlessi
-ga 220,639,0,111,-123,81 2 0222 grave
-a" 400,639,0,113,-133,81 2 0223 hungarumlaut
-a. 220,602,0,139,-156,81 2 0224 dotaccent
-ab 440,597,0,126,-133,81 2 0225 breve
-ah 340,640,0,157,-184,81 2 0226 caron
-ao 300,631,0,159,-178,81 2 0227 ring
-ho 280,0,193,0,-8 1 0230 ogonek
-lq 340,675,0,210,-179,81 2 0231 quotedblleft
-rq 360,675,0,163,-178,81 2 0232 quotedblright
-oe 560,409,13,92,-38,81 0 0233 oe
-/l 300,681,11,241,-37,81 2 0234 lslash
---- 280,111,109,56,9,56 1 0235 quotedblbase
-OE 820,588,12,100,-54,81 2 0236 OE
-/L 580,577,6,101,17,81 2 0237 Lslash
-r! 280,410,187,65,-7,65 1 0241 exclamdown
-char161 "
-ct 440,647,76,63,-77,63 3 0242 cent
-char162 "
-Po 480,578,53,84,85,81 2 0243 sterling
-char163 "
-Cs 600,457,44,55,-50,55 0 0244 currency
-char164 "
-Ye 720,607,153,161,-54,81 3 0245 yen
-char165 "
-sc 420,576,165,94,-13,81 3 0247 section
-char167 "
-ad 360,602,0,109,-133,81 2 0250 dieresis
-char168 "
-co 740,683,10,140,-86,81 2 0251 copyright
-char169 "
-Of 260,576,0,114,-31,81 2 0252 ordfeminine
-char170 "
-fo 240,415,9,95,-48,81 0 0253 guilsinglleft
-no 600,297,0,56,-52,56 0 0254 logicalnot
-char172 "
-\- 600,230,0,105,-101,81 0 0255 minus
-rg 740,683,10,138,-85,81 2 0256 registered
-char174 "
-a- 440,569,0,125,-133,81 2 0257 macron
-char175 "
-aa 300,639,0,138,-155,81 2 0264 acute
-char180 "
-ps 500,585,247,200,21,81 3 0266 paragraph
-char182 "
-char183 220,283,0,59,-58,59 0 0267 periodcentered
-ac 300,6,189,0,9 1 0270 cedilla
-char184 "
-Om 260,576,0,113,-48,81 2 0272 ordmasculine
-char186 "
-fc 260,424,2,74,-36,74 0 0273 guilsinglright
-r? 400,410,181,75,-7,75 1 0277 questiondown
-char191 "
-`A 620,810,16,117,27,81 2 0300 Agrave
-char192 "
-'A 620,810,16,117,27,81 2 0301 Aacute
-char193 "
-^A 620,811,16,117,27,81 2 0302 Acircumflex
-char194 "
-~A 620,773,16,183,27,81 2 0303 Atilde
-char195 "
-:A 620,773,16,129,27,81 2 0304 Adieresis
-char196 "
-oA 620,802,16,117,27,81 2 0305 Aring
-char197 "
-AE 740,571,5,108,18,81 2 0306 AE
-char198 "
-,C 520,592,257,165,-38,81 3 0307 Ccedilla
-char199 "
-`E 620,810,8,98,-26,81 2 0310 Egrave
-char200 "
-'E 620,810,8,98,-26,81 2 0311 Eacute
-char201 "
-^E 620,811,8,98,-26,81 2 0312 Ecircumflex
-char202 "
-:E 620,773,8,98,-26,81 2 0313 Edieresis
-char203 "
-`I 380,810,0,151,-31,81 2 0314 Igrave
-char204 "
-'I 380,810,0,198,-31,81 2 0315 Iacute
-char205 "
-^I 380,811,0,157,-31,81 2 0316 Icircumflex
-char206 "
-:I 380,773,0,151,-31,81 2 0317 Idieresis
-char207 "
-~N 700,773,158,265,10,81 3 0321 Ntilde
-char209 "
-`O 600,810,13,102,-54,81 2 0322 Ograve
-char210 "
-'O 600,810,13,102,-54,81 2 0323 Oacute
-char211 "
-^O 600,811,13,102,-54,81 2 0324 Ocircumflex
-char212 "
-~O 600,773,13,128,-54,81 2 0325 Otilde
-char213 "
-:O 600,773,13,102,-54,81 2 0326 Odieresis
-char214 "
-/O 660,687,128,97,-60,81 3 0330 Oslash
-char216 "
-`U 740,810,10,88,-66,81 2 0331 Ugrave
-char217 "
-'U 740,810,10,88,-66,81 2 0332 Uacute
-char218 "
-^U 740,811,10,88,-66,81 2 0333 Ucircumflex
-char219 "
-:U 740,773,10,88,-66,81 2 0334 Udieresis
-char220 "
-ss 420,681,248,136,177,81 3 0337 germandbls
-char223 "
-`a 420,639,11,122,-37,81 2 0340 agrave
-char224 "
-'a 420,639,11,122,-37,81 2 0341 aacute
-char225 "
-^a 420,640,11,122,-37,81 2 0342 acircumflex
-char226 "
-~a 420,602,11,133,-37,81 2 0343 atilde
-char227 "
-:a 420,602,11,122,-37,81 2 0344 adieresis
-char228 "
-oa 420,631,11,122,-37,81 2 0345 aring
-char229 "
-ae 540,441,13,98,-37,81 0 0346 ae
-char230 "
-,c 340,411,189,93,-11,81 1 0347 ccedilla
-char231 "
-`e 340,639,12,90,-37,81 2 0350 egrave
-char232 "
-'e 340,639,12,118,-37,81 2 0351 eacute
-char233 "
-^e 340,640,12,107,-37,81 2 0352 ecircumflex
-char234 "
-:e 340,602,12,119,-37,81 2 0353 edieresis
-char235 "
-`i 240,639,11,121,-31,81 2 0354 igrave
-char236 "
-'i 240,639,11,168,-31,81 2 0355 iacute
-char237 "
-^i 240,640,11,157,-31,81 2 0356 icircumflex
-char238 "
-:i 240,602,11,169,-31,81 2 0357 idieresis
-char239 "
-~n 460,602,15,113,-31,81 2 0361 ntilde
-char241 "
-`o 400,639,13,99,-37,81 2 0362 ograve
-char242 "
-'o 400,639,13,99,-37,81 2 0363 oacute
-char243 "
-^o 400,640,13,99,-37,81 2 0364 ocircumflex
-char244 "
-~o 400,602,13,143,-37,81 2 0365 otilde
-char245 "
-:o 400,602,13,99,-37,81 2 0366 odieresis
-char246 "
-/o 440,545,147,77,-42,77 3 0370 oslash
-char248 "
-`u 460,639,12,108,-32,81 2 0371 ugrave
-char249 "
-'u 460,639,12,108,-32,81 2 0372 uacute
-char250 "
-^u 460,640,12,108,-32,81 2 0373 ucircumflex
-char251 "
-:u 460,602,12,108,-32,81 2 0374 udieresis
-char252 "
-:y 400,602,249,123,39,81 3 0377 ydieresis
-char255 "
diff --git a/ps/devps/ZD b/ps/devps/ZD
deleted file mode 100644
index 4cd930d7f..000000000
--- a/ps/devps/ZD
+++ /dev/null
@@ -1,193 +0,0 @@
-name ZD
-internalname ZapfDingbats
-special
-spacewidth 278
-charset
-space 278 0 0040
---- 974,621 2 0041 a1
---- 961,611 2 0042 a2
---- 974,621 2 0043 a202
---- 980,692 2 0044 a3
---- 719,566 2 0045 a4
---- 789,705,14 2 0046 a5
---- 790,705,14 2 0047 a119
---- 791,705,14 2 0050 a118
---- 690,553 2 0051 a117
---- 960,568 2 0052 a11
-rh 939,559 2 0053 a12
---- 549,705,11 2 0054 a13
---- 855,632 2 0055 a14
---- 911,642 2 0056 a15
---- 933,550 2 0057 a16
---- 911,642 2 0060 a105
---- 945,553 2 0061 a17
---- 974,587 2 0062 a18
-OK 755,705,13 2 0063 a19
---- 846,705,14 2 0064 a20
---- 762,692 2 0065 a21
---- 761,692 2 0066 a22
---- 571,661,68 3 0067 a23
---- 677,705,14 2 0070 a24
---- 763,692 2 0071 a25
---- 760,692 2 0072 a26
---- 759,692 2 0073 a27
---- 754,692 2 0074 a28
---- 494,692 2 0075 a6
---- 552,692 2 0076 a7
---- 537,692 2 0077 a8
---- 577,596 2 0100 a9
---- 692,705,14 2 0101 a10
---- 786,705,14 2 0102 a29
---- 788,705,14 2 0103 a30
---- 788,705,14 2 0104 a31
---- 790,705,14 2 0105 a32
---- 793,705,14 2 0106 a33
---- 794,705,14 2 0107 a34
---- 816,705,14 2 0110 a35
---- 823,705,14 2 0111 a36
---- 789,705,14 2 0112 a37
---- 841,705,14 2 0113 a38
---- 823,705,14 2 0114 a39
---- 833,705,14 2 0115 a40
---- 816,705,13 2 0116 a41
---- 831,705,14 2 0117 a42
---- 923,705,14 2 0120 a43
---- 744,692 2 0121 a44
---- 723,692 2 0122 a45
---- 749,692 2 0123 a46
---- 790,705,14 2 0124 a47
---- 792,705,14 2 0125 a48
---- 695,705,14 2 0126 a49
---- 776,699,6 2 0127 a50
---- 768,699,7 2 0130 a51
---- 792,705,14 2 0131 a52
---- 759,692 2 0132 a53
---- 707,705,14 2 0133 a54
---- 708,705,14 2 0134 a55
---- 682,705,14 2 0135 a56
---- 701,705,14 2 0136 a57
---- 826,705,14 2 0137 a58
---- 815,705,14 2 0140 a59
---- 789,705,14 2 0141 a60
---- 789,705,14 2 0142 a61
---- 707,705,14 2 0143 a62
---- 687,692 2 0144 a63
---- 696,691 2 0145 a64
---- 689,692 2 0146 a65
---- 786,705,14 2 0147 a66
---- 787,705,14 2 0150 a67
---- 713,705,14 2 0151 a68
---- 791,705,14 2 0152 a69
---- 785,705,14 2 0153 a70
---- 791,705,14 2 0154 a71
---- 873,705,14 2 0155 a72
---- 761,692 2 0156 a73
---- 762,692 2 0157 a74
---- 762,692 2 0160 a203
---- 759,692 2 0161 a75
---- 759,692 2 0162 a204
---- 892,705 2 0163 a76
---- 892,692,14 2 0164 a77
---- 788,705,14 2 0165 a78
---- 784,705,14 2 0166 a79
---- 438,705,14 2 0167 a81
---- 138,692 2 0170 a82
---- 277,692 2 0171 a83
---- 415,692 2 0172 a84
---- 392,705 2 0173 a97
---- 392,705 2 0174 a98
---- 668,705 2 0175 a99
---- 668,705 2 0176 a100
---- 732,806,143 3 0241 a101
---- 544,705,14 2 0242 a102
---- 544,705,14 2 0243 a103
---- 910,651 2 0244 a104
---- 667,705,14 2 0245 a106
---- 760,705,14 2 0246 a107
---- 760,569 2 0247 a108
---- 776,705 2 0250 a112
---- 595,705,14 2 0251 a111
---- 694,705,14 2 0252 a110
---- 626,705 2 0253 a109
---- 788,705,14 2 0254 a120
---- 788,705,14 2 0255 a121
---- 788,705,14 2 0256 a122
---- 788,705,14 2 0257 a123
---- 788,705,14 2 0260 a124
---- 788,705,14 2 0261 a125
---- 788,705,14 2 0262 a126
---- 788,705,14 2 0263 a127
---- 788,705,14 2 0264 a128
---- 788,705,14 2 0265 a129
---- 788,705,14 2 0266 a130
---- 788,705,14 2 0267 a131
---- 788,705,14 2 0270 a132
---- 788,705,14 2 0271 a133
---- 788,705,14 2 0272 a134
---- 788,705,14 2 0273 a135
---- 788,705,14 2 0274 a136
---- 788,705,14 2 0275 a137
---- 788,705,14 2 0276 a138
---- 788,705,14 2 0277 a139
---- 788,705,14 2 0300 a140
---- 788,705,14 2 0301 a141
---- 788,705,14 2 0302 a142
---- 788,705,14 2 0303 a143
---- 788,705,14 2 0304 a144
---- 788,705,14 2 0305 a145
---- 788,705,14 2 0306 a146
---- 788,705,14 2 0307 a147
---- 788,705,14 2 0310 a148
---- 788,705,14 2 0311 a149
---- 788,705,14 2 0312 a150
---- 788,705,14 2 0313 a151
---- 788,705,14 2 0314 a152
---- 788,705,14 2 0315 a153
---- 788,705,14 2 0316 a154
---- 788,705,14 2 0317 a155
---- 788,705,14 2 0320 a156
---- 788,705,14 2 0321 a157
---- 788,705,14 2 0322 a158
---- 788,705,14 2 0323 a159
---- 894,634 2 0324 a160
---- 838,541 2 0325 a161
---- 1016,541 2 0326 a163
---- 458,820,127 3 0327 a164
---- 748,597 2 0330 a196
---- 924,552 2 0331 a165
---- 748,597 2 0332 a192
---- 918,526 2 0333 a166
---- 927,660 2 0334 a167
---- 928,562 2 0335 a168
---- 928,563 2 0336 a169
---- 834,537 2 0337 a170
---- 873,599 2 0340 a171
---- 828,588 2 0341 a172
---- 924,594 2 0342 a173
---- 924,594 2 0343 a162
---- 917,692 2 0344 a174
---- 930,608 2 0345 a175
---- 931,608 2 0346 a176
---- 463,791,99 3 0347 a177
---- 883,623 2 0350 a178
---- 836,648 2 0351 a179
---- 836,648 2 0352 a193
---- 867,591 2 0353 a180
---- 867,591 2 0354 a199
---- 696,648 2 0355 a181
---- 696,648 2 0356 a200
---- 874,619 2 0357 a182
---- 874,615 2 0361 a201
---- 760,692 2 0362 a183
---- 946,533 2 0363 a184
---- 771,655 2 0364 a197
---- 865,481 2 0365 a185
---- 771,655 2 0366 a194
---- 888,712,19 2 0367 a198
---- 967,568 2 0370 a186
---- 888,712,19 2 0371 a195
---- 831,579 2 0372 a187
---- 873,578 2 0373 a188
---- 927,542 2 0374 a189
---- 970,616 2 0375 a190
---- 918,593 2 0376 a191
diff --git a/ps/devps/ZDR b/ps/devps/ZDR
deleted file mode 100644
index 57dcdb76d..000000000
--- a/ps/devps/ZDR
+++ /dev/null
@@ -1,193 +0,0 @@
-name ZDR
-internalname ZapfDingbats-Reverse
-special
-spacewidth 278
-charset
-space 278 0 0040
---- 974,621 2 0041 a1
---- 961,611 2 0042 a2
---- 974,621 2 0043 a202
---- 980,692 2 0044 a3
---- 719,566 2 0045 a4
---- 789,705,14 2 0046 a5
---- 790,705,14 2 0047 a119
---- 791,705,14 2 0050 a118
---- 690,553 2 0051 a117
---- 960,568 2 0052 a11
-lh 939,559 2 0053 a12
---- 549,705,11 2 0054 a13
---- 855,632 2 0055 a14
---- 911,642 2 0056 a15
---- 933,550 2 0057 a16
---- 911,642 2 0060 a105
---- 945,553 2 0061 a17
---- 974,587 2 0062 a18
---- 755,705,13 2 0063 a19
---- 846,705,14 2 0064 a20
---- 762,692 2 0065 a21
---- 761,692 2 0066 a22
---- 571,661,68 3 0067 a23
---- 677,705,14 2 0070 a24
---- 763,692 2 0071 a25
---- 760,692 2 0072 a26
---- 759,692 2 0073 a27
---- 754,692 2 0074 a28
---- 494,692 2 0075 a6
---- 552,692 2 0076 a7
---- 537,692 2 0077 a8
---- 577,596 2 0100 a9
---- 692,705,14 2 0101 a10
---- 786,705,14 2 0102 a29
---- 788,705,14 2 0103 a30
---- 788,705,14 2 0104 a31
---- 790,705,14 2 0105 a32
---- 793,705,14 2 0106 a33
---- 794,705,14 2 0107 a34
---- 816,705,14 2 0110 a35
---- 823,705,14 2 0111 a36
---- 789,705,14 2 0112 a37
---- 841,705,14 2 0113 a38
---- 823,705,14 2 0114 a39
---- 833,705,14 2 0115 a40
---- 816,705,13 2 0116 a41
---- 831,705,14 2 0117 a42
---- 923,705,14 2 0120 a43
---- 744,692 2 0121 a44
---- 723,692 2 0122 a45
---- 749,692 2 0123 a46
---- 790,705,14 2 0124 a47
---- 792,705,14 2 0125 a48
---- 695,705,14 2 0126 a49
---- 776,699,6 2 0127 a50
---- 768,699,7 2 0130 a51
---- 792,705,14 2 0131 a52
---- 759,692 2 0132 a53
---- 707,705,14 2 0133 a54
---- 708,705,14 2 0134 a55
---- 682,705,14 2 0135 a56
---- 701,705,14 2 0136 a57
---- 826,705,14 2 0137 a58
---- 815,705,14 2 0140 a59
---- 789,705,14 2 0141 a60
---- 789,705,14 2 0142 a61
---- 707,705,14 2 0143 a62
---- 687,692 2 0144 a63
---- 696,691 2 0145 a64
---- 689,692 2 0146 a65
---- 786,705,14 2 0147 a66
---- 787,705,14 2 0150 a67
---- 713,705,14 2 0151 a68
---- 791,705,14 2 0152 a69
---- 785,705,14 2 0153 a70
---- 791,705,14 2 0154 a71
---- 873,705,14 2 0155 a72
---- 761,692 2 0156 a73
---- 762,692 2 0157 a74
---- 762,692 2 0160 a203
---- 759,692 2 0161 a75
---- 759,692 2 0162 a204
---- 892,705 2 0163 a76
---- 892,692,14 2 0164 a77
---- 788,705,14 2 0165 a78
---- 784,705,14 2 0166 a79
---- 438,705,14 2 0167 a81
---- 138,692 2 0170 a82
---- 277,692 2 0171 a83
---- 415,692 2 0172 a84
---- 392,705 2 0173 a97
---- 392,705 2 0174 a98
---- 668,705 2 0175 a99
---- 668,705 2 0176 a100
---- 732,806,143 3 0241 a101
---- 544,705,14 2 0242 a102
---- 544,705,14 2 0243 a103
---- 910,651 2 0244 a104
---- 667,705,14 2 0245 a106
---- 760,705,14 2 0246 a107
---- 760,569 2 0247 a108
---- 776,705 2 0250 a112
---- 595,705,14 2 0251 a111
---- 694,705,14 2 0252 a110
---- 626,705 2 0253 a109
---- 788,705,14 2 0254 a120
---- 788,705,14 2 0255 a121
---- 788,705,14 2 0256 a122
---- 788,705,14 2 0257 a123
---- 788,705,14 2 0260 a124
---- 788,705,14 2 0261 a125
---- 788,705,14 2 0262 a126
---- 788,705,14 2 0263 a127
---- 788,705,14 2 0264 a128
---- 788,705,14 2 0265 a129
---- 788,705,14 2 0266 a130
---- 788,705,14 2 0267 a131
---- 788,705,14 2 0270 a132
---- 788,705,14 2 0271 a133
---- 788,705,14 2 0272 a134
---- 788,705,14 2 0273 a135
---- 788,705,14 2 0274 a136
---- 788,705,14 2 0275 a137
---- 788,705,14 2 0276 a138
---- 788,705,14 2 0277 a139
---- 788,705,14 2 0300 a140
---- 788,705,14 2 0301 a141
---- 788,705,14 2 0302 a142
---- 788,705,14 2 0303 a143
---- 788,705,14 2 0304 a144
---- 788,705,14 2 0305 a145
---- 788,705,14 2 0306 a146
---- 788,705,14 2 0307 a147
---- 788,705,14 2 0310 a148
---- 788,705,14 2 0311 a149
---- 788,705,14 2 0312 a150
---- 788,705,14 2 0313 a151
---- 788,705,14 2 0314 a152
---- 788,705,14 2 0315 a153
---- 788,705,14 2 0316 a154
---- 788,705,14 2 0317 a155
---- 788,705,14 2 0320 a156
---- 788,705,14 2 0321 a157
---- 788,705,14 2 0322 a158
---- 788,705,14 2 0323 a159
---- 894,634 2 0324 a160
---- 838,541 2 0325 a161
---- 1016,541 2 0326 a163
---- 458,820,127 3 0327 a164
---- 748,597 2 0330 a196
---- 924,552 2 0331 a165
---- 748,597 2 0332 a192
---- 918,526 2 0333 a166
---- 927,660 2 0334 a167
---- 928,562 2 0335 a168
---- 928,563 2 0336 a169
---- 834,537 2 0337 a170
---- 873,599 2 0340 a171
---- 828,588 2 0341 a172
---- 924,594 2 0342 a173
---- 924,594 2 0343 a162
---- 917,692 2 0344 a174
---- 930,608 2 0345 a175
---- 931,608 2 0346 a176
---- 463,791,99 3 0347 a177
---- 883,623 2 0350 a178
---- 836,648 2 0351 a179
---- 836,648 2 0352 a193
---- 867,591 2 0353 a180
---- 867,591 2 0354 a199
---- 696,648 2 0355 a181
---- 696,648 2 0356 a200
---- 874,619 2 0357 a182
---- 874,615 2 0361 a201
---- 760,692 2 0362 a183
---- 946,533 2 0363 a184
---- 771,655 2 0364 a197
---- 865,481 2 0365 a185
---- 771,655 2 0366 a194
---- 888,712,19 2 0367 a198
---- 967,568 2 0370 a186
---- 888,712,19 2 0371 a195
---- 831,579 2 0372 a187
---- 873,578 2 0373 a188
---- 927,542 2 0374 a189
---- 970,616 2 0375 a190
---- 918,593 2 0376 a191
diff --git a/ps/devps/eqnchar b/ps/devps/eqnchar
deleted file mode 100644
index 1bcd21ad9..000000000
--- a/ps/devps/eqnchar
+++ /dev/null
@@ -1,13 +0,0 @@
-.EQ
-sdefine << %{ < back 20 < }%
-sdefine >> %{ > back 20 > }%
-
-sdefine dot %accent "\fR\(a.\fP"%
-sdefine dotdot %accent "\fR\(ad\fP"%
-sdefine vec %accent {up 52 "\s[\En[.s]/2u]\(->\s0"}%
-sdefine dyad %accent {up 52 "\s[\En[.s]/2u]\(<>\s0"}%
-
-sdefine inf %"\s[\En[.s]*13u/10u]\v'12M'\(if\v'-12M'\s0"%
-
-sdefine cdot %type "binary" \(md%
-.EN
diff --git a/ps/devps/symbol.diff b/ps/devps/symbol.diff
deleted file mode 100644
index adbde6e67..000000000
--- a/ps/devps/symbol.diff
+++ /dev/null
@@ -1,65 +0,0 @@
-*** /usr/local/afm/symbol.afm Mon Mar 26 11:40:00 1990
---- symbol.afm Tue Oct 16 09:46:37 1990
-***************
-*** 177,192 ****
- C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ;
- C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ;
- C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ;
-! C 230 ; WX 384 ; N parenlefttp ; B 40 -293 436 926 ;
-! C 231 ; WX 384 ; N parenleftex ; B 40 -85 92 925 ;
-! C 232 ; WX 384 ; N parenleftbt ; B 40 -293 436 926 ;
-! C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 341 926 ;
-! C 234 ; WX 384 ; N bracketleftex ; B 0 -79 55 925 ;
-! C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 340 926 ;
-! C 236 ; WX 494 ; N bracelefttp ; B 201 -75 439 926 ;
-! C 237 ; WX 494 ; N braceleftmid ; B 14 -85 255 935 ;
-! C 238 ; WX 494 ; N braceleftbt ; B 201 -70 439 926 ;
-! C 239 ; WX 494 ; N braceex ; B 201 -80 255 935 ;
- C 240 ; WX 790 ; N apple ; B 56 -3 733 808 ;
- C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ;
- C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ;
---- 177,192 ----
- C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ;
- C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ;
- C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ;
-! C 230 ; WX 384 ; N parenlefttp ; B 40 -290 436 926 ;
-! C 231 ; WX 384 ; N parenleftex ; B 40 -80 92 920 ;
-! C 232 ; WX 384 ; N parenleftbt ; B 40 -293 436 920 ;
-! C 233 ; WX 384 ; N bracketlefttp ; B 0 -75 341 925 ;
-! C 234 ; WX 384 ; N bracketleftex ; B 0 -75 55 925 ;
-! C 235 ; WX 384 ; N bracketleftbt ; B 0 -75 340 925 ;
-! C 236 ; WX 494 ; N bracelefttp ; B 201 -75 439 925 ;
-! C 237 ; WX 494 ; N braceleftmid ; B 14 -75 255 925 ;
-! C 238 ; WX 494 ; N braceleftbt ; B 201 -75 439 925 ;
-! C 239 ; WX 494 ; N braceex ; B 201 -75 255 925 ;
- C 240 ; WX 790 ; N apple ; B 56 -3 733 808 ;
- C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ;
- C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ;
-***************
-*** 196,206 ****
- C 246 ; WX 384 ; N parenrighttp ; B 54 -293 450 926 ;
- C 247 ; WX 384 ; N parenrightex ; B 398 -85 450 925 ;
- C 248 ; WX 384 ; N parenrightbt ; B 54 -293 450 926 ;
-! C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 360 926 ;
-! C 250 ; WX 384 ; N bracketrightex ; B 305 -79 360 925 ;
-! C 251 ; WX 384 ; N bracketrightbt ; B 20 -80 360 926 ;
-! C 252 ; WX 494 ; N bracerighttp ; B 17 -75 255 926 ;
-! C 253 ; WX 494 ; N bracerightmid ; B 201 -85 442 935 ;
-! C 254 ; WX 494 ; N bracerightbt ; B 17 -70 255 926 ;
- EndCharMetrics
- EndFontMetrics
---- 196,209 ----
- C 246 ; WX 384 ; N parenrighttp ; B 54 -293 450 926 ;
- C 247 ; WX 384 ; N parenrightex ; B 398 -85 450 925 ;
- C 248 ; WX 384 ; N parenrightbt ; B 54 -293 450 926 ;
-! C 249 ; WX 384 ; N bracketrighttp ; B 22 -75 360 925 ;
-! C 250 ; WX 384 ; N bracketrightex ; B 305 -75 360 925 ;
-! C 251 ; WX 384 ; N bracketrightbt ; B 20 -75 360 925 ;
-! C 252 ; WX 494 ; N bracerighttp ; B 17 -75 255 925 ;
-! C 253 ; WX 494 ; N bracerightmid ; B 201 -75 442 925 ;
-! C 254 ; WX 494 ; N bracerightbt ; B 17 -75 255 925 ;
- EndCharMetrics
-+ italicCorrection integral 67
-+ leftItalicCorrection integral 52
-+ subscriptCorrection integral -10
- EndFontMetrics
diff --git a/ps/devps/symbolchars b/ps/devps/symbolchars
deleted file mode 100644
index c5d4c445d..000000000
--- a/ps/devps/symbolchars
+++ /dev/null
@@ -1,3 +0,0 @@
-plus pl
-minus mi
-equal eq
diff --git a/ps/psfig.diff b/ps/psfig.diff
deleted file mode 100644
index 1339ba221..000000000
--- a/ps/psfig.diff
+++ /dev/null
@@ -1,106 +0,0 @@
-These are patches to makes psfig work with groff. They apply to the
-version of psfig in comp.sources.unix/Volume11. After applying them,
-psfig should be recompiled with -DGROFF. The resulting psfig will
-work only with groff, so you might want to install it under a
-different name. The output of this psfig must be processed using the
-macros in the file tmac.psfig in this directory. These will
-automatically add the necessary PostScript code to the prologue output
-by grops. Use of the `global' feature in psfig will result in
-non-conformant PostScript which will fail if processed by a page
-reversal program. Note that psfig is unsupported by me (I'm not
-interested in hearing about psfig problems.) For new documents, I
-recommend using the PostScript inclusion features provided by grops.
-
-James Clark
-jjc@jclark.uucp
-
-*** cmds.c.~1~ Thu Feb 14 16:09:45 1991
---- cmds.c Mon Mar 4 12:49:26 1991
-***************
-*** 245,253 ****
---- 245,261 ----
- (void) sprintf(x, "%.2fp", fx);
- (void) sprintf(y, "%.2fp", fy);
- } else if (!*x) {
-+ #ifndef GROFF
- (void) sprintf(x,"(%.2fp*%s/%.2fp)", fx, y, fy);
-+ #else /* GROFF */
-+ (void) sprintf(x,"(%.0fu*%s/%.0fu)", fx, y, fy);
-+ #endif /* GROFF */
- } else if (!*y) {
-+ #ifndef GROFF
- (void) sprintf(y,"(%.2fp*%s/%.2fp)", fy, x, fx);
-+ #else /* GROFF */
-+ (void) sprintf(y,"(%.0fu*%s/%.0fu)", fy, x, fx);
-+ #endif /* GROFF */
- }
-
- /*
-*** troff.c.~1~ Thu Feb 14 16:09:48 1991
---- troff.c Mon Mar 4 12:48:46 1991
-***************
-*** 26,32 ****
---- 26,36 ----
- }
-
-
-+ #ifndef GROFF
- char incl_file_s[] = "\\X'f%s'";
-+ #else /* GROFF */
-+ char incl_file_s[] = "\\X'ps: file %s'";
-+ #endif /* GROFF */
- includeFile(filenm)
- char *filenm; {
- printf(incl_file_s, filenm);
-***************
-*** 40,52 ****
---- 44,64 ----
- error("buffer overflow");
- }
-
-+ #ifndef GROFF
- char endfig_s[] = "\\X'pendFig'";
-+ #else /* GROFF */
-+ char endfig_s[] = "\\X'ps: exec psfigend'";
-+ #endif /* GROFF */
- endfig() {
- printf(endfig_s);
- }
-
- char startfig_s[] =
-+ #ifndef GROFF
- "\\X'p\\w@\\h@%s@@'\\X'p\\w@\\h@%s@@'\\X'p%.2f'\\X'p%.2f'\\X'p%.2f'\\X'p%.2f'\\X'pstartFig'";
-+ #else /* GROFF */
-+ "\\X'ps: exec \\w@\\h@%s@@ \\w@\\h@%s@@ %.2f %.2f %.2f %.2f psfigstart'";
-+ #endif /* GROFF */
-
- startfig(x, y, llx, lly, urx, ury)
- char *x, *y;
-***************
-*** 57,63 ****
---- 69,79 ----
- }
-
- emitDoClip() {
-+ #ifndef GROFF
- printf("\\X'pdoclip'");
-+ #else /* GROFF */
-+ printf("\\X'ps: exec psfigclip'");
-+ #endif /* GROFF */
- }
-
- flushX()
-***************
-*** 116,122 ****
---- 132,142 ----
-
- #define isWhite(ch) ((ch) == ' ' || (ch) == '\t' || (ch) == '\n')
-
-+ #ifndef GROFF
- char literal_s[] = "\\X'p%s'";
-+ #else /* GROFF */
-+ char literal_s[] = "\\X'ps: exec %s'";
-+ #endif /* GROFF */
- emitLiteral(text)
- char *text; {
- static char litbuf[BUFSZ];
diff --git a/ps/tmac.ps b/ps/tmac.ps
deleted file mode 100644
index 545e2d1ab..000000000
--- a/ps/tmac.ps
+++ /dev/null
@@ -1,83 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr AX ABI
-.ftr KR BMR
-.ftr KI BMI
-.ftr KB BMB
-.ftr KX BMBI
-.ftr CW CR
-.ftr CO CI
-.ftr CX CBI
-.ftr H HR
-.ftr HO HI
-.ftr HX HBI
-.ftr Hr HNR
-.ftr Hi HNI
-.ftr Hb HNB
-.ftr Hx HNBI
-.ftr NX NBI
-.ftr PA PR
-.ftr PX PBI
-.ftr ZI ZCMI
-.ftr C CR
-.char \(rn \h'-\w'\(sr'u'\(rn\h'\w'\(sr'u'
-.char \(mo \h'.08m'\(mo\h'-.08m'
-.char \(nm \h'.08m'\(nm\h'-.08m'
-.char \[parenlefttp] \[parenlefttp]\h'.016m'
-.char \[parenleftbt] \[parenleftbt]\h'.016m'
-.char \[parenleftex] \[parenleftex]\h'.016m'
-.char \[parenrighttp] \[parenrighttp]\h'.016m'
-.char \[parenrightbt] \[parenrightbt]\h'.016m'
-.char \[parenrightex] \[parenrightex]\h'.016m'
-.char \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.char \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.char \[ru] \D'l .5m 0'
-.char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
-.char \[br] \Z'\v'.25m'\D'l 0 -1m''
-.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
-.char \[12] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]2\s0
-.char \[14] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]4\s0
-.char \[34] \v'-.7m\s[\\n(.s*6u/10u]+.7m'3\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]4\s0
-.char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
-.char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
-.char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
-.tr \[char178]\[S2]
-.tr \[char179]\[S3]
-.tr \[char185]\[S1]
-.tr \[char188]\[14]
-.tr \[char189]\[12]
-.tr \[char190]\[34]
-.char \[Fi] ffi
-.char \[Fl] ffl
-.char \[ff] ff
-.char \[ij] ij
-.char \[IJ] IJ
-.if !c\[tm] .char \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
-.cp \n(_C
-.\" ignore the rest of the file in compatibility mode
-.if \n(.C .nx /dev/null
-.de ps-achar
-.char \\$1 \\$3\
-\k[acc]\
-\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
-\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
-\\$2\
-\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
-\h'|\\\\n[acc]u'
-.ie '\\$3'\(.i' .hcode \\$1i
-.el .hcode \\$1\\$3
-..
-.if !c\['y] \{\
-.ps-achar \['y] \[aa] y
-.tr \[char253]\['y]
-.\}
-.if !c\['Y] \{\
-.ps-achar \['Y] \[aa] Y
-.tr \[char221]\['Y]
-.\}
-.if !c\['c] .ps-achar \['c] \[aa] c
-.if !c\['C] .ps-achar \['C] \[aa] C
-.mso tmac.pspic
diff --git a/psbb/Makefile.dep b/psbb/Makefile.dep
new file mode 100644
index 000000000..640782ea9
--- /dev/null
+++ b/psbb/Makefile.dep
@@ -0,0 +1 @@
+psbb.o : psbb.c
diff --git a/psbb/Makefile.sub b/psbb/Makefile.sub
new file mode 100644
index 000000000..106721a67
--- /dev/null
+++ b/psbb/Makefile.sub
@@ -0,0 +1,5 @@
+PROG=psbb
+MAN1=psbb.n
+OBJS=psbb.o
+CSRCS=psbb.c
+XLIBS=
diff --git a/ps/psbb.c b/psbb/psbb.c
index f59204b4a..4df15621f 100644
--- a/ps/psbb.c
+++ b/psbb/psbb.c
@@ -1,11 +1,11 @@
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,12 +14,15 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
struct bounding_box {
int llx, lly, urx, ury;
diff --git a/man/psbb.man b/psbb/psbb.man
index e5c00851c..bc383817d 100644
--- a/man/psbb.man
+++ b/psbb/psbb.man
@@ -23,4 +23,4 @@ on the standard output and exits with zero status.
If it doesn't find such a line or if the line is invalid
it prints a message and exits with non-zero status.
.SH "SEE ALSO"
-.BR grops (1)
+.BR grops (@MAN1EXT@)
diff --git a/refer/Makefile b/refer/Makefile
deleted file mode 100644
index d20928211..000000000
--- a/refer/Makefile
+++ /dev/null
@@ -1,163 +0,0 @@
-#Copyright (C) 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# BINDIR says where to install the executables.
-BINDIR=/usr/local/bin
-# CC is the C++ compiler.
-CC=g++
-# OLDCC is the C compiler.
-OLDCC=gcc
-# Suffix to be used for index files.
-INDEX_SUFFIX=.i
-# Directory containing the default index.
-DEFAULT_INDEX_DIR=/usr/dict/papers
-# The filename (without suffix) of the default index.
-DEFAULT_INDEX_NAME=Ind
-# COMMON_WORDS_FILE is a file containing a list of common words.
-# If your system provides /usr/lib/eign it will be copied onto this,
-# otherwise the supplied eign file will be used.
-COMMON_WORDS_FILE=/usr/local/lib/groff/eign
-# Uncomment this if the POSIX pathconf() function is missing.
-PATHCONF_MISSING=#-DPATHCONF_MISSING
-
-CFLAGS=-g -O -Wall #-DHAVE_MMAP -DHAVE_RENAME -DPATHCONF_MISSING
-LDFLAGS=-g
-INCLUDES=-I../lib
-OLDCFLAGS=-g
-LIBS=
-MLIBS=$(LIBS) -lm
-# YACC can be either yacc or bison -y
-YACC=bison -y
-YACCFLAGS=-v
-ETAGS=etags
-ETAGSFLAGS=-p
-
-PROGS=refer lookbib indxbib lkbib
-
-INDXBIB_OBJECTS=indxbib.o common.o dirnamemax.o ../lib/libgroff.a
-LOOKBIB_OBJECTS=lookbib.o search.o linear.o index.o common.o \
- ../lib/libgroff.a
-REFER_OBJECTS=refer.o ref.o token.o search.o linear.o index.o \
- label.tab.o command.o common.o ../lib/libgroff.a
-LKBIB_OBJECTS=lkbib.o search.o linear.o index.o common.o ../lib/libgroff.a
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: $(PROGS)
-
-refer: $(REFER_OBJECTS)
- $(CC) $(LDFLAGS) -o $@ $(REFER_OBJECTS) $(MLIBS)
-
-indxbib: $(INDXBIB_OBJECTS)
- $(CC) $(LDFLAGS) -o $@ $(INDXBIB_OBJECTS) $(MLIBS)
-
-lookbib: $(LOOKBIB_OBJECTS)
- $(CC) $(LDFLAGS) -o $@ $(LOOKBIB_OBJECTS) $(MLIBS)
-
-lkbib: $(LKBIB_OBJECTS)
- $(CC) $(LDFLAGS) -o $@ $(LKBIB_OBJECTS) $(MLIBS)
-
-label.tab.c: label.y
- $(YACC) $(YACCFLAGS) label.y
- mv y.tab.c label.tab.c
-
-dirnamemax.o: dirnamemax.c
- defs=; \
- if [ -f /usr/include/limits.h ]; \
- then defs=-DHAVE_LIMITS_H; \
- fi; \
- if [ -f /usr/include/dirent.h ]; \
- then defs="$$defs -DHAVE_DIRENT_H"; \
- elif [ -f /usr/include/sys/dir.h ]; \
- then defs="$$defs -DHAVE_SYS_DIR_H"; \
- fi; \
- $(OLDCC) $(OLDCFLAGS) -c $$defs $(PATHCONF_MISSING) dirnamemax.c
-
-suffix.h: FORCE
- @$(SHELL) ../gendef $@ "INDEX_SUFFIX=\"$(INDEX_SUFFIX)\""
-
-path.h: FORCE
- @$(SHELL) ../gendef $@ \
- "COMMON_WORDS_FILE=\"$(COMMON_WORDS_FILE)\"" \
- "DEFAULT_INDEX_DIR=\"$(DEFAULT_INDEX_DIR)\"" \
- "DEFAULT_INDEX_NAME \"$(DEFAULT_INDEX_NAME)\""
-
-index.o: refid.h search.h index.h suffix.h ../lib/lib.h ../lib/cset.h \
- ../lib/cmap.h ../lib/errarg.h ../lib/error.h
-indxbib.o: refer.h path.h index.h suffix.h \
- ../lib/errarg.h ../lib/error.h ../lib/cset.h ../lib/cmap.h \
- ../lib/stringclass.h ../lib/lib.h
-linear.o: refid.h search.h ../lib/lib.h ../lib/errarg.h \
- ../lib/error.h ../lib/cset.h ../lib/cmap.h
-lookbib.o: refid.h search.h ../lib/errarg.h ../lib/error.h \
- ../lib/lib.h ../lib/cset.h
-ref.o: refer.h path.h refid.h ref.h token.h ../lib/errarg.h \
- ../lib/error.h ../lib/lib.h ../lib/stringclass.h \
- ../lib/cset.h ../lib/cmap.h
-refer.o: refer.h path.h refid.h ref.h token.h search.h command.h \
- ../lib/errarg.h ../lib/error.h ../lib/lib.h \
- ../lib/stringclass.h ../lib/cset.h ../lib/cmap.h
-command.o: refer.h path.h command.h refid.h search.h ../lib/lib.h \
- ../lib/cset.h ../lib/cmap.h ../lib/errarg.h ../lib/error.h
-search.o: refid.h search.h ../lib/lib.h ../lib/errarg.h \
- ../lib/error.h
-token.o: refer.h path.h token.h ../lib/errarg.h ../lib/error.h \
- ../lib/lib.h ../lib/stringclass.h ../lib/cset.h \
- ../lib/cmap.h
-label.tab.o: refer.h path.h refid.h ref.h token.h \
- ../lib/errarg.h ../lib/error.h ../lib/lib.h \
- ../lib/stringclass.h ../lib/cset.h ../lib/cmap.h
-lkbib.o: refer.h path.h refid.h search.h ../lib/errarg.h ../lib/error.h \
- ../lib/lib.h ../lib/cset.h ../lib/cmap.h \
- ../lib/stringclass.h
-
-clean:
- -rm -f *.o $(PROGS) core a.out *.n gmon.out path.h suffix.h y.output
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
- -rm -f label.tab.c
-
-install.bin: $(PROGS)
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/grefer
- cp refer $(BINDIR)/grefer
- -rm -f $(BINDIR)/gindxbib
- cp indxbib $(BINDIR)/gindxbib
- -rm -f $(BINDIR)/glookbib
- cp lookbib $(BINDIR)/glookbib
- -rm -f $(BINDIR)/lkbib
- cp lkbib $(BINDIR)/lkbib
-
-
-install.nobin:
- @if [ -f /usr/lib/eign ]; \
- then echo cp /usr/lib/eign $(COMMON_WORDS_FILE); \
- rm -f $(COMMON_WORDS_FILE); \
- cp /usr/lib/eign $(COMMON_WORDS_FILE); \
- else echo cp eign $(COMMON_WORDS_FILE); \
- rm -f $(COMMON_WORDS_FILE); \
- cp eign $(COMMON_WORDS_FILE); fi
-
-install: install.bin install.nobin
-
-FORCE:
diff --git a/refer/Makefile.dep b/refer/Makefile.dep
new file mode 100644
index 000000000..6a6c98734
--- /dev/null
+++ b/refer/Makefile.dep
@@ -0,0 +1,17 @@
+command.o : command.cc refer.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/stringclass.h ../include/cset.h \
+ ../include/cmap.h ../include/defs.h ../include/refid.h \
+ ../include/search.h command.h
+ref.o : ref.cc refer.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/stringclass.h ../include/cset.h \
+ ../include/cmap.h ../include/defs.h ../include/refid.h ref.h token.h
+refer.o : refer.cc refer.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/stringclass.h ../include/cset.h \
+ ../include/cmap.h ../include/defs.h ../include/refid.h ref.h token.h \
+ ../include/search.h command.h
+token.o : token.cc refer.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/stringclass.h ../include/cset.h \
+ ../include/cmap.h ../include/defs.h token.h
+label.o : label.cc refer.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h ../include/stringclass.h ../include/cset.h \
+ ../include/cmap.h ../include/defs.h ../include/refid.h ref.h token.h
diff --git a/refer/Makefile.sub b/refer/Makefile.sub
new file mode 100644
index 000000000..287346245
--- /dev/null
+++ b/refer/Makefile.sub
@@ -0,0 +1,10 @@
+PROG=refer
+MAN1=refer.n
+XLIBS=$(LIBBIB) $(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=command.o label.o ref.o refer.o token.o
+CCSRCS=command.cc ref.cc refer.cc token.cc
+HDRS=refer.h token.h command.h ref.h
+GRAM=label.y
+YTABC=label.cc
+NAMEPREFIX=$(g)
diff --git a/refer/TODO b/refer/TODO
deleted file mode 100644
index 0cb2af236..000000000
--- a/refer/TODO
+++ /dev/null
@@ -1,118 +0,0 @@
-Make the index files machine independent.
-
-Allow search keys to be negated (with !) to indicate that the
-reference should not contain the key. Ignore negated keys during
-indexed searching.
-
-Provide an option with lkbib and lookbib that prints the location
-(filename, position) of each reference. Need to map filename_id's
-back to filenames.
-
-Rename join-authors to join-fields. Have a separate label-join-fields
-command used by @ and #.
-
-Have some sort of quantifier: eg $.n#A means execute `$.n' for each
-instance of an A field, setting $ to that field, and then join the
-results using the join-authors command.
-
-no-text-in-bracket command which says not to allow post_text and
-pre_text when the [] flags has been given. Useful for superscripted
-footnotes.
-
-Make it possible to translate - to \(en in page ranges.
-
-Trim eign a bit.
-
-In indexed searching discard all numeric keys except dates.
-
-Allow `\ ' to separate article from first word.
-
-%also
-
-Option automatically to supply [] flags in every reference.
-
-See if we can avoid requiring a comma before jr. and so on
-in find_last_name().
-
-Cache sortified authors in authors string during tentative evaluation of
-label specification.
-
-Possibly don't allow * and % expressions in the first part of ?:, | or
-& expressions.
-
-Handle better the case where <> occurs inside functions and in the
-first operand of ~. Or perhaps implement <> using some magic character
-in the string.
-
-Should special treatment be given to lines beginning with . in
-references? (Unix refer seems to treat them like `%').
-
-Add global flag to control whether all files should be stat-ed after
-loading, and whether they should be stat-ed before each search.
-Perhaps make this dependent on the number of files there are.
-
-Option to truncate keys to truncate_len in linear searching.
-
-Allow multiple -f options in indxbib.
-
-In indxbib, possibly store common words rather than common words
-filename. In this case store only words that are actually present in
-the file.
-
-Perhaps we should put out an obnoxious copyright message when lookbib
-starts up.
-
-Provide an option that writes a file containing just the references
-actually used. Useful if you want to distribute a document.
-
-Have a magic token such that
-%A <sort stuff><magic token><print stuff>
-will print as though it were
-%A <print stuff>
-but sort as though it were
-%A <sort stuff>
-Do we need this if we can specify author alternatives for sorting?
-No, provided we have separate alternatives for @.
-
-In consider_authors when last names are ambiguous we might be able to
-use just the first name and not Jr. bit. Or we might be able to
-abbreviate the author.
-
-It ought to be possible to specify an alternative field to sort on
-instead of date. (ie if there's a field giving the type of document --
-these references should sort after any years)
-
-Provide a way to execute a command using a command-line option.
-
-Option to set the label-spec as a command-line option (-L).
-
-Command to to specify which fields can occur multiple times:
-multiple AE
-
-Command to specify how various fields sort:
-aort-as-name A
-sort-as-date D
-sort-as-title T
-sort-as-other O
-
-Command to specify which fields are author fields:
-# if we don't have A use field Q
-author-fields AQ
-
-Commands to set properties of tokens.
-sortify-token \(ae ae
-uppercase-token \[ae] \[AE]
-
-Command to set the names of months:
-months january february march april may ...
-
-Perhaps provide some sort of macro capability:
-# perhaps a macro capability
-defmacro foo
-annotation-field $1
-endef
-
-Command to control strings used in capitalization
-capitalize-start \s+2
-capitalize-end \s-2
-(perhaps make these arguments to the capitalize command.)
diff --git a/refer/command.c b/refer/command.cc
index 069e58e34..93b6cfe95 100644
--- a/refer/command.c
+++ b/refer/command.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "refer.h"
diff --git a/refer/command.h b/refer/command.h
index 54fab2b34..2b977eae9 100644
--- a/refer/command.h
+++ b/refer/command.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
void process_commands(const char *file);
diff --git a/refer/label.tab.c b/refer/label.cc
index c41ededaf..dd88fa93c 100644
--- a/refer/label.tab.c
+++ b/refer/label.cc
@@ -1,6 +1,8 @@
/* A Bison parser, made from label.y */
+#define YYBISON 1 /* Identify Bison output. */
+
#define TOKEN_LETTER 258
#define TOKEN_LITERAL 259
#define TOKEN_DIGIT 260
@@ -35,7 +37,7 @@ struct expression {
CONTAINS_VARIABLE = 01,
CONTAINS_STAR = 02,
CONTAINS_FORMAT = 04,
- CONTAINS_AT = 010,
+ CONTAINS_AT = 010
};
virtual ~expression() { }
virtual void evaluate(int, const reference &, string &,
@@ -272,6 +274,7 @@ static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 1, 2, 3, 4, 5
};
+#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 2, 4, 10, 11, 13, 15, 19, 23, 25,
28, 30, 34, 36, 38, 40, 43, 46, 49, 55,
@@ -279,6 +282,8 @@ static const short yyprhs[] = { 0,
87, 88, 90
};
+#endif
+
static const short yyrhs[] = { 23,
0, 24, 0, 24, 6, 23, 7, 22, 0, 0,
22, 0, 25, 0, 24, 8, 25, 0, 24, 9,
@@ -300,10 +305,10 @@ static const short yyrline[] = { 0,
387, 390, 392
};
-static const char * const yytname[] = { "$",
-"error","$illegal.","TOKEN_LETTER","TOKEN_LITERAL","TOKEN_DIGIT","'?'","':'","'|'","'&'","'~'",
-"'@'","'%'","'.'","'+'","'-'","'*'","'('","')'","'<'","'>'",
-"expr","conditional","optional_conditional","alternative","list","substitute","string","optional_number","number","digits",
+static const char * const yytname[] = { "$","error","$illegal.","TOKEN_LETTER",
+"TOKEN_LITERAL","TOKEN_DIGIT","'?'","':'","'|'","'&'","'~'","'@'","'%'","'.'",
+"'+'","'-'","'*'","'('","')'","'<'","'>'","expr","conditional","optional_conditional",
+"alternative","list","substitute","string","optional_number","number","digits",
"flag",""
};
#endif
@@ -371,7 +376,7 @@ static const short yycheck[] = { 10,
This program 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 1, or (at your option)
+ the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
@@ -387,15 +392,20 @@ static const short yycheck[] = { 10,
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
-#else /* Not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc)
#include <alloca.h>
-#else /* Not sparc */
-#ifdef MSDOS
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
-#endif /* MSDOS */
-#endif /* Not sparc. */
-#endif /* Not GNU C. */
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser
@@ -486,6 +496,9 @@ int yydebug; /* nonzero means print parse trace */
#define YYMAXDEPTH 10000
#endif
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
#ifndef __cplusplus
/* This is the most reliable way to avoid incompatibilities
@@ -520,8 +533,9 @@ __yy_bcopy (char *from, char *to, int count)
}
#endif
+#endif
-#line 160 "/usr/local/lib/bison.simple"
+#line 169 "/usr/local/lib/bison.simple"
int
yyparse()
{
@@ -539,13 +553,13 @@ yyparse()
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-#define YYPOPSTACK (yyvsp--, yysp--, yylsp--)
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
#else
-#define YYPOPSTACK (yyvsp--, yysp--)
+#define YYPOPSTACK (yyvsp--, yyssp--)
#endif
int yystacksize = YYINITDEPTH;
@@ -704,7 +718,15 @@ yynewstate:
#if YYDEBUG != 0
if (yydebug)
- fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
#endif
}
@@ -966,7 +988,7 @@ case 33:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 423 "/usr/local/lib/bison.simple"
+#line 440 "/usr/local/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -1039,23 +1061,28 @@ yyerrlab: /* here on detecting error */
for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
if (yycheck[x + yyn] == x)
size += strlen(yytname[x]) + 15, count++;
- msg = (char *) xmalloc(size + 15);
- strcpy(msg, "parse error");
-
- if (count < 5)
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
{
- count = 0;
- for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
}
- yyerror(msg);
- free(msg);
+ else
+ yyerror ("parse error; also virtual memory exceeded");
}
else
#endif /* YYERROR_VERBOSE */
@@ -1270,14 +1297,11 @@ void format_expr::evaluate(int tentative, const reference &ref,
if (type != '0')
result += format_serial(type, num + 1);
else {
- char buf[INT_DIGITS + 1];
- char *ptr = buf;
- if (width > INT_DIGITS)
- ptr = new char[width + 1];
- sprintf(ptr, "%0*d", width, num + first_number);
+ const char *ptr = itoa(num + first_number);
+ int pad = width - strlen(ptr);
+ while (--pad >= 0)
+ result += '0';
result += ptr;
- if (ptr != buf)
- a_delete ptr;
}
}
diff --git a/refer/label.y b/refer/label.y
index 77ce23bce..d18eb89a9 100644
--- a/refer/label.y
+++ b/refer/label.y
@@ -1,12 +1,12 @@
/* -*- C++ -*-
- Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+ Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{
@@ -47,7 +47,7 @@ struct expression {
CONTAINS_VARIABLE = 01,
CONTAINS_STAR = 02,
CONTAINS_FORMAT = 04,
- CONTAINS_AT = 010,
+ CONTAINS_AT = 010
};
virtual ~expression() { }
virtual void evaluate(int, const reference &, string &,
@@ -509,14 +509,11 @@ void format_expr::evaluate(int tentative, const reference &ref,
if (type != '0')
result += format_serial(type, num + 1);
else {
- char buf[INT_DIGITS + 1];
- char *ptr = buf;
- if (width > INT_DIGITS)
- ptr = new char[width + 1];
- sprintf(ptr, "%0*d", width, num + first_number);
+ const char *ptr = itoa(num + first_number);
+ int pad = width - strlen(ptr);
+ while (--pad >= 0)
+ result += '0';
result += ptr;
- if (ptr != buf)
- a_delete ptr;
}
}
diff --git a/refer/ref.c b/refer/ref.cc
index de4f6b31b..bb8ed2a8c 100644
--- a/refer/ref.c
+++ b/refer/ref.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
-Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "refer.h"
diff --git a/refer/ref.h b/refer/ref.h
index 8b52c0ec0..28e498dc5 100644
--- a/refer/ref.h
+++ b/refer/ref.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct label_info;
diff --git a/refer/refer.c b/refer/refer.cc
index 279ea44c3..cb6e218e3 100644
--- a/refer/refer.c
+++ b/refer/refer.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,11 +15,9 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include <osfcn.h>
-
#include "refer.h"
#include "refid.h"
#include "ref.h"
@@ -234,7 +232,7 @@ int main(int argc, char **argv)
error("argument to `a' option not a number");
break;
}
- if (*ptr == '0') {
+ if (*ptr == '\0') {
reverse_fields = 'A';
reverse_fields += opt;
}
@@ -604,7 +602,7 @@ class label_processing_state {
PENDING_LABEL,
PENDING_LABEL_POST,
PENDING_LABEL_POST_PRE,
- PENDING_POST,
+ PENDING_POST
} state;
label_type type; // type of pending labels
int count; // number of pending labels
@@ -657,10 +655,12 @@ static void split_punct(string &line, string &punct)
else if (!get_token(&ptr, end))
break;
}
- const token_info *ti = lookup_token(last_token_start, end);
- if (ti->is_punct()) {
- punct.append(last_token_start, end - last_token_start);
- line.set_length(last_token_start - start);
+ if (last_token_start) {
+ const token_info *ti = lookup_token(last_token_start, end);
+ if (ti->is_punct()) {
+ punct.append(last_token_start, end - last_token_start);
+ line.set_length(last_token_start - start);
+ }
}
}
@@ -1110,7 +1110,7 @@ void do_bib(const char *filename)
body = c;
state = BODY;
}
- else
+ else if (c != '\n')
state = MIDDLE;
break;
case MIDDLE:
diff --git a/refer/refer.h b/refer/refer.h
index 7776382cc..932b85536 100644
--- a/refer/refer.h
+++ b/refer/refer.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
@@ -31,9 +31,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "cset.h"
#include "cmap.h"
-#include "path.h"
-
-#define DEFAULT_INDEX DEFAULT_INDEX_DIR "/" DEFAULT_INDEX_NAME
+#include "defs.h"
unsigned hash_string(const char *, int);
int next_size(int);
diff --git a/man/grefer.man b/refer/refer.man
index 9a90ac6c5..bfe6a52d4 100644
--- a/man/grefer.man
+++ b/refer/refer.man
@@ -4,17 +4,24 @@
.ns
.TP \\$1
..
-.ds g g
-.ds G G
-.TH \*GREFER @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.\" The BSD man macros can't handle " in arguments to font change macros,
+.\" so use \(ts instead of ".
+.tr \(ts"
+.TH @G@REFER @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-\*grefer \- preprocess bibliographic references for groff
+@g@refer \- preprocess bibliographic references for groff
.SH SYNOPSIS
.ad l
.nr i \n(.i
-.in +\w'\fB\*grefer 'u
+.in +\w'\fB@g@refer 'u
.ti \niu
-.B \*grefer
+.B @g@refer
.de OP
.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
.el .RB "[\ " "\\$1" "\ ]"
@@ -34,7 +41,10 @@
.br
.ad b
.SH DESCRIPTION
-.B \*grefer
+This file documents the GNU version of
+.BR refer ,
+which is part of the groff document formatting system.
+.B refer
copies the contents of
.IR filename \|.\|.\|.
to the standard output,
@@ -58,7 +68,7 @@ record in the citation.
A combination of these alternatives is also possible.
.LP
For each citation,
-.B \*grefer
+.B refer
can produce a mark in the text.
This mark consists of some label which can be separated from
the text and from other labels in various ways.
@@ -67,7 +77,7 @@ For each reference it also outputs
commands that can be used by a macro package to produce a formatted
reference for each citation.
The output of
-.B \*grefer
+.B refer
must therefore be processed using a suitable macro package.
The
.B \-ms
@@ -79,14 +89,13 @@ the citation,
or the references may be accumulated,
and the commands output at some later point.
If the references are accumulated, then multiple citations of the same
-reference will produce in a single formatted reference.
+reference will produce a single formatted reference.
.LP
The interpretation of lines between
.B .R1
and
.B .R2
-as commands is a new feature of
-.BR \*grefer .
+as commands is a new feature of GNU refer.
Documents making use of this feature can still be processed by
Unix refer just by adding the lines
.RS
@@ -110,12 +119,12 @@ The effect of some commands can also be achieved by options.
These options are supported mainly for compatibility with Unix refer.
It is usually more convenient to use commands.
.LP
-.B \*grefer
+.B refer
generates
.B .lf
lines so that filenames and line numbers in messages produced
by commands that read
-.B \*grefer
+.B refer
output will be correct;
it also interprets lines beginning with
.B .lf
@@ -123,7 +132,7 @@ so that filenames and line numbers in the messages and
.B .lf
lines that it produces will be accurate even if the input has been
preprocessed by a command such as
-.BR gsoelim (@MAN1EXT@).
+.BR @g@soelim (@MAN1EXT@).
.SH OPTIONS
.LP
Most options are equivalent to commands
@@ -543,26 +552,26 @@ introduces a comment that extends to the end of the line
Each command is broken up into words.
Words are separated by spaces or tabs.
A word that begins with
-.B """"
+.B \(ts
extends to the next
-.B """"
+.B \(ts
that is not followed by another
-.BR """" .
+.BR \(ts .
If there is no such
-.B """"
+.B \(ts
the word extends to the end of the line.
Pairs of
-.B """"
+.B \(ts
in a word beginning with
-.B """"
+.B \(ts
collapse to a single
-.BR """" .
+.BR \(ts .
Neither
.B #
nor
.B ;
are recognized inside
-.BR """" s.
+.BR \(ts s.
A line can be continued by ending it with
.BR \e ;
this works everywhere except after a
@@ -593,7 +602,7 @@ are used for a non-negative numbers;
is used for an arbitrary string;
.I filename
is used for the name of a file.
-.TP \w'\fBabbreviate-label-ranges'u+2n
+.Tp \w'\fBabbreviate-label-ranges'u+2n
.BI abbreviate\*n\ fields\ string1\ string2\ string3\ string4
Abbreviate the first names of
.IR fields .
@@ -724,7 +733,7 @@ For each
if an index
.IB filename @INDEX_SUFFIX@
created by
-.BR \*gindxbib (@MAN1EXT@)
+.BR @g@indxbib (@MAN1EXT@)
exists, then it will be searched instead;
each index can cover multiple databases.
.TP
@@ -759,7 +768,7 @@ field in the reference.
The default database should be searched.
This is the default behaviour, so the negative version of
this command is more useful.
-\*grefer determines whether the default database should be searched
+refer determines whether the default database should be searched
on the first occasion that it needs to do a search.
Thus a
.B no-default-database
@@ -994,7 +1003,7 @@ However, if the references are sorted by author
(that is the sort specification starts with
.BR A+ ),
then authors' last names will be used instead, provided that this does
-not introduce ambiguity.
+not introduce ambiguity,
and also an initial subsequence of the authors may be used
instead of all the authors, again provided that this does not
introduce ambiguity.
@@ -1253,16 +1262,16 @@ macro and followed by a call to the
.B ]>
macro.
.SH FILES
-.TP \w'\fB@DEFAULT_INDEX@'u+2n
+.Tp \w'\fB@DEFAULT_INDEX@'u+2n
.B @DEFAULT_INDEX@
Default database.
.TP
.IB file @INDEX_SUFFIX@
Index files.
.SH "SEE ALSO"
-.BR \*gindxbib (@MAN1EXT@),
-.BR \*glookbib (@MAN1EXT@),
-.BR \*glkbib (@MAN1EXT@)
+.BR @g@indxbib (@MAN1EXT@),
+.BR @g@lookbib (@MAN1EXT@),
+.BR lkbib (@MAN1EXT@)
.br
.SH BUGS
In label expressions,
diff --git a/refer/token.c b/refer/token.cc
index 8418291ff..8847081bd 100644
--- a/refer/token.c
+++ b/refer/token.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "refer.h"
diff --git a/refer/token.h b/refer/token.h
index d5ce51194..c6445d230 100644
--- a/refer/token.h
+++ b/refer/token.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
enum token_type {
diff --git a/refer/y.output b/refer/y.output
new file mode 100644
index 000000000..c848e9841
--- /dev/null
+++ b/refer/y.output
@@ -0,0 +1,670 @@
+
+Grammar
+rule 1 expr -> optional_conditional
+rule 2 conditional -> alternative
+rule 3 conditional -> alternative '?' optional_conditional ':' conditional
+rule 4 optional_conditional -> /* empty */
+rule 5 optional_conditional -> conditional
+rule 6 alternative -> list
+rule 7 alternative -> alternative '|' list
+rule 8 alternative -> alternative '&' list
+rule 9 list -> substitute
+rule 10 list -> list substitute
+rule 11 substitute -> string
+rule 12 substitute -> substitute '~' string
+rule 13 string -> '@'
+rule 14 string -> TOKEN_LITERAL
+rule 15 string -> TOKEN_LETTER
+rule 16 string -> TOKEN_LETTER number
+rule 17 string -> '%' TOKEN_LETTER
+rule 18 string -> '%' digits
+rule 19 string -> string '.' flag TOKEN_LETTER optional_number
+rule 20 string -> string '+' number
+rule 21 string -> string '-' number
+rule 22 string -> string '*'
+rule 23 string -> '(' optional_conditional ')'
+rule 24 string -> '<' optional_conditional '>'
+rule 25 optional_number -> /* empty */
+rule 26 optional_number -> number
+rule 27 number -> TOKEN_DIGIT
+rule 28 number -> number TOKEN_DIGIT
+rule 29 digits -> TOKEN_DIGIT
+rule 30 digits -> digits TOKEN_DIGIT
+rule 31 flag -> /* empty */
+rule 32 flag -> '+'
+rule 33 flag -> '-'
+
+Terminals, with rules where they appear
+
+$ (-1)
+'%' (37) 17 18
+'&' (38) 8
+'(' (40) 23
+')' (41) 23
+'*' (42) 22
+'+' (43) 20 32
+'-' (45) 21 33
+'.' (46) 19
+':' (58) 3
+'<' (60) 24
+'>' (62) 24
+'?' (63) 3
+'@' (64) 13
+'|' (124) 7
+'~' (126) 12
+error (256)
+TOKEN_LETTER (258) 15 16 17 19
+TOKEN_LITERAL (259) 14
+TOKEN_DIGIT (260) 27 28 29 30
+
+Nonterminals, with rules where they appear
+
+expr (21)
+ on left: 1
+conditional (22)
+ on left: 2 3, on right: 3 5
+optional_conditional (23)
+ on left: 4 5, on right: 1 3 23 24
+alternative (24)
+ on left: 6 7 8, on right: 2 3 7 8
+list (25)
+ on left: 9 10, on right: 6 7 8 10
+substitute (26)
+ on left: 11 12, on right: 9 10 12
+string (27)
+ on left: 13 14 15 16 17 18 19 20 21 22 23 24, on right: 11 12 19
+ 20 21 22
+optional_number (28)
+ on left: 25 26, on right: 19
+number (29)
+ on left: 27 28, on right: 16 20 21 26 28
+digits (30)
+ on left: 29 30, on right: 18 30
+flag (31)
+ on left: 31 32 33, on right: 19
+
+
+state 0
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 4 (optional_conditional)
+
+ expr go to state 47
+ conditional go to state 7
+ optional_conditional go to state 8
+ alternative go to state 9
+ list go to state 10
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 1
+
+ string -> TOKEN_LETTER . (rule 15)
+ string -> TOKEN_LETTER . number (rule 16)
+
+ TOKEN_DIGIT shift, and go to state 13
+
+ $default reduce using rule 15 (string)
+
+ number go to state 14
+
+
+
+state 2
+
+ string -> TOKEN_LITERAL . (rule 14)
+
+ $default reduce using rule 14 (string)
+
+
+
+state 3
+
+ string -> '@' . (rule 13)
+
+ $default reduce using rule 13 (string)
+
+
+
+state 4
+
+ string -> '%' . TOKEN_LETTER (rule 17)
+ string -> '%' . digits (rule 18)
+
+ TOKEN_LETTER shift, and go to state 15
+ TOKEN_DIGIT shift, and go to state 16
+
+ digits go to state 17
+
+
+
+state 5
+
+ string -> '(' . optional_conditional ')' (rule 23)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 4 (optional_conditional)
+
+ conditional go to state 7
+ optional_conditional go to state 18
+ alternative go to state 9
+ list go to state 10
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 6
+
+ string -> '<' . optional_conditional '>' (rule 24)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 4 (optional_conditional)
+
+ conditional go to state 7
+ optional_conditional go to state 19
+ alternative go to state 9
+ list go to state 10
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 7
+
+ optional_conditional -> conditional . (rule 5)
+
+ $default reduce using rule 5 (optional_conditional)
+
+
+
+state 8
+
+ expr -> optional_conditional . (rule 1)
+
+ $default reduce using rule 1 (expr)
+
+
+
+state 9
+
+ conditional -> alternative . (rule 2)
+ conditional -> alternative . '?' optional_conditional ':' conditional (rule 3)
+ alternative -> alternative . '|' list (rule 7)
+ alternative -> alternative . '&' list (rule 8)
+
+ '?' shift, and go to state 20
+ '|' shift, and go to state 21
+ '&' shift, and go to state 22
+
+ $default reduce using rule 2 (conditional)
+
+
+
+state 10
+
+ alternative -> list . (rule 6)
+ list -> list . substitute (rule 10)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 6 (alternative)
+
+ substitute go to state 23
+ string go to state 12
+
+
+
+state 11
+
+ list -> substitute . (rule 9)
+ substitute -> substitute . '~' string (rule 12)
+
+ '~' shift, and go to state 24
+
+ $default reduce using rule 9 (list)
+
+
+
+state 12
+
+ substitute -> string . (rule 11)
+ string -> string . '.' flag TOKEN_LETTER optional_number (rule 19)
+ string -> string . '+' number (rule 20)
+ string -> string . '-' number (rule 21)
+ string -> string . '*' (rule 22)
+
+ '.' shift, and go to state 25
+ '+' shift, and go to state 26
+ '-' shift, and go to state 27
+ '*' shift, and go to state 28
+
+ $default reduce using rule 11 (substitute)
+
+
+
+state 13
+
+ number -> TOKEN_DIGIT . (rule 27)
+
+ $default reduce using rule 27 (number)
+
+
+
+state 14
+
+ string -> TOKEN_LETTER number . (rule 16)
+ number -> number . TOKEN_DIGIT (rule 28)
+
+ TOKEN_DIGIT shift, and go to state 29
+
+ $default reduce using rule 16 (string)
+
+
+
+state 15
+
+ string -> '%' TOKEN_LETTER . (rule 17)
+
+ $default reduce using rule 17 (string)
+
+
+
+state 16
+
+ digits -> TOKEN_DIGIT . (rule 29)
+
+ $default reduce using rule 29 (digits)
+
+
+
+state 17
+
+ string -> '%' digits . (rule 18)
+ digits -> digits . TOKEN_DIGIT (rule 30)
+
+ TOKEN_DIGIT shift, and go to state 30
+
+ $default reduce using rule 18 (string)
+
+
+
+state 18
+
+ string -> '(' optional_conditional . ')' (rule 23)
+
+ ')' shift, and go to state 31
+
+
+
+state 19
+
+ string -> '<' optional_conditional . '>' (rule 24)
+
+ '>' shift, and go to state 32
+
+
+
+state 20
+
+ conditional -> alternative '?' . optional_conditional ':' conditional (rule 3)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 4 (optional_conditional)
+
+ conditional go to state 7
+ optional_conditional go to state 33
+ alternative go to state 9
+ list go to state 10
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 21
+
+ alternative -> alternative '|' . list (rule 7)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ list go to state 34
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 22
+
+ alternative -> alternative '&' . list (rule 8)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ list go to state 35
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 23
+
+ list -> list substitute . (rule 10)
+ substitute -> substitute . '~' string (rule 12)
+
+ '~' shift, and go to state 24
+
+ $default reduce using rule 10 (list)
+
+
+
+state 24
+
+ substitute -> substitute '~' . string (rule 12)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ string go to state 36
+
+
+
+state 25
+
+ string -> string '.' . flag TOKEN_LETTER optional_number (rule 19)
+
+ '+' shift, and go to state 37
+ '-' shift, and go to state 38
+
+ $default reduce using rule 31 (flag)
+
+ flag go to state 39
+
+
+
+state 26
+
+ string -> string '+' . number (rule 20)
+
+ TOKEN_DIGIT shift, and go to state 13
+
+ number go to state 40
+
+
+
+state 27
+
+ string -> string '-' . number (rule 21)
+
+ TOKEN_DIGIT shift, and go to state 13
+
+ number go to state 41
+
+
+
+state 28
+
+ string -> string '*' . (rule 22)
+
+ $default reduce using rule 22 (string)
+
+
+
+state 29
+
+ number -> number TOKEN_DIGIT . (rule 28)
+
+ $default reduce using rule 28 (number)
+
+
+
+state 30
+
+ digits -> digits TOKEN_DIGIT . (rule 30)
+
+ $default reduce using rule 30 (digits)
+
+
+
+state 31
+
+ string -> '(' optional_conditional ')' . (rule 23)
+
+ $default reduce using rule 23 (string)
+
+
+
+state 32
+
+ string -> '<' optional_conditional '>' . (rule 24)
+
+ $default reduce using rule 24 (string)
+
+
+
+state 33
+
+ conditional -> alternative '?' optional_conditional . ':' conditional (rule 3)
+
+ ':' shift, and go to state 42
+
+
+
+state 34
+
+ alternative -> alternative '|' list . (rule 7)
+ list -> list . substitute (rule 10)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 7 (alternative)
+
+ substitute go to state 23
+ string go to state 12
+
+
+
+state 35
+
+ alternative -> alternative '&' list . (rule 8)
+ list -> list . substitute (rule 10)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ $default reduce using rule 8 (alternative)
+
+ substitute go to state 23
+ string go to state 12
+
+
+
+state 36
+
+ substitute -> substitute '~' string . (rule 12)
+ string -> string . '.' flag TOKEN_LETTER optional_number (rule 19)
+ string -> string . '+' number (rule 20)
+ string -> string . '-' number (rule 21)
+ string -> string . '*' (rule 22)
+
+ '.' shift, and go to state 25
+ '+' shift, and go to state 26
+ '-' shift, and go to state 27
+ '*' shift, and go to state 28
+
+ $default reduce using rule 12 (substitute)
+
+
+
+state 37
+
+ flag -> '+' . (rule 32)
+
+ $default reduce using rule 32 (flag)
+
+
+
+state 38
+
+ flag -> '-' . (rule 33)
+
+ $default reduce using rule 33 (flag)
+
+
+
+state 39
+
+ string -> string '.' flag . TOKEN_LETTER optional_number (rule 19)
+
+ TOKEN_LETTER shift, and go to state 43
+
+
+
+state 40
+
+ string -> string '+' number . (rule 20)
+ number -> number . TOKEN_DIGIT (rule 28)
+
+ TOKEN_DIGIT shift, and go to state 29
+
+ $default reduce using rule 20 (string)
+
+
+
+state 41
+
+ string -> string '-' number . (rule 21)
+ number -> number . TOKEN_DIGIT (rule 28)
+
+ TOKEN_DIGIT shift, and go to state 29
+
+ $default reduce using rule 21 (string)
+
+
+
+state 42
+
+ conditional -> alternative '?' optional_conditional ':' . conditional (rule 3)
+
+ TOKEN_LETTER shift, and go to state 1
+ TOKEN_LITERAL shift, and go to state 2
+ '@' shift, and go to state 3
+ '%' shift, and go to state 4
+ '(' shift, and go to state 5
+ '<' shift, and go to state 6
+
+ conditional go to state 44
+ alternative go to state 9
+ list go to state 10
+ substitute go to state 11
+ string go to state 12
+
+
+
+state 43
+
+ string -> string '.' flag TOKEN_LETTER . optional_number (rule 19)
+
+ TOKEN_DIGIT shift, and go to state 13
+
+ $default reduce using rule 25 (optional_number)
+
+ optional_number go to state 45
+ number go to state 46
+
+
+
+state 44
+
+ conditional -> alternative '?' optional_conditional ':' conditional . (rule 3)
+
+ $default reduce using rule 3 (conditional)
+
+
+
+state 45
+
+ string -> string '.' flag TOKEN_LETTER optional_number . (rule 19)
+
+ $default reduce using rule 19 (string)
+
+
+
+state 46
+
+ optional_number -> number . (rule 26)
+ number -> number . TOKEN_DIGIT (rule 28)
+
+ TOKEN_DIGIT shift, and go to state 29
+
+ $default reduce using rule 26 (optional_number)
+
+
+
+state 47
+
+ $ go to state 48
+
+
+
+state 48
+
+ $ go to state 49
+
+
+
+state 49
+
+ $default accept
diff --git a/soelim/Makefile.dep b/soelim/Makefile.dep
new file mode 100644
index 000000000..6cfd47546
--- /dev/null
+++ b/soelim/Makefile.dep
@@ -0,0 +1,2 @@
+soelim.o : soelim.cc ../include/lib.h ../include/errarg.h \
+ ../include/error.h ../include/stringclass.h
diff --git a/soelim/Makefile.sub b/soelim/Makefile.sub
new file mode 100644
index 000000000..7c873a6a9
--- /dev/null
+++ b/soelim/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=soelim
+MAN1=soelim.n
+XLIBS=$(LIBGROFF)
+OBJS=soelim.o
+CCSRCS=soelim.cc
+NAMEPREFIX=$(g)
diff --git a/etc/soelim.c b/soelim/soelim.cc
index adb5e39e3..f69baeee8 100644
--- a/etc/soelim.c
+++ b/soelim/soelim.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/man/gsoelim.man b/soelim/soelim.man
index 1da6c5a0d..136482eb4 100644
--- a/man/gsoelim.man
+++ b/soelim/soelim.man
@@ -1,9 +1,9 @@
.\" -*- nroff -*-
-.TH GSOELIM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @g@SOELIM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-gsoelim \- interpret .so requests in groff input
+@g@soelim \- interpret .so requests in groff input
.SH SYNOPSIS
-.B gsoelim
+.B @g@soelim
[
.B \-Cv
]
@@ -11,7 +11,7 @@ gsoelim \- interpret .so requests in groff input
.IR files \|.\|.\|.\|
]
.SH DESCRIPTION
-.B gsoelim
+.B @g@soelim
reads
.I files
and replaces lines of the form
@@ -24,7 +24,7 @@ It is useful if files included with
.B so
need to be preprocessed.
Normally,
-.B gsoelim
+.B @g@soelim
should be invoked with the
.B \-s
option of
diff --git a/stringify b/stringify
deleted file mode 100644
index 7dec124d5..000000000
--- a/stringify
+++ /dev/null
@@ -1,5 +0,0 @@
-# `stringify foo bar' should output `"foo","bar",' (without any newlines).
-for arg
-do
- echo \"$arg\",
-done | tr -d "\012"
diff --git a/tbl/Makefile b/tbl/Makefile
deleted file mode 100644
index 468dea481..000000000
--- a/tbl/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-CC=g++
-CFLAGS=-g
-INCLUDES=-I../lib
-DEFINES=
-SOURCES=main.c table.c table.h
-MISC=Makefile TODO
-ETAGS=etags
-ETAGSFLAGS=-p
-BINDIR=/usr/local/bin
-OBJECTS=main.o table.o
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $<
-
-all: tbl
-
-tbl: $(OBJECTS) ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) ../lib/libgroff.a $(LIBS)
-
-TABLE_H=table.h ../lib/cset.h ../lib/cmap.h ../lib/stringclass.h \
- ../lib/errarg.h ../lib/error.h ../lib/lib.h
-
-main.o: $(TABLE_H)
-table.o: $(TABLE_H)
-
-TAGS : $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES)
-
-clean:
- -rm -f *.o core tbl
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-install.bin: tbl
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/gtbl
- cp tbl $(BINDIR)/gtbl
-
-install.nobin:
-
-install: install.bin install.nobin
diff --git a/tbl/Makefile.dep b/tbl/Makefile.dep
new file mode 100644
index 000000000..0e6938bed
--- /dev/null
+++ b/tbl/Makefile.dep
@@ -0,0 +1,6 @@
+main.o : main.cc table.h ../include/cset.h ../include/cmap.h \
+ ../include/stringclass.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h
+table.o : table.cc table.h ../include/cset.h ../include/cmap.h \
+ ../include/stringclass.h ../include/errarg.h ../include/error.h \
+ ../include/lib.h
diff --git a/tbl/Makefile.sub b/tbl/Makefile.sub
new file mode 100644
index 000000000..8ab4a7478
--- /dev/null
+++ b/tbl/Makefile.sub
@@ -0,0 +1,7 @@
+PROG=tbl
+MAN1=tbl.n
+XLIBS=$(LIBGROFF)
+OBJS=main.o table.o
+CCSRCS=main.cc table.cc
+HDRS=table.h
+NAMEPREFIX=$(g)
diff --git a/tbl/TODO b/tbl/TODO
deleted file mode 100644
index 4a8573540..000000000
--- a/tbl/TODO
+++ /dev/null
@@ -1,16 +0,0 @@
-Improve implementation of staggered columns.
-
-Perhaps move interpretation of .lf commands with tables into
-the table_input class.
-
-Think about multi-page tables without .TS H/.TH. At the beginning of a
-section we could transparently output a need request that references a
-number register that we could set at the end of the section. This
-won't work for boxed tables, because there's no way to draw the top
-rule, and it won't work for tables with vertical rules unless the
-macro package calls .T# even for tables that don't start with .TS H.
-
-Support fractional point-sizes: both `linesize' option and `p'
-modifier.
-
-Make it possible to split a table section that's longer than a page.
diff --git a/tbl/main.c b/tbl/main.cc
index affafb0f1..1fb1011c4 100644
--- a/tbl/main.c
+++ b/tbl/main.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "table.h"
@@ -1055,23 +1055,29 @@ format *process_format(table_input &in, options *opt,
col = 0;
for (tem = list; tem; tem = tem->next) {
f->entry[row][col] = *tem;
- if (!current_format) {
- if (col < ncolumns-1) {
- // use the greatest separation
- if (tem->separation > f->separation[col])
+ if (col < ncolumns-1) {
+ // use the greatest separation
+ if (tem->separation > f->separation[col]) {
+ if (current_format)
+ error("cannot change column separation in continued format");
+ else
f->separation[col] = tem->separation;
}
- else if (tem->separation >= 0)
- error("column separation specified for last column");
- if (!tem->width.empty()) {
- // use the last width
- if (!f->width[col].empty() && f->width[col] != tem->width)
- error("multiple widths for column %1", col+1);
- f->width[col] = tem->width;
- }
- if (tem->equal)
+ }
+ else if (tem->separation >= 0)
+ error("column separation specified for last column");
+ if (tem->equal && !f->equal[col]) {
+ if (current_format)
+ error("cannot change which columns are equal in continued format");
+ else
f->equal[col] = 1;
}
+ if (!tem->width.empty()) {
+ // use the last width
+ if (!f->width[col].empty() && f->width[col] != tem->width)
+ error("multiple widths for column %1", col+1);
+ f->width[col] = tem->width;
+ }
if (tem->pre_vline) {
assert(col == 0);
f->vline[row][col] = tem->pre_vline;
@@ -1109,15 +1115,6 @@ table *process_data(table_input &in, format *f, options *opt)
int give_up = 0;
enum { DATA_INPUT_LINE, TROFF_INPUT_LINE, SINGLE_HLINE, DOUBLE_HLINE } type;
table *tbl = new table(ncolumns, opt->flags, opt->linesize);
- for (int i = 0; i < ncolumns - 1; i++)
- if (f->separation[i] >= 0)
- tbl->set_column_separation(i, f->separation[i]);
- for (i = 0; i < ncolumns; i++)
- if (!f->width[i].empty())
- tbl->set_minimum_width(i, f->width[i]);
- for (i = 0; i < ncolumns; i++)
- if (f->equal[i])
- tbl->set_equal_column(i);
if (opt->delim[0] != '\0')
tbl->set_delim(opt->delim[0], opt->delim[1]);
for (;;) {
@@ -1198,7 +1195,7 @@ table *process_data(table_input &in, format *f, options *opt)
ln++;
enum {
START, MIDDLE, GOT_T, GOT_RIGHT_BRACE, GOT_DOT,
- GOT_l, GOT_lf, END,
+ GOT_l, GOT_lf, END
} state = START;
while (state != END) {
c = in.get();
@@ -1377,6 +1374,17 @@ table *process_data(table_input &in, format *f, options *opt)
delete tbl;
return 0;
}
+ // Do this here rather than at the beginning in case continued formats
+ // change it.
+ for (int i = 0; i < ncolumns - 1; i++)
+ if (f->separation[i] >= 0)
+ tbl->set_column_separation(i, f->separation[i]);
+ for (i = 0; i < ncolumns; i++)
+ if (!f->width[i].empty())
+ tbl->set_minimum_width(i, f->width[i]);
+ for (i = 0; i < ncolumns; i++)
+ if (f->equal[i])
+ tbl->set_equal_column(i);
return tbl;
}
@@ -1441,8 +1449,7 @@ int main(int argc, char **argv)
if (argv[i][0] == '-' && argv[i][1] == '\0') {
current_filename = "-";
current_lineno = 1;
- if (i != 1)
- printf(".lf 1 -\n");
+ printf(".lf 1 -\n");
process_input_file(stdin);
}
else {
@@ -1463,6 +1470,7 @@ int main(int argc, char **argv)
else {
current_filename = "-";
current_lineno = 1;
+ printf(".lf 1 -\n");
process_input_file(stdin);
}
if (ferror(stdout) || fflush(stdout) < 0)
diff --git a/tbl/table.c b/tbl/table.cc
index bcad17c36..ca975395e 100644
--- a/tbl/table.c
+++ b/tbl/table.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "table.h"
@@ -130,6 +130,13 @@ void prints(const string &s)
fwrite(s.contents(), 1, s.length(), stdout);
}
+struct horizontal_span {
+ horizontal_span *next;
+ short start_col;
+ short end_col;
+ horizontal_span(int, int, horizontal_span *);
+};
+
struct single_line_entry;
struct double_line_entry;
struct simple_entry;
@@ -393,7 +400,10 @@ void simple_entry::position_vertically()
printfs(".sp |\\n[%1]u\n", row_start_reg(start_row));
break;
case entry_modifier::CENTER:
- printfs(".sp |\\n[%1]u+(\\n[" BOTTOM_REG "]u-\\n[%1]u-1v/2u)\n",
+ // Peform the motion in two stages so that the center is rounded
+ // vertically upwards even if net vertical motion is upwards.
+ printfs(".sp |\\n[%1]u\n", row_start_reg(start_row));
+ printfs(".sp \\n[" BOTTOM_REG "]u-\\n[%1]u-1v/2u\n",
row_start_reg(start_row));
break;
case entry_modifier::BOTTOM:
@@ -629,7 +639,10 @@ void block_entry::position_vertically()
printfs(".sp |\\n[%1]u\n", row_start_reg(start_row));
break;
case entry_modifier::CENTER:
- printfs(".sp |\\n[%1]u+(\\n[" BOTTOM_REG "]u-\\n[%1]u-\\n[%2]u/2u)\n",
+ // Peform the motion in two stages so that the center is rounded
+ // vertically upwards even if net vertical motion is upwards.
+ printfs(".sp |\\n[%1]u\n", row_start_reg(start_row));
+ printfs(".sp \\n[" BOTTOM_REG "]u-\\n[%1]u-\\n[%2]u/2u\n",
row_start_reg(start_row),
block_height_reg(start_row, start_col));
break;
@@ -1183,7 +1196,7 @@ table::table(int nc, unsigned f, int ls)
: ncolumns(nc), flags(f), linesize(ls),
nrows(0), allocated_rows(0), entry(0), entry_list(0),
left_separation(0), right_separation(0), stuff_list(0), vline(0),
- vrule_list(0), row_is_all_lines(0)
+ vrule_list(0), row_is_all_lines(0), span_list(0)
{
minimum_width = new string[ncolumns];
column_separation = new int[ncolumns - 1];
@@ -1223,6 +1236,11 @@ table::~table()
delete tem;
}
a_delete row_is_all_lines;
+ while (span_list) {
+ horizontal_span *tem = span_list;
+ span_list = span_list->next;
+ delete tem;
+ }
}
void table::set_delim(char c1, char c2)
@@ -1291,9 +1309,11 @@ void table::allocate(int r)
allocated_rows = r + 1;
entry = new PPtable_entry[allocated_rows];
memcpy(entry, old_entry, sizeof(table_entry**)*old_allocated_rows);
+ a_delete old_entry;
char **old_vline = vline;
vline = new char*[allocated_rows];
memcpy(vline, old_vline, sizeof(char*)*old_allocated_rows);
+ a_delete old_vline;
}
}
assert(allocated_rows > r);
@@ -1593,18 +1613,6 @@ void table::check()
}
}
-struct horizontal_span {
- horizontal_span *next;
- short start_col;
- short end_col;
- horizontal_span(int, int, horizontal_span *);
-};
-
-horizontal_span::horizontal_span(int sc, int ec, horizontal_span *p)
-: start_col(sc), end_col(ec), next(p)
-{
-}
-
void table::print()
{
location_force_filename = 1;
@@ -1915,7 +1923,7 @@ void compute_span_width(int start_col, int end_col)
// Increase the widths of columns so that the width of any spanning entry
// is no greater than the sum of the widths of the columns that it spans.
-// Ensure that the widths of columsn remain equal.
+// Ensure that the widths of columns remain equal.
void table::divide_span(int start_col, int end_col)
{
@@ -1923,10 +1931,12 @@ void table::divide_span(int start_col, int end_col)
printfs(".nr " NEEDED_REG " \\n[%1]-(\\n[%2]",
span_width_reg(start_col, end_col),
span_width_reg(start_col, start_col));
- for (int i = start_col + 1; i <= end_col; i++)
- printfs("+%1n+\\n[%2]",
- as_string(column_separation[i - 1]),
- span_width_reg(i, i));
+ for (int i = start_col + 1; i <= end_col; i++) {
+ // The column separation may shrink with the expand option.
+ if (!(flags & EXPAND))
+ printfs("+%1n", as_string(column_separation[i - 1]));
+ printfs("+\\n[%1]", span_width_reg(i, i));
+ }
prints(")\n");
printfs(".nr " NEEDED_REG " \\n[" NEEDED_REG "]/%1\n",
as_string(end_col - start_col + 1));
@@ -1961,6 +1971,11 @@ void table::sum_columns(int start_col, int end_col)
prints('\n');
}
+horizontal_span::horizontal_span(int sc, int ec, horizontal_span *p)
+: start_col(sc), end_col(ec), next(p)
+{
+}
+
void table::build_span_list()
{
span_list = 0;
@@ -2127,7 +2142,7 @@ void table::compute_widths()
void table::print_single_hline(int r)
{
- prints(".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH "\n"
+ prints(".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH ">?\\n[.V]u\n"
".ls 1\n"
"\\v'" BODY_DEPTH "'"
"\\s[\\n[" LINESIZE_REG "]]");
@@ -2170,7 +2185,8 @@ void table::print_single_hline(int r)
void table::print_double_hline(int r)
{
- prints(".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH "+" DOUBLE_LINE_SEP "\n"
+ prints(".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH "+" DOUBLE_LINE_SEP
+ ">?\\n[.V]u\n"
".ls 1\n"
"\\v'" BODY_DEPTH "'"
"\\s[\\n[" LINESIZE_REG "]]");
@@ -2431,7 +2447,7 @@ void table::define_bottom_macro()
for (vertical_rule *p = vrule_list; p; p = p->next)
p->contribute_to_bottom_macro(this);
if (flags & DOUBLEBOX)
- prints(".if \\n[T.] \\{.vs " DOUBLE_LINE_SEP "\n"
+ prints(".if \\n[T.] \\{.vs " DOUBLE_LINE_SEP ">?\\n[.V]u\n"
"\\v'" BODY_DEPTH "'\\s[\\n[" LINESIZE_REG "]]"
"\\D'l \\n[TW]u 0'\\s0\n"
".vs\n"
@@ -2538,7 +2554,7 @@ void table::do_row(int r)
prints(".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH);
if (row_is_all_lines[r] == 2)
prints("+" DOUBLE_LINE_SEP);
- prints("\n.ls 1\n");
+ prints(">?\\n[.V]u\n.ls 1\n");
prints("\\&");
prints("\\v'" BODY_DEPTH);
if (row_is_all_lines[r] == 2)
@@ -2649,11 +2665,11 @@ void table::do_top()
prints("." TABLE_KEEP_MACRO_NAME "\n");
if (flags & DOUBLEBOX) {
prints(".ls 1\n"
- ".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH "\n"
+ ".vs \\n[.v]u-" BODY_HEIGHT "-" BODY_DEPTH ">?\\n[.V]u\n"
"\\v'" BODY_DEPTH "'\\s[\\n[" LINESIZE_REG "]]\\D'l \\n[TW]u 0'\n"
".vs\n"
"." REPEATED_MARK_MACRO " " TOP_REG "\n"
- ".vs " DOUBLE_LINE_SEP "\n");
+ ".vs " DOUBLE_LINE_SEP ">?\\n[.V]u\n");
printfs("\\v'" BODY_DEPTH "'"
"\\s[\\n[" LINESIZE_REG "]]"
"\\h'\\n[%1]u'"
diff --git a/tbl/table.h b/tbl/table.h
index 24872c1f0..ded95547e 100644
--- a/tbl/table.h
+++ b/tbl/table.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
diff --git a/man/gtbl.man b/tbl/tbl.man
index 9fbeea813..38d6434bc 100644
--- a/man/gtbl.man
+++ b/tbl/tbl.man
@@ -1,9 +1,9 @@
.\" -*- nroff -*-
-.TH GTBL @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@TBL @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-gtbl \- table formatter for groff
+@g@tbl \- format tables for troff
.SH SYNOPSIS
-.B gtbl
+.B @g@tbl
[
.B \-Cv
]
@@ -11,22 +11,26 @@ gtbl \- table formatter for groff
.IR files \|.\|.\|.
]
.SH DESCRIPTION
-.B gtbl
-is a preprocessor for
-.B groff
-for formatting tables.
+This manual page describes the GNU version of
+.BR tbl ,
+which is part of the groff document formatting system.
+.B tbl
+compiles descriptions of tables embedded within
+.B troff
+input files into commands that are understood by
+.BR troff .
Normally, it should be invoked using the
.B \-t
option of
.B groff.
-It is highly compatible with
+It is highly compatible with Unix
.BR tbl .
-The output generated by
-.B gtbl
-cannot be processed with
-.BR ditroff ;
-it must be processed with
-.BR gtroff .
+The output generated by GNU
+.B tbl
+cannot be processed with Unix
+.BR troff ;
+it must be processed with GNU
+.BR troff .
If no files are given on the command line, the standard input
will be read.
A filename of
@@ -44,9 +48,9 @@ even when followed by a character other than space or newline.
.B \-v
Print the version number.
.SH USAGE
-Only the differences between
-.B gtbl
-and
+Only the differences between GNU
+.B tbl
+and Unix
.B tbl
are described here.
.LP
@@ -72,11 +76,11 @@ Numeric and alphabetic items may appear in the same column.
.LP
Numeric and alphabetic items may span horizontally.
.LP
-.B gtbl
+.B tbl
uses register, string, macro and diversion names beginning with
.BR 3 .
When using
-.B gtbl
+.B tbl
you should avoid using any names beginning with a
.BR 3 .
.SH BUGS
@@ -116,4 +120,4 @@ instead of
.BR bp .
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@)
diff --git a/tfmtodit/Makefile.dep b/tfmtodit/Makefile.dep
new file mode 100644
index 000000000..9e1b9f56c
--- /dev/null
+++ b/tfmtodit/Makefile.dep
@@ -0,0 +1,2 @@
+tfmtodit.o : tfmtodit.cc ../include/lib.h ../include/errarg.h \
+ ../include/error.h ../include/assert.h ../include/cset.h
diff --git a/tfmtodit/Makefile.sub b/tfmtodit/Makefile.sub
new file mode 100644
index 000000000..aa430e2da
--- /dev/null
+++ b/tfmtodit/Makefile.sub
@@ -0,0 +1,6 @@
+PROG=tfmtodit
+MAN1=tfmtodit.n
+XLIBS=$(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=tfmtodit.o
+CCSRCS=tfmtodit.cc
diff --git a/dvi/tfmtodit.c b/tfmtodit/tfmtodit.cc
index 571ace1e7..851735d16 100644
--- a/dvi/tfmtodit.c
+++ b/tfmtodit/tfmtodit.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* I have tried to incorporate the changes needed for TeX 3.0 tfm files,
@@ -406,7 +406,7 @@ int gf::load(const char *file)
yyy = 243,
no_op = 244,
pre = 247,
- post = 248,
+ post = 248
};
int got_an_adjustment = 0;
int pending_adjustment = 0;
diff --git a/man/tfmtodit.man b/tfmtodit/tfmtodit.man
index 68c95fe8e..a7787a92f 100644
--- a/man/tfmtodit.man
+++ b/tfmtodit/tfmtodit.man
@@ -1,6 +1,12 @@
.\" -*- nroff -*-
.ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
.el .ds tx TeX
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
.TH TFMTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
tfmtodit \- create font files for use with groff \-Tdvi
@@ -52,7 +58,7 @@ option should be given if the font is special
(a font is
.I special
if
-.B gtroff
+.B troff
should search it whenever
a character is not found in the current font.)
If the font is special,
@@ -60,7 +66,7 @@ it should be listed in the
.B fonts
command in the DESC file;
if it is not special, there is no need to list it, since
-.B gtroff
+.B troff
can automatically mount it when it's first used.
.LP
To do a good job of math typesetting, groff requires
@@ -131,7 +137,7 @@ is the specified character.
is a gf file produced by Metafont containing special and numspecial
commands giving additional font metric information.
.SH FILES
-.TP \w'\fB@FONTDIR@/devdvi/DESC'u+2n
+.Tp \w'\fB@FONTDIR@/devdvi/DESC'u+2n
.B @FONTDIR@/devdvi/DESC
Device desciption file.
.TP
diff --git a/tmac/Makefile.sub b/tmac/Makefile.sub
new file mode 100644
index 000000000..2e0aa6b01
--- /dev/null
+++ b/tmac/Makefile.sub
@@ -0,0 +1,34 @@
+MAN7=groff_ms.n me.n
+
+FILES=tmac.an tmac.andoc tmac.pic tmac.ps tmac.psnew tmac.psold tmac.pspic \
+ tmac.psatk tmac.dvi tmac.tty tmac.tty-char tmac.X tmac.Xps tmac.latin1 \
+ eqnrc troffrc
+STRIPFILES=tmac.e tmac.doc tmac.doc.old
+MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms
+mdocdir=$(tmacdir)/mdoc
+CLEANADD=temp
+
+install_data: $(FILES) $(STRIPFILES) $(MDOCFILES) man.local
+ -test -d $(tmacdir) || mkdir $(tmacdir)
+ for f in $(FILES); do \
+ rm -f $(tmacdir)/$$f; \
+ $(INSTALL_DATA) $(srcdir)/$$f $(tmacdir)/$$f; \
+ done
+ -rm -f $(tmacdir)/tmac.$(tmac_s)
+ cp $(srcdir)/tmac.s $(tmacdir)/tmac.$(tmac_s)
+ for f in $(STRIPFILES); do \
+ rm -f temp; \
+ sed -f $(srcdir)/strip.sed $(srcdir)/$$f >temp; \
+ rm -f $(tmacdir)/$$f; \
+ $(INSTALL_DATA) temp $(tmacdir)/$$f; \
+ done
+ -test -d $(mdocdir) || mkdir $(mdocdir)
+ for f in $(MDOCFILES); do \
+ rm -f temp; \
+ sed -f $(srcdir)/strip.sed $(srcdir)/$$f >temp; \
+ rm -f $(mdocdir)/$$f; \
+ $(INSTALL_DATA) temp $(mdocdir)/$$f; \
+ done
+ -test -f $(tmacdir)/man.local || \
+ $(INSTALL_DATA) $(srcdir)/man.local $(tmacdir)/man.local
+ -rm -f temp
diff --git a/macros/TODO b/tmac/TODO
index a0f75f36d..5213fc274 100644
--- a/macros/TODO
+++ b/tmac/TODO
@@ -1,3 +1,5 @@
+Support multiple line-spacing.
+
Improve the device independence of the character definitions.
If we have footnotes in the abstract in RP format, then the footnote
@@ -18,8 +20,6 @@ placed.
Improved indexing, not using tm, controlled by string variable (eg
-dIDX=file.idx).
-Think about multiple line-spacing.
-
When changing from multi-column to narrower columns, we could avoid
doing a @super-eject. (This might not be a good idea.)
@@ -28,3 +28,11 @@ Think about cutmarks. Possibly implement CM.
Implement thesis Mode (TM, CT).
Implement more V10 features.
+
+Should this
+
+.LP
+.rs
+.sp \n(.tu
+
+print two pages?
diff --git a/macros/doc-common b/tmac/doc-common
index 2d25d0b78..2d25d0b78 100644
--- a/macros/doc-common
+++ b/tmac/doc-common
diff --git a/macros/doc-ditroff b/tmac/doc-ditroff
index d63923eb5..a6a5832e5 100644
--- a/macros/doc-ditroff
+++ b/tmac/doc-ditroff
@@ -95,8 +95,14 @@
..
.ds <= \(<=
.ds >= \(>=
-.ds Lq \&``
-.ds Rq \&''
+.ie \n(.g \{\
+. ds Lq \(lq
+. ds Rq \(rq
+.\}
+.el \{\
+. ds Lq \&``
+. ds Rq \&''
+.\}
.ds ua \(ua
.ds aa \(aa
.ds ga \(ga
diff --git a/macros/doc-nroff b/tmac/doc-nroff
index c036f2181..c036f2181 100644
--- a/macros/doc-nroff
+++ b/tmac/doc-nroff
diff --git a/macros/doc-syms b/tmac/doc-syms
index a9504e9bd..a9504e9bd 100644
--- a/macros/doc-syms
+++ b/tmac/doc-syms
diff --git a/dvi/devdvi/eqnchar b/tmac/eqnrc
index 6fa442566..9dea0eb15 100644
--- a/dvi/devdvi/eqnchar
+++ b/tmac/eqnrc
@@ -1,3 +1,4 @@
+.\" Startup file for eqn.
.EQ
sdefine << %{ < back 20 < }%
sdefine >> %{ > back 20 > }%
@@ -7,13 +8,23 @@ sdefine dotdot %accent "\fR\(ad\fP"%
sdefine vec %accent {up 52 "\s[\En[.s]/2u]\(->\s0"}%
sdefine dyad %accent {up 52 "\s[\En[.s]/2u]\(<>\s0"}%
+sdefine cdot %type "binary" \(md%
+
+ifdef X75 ! define X %1% !
+ifdef X100 ! define X %1% !
+ifdef X75-12 ! define X %1% !
+ifdef X100-12 ! define X %1% !
+
+ifdef ps ! define ps|X %1% !
+ifdef X ! define ps|X %1% !
+
+ifdef ps|X ! sdefine inf %"\s[\En[.s]*13u/10u]\v'12M'\(if\v'-12M'\s0"% !
+
+ifdef dvi !
sdefine int %{type "operator" vcenter \(is}%
sdefine sum %{type "operator" vcenter \[sum]}%
sdefine prod %{type "operator" vcenter \[product]}%
sdefine coprod %{type "operator" vcenter \[coproduct]}%
-
-sdefine cdot %type "binary" \(md%
-
set num1 68
set num2 39
set denom1 69
@@ -31,5 +42,12 @@ set big_op_spacing2 16
set big_op_spacing3 20
set big_op_spacing4 60
set big_op_spacing5 10
+!
+
+ifdef X ! set axis_height 32 !
+
+ifdef ps|X ! set draw_lines 1 !
+undef X
+undef ps|X
.EN
diff --git a/macros/fixmacros.sed b/tmac/fixmacros.sed
index 63cce22a0..63cce22a0 100644
--- a/macros/fixmacros.sed
+++ b/tmac/fixmacros.sed
diff --git a/man/groff_ms.man b/tmac/groff_ms.man
index 4a420ea9f..9a5d40e8a 100644
--- a/man/groff_ms.man
+++ b/tmac/groff_ms.man
@@ -12,6 +12,8 @@ groff_ms \- groff ms macros
.IR files .\|.\|.
]
.SH DESCRIPTION
+This manual page describes the GNU version of the ms macros,
+which is part of the groff document formatting system.
The groff ms macros are intended to be compatible with the 4.3
.SM BSD
Unix ms macros subject to the following limitations:
@@ -42,8 +44,7 @@ the error-handling policy of groff ms
is to detect and report errors,
rather than silently to ignore them.
.LP
-The groff ms macros make use of many features of
-.B gtroff
+The groff ms macros make use of many features of GNU troff
and therefore cannot be used with any other troff.
.LP
Bell Labs localisms are not implemented in either the
@@ -201,9 +202,9 @@ names containing only uppercase letters and digits.
.B @MACRODIR@/tmac.@TMAC_S@
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@)
.br
.BR ms (@MAN7EXT@)
diff --git a/tmac/man.local b/tmac/man.local
new file mode 100644
index 000000000..7bb8f5038
--- /dev/null
+++ b/tmac/man.local
@@ -0,0 +1,2 @@
+.\" This file is loaded after tmac.an.
+.\" Put any local modifications to tmac.an here.
diff --git a/tmac/man.ultrix b/tmac/man.ultrix
new file mode 100644
index 000000000..c4fbee806
--- /dev/null
+++ b/tmac/man.ultrix
@@ -0,0 +1,12 @@
+.\" Install this as man.local if you're using Ultrix.
+.\" Ultrix specific additions to groff -man macros.
+.\" Contributed by Tom Quinn (trq@dionysos.thphys.ox.ac.uk).
+.\"
+.\" Pathname
+.de PN
+\fI\,\\$1\/\fP
+..
+.\" Control character
+.de CT
+\s-2<\|CTRL\|/\|\\$1\|>\s+2
+..
diff --git a/man/groff_me.man b/tmac/me.man
index 6f1d5a622..491962123 100644
--- a/man/groff_me.man
+++ b/tmac/me.man
@@ -15,12 +15,12 @@
.\"
.\" @(#)me.7 6.4 (Berkeley) 4/13/90
.\"
-.\" Modified for groff by jjc@jclark.uucp.
+.\" Modified for groff by jjc@jclark.com
.hc %
.TH GROFF_ME @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
.UC 3
.SH NAME
-groff_me \- groff macros for formatting papers
+groff_me \- troff macros for formatting papers
.SH SYNOPSIS
.B "groff \-me"
[ options ]
@@ -30,14 +30,17 @@ file ...
[ options ]
file ...
.SH DESCRIPTION
+This manual page describes the GNU version of the \-me macros,
+which is part of the groff document formatting system.
+This version can be used with both GNU troff and Unix troff.
This package of
-.I groff
+.I troff
macro definitions provides a canned formatting
facility for tech%nical papers in various formats.
.PP
The macro requests are defined below.
Many
-.I groff
+.I troff
requests are unsafe in conjunction with
this package, however, these requests may be used with
impunity after the first .pp:
@@ -54,18 +57,18 @@ impunity after the first .pp:
.fi
.PP
Output of the
-.I gpic,
-.I geqn,
+.I pic,
+.I eqn,
.I refer,
and
-.I gtbl
+.I tbl
preprocessors
is acceptable as input.
.SH FILES
@MACRODIR@/tmac.e
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@)
.br
\-me Reference Manual, Eric P. Allman
.br
diff --git a/macros/mm.diff b/tmac/mm.diff
index d6694aa35..d6694aa35 100644
--- a/macros/mm.diff
+++ b/tmac/mm.diff
diff --git a/tmac/strip.sed b/tmac/strip.sed
new file mode 100644
index 000000000..b309e86fe
--- /dev/null
+++ b/tmac/strip.sed
@@ -0,0 +1,2 @@
+/%beginstrip%/,$s/[ ]*\\".*//
+/^\.$/d
diff --git a/xditview/tmac.X b/tmac/tmac.X
index 1b969a52c..b44655a91 100644
--- a/xditview/tmac.X
+++ b/tmac/tmac.X
@@ -13,6 +13,7 @@
.char \(br \v'.25m'\D'l 0 -1m'\v'.75m'
.char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\(ti\v'-.2m'\s0\v'.55m'
.char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\(ha\v'-.3m'\s0\v'.55m'
+.if !c\(va .char \(va \o'\(ua\(da'
.if !c\(em .char \(em --
.if !c\(fi .char \(fi fi
.if !c\(fl .char \(fl fl
@@ -28,8 +29,16 @@
\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'
.if !c\(lq .char \(lq ``
.if !c\(rq .char \(rq ''
+.if !c\(Bq .char \(bq ,,
+.if !c\(OE .char \(OE O\h'-.25m'E
+.if !c\(oe .char \(oe o\h'-.14m'e
+.if !c\(ah .char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
+.if !c\(ao .char \(ao \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
+.if !c\(ho .char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
.if !c\(lh .tr \(lh\(lA
.if !c\(rh .tr \(rh\(rA
+.if !c\(bq .tr \(bq,
+.if !c\(aq .tr \(aq'
.if '\*(.T'X100' .char \(rn \h'-\w'\(sr'u'\(rn\h'\w'\(sr'u'
+.if !\n(_C .mso tmac.pspic
.cp \n(_C
-.if !\n(.C .mso tmac.pspic
diff --git a/tmac/tmac.Xps b/tmac/tmac.Xps
new file mode 100644
index 000000000..ad1d53f5f
--- /dev/null
+++ b/tmac/tmac.Xps
@@ -0,0 +1,44 @@
+.do mso tmac.ps
+.nr _C \n(.C
+.cp 0
+.de Xps-char
+.char \\$1 \Z'\X'ps: invis'\\$2\X'ps: endinvis''\\$1
+..
+.Xps-char \(bu \fS\(bu\fP
+.Xps-char \(em "\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m'"
+.Xps-char \(aq '
+.Xps-char \(bq ,
+.Xps-char \(Bq ,,
+.Xps-char \(lq ``
+.Xps-char \(rq ''
+.Xps-char \(OE OE
+.Xps-char \(oe oe
+.Xps-char \(Fn \fS\(Fn\fP
+.Xps-char \(vS \o'\(ahS'
+.Xps-char \(vs \o'\(ahs'
+.Xps-char \(vZ \o'\(ahZ'
+.Xps-char \(vz \o'\(ahz'
+.Xps-char \(/L \o'/L'
+.Xps-char \(/l \o'/l'
+.Xps-char \(:Y \o'\(adY'
+.Xps-char \(a" \(sd
+.Xps-char \(a. \v'-.6m'.
+.Xps-char \(ga "\Z'\v'-.7m'\D'l .22m .18m''\h'.33m'"
+.Xps-char \(ab \v'-.55m'\s'\\\\n(.s*6u/10u'u\s0
+.Xps-char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
+.Xps-char \(ao "\v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'"
+.Xps-char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
+.Xps-char \(.i i
+.Xps-char \(fo <
+.Xps-char \(fc >
+.Xps-char \(OK \s'\\\\n(.s*6u/10u'\e\s0/
+.Xps-char \(tm \v'-.3m'\s'\\\\n(.s*6u/10u'TM\s0\v'.3m'
+.Xps-char \(dd "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'"
+.Xps-char \(dg "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+\D'l .39m 0''\h'.5m'"
+.Xps-char \(en \-
+.Xps-char \(%0 %\s'\\\\n(.s*6u/10u'\fI0\fP\s0
+.Xps-char \(lh \(->
+.Xps-char \(rh \(<-
+.cp \n(_C
diff --git a/macros/tmac.an b/tmac/tmac.an
index aca79a621..f559ec060 100644
--- a/macros/tmac.an
+++ b/tmac/tmac.an
@@ -1,11 +1,11 @@
-.\"Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-.\" Written by James Clark (jjc@jclark.uucp)
+.\"Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+.\"Software Foundation; either version 2, or (at your option) any later
.\"version.
.\"
.\"groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -14,7 +14,7 @@
.\"for more details.
.\"
.\"You should have received a copy of the GNU General Public License along
-.\"with groff; see the file LICENSE. If not, write to the Free Software
+.\"with groff; see the file COPYING. If not, write to the Free Software
.\"Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\"
.\" -rC1 => number pages continuously, rather than start each at 1
@@ -22,6 +22,9 @@
.\" -rPnnn => number first page nnn
.\" -rXnnn => number pages after nnn as nnna, nnnb, nnnc, ...
.\"
+.\" The file man.local is loaded at the end. Put local additions there.
+.\" If you need to add things to TH, use `.am TH'.
+.\"
.if !\n(.g .ab These man macros work only with groff.
.if \n(.C \{\
. tm Warning: turning off compatibility mode
@@ -130,10 +133,6 @@
.ne 2v+1u
.if \\n[.$] \&\\$*
..
-.de R
-.ft R
-.if \\n[.$] \&\\$*
-..
.de B
.it 1 an-trap
.ft B
@@ -159,7 +158,7 @@
.sp \\n[PD]u
.if \\n[.$] .nr an-prevailing-indent (n;\\$1)
.it 1 an-trap
-.di an-div
+.if !\\n[an-div?] .di an-div
.in 0
.nr an-div? 1
..
@@ -318,7 +317,10 @@
.ds S \s[\\n[PS]]
.ie c\[rg] .ds R \[rg]
.el .ds R (Reg.)
-.ie c\[tm] .ds T \[tm]
-.el .ds T (TM)
-.als Tm T
+.ie c\[tm] .ds Tm \[tm]
+.el .ds Tm (TM)
+.ds lq \(lq
+.ds rq \(rq
.hy 14
+.\" Load local modifications.
+.mso man.local
diff --git a/macros/tmac.andoc b/tmac/tmac.andoc
index fd1bad062..fd1bad062 100644
--- a/macros/tmac.andoc
+++ b/tmac/tmac.andoc
diff --git a/macros/tmac.doc b/tmac/tmac.doc
index e575df7c3..e575df7c3 100644
--- a/macros/tmac.doc
+++ b/tmac/tmac.doc
diff --git a/macros/tmac.doc.old b/tmac/tmac.doc.old
index 51a0ec005..51a0ec005 100644
--- a/macros/tmac.doc.old
+++ b/tmac/tmac.doc.old
diff --git a/tmac/tmac.dvi b/tmac/tmac.dvi
new file mode 100644
index 000000000..c64fc73ce
--- /dev/null
+++ b/tmac/tmac.dvi
@@ -0,0 +1,132 @@
+.nr _C \n(.C
+.cp 0
+.ftr CR CW
+.ftr C CW
+.ftr TT CW
+.ftr HR H
+.\" This uses the dvi-char_1 string in font CW, dvi-char_0 otherwise.
+.char _ \R'dvi-char_ \\n(.f=\f(CW\\n(.f\fP'\\*[dvi-char_\\n[dvi-char_]]
+.char \[ul] \R'dvi-char_ \w'M'=\w'i''\\*[dvi-char_\\n[dvi-char_]]
+.\" Normally use a rule.
+.ds dvi-char_0 \v'.23m'\D'R .5m .04m'\v'-.04m'\v'-.23m'
+.\" In font CW use a real _ character.
+.ds dvi-char_1 _
+.if !c\[rn] .char \[rn] \D'R .5m -.04m'\v'.04m'
+.if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m''
+.if !c\[ru] .char \[ru] \v'-.02m'\D'R .5m .04m'\v'-.04m'\v'.02m'
+.if !c\[co] .char \[co] \z\(ci\h'\w'\(ci'u-\w'c'u/2u'c\h'\w'\(ci'u-\w'c'u/2u'
+.if !c\[rg] .char \[rg] \z\(ci\h'\w'\(ci'u-\w'r'u/2u'r\h'\w'\(ci'u-\w'r'u/2u'
+.if !c\[fm] .char \[fm] \v'-.35m'\s[\\n(.s*7u/10u]\[prime]\s0\v'.35m'
+.if !c\[de] .char \[de] \h'.05m'\v'-.54m'\D'c .3m'\v'.54m'\h'.05m'
+.if !c\[ct] .char \[ct] \o'c/'
+.if !c\[sq] .char \[sq] \Z'\h'.05m'\D'R .4m -.04m'\v'.04m'\h'-.04m'\
+\D'R .04m -.4m'\v'.04m'\D'R -.4m -.04m'\D'R .04m .4m''\h'.5m'
+.\"char \[sq] \h'.05m'\D'l .4m 0'\D'l 0 -.4m'\D'l -.4m 0'\D'l 0 .4m'\h'.45m'
+.if !c\[!=] .char \[!=] \[slashnot]\(eq
+.if !c\[tm] .char \[tm] \v'-.3m'\s[\\n(.s/2u]TM\s0\v'.3m'
+.if !c\[aq] .char \[aq] '
+.if !c\[bq] .char \[bq] ,
+.if !c\[Bq] .char \[Bq] ,\h'\w'\(rq'u-(2u*\w"'"u)',
+.if !c\[ho] .char \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
+.if !c\[-D] .char \[-D] \Z'\v'-.1m'\h'.05m'-'D
+.if !c\[Sd] .char \[Sd] \Z'\v'-.3m'\h'.35m'-'\(pd
+.if !c\[TP] .char \[TP] I\h'-.25m'\v'-.33m'\s[\En[.s]*6u/10u]\v'.33m'D\
+\v'-.33m'\s0\v'.33m'
+.if !c\[Tp] .char \[Tp] \zlp
+.cflags 8 \(an
+.if !c\[an] .char \[an] \h'-.167m'\(mi\h'-.167m'
+.\" Define some fractions.
+.de dvi-frac
+.if !c\[\\$1\\$2] .char \[\\$1\\$2] \
+\v'-.25m'\s[\\\\n(.s*7u/10u]\\$1\s0\v'.25m'\h'-.2m'\
+/\h'-.2m'\v'.25m'\s[\\\\n(.s*7u/10u]\\$2\s0\v'-.25m'
+..
+.dvi-frac 1 2
+.dvi-frac 3 4
+.dvi-frac 1 4
+.dvi-frac 1 8
+.dvi-frac 3 8
+.dvi-frac 5 8
+.dvi-frac 7 8
+.\" support for ISO Latin-1
+.if !c\[S1] .char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
+.if !c\[S2] .char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
+.if !c\[S3] .char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
+.if !c\[Of] .char \[Of] \v'-.2m'\s'\En(.s*6u/10u'\o'_a'\s0\v'.2m'
+.if !c\[Om] .char \[Om] \v'-.2m'\s'\En(.s*6u/10u'\o'_o'\s0\v'.2m'
+.if !c\[Fo] .char \[Fo] <<
+.if !c\[Fc] .char \[Fc] >>
+.if !c\[bb] .char \[bb] |
+.if !c\[Ye] .char \[Ye] \o'-Y'
+.if !c\[Cs] .char \[Cs] \o'\[mu]o'
+.de dvi-achar
+.\" Note that character definitions are always interpreted with
+.\" compatibility mode off.
+.if !c\\$1 \{\
+.char \\$1 \\$3\
+\k[acc]\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
+\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
+\\$2\
+\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
+\h'|\\\\n[acc]u'
+.\}
+.hcode \\$1\\$4
+..
+.dvi-achar \(`A \` A a
+.dvi-achar \('A \' A a
+.dvi-achar \(^A ^ A a
+.dvi-achar \(~A ~ A a
+.dvi-achar \(:A \(ad A a
+.dvi-achar \(oA \(ao A a
+.dvi-achar \(`E \` E e
+.dvi-achar \('E \' E e
+.dvi-achar \(^E ^ E e
+.dvi-achar \(:E \(ad E e
+.dvi-achar \(`I \` I i
+.dvi-achar \('I \' I i
+.dvi-achar \(^I ^ I i
+.dvi-achar \(:I \(ad I i
+.dvi-achar \(~N ~ N n
+.dvi-achar \(`O \` O o
+.dvi-achar \('O \' O o
+.dvi-achar \(^O ^ O o
+.dvi-achar \(~O ~ O o
+.dvi-achar \(:O \(ad O o
+.dvi-achar \(`U \` U u
+.dvi-achar \('U \' U u
+.dvi-achar \(^U ^ U u
+.dvi-achar \(:U \(ad U u
+.dvi-achar \('Y \' Y y
+.dvi-achar \(`a \` a a
+.dvi-achar \('a \' a a
+.dvi-achar \(^a ^ a a
+.dvi-achar \(~a ~ a a
+.dvi-achar \(:a \(ad a a
+.dvi-achar \(oa \(ao a a
+.dvi-achar \(`e \` e e
+.dvi-achar \('e \' e e
+.dvi-achar \(^e ^ e e
+.dvi-achar \(:e \(ad e e
+.dvi-achar \(`i \` \(.i i
+.dvi-achar \('i \' \(.i i
+.dvi-achar \(^i ^ \(.i i
+.dvi-achar \(:i \(ad \(.i i
+.dvi-achar \(~n ~ n n
+.dvi-achar \(`o \` o o
+.dvi-achar \('o \' o o
+.dvi-achar \(^o ^ o o
+.dvi-achar \(~o ~ o o
+.dvi-achar \(:o \(ad o o
+.dvi-achar \(`u \` u u
+.dvi-achar \('u \' u u
+.dvi-achar \(^u ^ u u
+.dvi-achar \(:u \(ad u u
+.dvi-achar \('y \' y y
+.dvi-achar \(:y \(ad y y
+.char \(,C \o'\(acc'
+.hcode \(,Cc
+.char \(,c \o'\(acc'
+.hcode \(,cc
+.cp \n(_C
+.do mso tmac.latin1
diff --git a/macros/tmac.e b/tmac/tmac.e
index 4b77d2383..bf98f1b3a 100644
--- a/macros/tmac.e
+++ b/tmac/tmac.e
@@ -39,29 +39,29 @@
.\" to provide variant functions.
.\" --- an internal macro.
.\"
-.if \n(pf \
-. nx /dev/null
+.if !\n(.g .ig
+.de @R \" --- initialize number register to 0, if undefined
+.if !r\\$1 .nr \\$1 0
+..
+.@R pf
+.if \n(pf .nx
+.if !\n(.g .ig
+.de @S \" --- initialize string/macro to empty, if undefined
+.if !d\\$1 .ds \\$1 \" empty
+..
+.@R @\" \" debugging level
.\" *** INTERNAL GP MACROS ***
.de @C \" --- change ev's, taking info with us
.nr _S \\n(.s
.nr _V \\n(.v
.nr _F \\n(.f
-.if \n(.g \
-\{\
-. nr _C \\n(.C
-. cp 0
-. ds _A \\n[.fam]
-.\}
+.do ds _A \\n[.fam]
.nr _I \\n(.i
.ev \\$1
.ps \\n(_S
.vs \\n(_Vu
.ft \\n(_F
-.if \n(.g \
-\{\
-. fam \\*(_A
-. cp \\n(_C
-.\}
+.do fam \\*(_A
'in \\n(_Iu
.xl \\n($lu
.lt \\n($lu
@@ -74,17 +74,19 @@
..
.de @D \" --- determine display type (Indent, Left, Center)
.ds |p "\\$3
-.nr _d \\$1
-.ie "\\$2"C" \
+.nr _d 0
+.if "\\$2"C" \
. nr _d 1
-.el .ie "\\$2"L" \
+.if "\\$2"L" \
. nr _d 2
-.el .ie "\\$2"I" \
+.if "\\$2"I" \
. nr _d 3
-.el .ie "\\$2"M" \
+.if "\\$2"M" \
. nr _d 4
-.el \
+.if !\\n(_d \{\
+. nr _d \\$1
. ds |p "\\$2
+.\}
..
.de @z \" --- end macro
.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
@@ -96,13 +98,14 @@
.\}
.if \\n(?a \
. bp \" force out final table
-.rm bp
-.rm @b\" \" don't start another page
-.wh -1p @m
+.ds bp
+.ds @b\" \" don't start another page
.br
.if \n@>1 .tm << @z
..
.\" *** STANDARD HEADERS AND FOOTERS ***
+.ie \n(.g .ds $* \\\\$*
+.el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
.de he \" *** define header
.ie !\\n(.$ \
\{\
@@ -111,21 +114,21 @@
.\}
.el \
\{\
-. ds |4 "\\$*
-. ds |5 "\\$*
+. ds |4 "\*($*
+. ds |5 "\*($*
.\}
..
.de eh \" *** define even header
.ie !\\n(.$ \
. rm |4
.el \
-. ds |4 "\\$*
+. ds |4 "\*($*
..
.de oh \" *** define odd header
.ie !\\n(.$ \
. rm |5
.el \
-. ds |5 "\\$*
+. ds |5 "\*($*
..
.de fo \" *** define footer
.ie !\\n(.$ \
@@ -135,21 +138,21 @@
.\}
.el \
\{\
-. ds |6 "\\$*
-. ds |7 "\\$*
+. ds |6 "\*($*
+. ds |7 "\*($*
.\}
..
.de ef \" *** define even foot
.ie !\\n(.$ \
. rm |6
.el \
-. ds |6 "\\$*
+. ds |6 "\*($*
..
.de of \" *** define odd footer
.ie !\\n(.$ \
. rm |7
.el \
-. ds |7 "\\$*
+. ds |7 "\*($*
..
.de ep \" *** end page (must always be followed by a .bp)
.if \\n(nl>0 \
@@ -166,9 +169,9 @@
. tm Line \\n(c. -- Offset + indent exceeds line length
.\" initialize a pile of junk
.nr ?h \\n(?H \" transfer "next page" to "this page"
-.rr ?H
+.nr ?H 0
.nr ?c \\n(?C
-.rr ?C
+.nr ?C 0
.rn |4 |0
.rn |5 |1
.rn |6 |2
@@ -179,7 +182,6 @@
.\" begin actual header stuff
.ev 2
.rs
-.@m \" output cut mark
.if \\n(hm>0 \
. sp |\\n(hmu \" move to header position
.@t $h \" output header title
@@ -193,7 +195,7 @@
.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
.ie \\n(?s \
\{\
-. rr ?s
+. nr ?s 0
. rs
' @b
.\}
@@ -201,31 +203,21 @@
. @n \" begin the column
.if \n@>2 .tm << @h
..
-.if \nv=2 \
-\{\
-. de @m \" --- output cut mark (only on C/A/T-style)
-. @O 0
-. lt 7.5i
-. tl '\(rn''\(rn'
-. @O
-. lt
-..
-.\}
.de @n \" --- new column or page
.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
.if \\n(bm<=0 \
. nr bm \\n(.Vu
.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
\{\
-. nr _b (\\n(ppp*\\n($ru)/200u \" compute fudge factor (must be < 1P)
-. if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($ru)/100u))/2u) \
-. nr _b (\\n(ppp*\\n($ru)/100u-\n(.Vu
+. nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
+. if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
+. nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
. nr _b +\\n(bmu
.\}
.nr _B \\n(_bu
.ch @f
.wh -\\n(_bu @f
-.nr _b +(\\n(ppp*\\n($ru)/100u \" add 1 paragraph v in case of sweep past
+.nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
.nr ?f 0 \" reset footnote flag
.if \\n(?o \
@@ -322,7 +314,7 @@
.if \n@>2 .tm >> @e
.@O \\n(_ou
.rs
-.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($ru)/100u) \" move to footer position
+.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
.@t $f \" output footer title
.nr ?h 0
.bp
@@ -339,7 +331,7 @@
.\}
..
.de $h \" $$$ print header
-.rm |z
+.ds |z
.if !\\n(?c \
\{\
. if e .ds |z "\\*(|0
@@ -350,7 +342,7 @@
.rm |z
..
.de $f \" $$$ print footer
-.rm |z
+.ds |z
.if \\n(?c \
\{\
. if e .ds |z "\\*(|0
@@ -502,7 +494,8 @@
.rr _0
..
.de np \" *** numbered paragraph
-.if \\n($p<0 \
+.\" use string comparison in case user has changed format of $p
+.if '\\n($p'-1' \
. nr $p 0 \" reset number after .bu
.nr $p +1 \" increment paragraph number
.@p \w'\0(000)\0'u
@@ -511,7 +504,8 @@
..
.de bu \" *** bulleted paragraph
.br
-.if \\n($p<0 \
+.\" use string comparison in case user has changed format of $p
+.if '\\n($p'-1' \
. ns \" don't space between .bu paragraphs
.nr $p 0-1 \" mark "bulleted paragraph" mode
.@p \w'\0\(bu\0'u
@@ -636,8 +630,9 @@
.ie !"\\$1\\$2"" \
\{\
. sp \\n(ssu \" one of them is non-null
-. ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($ru*\\n(.Lu)/100u)
-. ie \\n(.$>2 \
+. ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
+. \" exdent if \\$3 > 0
+. ie 0\\$3 \
. ti -(\\n(siu-\\n(sou)
. el \
. ti +\\n(sou
@@ -694,7 +689,7 @@
.if \n@>4 .tm -- )z << @), .z=\n(.z
.rr _0
.if !\\n(?b \
-. nr dn +(\\n(ppp*\\n($ru)/200u+\\n(zsu
+. nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
.nr dl -\n(.H \" fudge factor necessary to make it work
.ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
\{\
@@ -709,6 +704,9 @@
. if (\\n(dl>\\n($l)&(\\n($m>1) \
. nr ?W 1 \" mark wider than one column (bottom)
. nr _b +\\n(dnu
+. \" avoid moving @f back past the current position
+. if \\n(.p-\\n(nl-\n(.V<\\n(_b \
+. nr _b \\n(.p-\\n(nl-\n(.V
. ch @f -\\n(_bu
. ds |x |b
.\}
@@ -782,7 +780,8 @@
.nr ?k 1
.@C 1
.@F \\n(df
-.vs \\n(.sp*\\n($Ru/100u
+.if \\n($R .@V
+.vs \\n(.sp*\\n($Vu/100u
.nf
.if "\\*(|p"F" \
. fi \" set fill mode if "F" parameter
@@ -892,13 +891,13 @@
.ev
.sp \\n(esu \" output rest of preceeding text
.@C 2 \" .ev 2 may be jumbled from header
-.ie \\n(_d=1 \
+.if \\n(_d=1 \
. in (\\n(.lu+\\n($iu-\\n(dlu)/2u
-.el .ie \\n(_d=2 \
+.if \\n(_d=2 \
. in \\n($iu
-.el .ie \\n(_d=3 \
+.if \\n(_d=3 \
. in \\n(biu+\\n($iu
-.el .if \\n(_d=4 \
+.if \\n(_d=4 \
. in 0
.if !"\\n(.z"" \!.ne \\n(_Qu
.ne \\n(_Qu+\n(.Vu \" keep it on one page
@@ -938,6 +937,10 @@
.nr T. 0
.T# 0
.di
+.nr _T \\n(?T
+.nr ?T 0
+.ne \\n(dnu+1v
+.nr ?T \\n(_T
.nr _i \\n(.i
.in 0
.|h \" put in the initial header
@@ -1115,7 +1118,14 @@ in \\f2\\*([B\\f1, \c
.\" *** FONT AIDS ***
.de sz \" *** set point size and vertical spacing
.ps \\$1
-.vs \\n(.sp*\\n($ru/100u \" default vs at pointsize + 20%
+.if \\n($r .@v
+.vs \\n(.sp*\\n($vu/100u \" default vs at pointsize + 20%
+..
+.de @v \" --- possibly set $v from $r
+.if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr $v \\n($r00/1p
+..
+.de @V \" --- possibly set $V from $R
+.if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
..
.de @E \" --- store in _F argument to \f for restoring font
.ie \\n(.f<10 \
@@ -1156,6 +1166,11 @@ in \\f2\\*([B\\f1, \c
.de u \" *** enter underlined word
\&\\$1\l'|0\(ul'\\$2
..
+.\" a better version of u
+.if !\n(.g .ig
+.de u
+\Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
+..
.de q \" *** enter quoted word
\&\\*(lq\\$1\\*(rq\\$2
..
@@ -1185,7 +1200,7 @@ in \\f2\\*([B\\f1, \c
. xl \\n($lu-\\n(fuu
. @F \\n(ff
. sz \\n(fp
-. vs \\n(.sp*\\n($Ru/100u
+. vs \\n(.sp*\\n($Vu/100u
. if !\\n(?f \
\{\
. nr _b +1v \" allow space for $s
@@ -1204,7 +1219,7 @@ in \\f2\\*([B\\f1, \c
. xl \\n($lu-\\n(fuu
. @F \\n(ff
. sz \\n(fp
-. vs \\n(.sp*\\n($Ru/100u
+. vs \\n(.sp*\\n($Vu/100u
. if !\\n(?f \
. $s
. br
@@ -1229,7 +1244,7 @@ in \\f2\\*([B\\f1, \c
. if \\n* \
. nr $f +1
. ds * \\*{\\n($f\\*}\k*
-. rr *
+. nr * 0
. in 0
. da
. ev
@@ -1249,8 +1264,10 @@ in \\f2\\*([B\\f1, \c
. ev
.\}
..
+.@R ff
.if \n(ff<=0 \
. nr ff 1 \" footnote font: Times Roman
+.@R fp
.if \n(fp<=0 \
. nr fp 8 \" footnote pointsize
.de $s \" $$$ footnote separator
@@ -1325,7 +1342,7 @@ in \\f2\\*([B\\f1, \c
.br
.@C 2
.ls 1
-.vs \\n(.sp*\\n($Ru/100u
+.vs \\n(.sp*\\n($Vu/100u
.fi
.in +\\n(piu
.ds |X x
@@ -1470,8 +1487,8 @@ in \\f2\\*([B\\f1, \c
.ds td \*(mo \n(dy, 19\n(yr
.\" *** PARAMETRIC INITIALIZATIONS ***
.rr x
-.nr $r \n(.v*100+\n(.sp-1u/\n(.sp \" ratio of vs to ps for .sz request
-.nr $R \n($r \" ratio for displays & footnotes
+.nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
+.nr $V \n($v \" same for displays & footnotes
.nr hm 4v \" header margin
.nr tm 7v \" top margin
.nr bm 6v \" bottom margin
@@ -1495,9 +1512,54 @@ in \\f2\\*([B\\f1, \c
.\" *** OTHER INITIALIZATION ***
.ds { \v'-0.4m'\x'-0.2m'\s-3
.ds } \s0\v'0.4m'
+.\" for compatibility with traditional -me
+.\" (the first will work only in compatibility mode)
+.ds [ \*{
+.ds ] \*}
.ds < \v'0.4m'\x'0.2m'\s-3
.ds > \s0\v'-0.4m'
.ds - \(em
+.\" Avoid warnings from groff -ww.
+.@S |0
+.@S |1
+.@S |2
+.@S |3
+.@S $H
+.@S $0
+.@S $1
+.@S $2
+.@S $3
+.@S $4
+.@S $5
+.@S $6
+.@S $7
+.@S $8
+.@S $9
+.@S ..
+.@R po\" \" simulated page offset
+.@R $0\" \" section depth
+.@R $i\" \" paragraph base indent
+.@R $p\" \" numbered paragraph number
+.@R $r\" \" ratio of vs to ps (may override $v)
+.@R $R\" \" same for displays (may override $V)
+.@R df\" \" display font: same as surrounding text
+.@R so\" \" additional section title offset
+.@R fu\" \" footnote undent
+.@R bt\" \" block keep threshold
+.@R *\" \" has \** been referenced?
+.@R ?a\" \" pending floating keep at page top?
+.@R ?b\" \" pending floating keep at page bottom?
+.@R ?C\" \" at chapter header?
+.@R ?e\" \" in equation?
+.@R ?H\" \" suppress headers and footers next page?
+.@R ?I\" \" has the header trap been sprung?
+.@R ?n\" \" n1 mode?
+.@R ?o\" \" footnote overflow?
+.@R ?R\" \" renumbered chapter?
+.@R ?s\" \" skip next page?
+.@R ?T\" \" inside .TS H?
+.@R ?W\" \" wide floating keep at page bottom?
+.@R ?w\" \" wide floating keep at page top?
.nr fi 0.3i
.nr _o \n(.o
.nr $b 3 \" bold
@@ -1535,7 +1597,7 @@ in \\f2\\*([B\\f1, \c
.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
.\" \" cedilla and czech
-.ds , \k_\h'-(\\n(.wu)'\*(#[,\h'|\\n_u'
+.ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
.\" \" Norwegian A or angstrom
.ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
@@ -1545,15 +1607,15 @@ in \\f2\\*([B\\f1, \c
.rm #h #v
.ll 6.0i
.lt 6.0i
-.de @S
+.de @U
.tm The \\$1 macro has been removed from this version of the -me macros.
..
.de lo
-.@S lo
+.@U lo
..
.de th
-.@S th
+.@U th
..
.de ac
-.@S ac
+.@U ac
..
diff --git a/tmac/tmac.latin1 b/tmac/tmac.latin1
new file mode 100644
index 000000000..f33ea2164
--- /dev/null
+++ b/tmac/tmac.latin1
@@ -0,0 +1,101 @@
+.nr _C \n(.C
+.cp 0
+.de latin1-tr
+.if c\\$2 .if !c\\$1 .tr \\$1\\$2
+..
+.latin1-tr \[char161] \(r!
+.latin1-tr \[char162] \(ct
+.latin1-tr \[char163] \(Po
+.latin1-tr \[char164] \(Cs
+.latin1-tr \[char165] \(Ye
+.latin1-tr \[char166] \(bb
+.latin1-tr \[char167] \(sc
+.latin1-tr \[char168] \(ad
+.latin1-tr \[char169] \(co
+.latin1-tr \[char170] \(Of
+.latin1-tr \[char171] \(Fo
+.latin1-tr \[char172] \(no
+.latin1-tr \[char173] \(hy
+.latin1-tr \[char174] \(rg
+.latin1-tr \[char175] \(a-
+.latin1-tr \[char176] \(de
+.latin1-tr \[char177] \(+-
+.latin1-tr \[char178] \(S2
+.latin1-tr \[char179] \(S3
+.latin1-tr \[char180] \(aa
+.latin1-tr \[char181] \(*m
+.latin1-tr \[char182] \(ps
+.latin1-tr \[char183] \(md
+.latin1-tr \[char184] \(ac
+.latin1-tr \[char185] \(S1
+.latin1-tr \[char186] \(Om
+.latin1-tr \[char187] \(Fc
+.latin1-tr \[char188] \(14
+.latin1-tr \[char189] \(12
+.latin1-tr \[char190] \(34
+.latin1-tr \[char191] \(r?
+.latin1-tr \[char192] \(`A
+.latin1-tr \[char193] \('A
+.latin1-tr \[char194] \(^A
+.latin1-tr \[char195] \(~A
+.latin1-tr \[char196] \(:A
+.latin1-tr \[char197] \(oA
+.latin1-tr \[char198] \(AE
+.latin1-tr \[char199] \(,C
+.latin1-tr \[char200] \(`E
+.latin1-tr \[char201] \('E
+.latin1-tr \[char202] \(^E
+.latin1-tr \[char203] \(:E
+.latin1-tr \[char204] \(`I
+.latin1-tr \[char205] \('I
+.latin1-tr \[char206] \(^I
+.latin1-tr \[char207] \(:I
+.latin1-tr \[char208] \(-D
+.latin1-tr \[char209] \(~N
+.latin1-tr \[char210] \(`O
+.latin1-tr \[char211] \('O
+.latin1-tr \[char212] \(^O
+.latin1-tr \[char213] \(~O
+.latin1-tr \[char214] \(:O
+.latin1-tr \[char215] \(mu
+.latin1-tr \[char216] \(/O
+.latin1-tr \[char217] \(`U
+.latin1-tr \[char218] \('U
+.latin1-tr \[char219] \(^U
+.latin1-tr \[char220] \(:U
+.latin1-tr \[char221] \('Y
+.latin1-tr \[char222] \(TP
+.latin1-tr \[char223] \(ss
+.latin1-tr \[char224] \(`a
+.latin1-tr \[char225] \('a
+.latin1-tr \[char226] \(^a
+.latin1-tr \[char227] \(~a
+.latin1-tr \[char228] \(:a
+.latin1-tr \[char229] \(oa
+.latin1-tr \[char230] \(ae
+.latin1-tr \[char231] \(,c
+.latin1-tr \[char232] \(`e
+.latin1-tr \[char233] \('e
+.latin1-tr \[char234] \(^e
+.latin1-tr \[char235] \(:e
+.latin1-tr \[char236] \(`i
+.latin1-tr \[char237] \('i
+.latin1-tr \[char238] \(^i
+.latin1-tr \[char239] \(:i
+.latin1-tr \[char240] \(Sd
+.latin1-tr \[char241] \(~n
+.latin1-tr \[char242] \(`o
+.latin1-tr \[char243] \('o
+.latin1-tr \[char244] \(^o
+.latin1-tr \[char245] \(~o
+.latin1-tr \[char246] \(:o
+.latin1-tr \[char247] \(di
+.latin1-tr \[char248] \(/o
+.latin1-tr \[char249] \(`u
+.latin1-tr \[char250] \('u
+.latin1-tr \[char251] \(^u
+.latin1-tr \[char252] \(:u
+.latin1-tr \[char253] \('y
+.latin1-tr \[char254] \(Tp
+.latin1-tr \[char255] \(:y
+.cp \n(_C
diff --git a/macros/tmac.pic b/tmac/tmac.pic
index 1177fc09d..1177fc09d 100644
--- a/macros/tmac.pic
+++ b/tmac/tmac.pic
diff --git a/tmac/tmac.ps b/tmac/tmac.ps
new file mode 100644
index 000000000..d7d655dba
--- /dev/null
+++ b/tmac/tmac.ps
@@ -0,0 +1,52 @@
+.nr _C \n(.C
+.cp 0
+.ftr AX ABI
+.ftr KR BMR
+.ftr KI BMI
+.ftr KB BMB
+.ftr KX BMBI
+.ftr CW CR
+.ftr CO CI
+.ftr CX CBI
+.ftr H HR
+.ftr HO HI
+.ftr HX HBI
+.ftr Hr HNR
+.ftr Hi HNI
+.ftr Hb HNB
+.ftr Hx HNBI
+.ftr NX NBI
+.ftr PA PR
+.ftr PX PBI
+.ftr ZI ZCMI
+.ftr C CR
+.cflags 8 \(an
+.char \(rn \h'-\w'\(sr'u'\(rn\h'\w'\(sr'u'
+.char \(mo \h'.08m'\(mo\h'-.08m'
+.char \(nm \h'.08m'\(nm\h'-.08m'
+.char \[parenlefttp] \[parenlefttp]\h'.016m'
+.char \[parenleftbt] \[parenleftbt]\h'.016m'
+.char \[parenleftex] \[parenleftex]\h'.016m'
+.char \[parenrighttp] \[parenrighttp]\h'.016m'
+.char \[parenrightbt] \[parenrightbt]\h'.016m'
+.char \[parenrightex] \[parenrightex]\h'.016m'
+.if !c\[va] .char \[va] \o'\[ua]\[da]'
+.if !c\[ci] \
+.char \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
+.if !c\[sq] \
+.char \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
+.if !c\[ru] .char \[ru] \D'l .5m 0'
+.if !c\[ul] .char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
+.if !c\[br] .char \[br] \Z'\v'.25m'\D'l 0 -1m''
+.if !c\[or] .char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.if !c\[Fi] .char \[Fi] ffi
+.if !c\[Fl] .char \[Fl] ffl
+.if !c\[ff] .char \[ff] ff
+.if !c\[ij] .char \[ij] ij
+.if !c\[IJ] .char \[IJ] IJ
+.if !c\[tm] .char \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
+.\" pic tests this register to see whether it should use \X'ps:...'
+.nr 0p 1
+.cp \n(_C
+.if !\n(.C .mso tmac.pspic
+.do mso tmac.psold
diff --git a/ps/tmac.psatk b/tmac/tmac.psatk
index b59d23a24..b59d23a24 100644
--- a/ps/tmac.psatk
+++ b/tmac/tmac.psatk
diff --git a/ps/tmac.psfig b/tmac/tmac.psfig
index 6db9a7114..fca779f33 100644
--- a/ps/tmac.psfig
+++ b/tmac/tmac.psfig
@@ -1,4 +1,5 @@
-.\" These are macros to make psfig work with groff. See the file psfig.diff.
+.\" These are macros to make psfig work with groff.
+.\" They require that psfig be patched as described in ../ps/psfig.diff.
.de psfig-defs
ps: mdef 100
diff --git a/tmac/tmac.psnew b/tmac/tmac.psnew
new file mode 100644
index 000000000..e13bdb886
--- /dev/null
+++ b/tmac/tmac.psnew
@@ -0,0 +1,26 @@
+.\" Undo the effect of tmac.psold. This gives access to the additional
+.\" characters that are present in the text fonts of newer PostScript
+.\" printers. It is a bad idea to use this if you are going to
+.\" distribute the resulting PostScript output to others.
+.nr _C \n(.C
+.cp 0
+.rchar \('y\('Y\(12\(14\(34\(S1\(S2\(S3\(bb\(de\(Tp\(TP\(-D\(Sd
+.tr \[char166]\[char166]
+.tr \[char176]\[char176]
+.tr \[char177]\[char177]
+.tr \[char178]\[char178]
+.tr \[char179]\[char179]
+.tr \[char181]\[char181]
+.tr \[char185]\[char185]
+.tr \[char188]\[char188]
+.tr \[char189]\[char189]
+.tr \[char190]\[char190]
+.tr \[char208]\[char208]
+.tr \[char215]\[char215]
+.tr \[char221]\[char221]
+.tr \[char222]\[char222]
+.tr \[char240]\[char240]
+.tr \[char247]\[char247]
+.tr \[char253]\[char253]
+.tr \[char254]\[char254]
+.cp \n(_C
diff --git a/tmac/tmac.psold b/tmac/tmac.psold
new file mode 100644
index 000000000..04a5f6df4
--- /dev/null
+++ b/tmac/tmac.psold
@@ -0,0 +1,60 @@
+.\" In the newer PostScript printers, the text fonts contain all ISO Latin-1
+.\" characters. The font description files that comes with groff match
+.\" these fonts. The text fonts in older PostScript printers are missing
+.\" some of these characters. This file prevents those characters from
+.\" being used. This will allow the PostScript output to be printed on both
+.\" old and new printers. The effect of this file can be undone by
+.\" tmac.psnew.
+.nr _C \n(.C
+.cp 0
+.\" Define an accented character.
+.de ps-achar
+.\" Note that character definitions are always interpreted with
+.\" compatibility mode off.
+.char \\$1 \\$3\
+\k[acc]\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
+\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
+\\$2\
+\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
+\h'|\\\\n[acc]u'
+.ie '\\$3'\(.i' .hcode \\$1i
+.el .hcode \\$1\\$3
+..
+.ps-achar \['y] \(aa y
+.ps-achar \['Y] \(aa Y
+.char \[12] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
+\(f/\s[\\n(.s*6u/10u]2\s0
+.char \[14] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
+\(f/\s[\\n(.s*6u/10u]4\s0
+.char \[34] \v'-.7m\s[\\n(.s*6u/10u]+.7m'3\v'-.7m\s0+.7m'\
+\(f/\s[\\n(.s*6u/10u]4\s0
+.char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
+.char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
+.char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
+.char \[bb] |
+.char \[de] \fS\(de
+.char \[-D] \Z'\v'-.1m'-'D
+.char \[TP] \
+I\h'-.25m'\v'-.33m'\s'\En(.s*6u/10u'\v'.33m'D\v'-.33m'\s0\v'.33m'
+.char \[Sd] \Z'\v'-.3m'\h'.2m'-'\(pd
+.char \[Tp] \zlp
+.tr \[char166]\[bb]
+.tr \[char176]\[de]
+.tr \[char177]\[+-]
+.tr \[char178]\[S2]
+.tr \[char179]\[S3]
+.tr \[char181]\[*m]
+.tr \[char185]\[S1]
+.tr \[char188]\[14]
+.tr \[char189]\[12]
+.tr \[char190]\[34]
+.tr \[char208]\[-D]
+.tr \[char215]\[mu]
+.tr \[char221]\['Y]
+.tr \[char222]\[TP]
+.tr \[char240]\[Sd]
+.tr \[char247]\[di]
+.tr \[char253]\['y]
+.tr \[char254]\[Tp]
+.cp \n(_C
diff --git a/ps/tmac.pspic b/tmac/tmac.pspic
index 9923907ff..9923907ff 100644
--- a/ps/tmac.pspic
+++ b/tmac/tmac.pspic
diff --git a/macros/tmac.s b/tmac/tmac.s
index d6f329226..e391da029 100644
--- a/macros/tmac.s
+++ b/tmac/tmac.s
@@ -1,12 +1,12 @@
.ig
-Copyright (C) 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
..
.if !\n(.g .ab These ms macros require groff.
@@ -24,7 +24,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\" Enable warnings. You can delete this if you want.
.warn
.\" See if already loaded.
-.if r GS .nx /dev/null
+.if r GS .nx
.nr GS 1
.de @error
.tm \\n(.F:\\n(.c: macro error: \\$*
@@ -212,6 +212,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.als SH LP
.als MC LP
.als RT LP
+.als XS LP
.de cov*ab-init
.als cov*ab-init @nop
.als LP @LP
@@ -219,6 +220,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.als PP @PP
.als XP @XP
.als RT @RT
+.als XS @XS
.als SH @SH
.als NH @NH
.als QP @QP
@@ -523,6 +525,8 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
. ev
.\}
.el \{\
+. \" If the text has ended and there are no more footnotes or keeps, exit.
+. if \\n[pg@text-ended] .ex
. if r pg*next-number \{\
. pn \\n[pg*next-number]
. rr pg*next-number
@@ -563,7 +567,13 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\}
.bp
..
-.em pg@super-eject
+.nr pg@text-ended 0
+.de pg@end-text
+.br
+.nr pg@text-ended 1
+.pg@super-eject
+..
+.em pg@end-text
.\" ***************************
.\" ******** module fn ********
.\" ***************************
@@ -984,8 +994,8 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.if !rQI .nr QI 5n
.if !rPI .nr PI 5n
.par*vs \\n[VS]
-.if !rPD .nr PD .3v
-.if !rDD .nr DD .5v
+.if !rPD .nr PD .3v>?\n(.V
+.if !rDD .nr DD .5v>?\n(.V
.if !dFAM .ds FAM \\n[.fam]
.nr par*adj \\n[.j]
.par*env-init
@@ -1003,7 +1013,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.aln k:MCLL pg@colw
.aln k:MCLT pg@colw
.if !rFPS .nr FPS \\n[PS]-2
-.if !rFVS .nr FVS (p;\\n[FPS]+2)
+.if !rFVS .nr FVS \\n[FPS]+2
.if !rFI .nr FI 2n
.if !rFPD .nr FPD \\n[PD]/2
.aln fn:PS FPS
@@ -1376,11 +1386,9 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\" ******** module toc ********
.\" ****************************
.\" Table of contents generation.
-.de XS
+.de @XS
.da toc*div
.ev h
-.par@reset
-.fi
.ie \\n[.$] .XA "\\$1"
.el .XA
..
@@ -1395,6 +1403,9 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
. el .ds toc*num "\\$1
. \}
. el .ds toc*num \\n[PN]
+. LP
+. na
+. ll -8n
. in (n;0\\$2)
.\}
.el .@error XA without XS
@@ -1591,17 +1602,21 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.rm ref*string
..
.\" Other
-.ds ref*spec!0 Q A T S V N P I C D O
+.ds ref*spec!0 Q A T1 S V N P I C D O
.\" Journal article
-.ds ref*spec!1 Q A T J S V N P I C D O
+.ds ref*spec!1 Q A T2 J S V N P I C D O
.\" Book
-.ds ref*spec!2 Q A T S V P I C D O
+.ds ref*spec!2 Q A T1 S V P I C D O
.\" Article within book
-.ds ref*spec!3 Q A T B E S V P I C D O
+.ds ref*spec!3 Q A T2 B E S V P I C D O
.\" Tech report
-.ds ref*spec!4 Q A T R G P I C D O
+.ds ref*spec!4 Q A T2 R G P I C D O
.\" ][ type
.de ][
+.if r [T \{\
+. als [T1 [T
+. als [T2 [T
+.\}
.ie d ref*spec!\\$1 .ref*build \\*[ref*spec!\\$1]
.el \{\
. @error unknown reference type `\\$1'
@@ -1609,7 +1624,7 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\}
.ref*print
.rm ref*string
-.rm [F
+.rm [F [T1 [T2
..
.\" start of reference number
.ds [. \\*[par@sup-start]
@@ -1667,7 +1682,11 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\}
.el .ds ref*string
..
-.de ref*add-T
+.de ref*add-T1
+.ref*field T , "\fI" "" "\fP"
+.if r [T .nr ref*suppress-period \\n([T
+..
+.de ref*add-T2
.ref*field T , "\\*Q" "" "\\*U"
.if r [T .nr ref*suppress-period \\n([T
..
@@ -1725,34 +1744,11 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.\" ******** module acc ********
.\" ****************************
.\" Accents and special characters.
-.ds Q \)``\)
-.ds U \)''\)
+.ds Q \(lq
+.ds U \(rq
.ds - \(em
.\" Characters
-.if !c\(rg .char \(rg (R)
-.if !c\(ah .char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.if !c\(ad .char \(ad \v'-.55m'\s[\En[.s]*7u/10u].\h'.05m'.\s0\v'.55m'
-.if !c\(a- .char \(a- \v'-.55m'\D'l .25m 0'\v'.55m'
-.if !c\(ao .char \(ao \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
-.if !c\(ac .char \(ac \s[\En[.s]*8u/10u]\v'.05m',\v'-.05m'\s0
-.if !c\(ho .char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\(-D .char \(-D \Z'\v'-.1m'-'D
-.if !c\(Sd .char \(Sd \Z'\v'-.3m'\h'.2m'-'\(pd
-.if !c\(TP .char \(TP I\h'-.25m'\v'-.33m'\s[\En[.s]*6u/10u]\v'.33m'D\
-\v'-.33m'\s0\v'.33m'
-.if !c\(Tp .char \(Tp \zlp
-.if !c\(ss .char \(ss \(*b
-.if !c\(AE .char \(AE A\h'-.3m'E
-.if !c\(ae .char \(ae a\h'-.19m'e
-.if !c\(OE .char \(OE O\h'-.25m'E
-.if !c\(oe .char \(oe o\h'-.14m'e
-.if !c\(r? .char \(r? \Z'\h'.1m'\v'-.15m'\s[\En[.s]*7u/10u]i\s0\v'.15m''\
-\v'.15m'\s[\En[.s]*7u/10u]c\s0\v'-.15m'
-.if !c\(r! .char \(r! \h'.1m'\Z'\v'-.4m'\s[\En[.s]*8u/10u].\s0\v'.4m''\
-\s[\En[.s]*8u/10u]\v'.4m'\(or\v'-.4m'\s0\h'.1m'
.\" The idea of this definition is for the top of the 3 to be at the x-height.
-.\" A yogh really ought to have a little line going north-west from the top
-.\" left of the 3.
.if !c\[yogh] .char \[yogh] \Z'\v'\w'x'*0-\En[rst]u'\s[\En[.s]*8u/10u]\
\v'\w'3'*0+\En[rst]u'3\s0'\h'\w'\s[\En[.s]*8u/10u]3'u'
.\" Accents
diff --git a/tmac/tmac.tty b/tmac/tmac.tty
new file mode 100644
index 000000000..4d5193fe3
--- /dev/null
+++ b/tmac/tmac.tty
@@ -0,0 +1,48 @@
+.nr _C \n(.C
+.cp 0
+.nroff
+.ftr CW B
+.ftr C B
+.ftr CR B
+.po 0
+.if c\[char173] .shc \[char173]
+.de tty-char
+.if !c\\$1 .char \\$1 "\\$2
+..
+.if c\(md .tr \(bu\(md
+.tty-char \(bu \z+o
+.tty-char \(14 1/4
+.tty-char \(12 1/2
+.tty-char \(34 3/4
+.tty-char \(ff ff
+.tty-char \(fi fi
+.tty-char \(fl fl
+.tty-char \(Fi ffi
+.tty-char \(Fl ffl
+.tty-char \(<- <-
+.tty-char \(-> ->
+.tty-char \(<> <->
+.tty-char \(em --
+.tty-char \(+- +-
+.tty-char \(co (C)
+.tty-char \(<= <=
+.tty-char \(>= >=
+.tty-char \(!= !=
+.tty-char \(== ==
+.tty-char \(~= ~=
+.tty-char \(sq []
+.tty-char \(lh <=
+.tty-char \(rh =>
+.tty-char \(lA <=
+.tty-char \(rA =>
+.tty-char \(hA <=>
+.tty-char \(rg (R)
+.tty-char \(OE OE
+.tty-char \(oe oe
+.tty-char \(AE AE
+.tty-char \(ae ae
+.tty-char \(an -
+.cp \n(_C
+.\" If you want the character definitions in tmac.tty-char to be loaded
+.\" automatically, remove the `\"' from the next line.
+.\"do mso tmac.tty-char
diff --git a/tmac/tmac.tty-char b/tmac/tmac.tty-char
new file mode 100644
index 000000000..4d1f5d0b5
--- /dev/null
+++ b/tmac/tmac.tty-char
@@ -0,0 +1,196 @@
+.\" This file defines standard troff characters and some groff characters for
+.\" use with -Tascii and -Tlatin1.
+.\"
+.\" These definitions are chosen so that, as far as possible, they:
+.\" - work with both -Tascii and -Tlatin1.
+.\" - work on devices that display only the last overstruck character
+.\" as well as on devices that support overstriking
+.\" - represent the character's graphical shape (not its meaning)
+.\"
+.nr _C \n(.C
+.cp 0
+.de tty-char
+.if !c\\$1 .char \\$1 "\\$2
+..
+.ie c\(a- .ds tty-rn \(a-
+.el .ds tty-rn \v'-1m'_\v'+1m'
+.tty-char \(tm tm
+.tty-char \(rn \*[tty-rn]
+.tty-char \(ua \z|^
+.tty-char \(da \z|v
+.tty-char \(sc S
+.tty-char \(ct \z/c
+.tty-char \(dg \z|-
+.tty-char \(dd \z|=
+.tty-char \(ib (\z=_
+.tty-char \(ip \z=_)
+.tty-char \(sb (=
+.tty-char \(sp =)
+.tty-char \(if oo
+.tty-char \(pt oc
+.tty-char \(es {}
+.tty-char \(ca (^)
+.tty-char \(cu U
+.tty-char \(de o
+.tty-char \(di -:-
+.tty-char \(no ~
+.tty-char \(gr \Z'\*[tty-rn]'V
+.tty-char \(is \z'\z,I
+.tty-char \(mo E
+.tty-char \(pd a
+.tty-char \(sr \e/
+.tty-char \(*C \z_H
+.tty-char \(*D \z_/\z_\e
+.tty-char \(*F \zIO
+.tty-char \(*G |\*[tty-rn]
+.tty-char \(*H \z-O
+.tty-char \(*L /\e
+.tty-char \(*P TT
+.tty-char \(*Q \zIY
+.tty-char \(*S \z_\Z'\*[tty-rn]'>
+.tty-char \(*W \z_O
+.if c\(ss .tty-char \(*b \(ss
+.tty-char \(*b B
+.tty-char \(*a a
+.tty-char \(*c \z,E
+.tty-char \(*d d
+.tty-char \(*e e
+.tty-char \(*f \z|o
+.tty-char \(+f \z|o
+.tty-char \(*g y
+.tty-char \(*h \z-0
+.tty-char \(+h \z-0
+.tty-char \(*i i
+.tty-char \(*k k
+.tty-char \(*l \z>\e
+.tty-char \(*m \z,u
+.tty-char \(*n v
+.tty-char \(*p \z-n
+.tty-char \(+p \z-w
+.tty-char \(*q \z|u
+.tty-char \(*r p
+.tty-char \(*s \z-o
+.tty-char \(*t \z~t
+.tty-char \(*u u
+.tty-char \(*w w
+.tty-char \(*x x
+.tty-char \(*y n
+.tty-char \(*z \z,C
+.tty-char \(ts s
+.\" Definition of \(ss should follow that of \(*b.
+.tty-char \(ss B
+.tty-char \(c* \zO\(mu
+.tty-char \(c+ \zO+
+.tty-char \(AN ^
+.tty-char \(OR v
+.tty-char \(uA \z=^
+.tty-char \(dA \z=v
+.if c\(md .tty-char \(a. \(md
+.tty-char \(Im I
+.tty-char \(Re R
+.tty-char \(/L \z/L
+.tty-char \(/l \z/ol
+.tty-char \(%0 %o
+.tty-char \(ao o
+.tty-char \(a" """"
+.tty-char \(ah v
+.tty-char \(ho \(ac
+.tty-char \(/_ \z_/
+.tty-char \(=~ =~
+.tty-char \(Ah N
+.tty-char \(CR _|
+.tty-char \(fa \z-V
+.tty-char \(nm \z/E
+.tty-char \(pp \z_|
+.tty-char \(sd ''
+.tty-char \(st -)
+.tty-char \(te 3
+.if c\(md .tty-char \(tf .\(md.
+.tty-char \(tf .:.
+.tty-char \(wp p
+.tty-char \(~~ ~~
+.tty-char \(Fn \z,f
+.tty-char \(Bq ,,
+.tty-char \(bq ,
+.tty-char \(lz <>
+.\" Latin-1 characters
+.tty-char \(r! \z,i
+.tty-char \(Po \z-L
+.tty-char \(Cs \zox
+.tty-char \(Ye \z=Y
+.tty-char \(bb |
+.tty-char \(ad """"
+.tty-char \(Of \z_a
+.tty-char \(Fo <<
+.tty-char \(a- \*[tty-rn]
+.tty-char \(S2 2
+.tty-char \(S3 3
+.tty-char \(ps 9|
+.tty-char \(md .
+.tty-char \(ac ,
+.tty-char \(S1 1
+.tty-char \(Om \z_o
+.tty-char \(Fc >>
+.tty-char \(r? \z'c
+.tty-char \(`A \z`A
+.tty-char \('A \z'A
+.tty-char \(^A \z^A
+.tty-char \(~A \z~A
+.tty-char \(:A \z"A
+.tty-char \(oA \zoA
+.tty-char \(,C \z,C
+.tty-char \(`E \z`E
+.tty-char \('E \z'E
+.tty-char \(^E \z^E
+.tty-char \(:E \z"E
+.tty-char \(`I \z`I
+.tty-char \('I \z'I
+.tty-char \(^I \z^I
+.tty-char \(:I \z"I
+.tty-char \(-D \z-D
+.tty-char \(~N \z~N
+.tty-char \(`O \z`O
+.tty-char \('O \z'O
+.tty-char \(^O \z^O
+.tty-char \(~O \z~O
+.tty-char \(:O \z"O
+.tty-char \(/O \z/O
+.tty-char \(`U \z`U
+.tty-char \('U \z'U
+.tty-char \(^U \z^U
+.tty-char \(:U \z"U
+.tty-char \('Y \z'Y
+.tty-char \(TP \zIb
+.tty-char \(`a \z`a
+.tty-char \('a \z'a
+.tty-char \(^a \z^a
+.tty-char \(~a \z~a
+.tty-char \(:a \z"a
+.tty-char \(oa \zoa
+.tty-char \(,c \z,c
+.tty-char \(`e \z`e
+.tty-char \('e \z'e
+.tty-char \(^e \z^e
+.tty-char \(:e \z"e
+.tty-char \(`i \z`i
+.tty-char \('i \z'i
+.tty-char \(^i \z^i
+.tty-char \(:i \z"i
+.tty-char \(Sd \z`\z'o
+.tty-char \(~n \z~n
+.tty-char \(`o \z`o
+.tty-char \('o \z'o
+.tty-char \(^o \z^o
+.tty-char \(~o \z~o
+.tty-char \(:o \z"o
+.tty-char \(/o \z/o
+.tty-char \(`u \z`u
+.tty-char \('u \z'u
+.tty-char \(^u \z^u
+.tty-char \(:u \z"u
+.tty-char \('y \z'y
+.tty-char \(Tp \zpb
+.tty-char \(:y \z"y
+.\"tty-char \(:y \ij
+.cp \n(_C
+.do mso tmac.latin1
diff --git a/tmac/troffrc b/tmac/troffrc
new file mode 100644
index 000000000..00e5cda8e
--- /dev/null
+++ b/tmac/troffrc
@@ -0,0 +1,20 @@
+.\" Startup file for troff.
+.\" This is tested by pic.
+.nr 0p 0
+.\" Use .do here, so that it works with -C.
+.\" The groff command defines the .X string if the -X option was given.
+.ie r.X .do ds troffrc!ps tmac.Xps
+.el .do ds troffrc!ps tmac.ps
+.do ds troffrc!dvi tmac.dvi
+.do ds troffrc!X75 tmac.X
+.do ds troffrc!X75-12 tmac.X
+.do ds troffrc!X100 tmac.X
+.do ds troffrc!X100-12 tmac.X
+.do ds troffrc!ascii tmac.tty
+.do ds troffrc!latin1 tmac.tty
+.do if d troffrc!\*[.T] \
+. do mso \*[troffrc!\*[.T]]
+.do rm troffrc!ps troffrc!Xps troffrc!dvi troffrc!X75 troffrc!X75-12 \
+troffrc!X100 troffrc!X100-12
+.do tr \[char160]
+.\" Don't let blank lines creep in here.
diff --git a/troff/Makefile b/troff/Makefile
deleted file mode 100644
index f0614882e..000000000
--- a/troff/Makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-MACROPATH=.:/usr/local/lib/groff/tmac:/usr/lib/tmac
-# DEVICE is the default device
-DEVICE=ps
-HYPHENFILE=/usr/local/lib/groff/hyphen
-BINDIR=/usr/local/bin
-INCLUDES=-I../lib
-CC=g++
-MLIBS=-lm
-CFLAGS=-g -O -Wall #-DOP_DELETE_BROKEN
-LDFLAGS=-g
-ETAGS=etags
-ETAGSFLAGS=-p
-OBJECTS=env.o node.o input.o div.o column.o symbol.o dictionary.o \
- reg.o number.o majorminor.o # dump.o unexec.o
-
-SOURCES=env.c node.c input.c div.c column.c symbol.c dictionary.c \
- number.c reg.c majorminor.c
-
-HEADERS=troff.h hvunits.h symbol.h dictionary.h env.h reg.h \
- token.h charinfo.h div.h node.h request.h
-
-TROFF_H=troff.h ../lib/errarg.h ../lib/error.h ../lib/cset.h ../lib/lib.h
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $<
-
-all: troff
-
-troff: $(OBJECTS) ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ $(OBJECTS) ../lib/libgroff.a $(MLIBS)
-
-majorminor.c: ../VERSION
- @echo Making $@
- @-rm -f $@
- @echo const char \*major_version = \
- \"`sed -e 's/^\(.*\)\..*$$/\1/' ../VERSION`\"\; >$@
- @echo const char \*minor_version = \
- \"`sed -e 's/^.*\.\([0-9]*\).*$$/\1/' ../VERSION`\"\; >>$@
-
-dictionary.o: dictionary.h $(TROFF_H) symbol.h
-symbol.o: $(TROFF_H) symbol.h
-number.o: div.h env.h $(TROFF_H) hvunits.h symbol.h token.h
-reg.o : $(TROFF_H) symbol.h dictionary.h token.h request.h reg.h
-div.o: dictionary.h div.h env.h $(TROFF_H) hvunits.h \
- node.h reg.h request.h symbol.h token.h
-env.o: charinfo.h dictionary.h div.h env.h $(TROFF_H) \
- hvunits.h node.h reg.h request.h symbol.h token.h
-input.o: config.h charinfo.h dictionary.h div.h env.h $(TROFF_H) \
- hvunits.h node.h reg.h request.h symbol.h token.h
-node.o: charinfo.h dictionary.h env.h reg.h \
- $(TROFF_H) hvunits.h node.h request.h symbol.h \
- token.h ../lib/font.h
-column.o: dictionary.h div.h env.h $(TROFF_H) hvunits.h \
- node.h reg.h request.h symbol.h token.h ../lib/stringclass.h
-
-config.h: FORCE
- @$(SHELL) ../gendef $@ "MACROPATH=\"$(MACROPATH)\"" \
- "HYPHENFILE=\"$(HYPHENFILE)\"" "DEVICE=\"$(DEVICE)\""
-
-TAGS : $(SOURCES)
- $(ETAGS) $(ETAGSFLAGS) $(SOURCES) $(HEADERS)
-
-saber_troff:
- @#load $(INCLUDES) $(CFLAGS) $(DEFINES) $(SOURCES) \
- ../lib/libgroff.a -lm
-
-clean:
- -rm -f *.o core troff gmon.out mon.out majorminor.c config.h
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-install.bin: troff
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/gtroff
- cp troff $(BINDIR)/gtroff
-
-install.nobin: hyphen
- -rm -f $(HYPHENFILE)
- cp hyphen $(HYPHENFILE)
-
-install: install.bin install.nobin
-
-# dump.o: dump.c config.h
-# cc -g $(DUMPFLAG) -c dump.c
-#
-# unexec.o: unexec.c config.h
-# cc -g $(DUMPFLAG) -I../lib -c unexec.c
-
-FORCE:
diff --git a/troff/Makefile.dep b/troff/Makefile.dep
new file mode 100644
index 000000000..02652cb89
--- /dev/null
+++ b/troff/Makefile.dep
@@ -0,0 +1,33 @@
+env.o : env.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h hvunits.h \
+ env.h request.h node.h token.h div.h reg.h charinfo.h
+node.o : node.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h hvunits.h \
+ env.h request.h node.h token.h charinfo.h ../include/font.h reg.h
+input.o : input.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h hvunits.h \
+ env.h request.h node.h reg.h token.h div.h charinfo.h ../include/font.h \
+ ../include/searchpath.h ../include/macropath.h ../include/defs.h \
+ ../include/posix.h
+div.o : div.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h hvunits.h \
+ env.h request.h node.h token.h div.h reg.h
+symbol.o : symbol.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h
+dictionary.o : dictionary.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h
+reg.o : reg.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h dictionary.h token.h \
+ request.h reg.h
+number.o : number.cc troff.h ../include/lib.h ../include/assert.h \
+ ../include/device.h ../include/cset.h ../include/cmap.h \
+ ../include/errarg.h ../include/error.h symbol.h hvunits.h env.h token.h \
+ div.h
+majorminor.o : majorminor.cc
diff --git a/troff/Makefile.sub b/troff/Makefile.sub
new file mode 100644
index 000000000..026338571
--- /dev/null
+++ b/troff/Makefile.sub
@@ -0,0 +1,26 @@
+PROG=troff
+MAN1=troff.n
+XLIBS=$(LIBGROFF)
+MLIB=$(LIBM)
+OBJS=env.o node.o input.o div.o symbol.o dictionary.o reg.o \
+ number.o majorminor.o
+CCSRCS=env.cc node.cc input.cc div.cc symbol.cc dictionary.cc reg.cc \
+ number.cc majorminor.cc
+HDRS=charinfo.h dictionary.h div.h env.h hvunits.h node.h reg.h request.h \
+ symbol.h token.h troff.h
+GENSRCS=majorminor.cc
+NAMEPREFIX=$(g)
+
+majorminor.cc: ../VERSION
+ @echo Making $@
+ @-rm -f $@
+ @echo const char \*major_version = \
+ \"`sed -e 's/^\([^.]*\)\..*$$/\1/' $(srcdir)/../VERSION`\"\; >$@
+ @echo const char \*minor_version = \
+ \"`sed -e 's/^[^.]*\.\([0-9]*\).*$$/\1/' $(srcdir)/../VERSION`\"\; >>$@
+
+install_data: hyphen
+ -test -d $(datadir) || mkdir $(datadir)
+ -test -d $(datasubdir) || mkdir $(datasubdir)
+ -rm -f $(hyphenfile)
+ $(INSTALL_DATA) $(srcdir)/hyphen $(hyphenfile)
diff --git a/troff/TODO b/troff/TODO
index 88d63ed09..0f6b37e8f 100644
--- a/troff/TODO
+++ b/troff/TODO
@@ -1,3 +1,6 @@
+Give a more helpful error message when the indent is set to a value
+greater than the line-length.
+
Tracing. This is a pain to implement because requests are responsible
for reading their own arguments.
@@ -8,7 +11,8 @@ Make it possible to have multilingual documents, by having a ``current
language'' with which hyphenation information (the pattern trie and
exception dictionary) is associated; the current language should be
associated with the environment. Get some pattern tries for other
-languages (assuming ISO Latin-1).
+languages (assuming ISO Latin-1). Get rid of -H option. The
+hyphenation file would be loaded by troffrc.
Line breaking should be smarter. In particular, it should be possible
to shrink spaces. Also avoid having a line that's been shrunk a lot
@@ -125,3 +129,6 @@ Don't ever change a charinfo. Create new variants instead and chain
them together.
Make it possible to tr characters onto \~.
+
+Unix troff appears to read the first character of a request name in
+copy mode. Should we do the same?
diff --git a/troff/charinfo.h b/troff/charinfo.h
index 9fb28028e..760978f28 100644
--- a/troff/charinfo.h
+++ b/troff/charinfo.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class macro;
@@ -39,13 +39,14 @@ public:
OVERLAPS_HORIZONTALLY = 8,
OVERLAPS_VERTICALLY = 16,
TRANSPARENT = 32,
- NUMBERED = 64,
+ NUMBERED = 64
};
enum {
TRANSLATE_NONE,
TRANSLATE_SPACE,
TRANSLATE_DUMMY,
TRANSLATE_STRETCHABLE_SPACE,
+ TRANSLATE_HYPHEN_INDICATOR
};
symbol nm;
charinfo(symbol s);
diff --git a/troff/column.c b/troff/column.cc
index 44b22c843..230e544e0 100644
--- a/troff/column.c
+++ b/troff/column.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef COLUMN
diff --git a/troff/dictionary.c b/troff/dictionary.cc
index fa67a5dbe..6b85896af 100644
--- a/troff/dictionary.c
+++ b/troff/dictionary.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
@@ -77,6 +77,7 @@ void *dictionary::lookup(symbol s, void *v)
for (i = 0; i < old_size; i++)
if (old_table[i].v != 0)
(void)lookup(old_table[i].s, old_table[i].v);
+ a_delete old_table;
}
return 0;
}
diff --git a/troff/dictionary.h b/troff/dictionary.h
index c0829d14f..47d6d5992 100644
--- a/troff/dictionary.h
+++ b/troff/dictionary.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
diff --git a/troff/div.c b/troff/div.cc
index 1297fce3e..29afe72a4 100644
--- a/troff/div.c
+++ b/troff/div.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
@@ -32,6 +32,11 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "div.h"
#include "reg.h"
+int exit_started = 0; // the exit process has started
+int done_end_macro = 0; // the end macro (if any) has finished
+int seen_last_page_ejector = 0; // seen the LAST_PAGE_EJECTOR cookie
+static int began_page_in_end_macro = 0; // a new page was begun during the end macro
+
static int last_post_line_extra_space = 0; // needed for \n(.a
static int nl_reg_contents = -1;
static int dl_reg_contents = 0;
@@ -286,7 +291,7 @@ top_level_diversion::top_level_diversion()
: page_count(0), have_next_page_number(0), page_length(units_per_inch*11),
page_offset(units_per_inch), prev_page_offset(units_per_inch),
ejecting_page(0), page_trap_list(0), first_page_begun(0), no_space_mode(0),
- page_number(0)
+ page_number(0), last_page_count(-1)
{
}
@@ -456,12 +461,14 @@ void top_level_diversion::add_trap(symbol nm, vunits pos)
{
trap *first_free_slot = 0;
for (trap **p = &page_trap_list; *p; p = &(*p)->next) {
- if ((*p)->position == pos) {
+ if ((*p)->nm.is_null()) {
+ if (first_free_slot == 0)
+ first_free_slot = *p;
+ }
+ else if ((*p)->position == pos) {
(*p)->nm = nm;
return;
}
- else if ((*p)->nm.is_null() && first_free_slot == 0)
- first_free_slot = *p;
}
if (first_free_slot) {
first_free_slot->nm = nm;
@@ -526,14 +533,18 @@ NO_RETURN void cleanup_and_exit(int exit_code)
exit(exit_code);
}
-int exit_flag = 0;
-
// returns non-zero if it sprung a top of page trap
int top_level_diversion::begin_page()
{
- if (exit_flag == 2 || (exit_flag == 1 && curenv->is_empty()))
- cleanup_and_exit(0);
+ if (exit_started) {
+ if (page_count == last_page_count
+ ? curenv->is_empty()
+ : (done_end_macro && (seen_last_page_ejector || began_page_in_end_macro)))
+ cleanup_and_exit(0);
+ if (!done_end_macro)
+ began_page_in_end_macro = 1;
+ }
if (!the_output)
init_output();
++page_count;
diff --git a/troff/div.h b/troff/div.h
index c090731b2..1f0cc3869 100644
--- a/troff/div.h
+++ b/troff/div.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
class diversion {
@@ -82,6 +82,7 @@ struct output_file;
class top_level_diversion : public diversion {
int page_number;
int page_count;
+ int last_page_count;
vunits page_length;
hunits prev_page_offset;
hunits page_offset;
@@ -122,11 +123,16 @@ public:
friend void page_offset();
void set_diversion_trap(symbol, vunits);
void clear_diversion_trap();
+ void set_last_page() { last_page_count = page_count; }
};
extern top_level_diversion *topdiv;
extern diversion *curdiv;
+extern int exit_started;
+extern int done_end_macro;
+extern int seen_last_page_ejector;
+
void spring_trap(symbol); // implemented by input.c
extern int trap_sprung_flag;
void postpone_traps();
diff --git a/troff/env.c b/troff/env.cc
index 5ec43ede4..e44baad9f 100644
--- a/troff/env.c
+++ b/troff/env.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "troff.h"
@@ -192,11 +192,15 @@ void widow_control_request()
size_range *font_size::size_table = 0;
int font_size::nranges = 0;
+extern "C" {
+
static int compare_ranges(const void *p1, const void *p2)
{
return ((size_range *)p1)->min - ((size_range *)p2)->min;
}
+}
+
void font_size::init_size_table(int *sizes)
{
nranges = 0;
@@ -265,16 +269,8 @@ void environment::add_char(charinfo *ci)
else
start_field();
}
- else if (current_field && ci == padding_indicator_char) {
- if (current_tab) {
- tab_contents = new space_node(H0, tab_contents);
- tab_field_spaces++;
- }
- else {
- line = new space_node(H0, line);
- field_spaces++;
- }
- }
+ else if (current_field && ci == padding_indicator_char)
+ add_padding();
else if (current_tab) {
if (tab_contents == 0)
tab_contents = new line_start_node;
@@ -398,10 +394,7 @@ void environment::space()
if (interrupted)
return;
if (current_field && padding_indicator_char == 0) {
- node **pp = current_tab ? &tab_contents : &line;
- int *hp = current_tab ? &tab_field_spaces : &field_spaces;
- *pp = new space_node(H0, *pp);
- *hp += 1;
+ add_padding();
return;
}
hunits x = translate_space_to_dummy ? H0 : env_space_width(this);
@@ -1366,11 +1359,14 @@ void environment::newline()
}
node *to_be_output = 0;
hunits to_be_output_width;
- prev_line_interrupted = interrupted;
+ prev_line_interrupted = 0;
if (dummy)
space_newline();
- else if (interrupted)
+ else if (interrupted) {
interrupted = 0;
+ // see environment::final_break
+ prev_line_interrupted = exit_started ? 2 : 1;
+ }
else if (center_lines > 0) {
--center_lines;
hunits x = target_text_length - width_total;
@@ -1673,18 +1669,17 @@ static node *node_list_reverse(node *n)
}
static void distribute_space(node *n, int nspaces, hunits desired_space,
- int force_forward = 0)
+ int force_reverse = 0)
{
static int reverse = 0;
- if (!force_forward && reverse)
+ if (force_reverse || reverse)
n = node_list_reverse(n);
for (node *tem = n; tem; tem = tem->next)
tem->spread_space(&nspaces, &desired_space);
- if (!force_forward) {
- if (reverse)
- (void)node_list_reverse(n);
+ if (force_reverse || reverse)
+ (void)node_list_reverse(n);
+ if (!force_reverse)
reverse = !reverse;
- }
assert(desired_space.is_zero() && nspaces == 0);
}
@@ -1718,11 +1713,8 @@ void environment::possibly_break_line(int forced)
break;
}
distribute_space(pre, bp->nspaces, extra_space_width);
- node *tem = line;
- line = 0;
- output_line(pre, bp->width + extra_space_width);
- line = tem;
- input_line_start -= bp->width + extra_space_width;
+ hunits output_width = bp->width + extra_space_width;
+ input_line_start -= output_width;
if (bp->hyphenated)
hyphen_line_count++;
else
@@ -1731,7 +1723,7 @@ void environment::possibly_break_line(int forced)
space_total = 0;
width_total = 0;
node *first_non_discardable = 0;
- for (tem = line; tem != 0; tem = tem->next)
+ for (node *tem = line; tem != 0; tem = tem->next)
if (!tem->discardable())
first_non_discardable = tem;
node *to_be_discarded;
@@ -1749,6 +1741,9 @@ void environment::possibly_break_line(int forced)
to_be_discarded = line;
line = 0;
}
+ // Do output_line() here so that line will be 0 iff the
+ // the environment will be empty.
+ output_line(pre, output_width);
while (to_be_discarded != 0) {
tem = to_be_discarded;
to_be_discarded = to_be_discarded->next;
@@ -1767,6 +1762,50 @@ void environment::possibly_break_line(int forced)
}
}
+/*
+Do the break at the end of input after the end macro (if any).
+
+Unix troff behaves as follows: if the last line is
+
+foo bar\c
+
+it will output foo on the current page, and bar on the next page;
+if the last line is
+
+foo\c
+
+or
+
+foo bar
+
+everything will be output on the current page. This behaviour must be
+considered a bug.
+
+The problem is that some macro packages rely on this. For example,
+the ATK macros have an end macro that emits \c if it needs to print a
+table of contents but doesn't do a 'bp in the end macro; instead the
+'bp is done in the bottom of page trap. This works with Unix troff,
+provided that the current environment is not empty at the end of the
+input file.
+
+The following will make macro packages that do that sort of thing work
+even if the current environment is empty at the end of the input file.
+If the last input line used \c and this line occurred in the end macro,
+then we'll force everything out on the current page, but we'll make
+sure that the environment isn't empty so that we won't exit at the
+bottom of this page.
+*/
+
+void environment::final_break()
+{
+ if (prev_line_interrupted == 2) {
+ do_break();
+ add_node(new transparent_dummy_node);
+ }
+ else
+ do_break();
+}
+
void environment::do_break()
{
if (curdiv == topdiv && !topdiv->first_page_begun) {
@@ -1805,6 +1844,7 @@ void environment::do_break()
output_line(tem, width_total);
hyphen_line_count = 0;
}
+ prev_line_interrupted = 0;
#ifdef WIDOW_CONTROL
mark_last_line();
output_pending_lines();
@@ -2152,6 +2192,7 @@ void set_tabs()
{
hunits pos;
hunits prev_pos = 0;
+ int first = 1;
int repeated = 0;
tab_stops tabs;
while (has_arg()) {
@@ -2162,10 +2203,6 @@ void set_tabs()
}
if (!get_hunits(&pos, 'm', prev_pos))
break;
- if (pos <= prev_pos) {
- warning(WARN_RANGE, "positions of tab stops must be strictly increasing");
- continue;
- }
tab_type type = TAB_LEFT;
if (tok.ch() == 'C') {
tok.next();
@@ -2178,8 +2215,14 @@ void set_tabs()
else if (tok.ch() == 'L') {
tok.next();
}
- tabs.add_tab(pos, type, repeated);
- prev_pos = pos;
+ if (pos <= prev_pos && !first)
+ warning(WARN_RANGE,
+ "positions of tab stops must be strictly increasing");
+ else {
+ tabs.add_tab(pos, type, repeated);
+ prev_pos = pos;
+ first = 0;
+ }
}
curenv->tabs = tabs;
skip_line();
@@ -2250,8 +2293,8 @@ void environment::wrap_up_tab()
tab_precedes_field = 0;
}
field_distance -= tab_amount;
+ field_spaces += tab_field_spaces;
}
- field_spaces += tab_field_spaces;
if (tab_contents != 0) {
for (node *tem = tab_contents; tem->next != 0; tem = tem->next)
;
@@ -2318,7 +2361,10 @@ void environment::start_field()
field_spaces = 0;
tab_field_spaces = 0;
for (node *p = line; p; p = p->next)
- p->freeze_space();
+ if (p->nspaces()) {
+ p->freeze_space();
+ space_total--;
+ }
tab_precedes_field = current_tab != TAB_NONE;
}
else
@@ -2327,6 +2373,8 @@ void environment::start_field()
void environment::wrap_up_field()
{
+ if (!current_tab && field_spaces == 0)
+ add_padding();
hunits padding = field_distance - (get_text_length() - pre_field_width);
if (current_tab && tab_field_spaces != 0) {
hunits tab_padding = scale(padding,
@@ -2371,6 +2419,20 @@ void environment::wrap_up_field()
current_field = 0;
}
+void environment::add_padding()
+{
+ if (current_tab) {
+ tab_contents = new space_node(H0, tab_contents);
+ tab_field_spaces++;
+ }
+ else {
+ if (line == 0)
+ start_line();
+ line = new space_node(H0, line);
+ field_spaces++;
+ }
+}
+
typedef int (environment::*INT_FUNCP)();
typedef vunits (environment::*VUNITS_FUNCP)();
typedef hunits (environment::*HUNITS_FUNCP)();
diff --git a/troff/env.h b/troff/env.h
index 01b7d77a6..5d705e36b 100644
--- a/troff/env.h
+++ b/troff/env.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
struct size_range {
@@ -187,6 +187,7 @@ class environment {
void hyphenate_line();
void start_field();
void wrap_up_field();
+ void add_padding();
node *make_tab_node(hunits d, node *next = 0);
node *get_prev_char();
public:
@@ -258,6 +259,7 @@ public:
void interrupt();
void spread() { spread_flag = 1; }
void do_break(); // .br
+ void final_break();
void newline();
void handle_tab(int is_leader = 0); // do a tab or leader
void add_node(node *);
diff --git a/troff/hvunits.h b/troff/hvunits.h
index 63b126467..e8ce902d8 100644
--- a/troff/hvunits.h
+++ b/troff/hvunits.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
diff --git a/troff/input.c b/troff/input.cc
index fe00d88ae..79fbeb2d1 100644
--- a/troff/input.c
+++ b/troff/input.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,10 +15,9 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-#include "config.h"
#include "troff.h"
#include "symbol.h"
#include "dictionary.h"
@@ -31,9 +30,16 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "div.h"
#include "charinfo.h"
#include "font.h"
+#include "searchpath.h"
+#include "macropath.h"
+#include "defs.h"
-#define MACROPATH_ENVVAR "GROFF_TMAC_PATH"
+// Needed for getpid().
+#include "posix.h"
+#define USAGE_EXIT_CODE 1
+#define MACRO_PREFIX "tmac."
+#define STARTUP_FILE "troffrc"
#define DEFAULT_INPUT_STACK_LIMIT 1000
#ifndef DEFAULT_WARNING_MASK
@@ -50,6 +56,7 @@ void init_column_requests();
static node *read_draw_node();
void handle_first_page_transition();
+static void push_token(const token &);
void copy_file();
#ifdef COLUMN
void vjustify();
@@ -59,7 +66,6 @@ void transparent_file();
const char *program_name = 0;
token tok;
-const char *device = DEVICE;
int break_flag = 0;
static int backtrace_flag = 0;
char *pipe_command = 0;
@@ -99,7 +105,6 @@ struct input_iterator;
input_iterator *make_temp_iterator(const char *);
const char *input_char_description(int);
-const int ESCAPE_RIGHT_PARENTHESIS = 014;
const int ESCAPE_QUESTION = 015;
const int BEGIN_TRAP = 016;
const int END_TRAP = 017;
@@ -127,6 +132,8 @@ const int TRANSPARENT_FILE_REQUEST = 0202;
const int VJUSTIFY_REQUEST = 0203;
#endif /* COLUMN */
const int ESCAPE_E = 0204;
+const int LAST_PAGE_EJECTOR = 0205;
+const int ESCAPE_RIGHT_PARENTHESIS = 0206;
void set_escape_char()
{
@@ -170,6 +177,7 @@ private:
virtual void shift(int) {}
virtual int is_boundary();
virtual int internal_level() { return 0; }
+ virtual int is_file() { return 0; }
};
input_iterator::input_iterator()
@@ -223,6 +231,7 @@ public:
void backtrace();
int set_location(const char *, int);
int next_file(FILE *, const char *);
+ int is_file();
};
file_iterator::file_iterator(FILE *f, const char *fn)
@@ -238,6 +247,11 @@ file_iterator::~file_iterator()
clearerr(stdin);
}
+int file_iterator::is_file()
+{
+ return 1;
+}
+
int file_iterator::next_file(FILE *f, const char *s)
{
if (fp != stdin)
@@ -335,6 +349,7 @@ public:
static void backtrace();
static void backtrace_all();
static void next_file(FILE *, const char *);
+ static void end_file();
static void shift(int n);
static void add_boundary();
static void remove_boundary();
@@ -426,7 +441,7 @@ void input_stack::push(input_iterator *in)
if (in == 0)
return;
if (++level > limit && limit > 0)
- fatal("input stack limit exceeded");
+ fatal("input stack limit exceeded (probable infinite loop)");
in->next = top;
top = in;
}
@@ -492,22 +507,41 @@ int input_stack::set_location(const char *filename, int lineno)
void input_stack::next_file(FILE *fp, const char *s)
{
- for (input_iterator *p = top; p; p = p->next)
- if (p->next_file(fp, s))
+ for (input_iterator **pp = &top; *pp != &nil_iterator; pp = &(*pp)->next)
+ if ((*pp)->next_file(fp, s))
return;
- for (input_iterator **pp = &top; *pp; pp = &(*pp)->next)
- ;
+ if (++level > limit && limit > 0)
+ fatal("input stack limit exceeded");
*pp = new file_iterator(fp, s);
+ (*pp)->next = &nil_iterator;
+}
+
+void input_stack::end_file()
+{
+ for (input_iterator **pp = &top; *pp != &nil_iterator; pp = &(*pp)->next)
+ if ((*pp)->is_file()) {
+ input_iterator *tem = *pp;
+ *pp = (*pp)->next;
+ delete tem;
+ level--;
+ return;
+ }
}
void input_stack::clear()
{
- while (!top->is_boundary() && top != &nil_iterator) {
+ int nboundaries = 0;
+ while (top != &nil_iterator) {
+ if (top->is_boundary())
+ nboundaries++;
input_iterator *tem = top;
top = top->next;
level--;
delete tem;
}
+ // Keep while_request happy.
+ for (; nboundaries > 0; --nboundaries)
+ add_boundary();
}
void backtrace_request()
@@ -519,10 +553,12 @@ void backtrace_request()
void next_file()
{
- symbol nm = get_long_name(1);
+ symbol nm = get_long_name(0);
while (!tok.newline() && !tok.eof())
tok.next();
- if (!nm.is_null()) {
+ if (nm.is_null())
+ input_stack::end_file();
+ else {
errno = 0;
FILE *fp = fopen(nm.contents(), "r");
if (!fp)
@@ -691,6 +727,12 @@ static int get_copy(node **nd, int defining)
while ((c = input_stack::get(NULL)) != '\n' && c != EOF)
;
return c;
+ case '#': // Like \" but newline is ignored.
+ (void)input_stack::get(NULL);
+ while ((c = input_stack::get(NULL)) != '\n')
+ if (c == EOF)
+ return EOF;
+ break;
case '$':
{
(void)input_stack::get(NULL);
@@ -852,15 +894,11 @@ static node *do_overstrike()
warning(WARN_DELIM, "missing closing delimiter");
break;
}
- if (tok.changes_env())
- tok.process();
- else {
- charinfo *ci = tok.get_char(1);
- if (ci) {
- node *n = curenv->make_char_node(ci);
- if (n)
- on->overstrike(n);
- }
+ charinfo *ci = tok.get_char(1);
+ if (ci) {
+ node *n = curenv->make_char_node(ci);
+ if (n)
+ on->overstrike(n);
}
tok.next();
}
@@ -883,15 +921,11 @@ static node *do_bracket()
input_stack::push(make_temp_iterator("\n"));
break;
}
- if (tok.changes_env())
- tok.process();
- else {
- charinfo *ci = tok.get_char(1);
- if (ci) {
- node *n = curenv->make_char_node(ci);
- if (n)
- bn->bracket(n);
- }
+ charinfo *ci = tok.get_char(1);
+ if (ci) {
+ node *n = curenv->make_char_node(ci);
+ if (n)
+ bn->bracket(n);
}
tok.next();
}
@@ -1107,6 +1141,9 @@ void token::next()
case END_TRAP:
type = TOKEN_END_TRAP;
return;
+ case LAST_PAGE_EJECTOR:
+ seen_last_page_ejector = 1;
+ // fall through
case PAGE_EJECTOR:
type = TOKEN_PAGE_EJECTOR;
return;
@@ -1209,8 +1246,10 @@ void token::next()
{
assert(n != 0);
token_node *tn = n->get_token_node();
- if (tn)
+ if (tn) {
*this = tn->tk;
+ delete tn;
+ }
else {
nd = n;
type = TOKEN_NODE;
@@ -1282,6 +1321,13 @@ void token::next()
else
type = TOKEN_EOF;
return;
+ case '#': // Like \" but newline is ignored.
+ while ((cc = input_stack::get(NULL)) != '\n')
+ if (cc == EOF) {
+ type = TOKEN_EOF;
+ return;
+ }
+ break;
case '$':
{
symbol nm = read_escape_name();
@@ -1336,14 +1382,13 @@ void token::next()
if (s.is_null())
break;
for (const char *p = s.contents(); *p != '\0'; p++)
- if (!csdigit(*p)) {
- type = TOKEN_FONT_NAME;
- nm = s;
- return;
- }
- type = TOKEN_FONT_POSITION;
- val = atoi(s.contents());
- return;
+ if (!csdigit(*p))
+ break;
+ if (*p)
+ curenv->set_font(s);
+ else
+ curenv->set_font(atoi(s.contents()));
+ break;
}
case 'g':
{
@@ -1359,11 +1404,9 @@ void token::next()
nd = new hmotion_node(x);
return;
case 'H':
- if (!get_delim_number(&x, 'z', curenv->get_requested_point_size()))
- break;
- type = TOKEN_CHAR_HEIGHT;
- val = x;
- return;
+ if (get_delim_number(&x, 'z', curenv->get_requested_point_size()))
+ curenv->set_char_height(x);
+ break;
case 'k':
nm = read_escape_name();
if (nm.is_null())
@@ -1414,17 +1457,13 @@ void token::next()
do_register();
break;
case 's':
- if (!read_size(&x))
- break;
- type = TOKEN_SIZE;
- val = x;
- return;
+ if (read_size(&x))
+ curenv->set_size(x);
+ break;
case 'S':
- if (!get_delim_number(&x, 0))
- break;
- type = TOKEN_CHAR_SLANT;
- val = x;
- return;
+ if (get_delim_number(&x, 0))
+ curenv->set_char_slant(x);
+ break;
case 't':
type = TOKEN_NODE;
nd = new non_interpreted_char_node('\t');
@@ -1462,7 +1501,7 @@ void token::next()
request_or_macro *p = lookup_request(s);
macro *m = p->to_macro();
if (!m) {
- error("can transparently throughput a request");
+ error("can't transparently throughput a request");
break;
}
nd = new special_node(*m);
@@ -1523,10 +1562,6 @@ int token::operator==(const token &t)
case TOKEN_SPECIAL:
return nm == t.nm;
case TOKEN_NUMBERED_CHAR:
- case TOKEN_CHAR_HEIGHT:
- case TOKEN_CHAR_SLANT:
- case TOKEN_FONT_POSITION:
- case TOKEN_SIZE:
return val == t.val;
default:
return 1;
@@ -1598,17 +1633,10 @@ const char *token::description()
buf[2] = '\'';
buf[3] = '\0';
return buf;
- case TOKEN_CHAR_HEIGHT:
- return "`\\H'";
- case TOKEN_CHAR_SLANT:
- return "`\\S'";
case TOKEN_DUMMY:
return "`\\&'";
case TOKEN_ESCAPE:
return "`\\e'";
- case TOKEN_FONT_NAME:
- case TOKEN_FONT_POSITION:
- return "`\\f'";
case TOKEN_HYPHEN_INDICATOR:
return "`\\%'";
case TOKEN_INTERRUPT:
@@ -1629,8 +1657,6 @@ const char *token::description()
return "`\\N'";
case TOKEN_RIGHT_BRACE:
return "`\\}'";
- case TOKEN_SIZE:
- return "`\\s'";
case TOKEN_SPACE:
return "a space";
case TOKEN_SPECIAL:
@@ -1767,38 +1793,47 @@ symbol get_long_name(int required)
}
}
-extern int exit_flag;
-
-NO_RETURN void exit_groff()
+NO_RETURN void exit_troff()
{
- exit_flag = 1;
+ exit_started = 1;
+ topdiv->set_last_page();
if (!end_macro_name.is_null()) {
spring_trap(end_macro_name);
tok.next();
process_input_stack();
}
- curenv->do_break();
+ curenv->final_break();
tok.next();
process_input_stack();
end_diversions();
- exit_flag = 2;
+ done_end_macro = 1;
+ topdiv->set_ejecting();
+ static char buf[2] = { LAST_PAGE_EJECTOR, '\0' };
+ input_stack::push(make_temp_iterator(buf));
+ topdiv->space(topdiv->get_page_length(), 1);
+ tok.next();
+ process_input_stack();
+ seen_last_page_ejector = 1; // should be set already
topdiv->set_ejecting();
push_page_ejector();
topdiv->space(topdiv->get_page_length(), 1);
tok.next();
process_input_stack();
- // This will only be if a trap-invoked macro starts a diversion,
+ // This will only happen if a trap-invoked macro starts a diversion,
// or if vertical position traps have been disabled.
cleanup_and_exit(0);
}
// This implements .ex. The input stack must be cleared before calling
-// exit_groff().
+// exit_troff().
-NO_RETURN void exit_request()
+void exit_request()
{
input_stack::clear();
- exit_groff();
+ if (exit_started)
+ tok.next();
+ else
+ exit_troff();
}
void end_macro()
@@ -1807,6 +1842,18 @@ void end_macro()
skip_line();
}
+void do_request()
+{
+ int saved_compatible_flag = compatible_flag;
+ compatible_flag = 0;
+ symbol nm = get_name();
+ if (nm.is_null())
+ skip_line();
+ else
+ interpolate_macro(nm);
+ compatible_flag = saved_compatible_flag;
+}
+
inline int possibly_handle_first_page_transition()
{
if (!topdiv->first_page_begun && curdiv == topdiv && !curenv->is_dummy()) {
@@ -2017,7 +2064,6 @@ static void process_input_stack()
if (possibly_handle_first_page_transition())
;
else if (bol && !curenv->get_prev_line_interrupted()) {
- curenv->do_break();
int nspaces = 0;
do {
nspaces += tok.nspaces();
@@ -2026,8 +2072,9 @@ static void process_input_stack()
if (tok.newline())
blank_line();
else {
+ push_token(tok);
+ curenv->do_break();
curenv->add_node(new hmotion_node(curenv->get_space_width()*nspaces));
- suppress_next = 1;
bol = 0;
}
}
@@ -2706,13 +2753,18 @@ static void interpolate_macro(symbol nm)
int warned = 0;
const char *s = nm.contents();
if (strlen(s) > 2) {
+ request_or_macro *r;
char buf[3];
buf[0] = s[0];
buf[1] = s[1];
buf[2] = '\0';
- if (request_dictionary.lookup(symbol(buf)) != 0)
- warned = warning(WARN_SPACE,
- "space required between `%1' and argument", buf);
+ r = (request_or_macro *)request_dictionary.lookup(symbol(buf));
+ if (r) {
+ macro *m = r->to_macro();
+ if (!m || !m->empty())
+ warned = warning(WARN_SPACE,
+ "space required between `%1' and argument", buf);
+ }
}
if (!warned) {
warning(WARN_MAC, "`%1' not defined", nm.contents());
@@ -2782,6 +2834,11 @@ macro *macro::to_macro()
return this;
}
+int macro::empty()
+{
+ return length == 0;
+}
+
macro_iterator::macro_iterator(symbol s, macro &m)
: string_iterator(m, "macro", s), args(0), argc(0)
{
@@ -2858,6 +2915,8 @@ void do_define_string(int append)
}
if (tok.newline())
c = '\n';
+ else if (tok.tab())
+ c = '\t';
else if (!tok.space()) {
error("bad string definition");
skip_line();
@@ -2912,6 +2971,8 @@ void define_character()
tok.next();
if (tok.newline())
c = '\n';
+ else if (tok.tab())
+ c = '\t';
else if (!tok.space()) {
error("bad character definition");
skip_line();
@@ -2938,6 +2999,23 @@ void define_character()
}
+static void remove_character()
+{
+ tok.skip();
+ while (!tok.newline() && !tok.eof()) {
+ if (!tok.space() && !tok.tab()) {
+ charinfo *ci = tok.get_char(1);
+ if (!ci)
+ break;
+ macro *m = ci->set_macro(0);
+ if (m)
+ delete m;
+ }
+ tok.next();
+ }
+ skip_line();
+}
+
static void interpolate_string(symbol nm)
{
request_or_macro *p = lookup_request(nm);
@@ -3001,17 +3079,22 @@ static void interpolate_arg(symbol nm)
}
}
-/* We need to unget the current token; we fake this by wrapping it up
-in a token_node, and wrapping that up in a string_iterator. */
-
void handle_first_page_transition()
{
- macro mac;
- mac.append(new token_node(tok));
- input_stack::push(new string_iterator(mac));
+ push_token(tok);
topdiv->begin_page();
}
+// We push back a token by wrapping it up in a token_node, and
+// wrapping that up in a string_iterator.
+
+static void push_token(const token &t)
+{
+ macro m;
+ m.append(new token_node(t));
+ input_stack::push(new string_iterator(m));
+}
+
void push_page_ejector()
{
static char buf[2] = { PAGE_EJECTOR, '\0' };
@@ -4258,7 +4341,7 @@ static void init_charset_table()
charset_table[']']->set_flags(charinfo::TRANSPARENT);
charset_table['*']->set_flags(charinfo::TRANSPARENT);
get_charinfo(symbol("dg"))->set_flags(charinfo::TRANSPARENT);
- get_charinfo(symbol("hy"))->set_flags(charinfo::BREAK_AFTER);
+ get_charinfo(symbol("rq"))->set_flags(charinfo::TRANSPARENT);
get_charinfo(symbol("em"))->set_flags(charinfo::BREAK_AFTER);
get_charinfo(symbol("ul"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY);
get_charinfo(symbol("rn"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY);
@@ -4292,6 +4375,8 @@ void translate()
ci1->set_special_translation(charinfo::TRANSLATE_SPACE);
else if (tok.dummy())
ci1->set_special_translation(charinfo::TRANSLATE_DUMMY);
+ else if (tok.hyphen_indicator())
+ ci1->set_special_translation(charinfo::TRANSLATE_HYPHEN_INDICATOR);
else {
charinfo *ci2 = tok.get_char(1);
if (ci2 == 0)
@@ -4397,12 +4482,6 @@ int token::add_to_node_list(node **pp)
case TOKEN_CHAR:
*pp = (*pp)->add_char(charset_table[c], curenv, &w);
break;
- case TOKEN_CHAR_HEIGHT:
- curenv->set_char_height(val);
- break;
- case TOKEN_CHAR_SLANT:
- curenv->set_char_slant(val);
- break;
case TOKEN_DUMMY:
n = new dummy_node;
break;
@@ -4410,12 +4489,6 @@ int token::add_to_node_list(node **pp)
if (escape_char != 0)
*pp = (*pp)->add_char(charset_table[escape_char], curenv, &w);
break;
- case TOKEN_FONT_NAME:
- curenv->set_font(nm);
- break;
- case TOKEN_FONT_POSITION:
- curenv->set_font(val);
- break;
case TOKEN_HYPHEN_INDICATOR:
*pp = (*pp)->add_discretionary_hyphen();
break;
@@ -4436,9 +4509,6 @@ int token::add_to_node_list(node **pp)
break;
case TOKEN_RIGHT_BRACE:
break;
- case TOKEN_SIZE:
- curenv->set_size(val);
- break;
case TOKEN_SPACE:
n = new hmotion_node(curenv->get_space_width());
break;
@@ -4466,12 +4536,6 @@ void token::process()
case TOKEN_CHAR:
curenv->add_char(charset_table[c]);
break;
- case TOKEN_CHAR_HEIGHT:
- curenv->set_char_height(val);
- break;
- case TOKEN_CHAR_SLANT:
- curenv->set_char_slant(val);
- break;
case TOKEN_DUMMY:
curenv->add_node(new dummy_node);
break;
@@ -4485,12 +4549,6 @@ void token::process()
if (escape_char != 0)
curenv->add_char(charset_table[escape_char]);
break;
- case TOKEN_FONT_NAME:
- curenv->set_font(nm);
- break;
- case TOKEN_FONT_POSITION:
- curenv->set_font(val);
- break;
case TOKEN_BEGIN_TRAP:
case TOKEN_END_TRAP:
case TOKEN_PAGE_EJECTOR:
@@ -4528,9 +4586,6 @@ void token::process()
break;
case TOKEN_RIGHT_BRACE:
break;
- case TOKEN_SIZE:
- curenv->set_size(val);
- break;
case TOKEN_SPACE:
curenv->space();
break;
@@ -4849,75 +4904,12 @@ static void parse_output_page_list(char *p)
}
}
-struct string_list {
- const char *s;
- string_list *next;
- string_list(const char *ss) : s(ss), next(0) {}
-};
-
-string_list *mac_dirs;
-string_list *font_dirs;
-
-// open filename, searching in dirs and put the result in pathp
-
-static FILE *open_file(const char *filename, string_list *dirs, char **pathp)
-{
- int fnlen = strlen(filename);
- while (dirs) {
- int dlen = 0;
- int need_slash = 0;
- if (dirs->s) {
- dlen = strlen(dirs->s);
- if (dlen && dirs->s[dlen-1] != '/')
- need_slash = 1;
- }
- char *path = new char[dlen + need_slash + fnlen + 1];
- if (dirs->s)
- strcpy(path, dirs->s);
- else
- path[0] = 0;
- if (need_slash)
- strcat(path, "/");
- strcat(path, filename);
- errno = 0;
- FILE *fp = fopen(path, "r");
- if (fp) {
- *pathp = path;
- return fp;
- }
- a_delete path;
- dirs = dirs->next;
- }
- return 0;
-}
-
-static void add_string(const char *s, string_list **p)
-{
- while (*p)
- p = &((*p)->next);
- *p = new string_list(s);
-}
-
-static void init_dirs(const char *e, const char *standard, string_list **dirs)
-{
- char *var = getenv(e);
- if (!var) {
- var = new char[strlen(standard)+1];
- strcpy(var, standard);
- }
- for (char *p = strtok(var, ":"); p; p = strtok(NULL, ":"))
- add_string(p, dirs);
-}
-
-
-#define MACRO_PREFIX "tmac."
-
static FILE *open_mac_file(const char *mac, char **path)
{
char *s = new char[strlen(mac)+strlen(MACRO_PREFIX)+1];
strcpy(s, MACRO_PREFIX);
strcat(s, mac);
- FILE *fp = open_file(s, mac_dirs, path);
+ FILE *fp = macro_path.open_file(s, path);
a_delete s;
return fp;
}
@@ -4935,6 +4927,18 @@ static void process_macro_file(const char *mac)
process_input_stack();
}
+static void process_startup_file()
+{
+ char *path;
+ FILE *fp = macro_path.open_file(STARTUP_FILE, &path);
+ if (fp) {
+ input_stack::push(new file_iterator(fp, symbol(path).contents()));
+ a_delete path;
+ tok.next();
+ process_input_stack();
+ }
+}
+
void macro_source()
{
symbol nm = get_long_name(1);
@@ -4944,7 +4948,7 @@ void macro_source()
while (!tok.newline() && !tok.eof())
tok.next();
char *path;
- FILE *fp = open_file(nm.contents(), mac_dirs, &path);
+ FILE *fp = macro_path.open_file(nm.contents(), &path);
if (fp) {
input_stack::push(new file_iterator(fp, symbol(path).contents()));
a_delete path;
@@ -4954,7 +4958,6 @@ void macro_source()
tok.next();
}
}
-
static void process_input_file(const char *name)
{
@@ -5036,24 +5039,29 @@ static void do_string_assignment(const char *s)
}
}
-#define USAGE_EXIT_CODE 1
+struct string_list {
+ const char *s;
+ string_list *next;
+ string_list(const char *ss) : s(ss), next(0) {}
+};
+
+static void add_string(const char *s, string_list **p)
+{
+ while (*p)
+ p = &((*p)->next);
+ *p = new string_list(s);
+}
void usage(const char *prog)
{
errprint(
-"usage: %1 -abivzCE -wname -Wname -dcstring -mname -nN -olist -rcN\n"
+"usage: %1 -abivzCER -wname -Wname -dcstring -mname -nN -olist -rcN\n"
" -Tname -Fdir -Mdir -Hfile [ files ]\n",
prog);
exit(USAGE_EXIT_CODE);
}
-int
-#ifdef DUMP
-normal_main
-#else
-main
-#endif
- (int argc, char **argv)
+int main(int argc, char **argv)
{
program_name = argv[0];
static char stderr_buf[BUFSIZ];
@@ -5067,16 +5075,15 @@ main
int tflag = 0;
int fflag = 0;
int nflag = 0;
+ int no_rc = 0; // don't process troffrc
int next_page_number;
opterr = 0;
hresolution = vresolution = 1;
- const char *tem = getenv("GROFF_TYPESETTER");
- if (tem)
- device = tem;
- tem = getenv("GROFF_HYPHEN");
+ const char *tem = getenv("GROFF_HYPHEN");
if (tem)
hyphen_file = tem;
- while ((c = getopt(argc, argv, "abivw:W:zCEf:m:n:o:r:d:F:H:M:T:tqs:")) != EOF)
+ while ((c = getopt(argc, argv, "abivw:W:zCEf:m:n:o:r:d:F:H:M:T:tqs:R"))
+ != EOF)
switch(c) {
case 'v':
{
@@ -5093,7 +5100,7 @@ main
compatible_flag = 1;
break;
case 'M':
- add_string(optarg, &mac_dirs);
+ macro_path.command_line_dir(optarg);
break;
case 'F':
font::command_line_font_dir(optarg);
@@ -5107,6 +5114,9 @@ main
case 'E':
inhibit_errors = 1;
break;
+ case 'R':
+ no_rc = 1;
+ break;
case 'w':
enable_warning(optarg);
break;
@@ -5161,9 +5171,7 @@ main
assert(0);
}
set_string(".T", device);
- init_dirs(MACROPATH_ENVVAR, MACROPATH, &mac_dirs);
init_charset_table();
- font::set_device_name(device);
if (!font::load_desc())
fatal("sorry, I can't continue");
units_per_inch = font::res;
@@ -5180,8 +5188,11 @@ main
for (i = 0; font::style_table[i]; i++)
mount_style(j++, symbol(font::style_table[i]));
}
- for (i = 0; font::font_name_table[i]; i++)
- mount_font(j++, symbol(font::font_name_table[i]));
+ for (i = 0; font::font_name_table[i]; i++, j++)
+ // In the DESC file a font name of 0 (zero) means leave this
+ // position empty.
+ if (strcmp(font::font_name_table[i], "0") != 0)
+ mount_font(j, symbol(font::font_name_table[i]));
curdiv = topdiv = new top_level_diversion;
if (nflag)
topdiv->set_next_page_number(next_page_number);
@@ -5210,6 +5221,8 @@ main
register_assignments = register_assignments->next;
delete tem;
}
+ if (!no_rc)
+ process_startup_file();
while (macros) {
process_macro_file(macros->s);
string_list *tem = macros;
@@ -5220,203 +5233,9 @@ main
process_input_file(argv[i]);
if (optind >= argc || iflag)
process_input_file("-");
- exit_groff();
+ exit_troff();
}
-#ifdef DUMP
-
-int dumped_main(int argc, char **argv)
-{
- program_name = argv[0];
- int c;
- string_list *macros = 0;
- string_list *register_assignments = 0;
- string_list *string_assignments = 0;
- int iflag = 0;
- int nflag = 0;
- int next_page_number;
- opterr = 0;
- while ((c = getopt(argc, argv, "abivw:W:zECf:m:n:o:r:d:F:H:M:T:tqs:")) != EOF)
- switch(c) {
- case 'v':
- {
- extern const char *version_string;
- fprintf(stderr, "GNU troff version %s\n", version_string);
- fflush(stderr);
- break;
- }
- case 'f':
- case 'H':
- case 'T':
- error("`-%1' option illegal when dumped", char(c));
- break;
- case 'C':
- compatible_flag = 1;
- break;
- case 'M':
- add_string(optarg, &mac_dirs);
- break;
- case 'F':
- font::command_line_font_dir(optarg);
- break;
- case 'm':
- add_string(optarg, &macros);
- break;
- case 'E':
- inhibit_errors = 1;
- break;
- case 'w':
- enable_warning(optarg);
- break;
- case 'W':
- disable_warning(optarg);
- break;
- case 'i':
- iflag = 1;
- break;
- case 'b':
- backtrace_flag = 1;
- break;
- case 'a':
- ascii_output_flag = 1;
- break;
- case 'z':
- suppress_output_flag = 1;
- break;
- case 'n':
- if (sscanf(optarg, "%d", &next_page_number) == 1)
- nflag++;
- else
- error("bad page number");
- break;
- case 'o':
- parse_output_page_list(optarg);
- break;
- case 'd':
- if (*optarg == '\0')
- error("`-d' requires non-empty argument");
- else
- add_string(optarg, &string_assignments);
- break;
- case 'r':
- if (*optarg == '\0')
- error("`-r' requires non-empty argument");
- else
- add_string(optarg, &register_assignments);
- break;
- case 'q':
- case 's':
- case 't':
- // silently ignore these
- break;
- case '?':
- usage(argv[0]);
- default:
- assert(0);
- }
- init_dirs(MACROPATH_ENVVAR, MACROPATH, &mac_dirs);
- init_registers();
- if (nflag)
- topdiv->set_next_page_number(next_page_number);
- while (string_assignments) {
- do_string_assignment(string_assignments->s);
- string_list *tem = string_assignments;
- string_assignments = string_assignments->next;
- delete tem;
- }
- while (register_assignments) {
- do_register_assignment(register_assignments->s);
- string_list *tem = register_assignments;
- register_assignments = register_assignments->next;
- delete tem;
- }
- while (macros) {
- process_macro_file(macros->s);
- string_list *tem = macros;
- macros = macros->next;
- delete tem;
- }
- int i;
- for (i = optind; i < argc; i++)
- process_input_file(argv[i]);
- if (optind >= argc || iflag)
- process_input_file("-");
- exit_groff();
-}
-
-static int dumped = 0;
-
-extern "C" {
-
-int unexec(const char *new_name, const char *a_name, unsigned data_start = 0,
- unsigned bss_start = 0, unsigned entry_address = 0);
-
-#ifdef __GNUG__
-#define CPLUS_INIT_FUNC __main
-#else
-#define CPLUS_INIT_FUNC _main
-#endif
-
-extern int CPLUS_INIT_FUNC();
-
-int c_main(int argc, char **argv)
-{
- if (dumped)
- return dumped_main(argc, argv);
- else {
- CPLUS_INIT_FUNC();
- return normal_main(argc, argv);
- }
-}
-
-#define OPTIND_INITIAL_VALUE 1
-
-}
-
-void dump_request()
-{
- symbol new_name = get_long_name(1);
- if (new_name.is_null()) {
- skip_line();
- return;
- }
- symbol a_name = get_long_name(1);
- if (a_name.is_null()) {
- skip_line();
- return;
- }
- if (topdiv->first_page_begun)
- fatal("can't dump after first page begun");
- while (input_stack::get(NULL) != EOF)
- ;
- suppress_output_flag = 0;
- ascii_output_flag = 0;
- dumped = 1;
- optind = OPTIND_INITIAL_VALUE;
- number_reg_dictionary.remove(".A");
- while (output_page_list) {
- page_range *tem = output_page_list;
- output_page_list = output_page_list->next;
- delete tem;
- }
- while (mac_dirs) {
- string_list *tem = mac_dirs;
- mac_dirs = mac_dirs->next;
- delete tem;
- }
- font::forget_command_line_font_dirs();
- fflush(stderr);
- clearerr(stdin);
- // clean up the diversion_stack
- // clean up environment stack
- if (unexec(new_name.contents(), a_name.contents()) < 0)
- exit(1);
- else
- exit(0);
-}
-
-#endif /* DUMP */
-
void warn_request()
{
int n;
@@ -5440,13 +5259,17 @@ static void init_registers()
time_t
#endif /* not LONG_FOR_TIME_T */
t = time(0);
- tm *tt = localtime(&t);
+ // Use struct here to work around misfeature in old versions of g++.
+ struct tm *tt = localtime(&t);
set_number_reg("dw", int(tt->tm_wday + 1));
set_number_reg("dy", int(tt->tm_mday));
set_number_reg("mo", int(tt->tm_mon + 1));
set_number_reg("yr", int(tt->tm_year));
set_number_reg("$$", getpid());
- number_reg_dictionary.define(".A", new constant_reg(ascii_output_flag ? "1" : "0"));
+ number_reg_dictionary.define(".A",
+ new constant_reg(ascii_output_flag
+ ? "1"
+ : "0"));
}
void init_input_requests()
@@ -5468,7 +5291,7 @@ void init_input_requests()
init_request("ec", set_escape_char);
init_request("pc", set_page_character);
init_request("tm", terminal);
- init_request("ex", REQUEST_FUNCP(exit_request));
+ init_request("ex", exit_request);
init_request("em", end_macro);
init_request("tr", translate);
init_request("ab", abort_request);
@@ -5481,6 +5304,7 @@ void init_input_requests()
init_request("rd", read_request);
init_request("cp", compatible);
init_request("char", define_character);
+ init_request("rchar", remove_character);
init_request("hcode", hyphenation_code);
init_request("while", while_request);
init_request("break", while_break_request);
@@ -5490,9 +5314,6 @@ void init_input_requests()
init_request("chop", chop_macro);
init_request("asciify", asciify_macro);
init_request("warn", warn_request);
-#ifdef DUMP
- init_request("dump", dump_request);
-#endif
init_request("open", open_request);
init_request("opena", opena_request);
init_request("close", close_request);
@@ -5507,6 +5328,7 @@ void init_input_requests()
init_request("vj", vjustify);
#endif /* COLUMN */
init_request("mso", macro_source);
+ init_request("do", do_request);
number_reg_dictionary.define("systat", new variable_reg(&system_status));
number_reg_dictionary.define("slimit",
new variable_reg(&input_stack::limit));
@@ -5548,6 +5370,11 @@ static request_or_macro *lookup_request(symbol nm)
node *charinfo_to_node_list(charinfo *ci, const environment *envp)
{
+ // Don't interpret character definitions in compatible mode.
+ int old_compatible_flag = compatible_flag;
+ compatible_flag = 0;
+ int old_escape_char = escape_char;
+ escape_char = '\\';
macro *mac = ci->set_macro(0);
assert(mac != 0);
environment *oldenv = curenv;
@@ -5578,6 +5405,8 @@ node *charinfo_to_node_list(charinfo *ci, const environment *envp)
ci->set_macro(mac);
tok = old_tok;
curenv = oldenv;
+ compatible_flag = old_compatible_flag;
+ escape_char = old_escape_char;
return n;
}
diff --git a/troff/node.c b/troff/node.cc
index a315a9488..a20fbcd8d 100644
--- a/troff/node.c
+++ b/troff/node.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "troff.h"
@@ -34,6 +34,9 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
symbol HYPHEN_SYMBOL("hy");
+// Character used when a hyphen is inserted at a line break.
+static charinfo *soft_hyphen_char;
+
enum constant_space_type {
CONSTANT_SPACE_NONE,
CONSTANT_SPACE_RELATIVE,
@@ -1725,14 +1728,13 @@ hunits kern_pair_node::subscript_correction()
node *kern_pair_node::add_discretionary_hyphen()
{
- charinfo *hci = get_charinfo(HYPHEN_SYMBOL);
tfont *tf = n2->get_tfont();
if (tf) {
- if (tf->contains(hci)) {
+ if (tf->contains(soft_hyphen_char)) {
node *next1 = next;
next = 0;
node *n = copy();
- glyph_node *gn = new glyph_node(hci, tf);
+ glyph_node *gn = new glyph_node(soft_hyphen_char, tf);
node *nn = n->merge_glyph_node(gn);
if (nn == 0) {
gn->next = n;
@@ -1860,12 +1862,11 @@ node *node::add_discretionary_hyphen()
tfont *tf = get_tfont();
if (!tf)
return new hyphen_inhibitor_node(this);
- charinfo *hci = get_charinfo(HYPHEN_SYMBOL);
- if (tf->contains(hci)) {
+ if (tf->contains(soft_hyphen_char)) {
node *next1 = next;
next = 0;
node *n = copy();
- glyph_node *gn = new glyph_node(hci, tf);
+ glyph_node *gn = new glyph_node(soft_hyphen_char, tf);
node *n1 = n->merge_glyph_node(gn);
if (n1 == 0) {
gn->next = n;
@@ -3696,6 +3697,9 @@ node *make_node(charinfo *ci, environment *env)
return new space_char_hmotion_node(env->get_space_width());
case charinfo::TRANSLATE_DUMMY:
return new dummy_node;
+ case charinfo::TRANSLATE_HYPHEN_INDICATOR:
+ error("translation to \\% ignored in this context");
+ break;
}
charinfo *tem = ci->get_translation();
if (tem)
@@ -3734,6 +3738,8 @@ node *node::add_char(charinfo *ci, environment *env, hunits *widthp)
return res;
case charinfo::TRANSLATE_DUMMY:
return new dummy_node(this);
+ case charinfo::TRANSLATE_HYPHEN_INDICATOR:
+ return add_discretionary_hyphen();
}
charinfo *tem = ci->get_translation();
if (tem)
@@ -4774,6 +4780,14 @@ void kern_request()
skip_line();
}
+void set_soft_hyphen_char()
+{
+ soft_hyphen_char = get_optional_char();
+ if (!soft_hyphen_char)
+ soft_hyphen_char = get_charinfo(HYPHEN_SYMBOL);
+ skip_line();
+}
+
void init_output()
{
if (suppress_output_flag)
@@ -4820,11 +4834,12 @@ void init_node_requests()
init_request("special", special_request);
init_request("fspecial", font_special_request);
init_request("ftr", font_translate);
+ init_request("shc", set_soft_hyphen_char);
number_reg_dictionary.define(".fp", new next_available_font_position_reg);
number_reg_dictionary.define(".kern",
new constant_int_reg(&global_kern_mode));
number_reg_dictionary.define(".lg",
new constant_int_reg(&global_ligature_mode));
number_reg_dictionary.define(".P", new printing_reg);
+ soft_hyphen_char = get_charinfo(HYPHEN_SYMBOL);
}
-
diff --git a/troff/node.h b/troff/node.h
index 51e2a16b1..562ce255e 100644
--- a/troff/node.h
+++ b/troff/node.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
diff --git a/troff/number.c b/troff/number.cc
index 319dd60aa..c0acd4486 100644
--- a/troff/number.c
+++ b/troff/number.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
@@ -388,10 +388,6 @@ static int parse_term(units *v, int scale_indicator, int parenthesised)
tok.next();
negative = !negative;
}
- else if (tok.is_size()) {
- tok.process();
- tok.next();
- }
else
break;
unsigned char c = tok.ch();
@@ -530,6 +526,7 @@ static int parse_term(units *v, int scale_indicator, int parenthesised)
}
}
int si = scale_indicator;
+ int do_next = 0;
if ((c = tok.ch()) != 0 && strchr(SCALE_INDICATOR_CHARS, c) != 0) {
switch (scale_indicator) {
case 'z':
@@ -554,7 +551,9 @@ static int parse_term(units *v, int scale_indicator, int parenthesised)
si = c;
break;
}
- tok.next();
+ // Don't do tok.next() here because the next token might be \s, which
+ // would affect the interpretation of m.
+ do_next = 1;
}
switch (si) {
case 'i':
@@ -610,10 +609,8 @@ static int parse_term(units *v, int scale_indicator, int parenthesised)
default:
assert(0);
}
- if (tok.is_size()) {
- tok.process();
+ if (do_next)
tok.next();
- }
if (negative) {
if (*v == INT_MIN) {
error("numeric overflow");
diff --git a/troff/reg.c b/troff/reg.cc
index 941fcdfab..cefeb87ed 100644
--- a/troff/reg.c
+++ b/troff/reg.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "troff.h"
diff --git a/troff/reg.h b/troff/reg.h
index f84281293..4ecbc9796 100644
--- a/troff/reg.h
+++ b/troff/reg.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
diff --git a/troff/request.h b/troff/request.h
index 7e31022ff..2de9fb7c7 100644
--- a/troff/request.h
+++ b/troff/request.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
typedef void (*REQUEST_FUNCP)();
@@ -58,6 +58,7 @@ public:
void invoke(symbol);
macro *to_macro();
void print_size();
+ int empty();
friend class string_iterator;
friend void chop_macro();
friend int operator==(const macro &, const macro &);
diff --git a/troff/symbol.c b/troff/symbol.cc
index 5261c1e47..f8196a0be 100644
--- a/troff/symbol.c
+++ b/troff/symbol.cc
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
diff --git a/troff/symbol.h b/troff/symbol.h
index bb3491042..316664db4 100644
--- a/troff/symbol.h
+++ b/troff/symbol.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define DONT_STORE 1
diff --git a/troff/token.h b/troff/token.h
index d328c3820..486c6eafd 100644
--- a/troff/token.h
+++ b/troff/token.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
@@ -36,14 +36,10 @@ class token {
TOKEN_BACKSPACE,
TOKEN_BEGIN_TRAP,
TOKEN_CHAR, // a normal printing character
- TOKEN_CHAR_HEIGHT, // \H
- TOKEN_CHAR_SLANT, // \S
TOKEN_DUMMY,
TOKEN_EMPTY, // this is the initial value
TOKEN_END_TRAP,
TOKEN_ESCAPE, // \e
- TOKEN_FONT_NAME, // \f followed by a name
- TOKEN_FONT_POSITION, // \f followed by a digit
TOKEN_HYPHEN_INDICATOR,
TOKEN_INTERRUPT, // \c
TOKEN_ITALIC_CORRECTION, // \/
@@ -56,7 +52,6 @@ class token {
TOKEN_PAGE_EJECTOR,
TOKEN_REQUEST,
TOKEN_RIGHT_BRACE,
- TOKEN_SIZE, // \s
TOKEN_SPACE, // ` ' -- ordinary space
TOKEN_SPECIAL, // a special character -- \' \` \- \(xx
TOKEN_SPREAD, // \p -- break and spread output line
@@ -86,13 +81,12 @@ public:
int left_brace();
int right_brace();
int page_ejector();
+ int hyphen_indicator();
int operator==(const token &); // need this for delimiters, and for conditions
int operator!=(const token &); // ditto
unsigned char ch();
charinfo *get_char(int required = 0);
int add_to_node_list(node **);
- int changes_env();
- int is_size();
int title();
void make_space();
void make_newline();
@@ -170,11 +164,6 @@ inline int token::dummy()
return type == TOKEN_DUMMY;
}
-inline int token::is_size()
-{
- return type == TOKEN_SIZE;
-}
-
inline int token::left_brace()
{
return type == TOKEN_LEFT_BRACE;
@@ -185,15 +174,6 @@ inline int token::right_brace()
return type == TOKEN_RIGHT_BRACE;
}
-inline int token::changes_env()
-{
- return (type == TOKEN_CHAR_HEIGHT
- || type == TOKEN_CHAR_SLANT
- || type == TOKEN_FONT_NAME
- || type == TOKEN_FONT_POSITION
- || type == TOKEN_SIZE);
-}
-
inline int token::tab()
{
return type == TOKEN_TAB;
@@ -209,4 +189,9 @@ inline int token::backspace()
return type == TOKEN_BACKSPACE;
}
+inline int token::hyphen_indicator()
+{
+ return type == TOKEN_HYPHEN_INDICATOR;
+}
+
int has_arg();
diff --git a/troff/troff.h b/troff/troff.h
index e2c38ebb8..2ebeda7f0 100644
--- a/troff/troff.h
+++ b/troff/troff.h
@@ -1,12 +1,12 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.uucp)
+/* Copyright (C) 1989, 1990, 1991, 1992 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 1, or (at your option) any later
+Software Foundation; either version 2, or (at your option) any later
version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,7 +15,7 @@ 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 groff; see the file LICENSE. If not, write to the Free Software
+with groff; see the file COPYING. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
@@ -25,11 +25,11 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <time.h>
#include <stddef.h>
#include <stdlib.h>
-#include <osfcn.h>
#include <errno.h>
#include "lib.h"
#include "assert.h"
+#include "device.h"
#ifdef __GNUG__
#define NO_RETURN volatile
@@ -48,7 +48,6 @@ extern units units_per_inch;
extern units points_to_units(units n);
extern units scale(units, double);
-extern const char *device;
extern int ascii_output_flag;
extern int suppress_output_flag;
@@ -79,7 +78,7 @@ enum warning_type {
WARN_MISSING = 020000,
WARN_INPUT = 040000,
WARN_ESCAPE = 0100000,
- WARN_SPACE = 0200000,
+ WARN_SPACE = 0200000
// change WARN_TOTAL if you add more warning types
};
diff --git a/man/gtroff.man b/troff/troff.man
index b8ce8c303..7435168c6 100644
--- a/man/gtroff.man
+++ b/troff/troff.man
@@ -7,20 +7,29 @@
.ns
.TP \\$1
..
-.TH GTROFF 1 "@MDATE@" "Groff Version @VERSION@"
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.\" The BSD man macros can't handle " in arguments to font change macros,
+.\" so use \(ts instead of ".
+.tr \(ts"
+.TH @G@TROFF 1 "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-gtroff \- format documents
-.SH SYNOPIS
+@g@troff \- format documents
+.SH SYNOPSIS
.ad l
.nr i \n(.i
-.in +\w'\fBgtroff 'u
+.in +\w'\fB@g@troff 'u
.ti \niu
-.B gtroff
+.B @g@troff
.de OP
.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
.el .RB "[\ " "\\$1" "\ ]"
..
-.OP \-abivzCE
+.OP \-abivzCER
.OP \-w name
.OP \-W name
.OP \-d cs
@@ -37,8 +46,10 @@ gtroff \- format documents
.br
.ad b
.SH DESCRIPTION
-gtroff is the central part of the groff document formatting system.
-It is highly compatible with device-independent troff.
+This manual page describes the GNU version of
+.BR troff ,
+which is part of the groff document formatting system.
+It is highly compatible with Unix troff.
Usually it should be invoked using the groff command, which will
also run preprocessors and postprocessors in the appropriate
order and with the appropriate options.
@@ -52,7 +63,7 @@ approximation of the typeset output.
.B \-b
Print a backtrace with each warning or error message. This backtrace
should help track down the cause of the error. The line numbers given
-in the backtrace may not always correct: gtroff's idea of line numbers
+in the backtrace may not always correct: troff's idea of line numbers
gets confused by
.B as
or
@@ -113,6 +124,10 @@ Read in the file
.BI tmac. name\fR.
Normally this will be searched for in @MACRODIR@.
.TP
+.B \-R
+Don't load
+.BR troffrc .
+.TP
.BI \-n num
Number the first page
.IR num .
@@ -148,7 +163,7 @@ to
.I c
must be a one character name;
.I n
-can be any gtroff numeric expression.
+can be any troff numeric expression.
.TP
.BI \-T name
Prepare output for device
@@ -180,7 +195,7 @@ Search directory
for macro files before the normal
.BR @MACRODIR@ .
.SH USAGE
-Only the features not in device-independent troff are described here.
+Only the features not in Unix troff are described here.
.SS Long names
The names of number registers, fonts, strings/macros/diversions,
special characters can be of any length. In escape sequences, where
@@ -217,7 +232,7 @@ file (1 by default.)
There is a new scale indicator
.B z
which has the effect of multiplying by sizescale.
-Requests and escape sequences in gtroff
+Requests and escape sequences in troff
interpret arguments that represent a pointsize as being in units
of scaled points, but they evaluate each such argument
using a default scale indicator of
@@ -263,7 +278,7 @@ whose default scale indicator was neither
nor
.BR z ,
and so
-.B gtroff
+.B troff
disallows this.
Similarily it would make no sense to use a scaling indicator
other than
@@ -273,7 +288,7 @@ or
in a numeric expression whose default scale indicator was
.BR z ,
and so
-.B gtroff
+.B troff
disallows this as well.
.LP
There is also new scale indicator
@@ -445,7 +460,7 @@ to have been defined as a macro and thus contain newlines
(it is not permitted for the argument to
.B \eX
to contain newlines).
-The inclusion of newlines requires an extension to the troff output
+The inclusion of newlines requires an extension to the Unix troff output
format, and will confuse drivers that do not know about this
extension.
.TP
@@ -567,6 +582,15 @@ request to be transparent for the purposes of end of sentence recognition.
.B \e~
This produces an unbreakable space that stretches like a normal inter-word
space when a line is adjusted.
+.TP
+.B \e#
+Everything up to and including the next newline is ignored.
+This is interpreted in copy mode.
+This is like
+.B \e%
+except that
+.B \e%
+does not ignore the terminating newline.
.SS New requests
.TP
.BI .aln\ xx\ yy
@@ -607,7 +631,7 @@ request; normally they modify the value of an existing object.
.TP
.BI .asciify\ xx
This request only exists in order to make it possible
-to make certain gross troff hacks work with gtroff.
+to make certain gross hacks work with GNU troff.
It `unformats' the diversion
.I xx
in such a way that
@@ -700,7 +724,7 @@ the character is transparent for the purposes of end of sentence
recognition;
this is the same as having a zero space factor in \*(tx
(initially characters
-.B """')]*\e(dg"
+.B \(ts')]*\e(dg\e(rq
have this property).
.RE
.TP
@@ -715,6 +739,12 @@ needs to be printed,
.I string
will be processed in a temporary environment and the result
will be wrapped up into a single object.
+Compatibility mode will be turned off
+and the escape character will be set to
+.B \e
+while
+.I string
+is being processed.
Any emboldening, constant spacing or track kerning will be applied
to this object rather than to individual characters in
.IR string .
@@ -740,6 +770,9 @@ There is a special anti-recursion feature:
use of character within the character's definition
will be handled like normal characters not defined with
.BR char .
+A character definition can be removed with the
+.B rchar
+request.
.TP
.BI .chop\ xx
Chop the last character off macro, string, or diversion
@@ -774,6 +807,28 @@ disable it.
In compatibility mode, long names are not recognised, and the
incompatibilities caused by long names do not arise.
.TP
+.BI .do\ xxx
+Interpret
+.I .xxx
+with compatibility mode disabled.
+For example,
+.RS
+.IP
+.B
+\&.do fam T
+.LP
+would have the same effect as
+.IP
+.B
+\&.fam T
+.LP
+except that it would work even if compatibility mode had been enabled.
+Note that the previous compatibility mode is restored before any files
+sourced by
+.I xxx
+are interpreted.
+.RE
+.TP
.BI .fam\ xx
Set the current font family to
.IR xx .
@@ -957,6 +1012,14 @@ traps and diversion traps) on stderr. Empty slots in the page trap
list are printed as well, because they can affect the priority of
subsequently planted traps.
.TP
+.BI .rchar\ c1\ c2\|.\|.\|.
+Remove the definitions of characters
+.IR c1 ,
+.IR c2 ,\|.\|.\|.
+This undoes the effect of a
+.B char
+request.
+.TP
.B .rj
.TQ
.BI .rj\ n
@@ -980,6 +1043,27 @@ Rename number register
to
.IR yy .
.TP
+.BI .shc\ c
+Set the soft hyphen character to
+.IR c .
+If
+.I c
+is omitted,
+the soft hyphen character will be set to the default
+.BR \e(hy .
+The soft hyphen character is the character which will be inserted
+when a word is hyphenated at a line break.
+If the soft hyphen character does not exist in the font of the character
+immediately preceding a potential break point,
+then the line will not be broken at that point.
+Neither definitions (specified with the
+.B char
+request)
+nor translations (specified with the
+.B tr
+request)
+are considered when finding the soft hyphen character.
+.TP
.BI .shift\ n
In a macro, shift the arguments by
.I n
@@ -1094,7 +1178,7 @@ Unlike with the
request,
the file cannot contain characters such as
.SM NUL
-that are not legal gtroff input characters.
+that are not legal troff input characters.
.RE
.TP
.B .troff
@@ -1173,7 +1257,7 @@ request.
.I anything
is read in copy mode;
a leading
-.B """"
+.B \(ts
will be stripped.
.SS Extended requests
.TP
@@ -1181,7 +1265,8 @@ will be stripped.
When used in a diversion, this will embed in the diversion an object which,
when reread, will cause the contents of
.I filename
-to be transparently copied through to the output. In troff, the
+to be transparently copied through to the output.
+In Unix troff, the
contents of
.I filename
is immediately copied through to the output regardless of whether
@@ -1206,7 +1291,7 @@ request has an optional third argument.
This argument gives the external name of the font,
which is used for finding the font description file.
The second argument gives the internal name of the font
-which is used to refer to the font in gtroff after it has been mounted.
+which is used to refer to the font in troff after it has been mounted.
If there is no third argument then the internal name will be used
as the external name.
This feature allows you to use fonts with long names in compatibility mode.
@@ -1227,11 +1312,11 @@ if the end of a sentence occurs at the end of a line in fill mode, then
both an inter-word space and a sentence space will be added;
if two spaces follow the end of a sentence in the middle of a line,
then the second space will be a sentence space.
-Note that the behaviour of troff will be exactly
-that exhibited by gtroff if a second argument is never given to the
+Note that the behaviour of Unix troff will be exactly
+that exhibited by GNU troff if a second argument is never given to the
.B ss
request.
-In gtroff, as in troff, you should always
+In GNU troff, as in Unix troff, you should always
follow a sentence with either a newline or two spaces.
.TP
.BI .ta\ n1\ n2\|.\|.\|.nn \ T\ r1\ r2\|.\|.\|.\|rn
@@ -1296,7 +1381,7 @@ The number of the next free font position.
.B \en[.g]
Always 1.
Macros should use this to determine whether they are running
-under gtroff.
+under GNU troff.
.TP
.B \en[.hlc]
The number of immediately preceding consecutive hyphenated lines.
@@ -1324,6 +1409,17 @@ request.)
.B \en[.in]
The indent that applies to the current output line.
.TP
+.B \en[.kern]
+.B 1
+if pairwise kerning is enabled,
+.B 0
+otherwise.
+.TP
+.B \en[.lg]
+The current ligature mode (as set by the
+.B lg
+request.)
+.TP
.B \en[.ll]
The line length that applies to the current output line.
.TP
@@ -1468,7 +1564,7 @@ which can be found in the
.B \en[.fp]
register;
although
-.B gtroff
+.B troff
does not enforce this strictly,
it will not allow a font to be mounted at a position whose number is much
greater than that of any currently used position.
@@ -1546,7 +1642,7 @@ has been defined by the
request.
.SS Warnings
The warnings that can be given by
-.B gtroff
+.B troff
are divided into the following categories.
The name associated with each warning is used by the
.B \-w
@@ -1642,8 +1738,6 @@ and the first two characters of the name make a defined name.
The request or macro will not be invoked.
When this warning is given, no macro is automatically defined.
This is enabled by default.
-.B mac
-is given.
This warning will never occur in compatibility mode.
.LP
There are also names that can be used to refer to groups of warnings:
@@ -1662,7 +1756,7 @@ All warnings.
.SS Incompatibilities
.LP
Long names cause some incompatibilities.
-Troff will interpret
+Unix troff will interpret
.IP
.B
\&.dsabcd
@@ -1671,19 +1765,19 @@ as defining a string
.B ab
with contents
.BR cd .
-Normally, gtroff will interpret this as a call of a macro named
+Normally, GNU troff will interpret this as a call of a macro named
.BR dsabcd .
-Also troff will interpret
+Also Unix troff will interpret
.B \e*[
or
.B \en[
as references to a string or number register called
.BR [ .
-In gtroff, however, this will normally be interpreted as the start
+In GNU troff, however, this will normally be interpreted as the start
of a long name.
In
.I compatibility mode
-gtroff will interpret these things in the traditional way.
+GNU troff will interpret these things in the traditional way.
In compatibility mode, however, long names are not recognised.
Compatibility mode can be turned on with the
.B \-C
@@ -1694,30 +1788,27 @@ The number register
.B \en(.C
is 1 if compatibility mode is on, 0 otherwise.
.LP
-.B gtroff
+GNU troff
does not allow the use of the escape sequences
.BR \\e\e|\e^\e&\e}\e{\e (space) \e'\e`\e-\e_\e!\e%\ec
in names of strings, macros, diversions, number registers,
-fonts or environments; traditional troff does.
+fonts or environments; Unix troff does.
The
.B \eA
escape sequence may be helpful in avoiding use of these
escape sequences in names.
.LP
Fractional pointsizes cause one noteworthy incompatibility.
-In
-.B troff
-the
+In Unix troff the
.B ps
request ignores scale indicators and so
.IP
.B .ps\ 10u
.LP
will set the pointsize to 10 points, whereas in
-.B gtroff
-it will set the pointsize to 10 scaled points.
+GNU troff it will set the pointsize to 10 scaled points.
.LP
-In gtroff there is a fundamental difference between unformatted,
+In GNU troff there is a fundamental difference between unformatted,
input characters, and formatted, output characters.
Everything that affects how an output character
will be output is stored with the character; once an output
@@ -1754,7 +1845,7 @@ For example,
.LP
will print
.B \e\e
-in gtroff;
+in GNU troff;
each pair of input
.BR \e s
is turned into one output
@@ -1762,7 +1853,7 @@ is turned into one output
and the resulting output
.BR \e s
are not interpreted as escape characters when they are reread.
-Troff would interpret them as escape characters
+Unix troff would interpret them as escape characters
when they were reread and would end up printing one
.BR \e .
The correct way to obtain a printable
@@ -1771,7 +1862,7 @@ is to use the
.B \ee
escape sequence: this will always print a single instance of the
current escape character, regardless of whether or not it is used in a
-diversion; it will also work in both gtroff and troff.
+diversion; it will also work in both GNU troff and Unix troff.
If you wish for some reason to store in a diversion an escape
sequence that will be interpreted when the diversion is reread,
you can either use the traditional
@@ -1795,7 +1886,8 @@ Default device.
A colon separated list of directories in which to search for the
.BI dev name
directory.
-Gtroff will search in directories given in the
+.B troff
+will search in directories given in the
.B \-F
option before these, and in standard directories
.RB ( @FONTPATH@ )
@@ -1805,10 +1897,13 @@ after these.
.B GROFF_HYPHEN
File containing hyphenation patterns.
.SH FILES
-.TP \w'@FONTDIR@/devname/DESC'u+3n
+.Tp \w'@FONTDIR@/devname/DESC'u+3n
.B @HYPHENFILE@
Hyphenation patterns
.TP
+.B @MACRODIR@/troffrc
+Initialization file
+.TP
.BI @MACRODIR@/tmac. name
Macro files
.TP
@@ -1823,13 +1918,12 @@ of device
.IR name .
.SH "SEE ALSO"
.BR groff (@MAN1EXT@)
-.BR gtbl (@MAN1EXT@),
-.BR gpic (@MAN1EXT@),
-.BR geqn (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@),
.BR grops (@MAN1EXT@),
.BR grodvi (@MAN1EXT@),
.BR grotty (@MAN1EXT@),
.BR groff_font (@MAN5EXT@),
-.BR groff_out (@MAN5EXT@)
-.br
-.I "Groff Character Names"
+.BR groff_out (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@)
diff --git a/tty/Makefile b/tty/Makefile
deleted file mode 100644
index 1a33240e3..000000000
--- a/tty/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-BINDIR=/usr/local/bin
-CC=g++
-CFLAGS=-g -O -Wall -Wcast-qual -Wwrite-strings
-LDFLAGS=-g
-OLDCC=gcc
-OLDCFLAGS=-g
-MLIBS=-lm
-INCLUDES=-I../driver -I../lib
-DEFINES=
-BINDIR=/usr/local/bin
-FONTDIR=/usr/local/lib/groff/font
-MACRODIR=/usr/local/lib/groff/tmac
-ETAGS=etags
-ETAGSFLAGS=-p
-DEVICES=devascii devlatin1
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $<
-
-all: grotty $(DEVICES)
-
-grotty: tty.o ../driver/libdriver.a ../lib/libgroff.a
- $(CC) $(LDFLAGS) -o $@ tty.o \
- ../driver/libdriver.a ../lib/libgroff.a $(MLIBS)
-
-tty.o : ../driver/printer.h ../driver/driver.h ../lib/font.h
-
-install.bin: grotty
- -[ -d $(BINDIR) ] || mkdir $(BINDIR)
- -rm -f $(BINDIR)/grotty
- cp grotty $(BINDIR)
- @for dir in $(DEVICES); do \
- echo Making install.bin in $$dir; \
- (cd $$dir; $(MAKE) "FONTDIR=$(FONTDIR)" install.bin); done
-
-install.nobin:
- -[ -d $(MACRODIR) ] || mkdir $(MACRODIR)
- -rm -f $(MACRODIR)/tmac.tty
- cp tmac.tty $(MACRODIR)
- @for dir in $(DEVICES); do \
- echo Making install.nobin in $$dir; \
- (cd $$dir; $(MAKE) "FONTDIR=$(FONTDIR)" install.nobin); done
-
-install: install.bin install.nobin
-
-clean:
- -rm -f *.o core grotty
- @for dir in $(DEVICES); do \
- echo Making clean in $$dir; \
- (cd $$dir; $(MAKE) clean); done
-
-
-distclean: clean
- -rm -f TAGS
-
-realclean: distclean
-
-TAGS: tty.c
- $(ETAGS) $(ETAGSFLAGS) tty.c
-
-$(DEVICES): FORCE
- @echo Making all in $@
- @cd $@; $(MAKE) all
-FORCE:
diff --git a/tty/TODO b/tty/TODO
deleted file mode 100644
index c2472ca98..000000000
--- a/tty/TODO
+++ /dev/null
@@ -1,6 +0,0 @@
-Add character types to R.proto.
-
-Option to set number of lines and columns on the command line.
-
-Option not to limit the number of lines on a page and mark the end
-with a formfeed.
diff --git a/tty/devascii/Makefile b/tty/devascii/Makefile
deleted file mode 100644
index 115563c2e..000000000
--- a/tty/devascii/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-FONTDIR=/usr/local/lib/groff/font
-DEVICEDIR=$(FONTDIR)/devascii
-RES=240
-CPI=10
-LPI=6
-FONTS=R I B BI
-
-all: $(FONTS) DESC
-
-$(FONTS): R.proto
- @echo Making $@
- @-rm -f $@
- @(charwidth=`expr $(RES) / $(CPI)` ; \
- sed -e "s/^name [A-Z]*$$/name $@/" \
- -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \
- -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
- -e "s/^internalname .*$$/internalname $@/" \
- -e "/^internalname/s/BI/3/" \
- -e "/^internalname/s/B/2/" \
- -e "/^internalname/s/I/1/" \
- -e "/^internalname .*[^ 0-9]/d" \
- R.proto >$@)
-
-DESC: DESC.proto
- @echo Making $@
- @-rm -f $@
- @sed -e "s/^res .*$$/res $(RES)/" \
- -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
- -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
- -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
- DESC.proto >$@
-
-install.nobin: all
- -[ -d $(FONTDIR) ] || mkdir $(FONTDIR)
- -[ -d $(DEVICEDIR) ] || mkdir $(DEVICEDIR)
- -cd $(DEVICEDIR); rm -f $(FONTS) DESC
- cp $(FONTS) DESC $(DEVICEDIR)
-
-install.bin:
-
-install: install.bin install.nobin
-
-clean:
- -rm -f $(FONTS) DESC
diff --git a/tty/devlatin1/Makefile b/tty/devlatin1/Makefile
deleted file mode 100644
index 13a07508f..000000000
--- a/tty/devlatin1/Makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-#Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
-# Written by James Clark (jjc@jclark.uucp)
-#
-#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 1, 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 groff; see the file LICENSE. If not, write to the Free Software
-#Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-FONTDIR=/usr/local/lib/groff/font
-DEVICEDIR=$(FONTDIR)/devlatin1
-# resolution in units per inch
-RES=240
-# characters per inch
-CPI=10
-# lines per inch
-LPI=6
-FONTS=R I B BI
-
-all: $(FONTS) DESC
-
-$(FONTS): R.proto
- @echo Making $@
- @-rm -f $@
- @(charwidth=`expr $(RES) / $(CPI)` ; \
- sed -e "s/^name [A-Z]*$$/name $@/" \
- -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \
- -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
- -e "s/^internalname .*$$/internalname $@/" \
- -e "/^internalname/s/BI/3/" \
- -e "/^internalname/s/B/2/" \
- -e "/^internalname/s/I/1/" \
- -e "/^internalname .*[^ 0-9]/d" \
- R.proto >$@)
-
-DESC: DESC.proto
- @echo Making $@
- @-rm -f $@
- @sed -e "s/^res .*$$/res $(RES)/" \
- -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
- -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
- -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
- DESC.proto >$@
-
-install.nobin: all
- -[ -d $(FONTDIR) ] || mkdir $(FONTDIR)
- -[ -d $(DEVICEDIR) ] || mkdir $(DEVICEDIR)
- -cd $(DEVICEDIR); rm -f $(FONTS) DESC
- cp $(FONTS) DESC $(DEVICEDIR)
-
-install.bin:
-
-install: install.bin install.nobin
-
-clean:
- -rm -f $(FONTS) DESC
-
-distclean: clean
-
-realclean: distclean
-
-TAGS:
diff --git a/tty/tmac.tty b/tty/tmac.tty
deleted file mode 100644
index c58480bd4..000000000
--- a/tty/tmac.tty
+++ /dev/null
@@ -1,40 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.nroff
-.ftr CW B
-.ftr C B
-.ftr CR B
-.po 0
-.de tty-char
-.if !c\\$1 .char \\$1 \\$2
-..
-.tty-char \(14 1/4
-.tty-char \(12 1/2
-.tty-char \(34 1/4
-.tty-char \(fi fi
-.tty-char \(fl fl
-.tty-char \(Fi ffi
-.tty-char \(Fl ffl
-.tty-char \(<- <-
-.tty-char \(-> ->
-.tty-char \(<> <->
-.tty-char \(lA <=
-.tty-char \(rA =>
-.tty-char \(hA <=>
-.tty-char \(ua ^
-.tty-char \(da v
-.tty-char \(uA ^
-.tty-char \(dA v
-.tty-char \(em --
-.tty-char \(en -
-.tty-char \(ru _
-.tty-char \(ul _
-.tty-char \(br |
-.tty-char \(bv |
-.tty-char \(sl /
-.tty-char \(+- +-
-.tty-char \(co (C)
-.tty-char \(rg (R)
-.tty-char \(<= <=
-.tty-char \(>= >=
-.cp \n(_C
diff --git a/xditview/ChangeLog b/xditview/ChangeLog
index 759230930..3bbcf8aef 100644
--- a/xditview/ChangeLog
+++ b/xditview/ChangeLog
@@ -1,3 +1,83 @@
+Sat Aug 15 12:56:39 1992 James Clark (jjc at jclark)
+
+ * GXditview.ad: Bind space and return to NextPage. Bind backspace
+ and delete to previous page.
+
+ * DviChar.c (Adobe_Symbol_map): Add `an'.
+
+ * DviChar.c (Adobe_Symbol_map): Add arrowvertex, arrowverttp, and
+ arrowvertbt.
+
+Mon Aug 10 11:54:27 1992 James Clark (jjc at jclark)
+
+ * FontMap: Add m/p fields to the fonts names.
+
+Sat Aug 8 12:00:28 1992 James Clark (jjc at jclark)
+
+ * DESC: Leave font positions 5-9 blank.
+
+Tue Jul 28 11:37:05 1992 James Clark (jjc at jclark)
+
+ * Imakefile: Don't use gendef. Pass definition of FONTPATH using
+ DEFINES.
+ (path.h): Deleted.
+ (device.c): Don't include path.h. Provide default definition of
+ FONTPATH.
+
+Mon Jul 6 14:06:53 1992 James Clark (jjc at jclark)
+
+ * Imakefile: Don't install tmac.X and tmac.Xps.
+ * tmac.X, tmac.Xps: Moved to ../macros.
+
+ * Imakefile: Don't install eqnchar.
+ * eqnchar: Deleted.
+
+Sun Jun 14 12:55:02 1992 James Clark (jjc@jclark)
+
+ * tmac.Xps: Handle OE, oe, lq, rq.
+ * draw.c (FakeCharacter): Don't handle these.
+
+ * draw.c (FakeCharacter): Don't handle f/.
+
+Mon Jun 8 11:46:37 1992 James Clark (jjc@jclark)
+
+ * tmac.X: Translate char160 to space.
+
+Sun Jun 7 14:39:53 1992 James Clark (jjc@jclark)
+
+ * tmac.X: Do `mso tmac.psic' before restoring compatibility mode.
+
+ * tmac.X: Add \(OE, \(oe, \(ah, \(ao, \(ho.
+
+ * tmac.Xps: Make it work in compatibility mode.
+ Redo existing character definitions with .Xps-char.
+ Add more character definitions.
+ (Xps-char): New macro.
+
+Sat Jun 6 21:46:03 1992 James Clark (jjc@jclark)
+
+ * DviChar.c (Adobe_Symbol_map): Add +h, +f, +p, Fn, lz.
+ * tmac.X: Add \(bq, \(Bq, \(aq.
+ * tmac.Xps: Handle \(aq, \(bq, \(Bq, \(Fn.
+
+Wed Jun 3 11:11:15 1992 James Clark (jjc@jclark)
+
+ * DviChar.c (Adobe_Symbol_map): Add wp.
+
+Tue Apr 21 09:21:59 1992 James Clark (jjc at jclark)
+
+ * GXditview.ad: Bind n, p, q keys to NextPage, PreviousPage and
+ Quit actions.
+
+ * xditview.c (RerasterizeAction): New function.
+ (xditview_actions): Add RerasterizeAction.
+ * GXditview.ad: Bind r key to Rerasterize action.
+
+Fri Apr 17 08:25:36 1992 James Clark (jjc at jclark)
+
+ * xditview.c: Add -filename option.
+ (main): Copy any -filename argument into current_file_name.
+
Mon Mar 16 10:21:58 1992 James Clark (jjc at jclark)
* tmac.X: Load tmac.pspic.
diff --git a/xditview/DESC b/xditview/DESC
index 4d0c86177..172170c9c 100644
--- a/xditview/DESC
+++ b/xditview/DESC
@@ -1,8 +1,9 @@
styles R I B BI
-fonts 1 S
+fonts 6 0 0 0 0 0 S
sizes 8 10 12 14 18 24 0
res 75
X11
hor 1
vert 1
unitwidth 10
+postpro gxditview
diff --git a/xditview/DviChar.c b/xditview/DviChar.c
index 2099b26d2..dc511bf49 100644
--- a/xditview/DviChar.c
+++ b/xditview/DviChar.c
@@ -470,7 +470,7 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "*G", /* 71 */},
{ "*Y", /* 72 */},
{ "*I", /* 73 */},
-{ 0, /* 74 */},
+{ "+h", /* 74 */},
{ "*K", /* 75 */},
{ "*L", /* 76 */},
{ "*M", /* 77 */},
@@ -502,7 +502,7 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "*g", /* 103 */},
{ "*y", /* 104 */},
{ "*i", /* 105 */},
-{ 0, /* 106 */},
+{ "+f", /* 106 */},
{ "*k", /* 107 */},
{ "*l", /* 108 */},
{ "*m", "\265", /* 109 */},
@@ -514,7 +514,7 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "*s", /* 115 */},
{ "*t", /* 116 */},
{ "*u", /* 117 */},
-{ 0, /* 118 */},
+{ "+p", /* 118 */},
{ "*w", /* 119 */},
{ "*c", /* 120 */},
{ "*q", /* 121 */},
@@ -562,16 +562,16 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "<=", /* 163 */},
{ "f/", /* 164 */},
{ "if", /* 165 */},
-{ 0, /* 166 */},
+{ "Fn", /* 166 */},
{ "CL", /* 167 */},
{ "DI", /* 168 */},
{ "HE", /* 169 */},
{ "SP", /* 170 */},
{ "<>", /* 171 */},
{ "<-", /* 172 */},
-{ "ua", /* 173 */},
+{ "ua", "arrowverttp" /* 173 */},
{ "->", /* 174 */},
-{ "da", /* 175 */},
+{ "da", "arrowvertbt" /* 175 */},
{ "de", "\260", /* 176 */},
{ "+-", "\261", /* 177 */},
{ "sd", /* 178 */},
@@ -585,13 +585,13 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "==", /* 186 */},
{ "~=", "~~", /* 187 */},
{ 0, /* 188 */},
-{ 0, /* 189 */},
-{ 0, /* 190 */},
+{ "arrowvertex", /* 189 */},
+{ "an", /* 190 */},
{ "CR", /* 191 */},
{ "Ah", /* 192 */},
{ "Im", /* 193 */},
{ "Re", /* 194 */},
-{ 0, /* 195 */},
+{ "wp", /* 195 */},
{ "c*", /* 196 */},
{ "c+", /* 197 */},
{ "es", /* 198 */},
@@ -620,7 +620,7 @@ static DviCharNameMap Adobe_Symbol_map = {
{ "uA", /* 221 */},
{ "rA", /* 222 */},
{ "dA", /* 223 */},
-{ 0, /* 224 */},
+{ "lz", /* 224 */},
{ "la", /* 225 */},
{ 0, /* 226 */},
{ 0, /* 227 */},
diff --git a/xditview/FontMap b/xditview/FontMap
index b8582249f..90911f048 100644
--- a/xditview/FontMap
+++ b/xditview/FontMap
@@ -1,17 +1,17 @@
-TR -adobe-times-medium-r-normal--*-*-*-*-*-*-iso8859-1
-TI -adobe-times-medium-i-normal--*-*-*-*-*-*-iso8859-1
-TB -adobe-times-bold-r-normal--*-*-*-*-*-*-iso8859-1
-TBI -adobe-times-bold-i-normal--*-*-*-*-*-*-iso8859-1
-CR -adobe-courier-medium-r-normal--*-*-*-*-*-*-iso8859-1
-CI -adobe-courier-medium-o-normal--*-*-*-*-*-*-iso8859-1
-CB -adobe-courier-bold-r-normal--*-*-*-*-*-*-iso8859-1
-CBI -adobe-courier-bold-o-normal--*-*-*-*-*-*-iso8859-1
-HR -adobe-helvetica-medium-r-normal--*-*-*-*-*-*-iso8859-1
-HI -adobe-helvetica-medium-o-normal--*-*-*-*-*-*-iso8859-1
-HB -adobe-helvetica-bold-r-normal--*-*-*-*-*-*-iso8859-1
-HBI -adobe-helvetica-bold-o-normal--*-*-*-*-*-*-iso8859-1
-NR -adobe-new century schoolbook-medium-r-normal--*-*-*-*-*-*-iso8859-1
-NI -adobe-new century schoolbook-medium-i-normal--*-*-*-*-*-*-iso8859-1
-NB -adobe-new century schoolbook-bold-r-normal--*-*-*-*-*-*-iso8859-1
-NBI -adobe-new century schoolbook-bold-i-normal--*-*-*-*-*-*-iso8859-1
-S -adobe-symbol-medium-r-normal--*-*-*-*-*-*-adobe-fontspecific
+TR -adobe-times-medium-r-normal--*-*-*-*-p-*-iso8859-1
+TI -adobe-times-medium-i-normal--*-*-*-*-p-*-iso8859-1
+TB -adobe-times-bold-r-normal--*-*-*-*-p-*-iso8859-1
+TBI -adobe-times-bold-i-normal--*-*-*-*-p-*-iso8859-1
+CR -adobe-courier-medium-r-normal--*-*-*-*-m-*-iso8859-1
+CI -adobe-courier-medium-o-normal--*-*-*-*-m-*-iso8859-1
+CB -adobe-courier-bold-r-normal--*-*-*-*-m-*-iso8859-1
+CBI -adobe-courier-bold-o-normal--*-*-*-*-m-*-iso8859-1
+HR -adobe-helvetica-medium-r-normal--*-*-*-*-p-*-iso8859-1
+HI -adobe-helvetica-medium-o-normal--*-*-*-*-p-*-iso8859-1
+HB -adobe-helvetica-bold-r-normal--*-*-*-*-p-*-iso8859-1
+HBI -adobe-helvetica-bold-o-normal--*-*-*-*-p-*-iso8859-1
+NR -adobe-new century schoolbook-medium-r-normal--*-*-*-*-p-*-iso8859-1
+NI -adobe-new century schoolbook-medium-i-normal--*-*-*-*-p-*-iso8859-1
+NB -adobe-new century schoolbook-bold-r-normal--*-*-*-*-p-*-iso8859-1
+NBI -adobe-new century schoolbook-bold-i-normal--*-*-*-*-p-*-iso8859-1
+S -adobe-symbol-medium-r-normal--*-*-*-*-p-*-adobe-fontspecific
diff --git a/xditview/GXditview.ad b/xditview/GXditview.ad
index 74b83ed8d..e99ff5e16 100644
--- a/xditview/GXditview.ad
+++ b/xditview/GXditview.ad
@@ -12,15 +12,31 @@ GXditview.paned.label.skipAdjust: true
GXditview.paned.viewport.dvi.translations: #augment \
<Btn1Down>: XawPositionSimpleMenu(menu) MenuPopup(menu)\n\
<Key>Next: NextPage()\n\
+ <Key>n: NextPage()\n\
+ <Key>space: NextPage()\n\
+ <Key>Return: NextPage()\n\
<Key>Prior: PreviousPage()\n\
+ <Key>p: PreviousPage()\n\
+ <Key>BackSpace: PreviousPage()\n\
+ <Key>Delete: PreviousPage()\n\
<Key>Select: SelectPage()\n\
- <Key>Find: OpenFile()
+ <Key>Find: OpenFile()\n\
+ <Key>r: Rerasterize()\n\
+ <Key>q: Quit()
GXditview.paned.label.translations: #augment \
<Btn1Down>: XawPositionSimpleMenu(menu) MenuPopup(menu)\n\
<Key>Next: NextPage()\n\
+ <Key>n: NextPage()\n\
+ <Key>space: NextPage()\n\
+ <Key>Return: NextPage()\n\
<Key>Prior: PreviousPage()\n\
+ <Key>p: PreviousPage()\n\
+ <Key>BackSpace: PreviousPage()\n\
+ <Key>Delete: PreviousPage()\n\
<Key>Select: SelectPage()\n\
- <Key>Find: OpenFile()
+ <Key>Find: OpenFile()\n\
+ <Key>r: Rerasterize()\n\
+ <Key>q: Quit()
GXditview.menu.nextPage.label: Next Page
GXditview.menu.previousPage.label: Previous Page
GXditview.menu.selectPage.label: Select Page
diff --git a/xditview/Imakefile b/xditview/Imakefile
index a9302dd44..43b86ca85 100644
--- a/xditview/Imakefile
+++ b/xditview/Imakefile
@@ -1,7 +1,6 @@
GROFF_LIBDIR = /usr/local/lib/groff
GROFF_FONTDIR = $(GROFF_LIBDIR)/font
GROFF_FONTPATH = .:$(GROFF_FONTDIR):/usr/local/lib/font:/usr/lib/font
-GROFF_MACRODIR = $(GROFF_LIBDIR)/tmac
DPIS = 75 100
PROGRAMS = gxditview xtotroff
@@ -15,22 +14,14 @@ SRCS2 = xtotroff.c XFontName.c DviChar.c
OBJS2 = xtotroff.o XFontName.o DviChar.o
INCLUDES = -I$(TOOLKITSRC) -I$(TOP)
MATHLIB = -lm
-DEFINES = $(SIGNAL_DEFINES) # -DX_NOT_STDC_ENV
+DEFINES = $(SIGNAL_DEFINES) -DFONTPATH=\"$(GROFF_FONTPATH)\" # -DX_NOT_STDC_ENV
ComplexProgramTarget_1(gxditview,$(LOCAL_LIBRARIES),$(MATHLIB))
NormalProgramTarget(xtotroff,$(OBJS2),$(DEPXLIB),$(XLIB), /**/)
InstallAppDefaults(GXditview)
-install::
- -[ -d $(GROFF_MACRODIR) ] || mkdir $(GROFF_MACRODIR)
- -rm -f $(GROFF_MACRODIR)/tmac.Xps
- cp tmac.Xps $(GROFF_MACRODIR)
-
install.dev: xtotroff
- -[ -d $(GROFF_MACRODIR) ] || mkdir $(GROFF_MACRODIR)
- -rm -f $(GROFF_MACRODIR)/tmac.X
- cp tmac.X $(GROFF_MACRODIR)
-[ -d $(GROFF_FONTDIR) ] || mkdir $(GROFF_FONTDIR)
@dir=`pwd`; \
for dpi in $(DPIS); do \
@@ -39,14 +30,10 @@ install.dev: xtotroff
|| mkdir $(GROFF_FONTDIR)/devX$$dpi; \
rm -f $(GROFF_FONTDIR)/devX$$dpi/DESC; \
sed -e "s/res 75/res $$dpi/" DESC >$(GROFF_FONTDIR)/devX$$dpi/DESC; \
- rm -f $(GROFF_FONTDIR)/devX$$dpi/eqnchar; \
- cp eqnchar $(GROFF_FONTDIR)/devX$$dpi; \
(cd $(GROFF_FONTDIR)/devX$$dpi; \
$$dir/xtotroff -g -r $$dpi -s 10 $$dir/FontMap); \
[ -d $(GROFF_FONTDIR)/devX$$dpi-12 ] \
|| mkdir $(GROFF_FONTDIR)/devX$$dpi-12; \
- rm -f $(GROFF_FONTDIR)/devX$$dpi-12/eqnchar; \
- cp eqnchar $(GROFF_FONTDIR)/devX$$dpi-12; \
rm -f $(GROFF_FONTDIR)/devX$$dpi-12/DESC; \
sed -e "s/res 75/res $$dpi/" -e 's/unitwidth 10/unitwidth 12/' DESC \
>$(GROFF_FONTDIR)/devX$$dpi-12/DESC; \
@@ -54,9 +41,7 @@ install.dev: xtotroff
$$dir/xtotroff -g -r $$dpi -s 12 $$dir/FontMap); \
done
-path.h: FORCE
- @/bin/sh ../gendef path.h "FONTPATH=\"$(GROFF_FONTPATH)\""
-
-device.o: path.h
+extraclean: clean
+ -rm -f junk tmp grot old
FORCE:
diff --git a/xditview/Makefile b/xditview/Makefile
index 0bbcab563..049a60df1 100644
--- a/xditview/Makefile
+++ b/xditview/Makefile
@@ -28,11 +28,11 @@
# -------------------------------------------------------------------------
# platform-specific configuration parameters - edit sun.cf to change
-# platform: $XConsortium: sun.cf,v 1.69 91/09/09 18:23:59 rws Exp $
+# platform: $XConsortium: sun.cf,v 1.72.1.1 92/03/18 13:13:37 rws Exp $
# operating system: SunOS 4.1.1
-# $XConsortium: sunLib.rules,v 1.6 91/03/24 17:55:58 rws Exp $
+# $XConsortium: sunLib.rules,v 1.7 91/12/20 11:19:47 rws Exp $
# -------------------------------------------------------------------------
# site-specific configuration parameters that go after
@@ -91,7 +91,7 @@
INSTINCFLAGS = -m 0444
INSTMANFLAGS = -m 0444
INSTDATFLAGS = -m 0444
- INSTKMEMFLAGS = -m 4755
+ INSTKMEMFLAGS = -g kmem -m 2755
TOP_INCLUDES = -I$(INCROOT)
@@ -201,7 +201,7 @@
XILIBSRC = $(EXTENSIONSRC)/lib/xinput
PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX
-# $XConsortium: sunLib.tmpl,v 1.11 91/07/31 11:32:08 rws Exp $
+# $XConsortium: sunLib.tmpl,v 1.14.1.1 92/03/17 14:58:46 rws Exp $
SHLIBLDFLAGS = -assert pure-text
PICFLAGS = -pic
@@ -213,6 +213,7 @@ PICFLAGS = -pic
XLIB = $(EXTENSIONLIB) -lX11
DEPXMULIB = $(USRLIBDIR)/libXmu.sa.$(SOXMUREV)
+ XMULIBONLY = -lXmu
XMULIB = -lXmu
DEPOLDXLIB =
@@ -270,7 +271,6 @@ PICFLAGS = -pic
GROFF_LIBDIR = /usr/local/lib/groff
GROFF_FONTDIR = $(GROFF_LIBDIR)/font
GROFF_FONTPATH = .:$(GROFF_FONTDIR):/usr/local/lib/font:/usr/lib/font
-GROFF_MACRODIR = $(GROFF_LIBDIR)/tmac
DPIS = 75 100
PROGRAMS = gxditview xtotroff
@@ -284,7 +284,7 @@ SRCS2 = xtotroff.c XFontName.c DviChar.c
OBJS2 = xtotroff.o XFontName.o DviChar.o
INCLUDES = -I$(TOOLKITSRC) -I$(TOP)
MATHLIB = -lm
-DEFINES = $(SIGNAL_DEFINES) # -DX_NOT_STDC_ENV
+DEFINES = $(SIGNAL_DEFINES) -DFONTPATH=\"$(GROFF_FONTPATH)\" # -DX_NOT_STDC_ENV
OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
SRCS = $(SRCS1) $(SRCS2) $(SRCS3)
@@ -334,15 +334,7 @@ install:: GXditview.ad
else (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); fi
$(INSTALL) -c $(INSTAPPFLAGS) GXditview.ad $(DESTDIR)$(XAPPLOADDIR)/GXditview
-install::
- -[ -d $(GROFF_MACRODIR) ] || mkdir $(GROFF_MACRODIR)
- -rm -f $(GROFF_MACRODIR)/tmac.Xps
- cp tmac.Xps $(GROFF_MACRODIR)
-
install.dev: xtotroff
- -[ -d $(GROFF_MACRODIR) ] || mkdir $(GROFF_MACRODIR)
- -rm -f $(GROFF_MACRODIR)/tmac.X
- cp tmac.X $(GROFF_MACRODIR)
-[ -d $(GROFF_FONTDIR) ] || mkdir $(GROFF_FONTDIR)
@dir=`pwd`; \
for dpi in $(DPIS); do \
@@ -351,14 +343,10 @@ install.dev: xtotroff
|| mkdir $(GROFF_FONTDIR)/devX$$dpi; \
rm -f $(GROFF_FONTDIR)/devX$$dpi/DESC; \
sed -e "s/res 75/res $$dpi/" DESC >$(GROFF_FONTDIR)/devX$$dpi/DESC; \
- rm -f $(GROFF_FONTDIR)/devX$$dpi/eqnchar; \
- cp eqnchar $(GROFF_FONTDIR)/devX$$dpi; \
(cd $(GROFF_FONTDIR)/devX$$dpi; \
$$dir/xtotroff -g -r $$dpi -s 10 $$dir/FontMap); \
[ -d $(GROFF_FONTDIR)/devX$$dpi-12 ] \
|| mkdir $(GROFF_FONTDIR)/devX$$dpi-12; \
- rm -f $(GROFF_FONTDIR)/devX$$dpi-12/eqnchar; \
- cp eqnchar $(GROFF_FONTDIR)/devX$$dpi-12; \
rm -f $(GROFF_FONTDIR)/devX$$dpi-12/DESC; \
sed -e "s/res 75/res $$dpi/" -e 's/unitwidth 10/unitwidth 12/' DESC \
>$(GROFF_FONTDIR)/devX$$dpi-12/DESC; \
@@ -366,10 +354,8 @@ install.dev: xtotroff
$$dir/xtotroff -g -r $$dpi -s 12 $$dir/FontMap); \
done
-path.h: FORCE
- @/bin/sh ../gendef path.h "FONTPATH=\"$(GROFF_FONTPATH)\""
-
-device.o: path.h
+extraclean: clean
+ -rm -f junk tmp grot old
FORCE:
@@ -558,7 +544,7 @@ device.o: /local/include/X11/Xfuncproto.h /usr/include/stddef.h
device.o: /local/include/X11/Xutil.h /local/include/X11/Xresource.h
device.o: /local/include/X11/Core.h /local/include/X11/Composite.h
device.o: /local/include/X11/Constraint.h /local/include/X11/Object.h
-device.o: /local/include/X11/RectObj.h device.h path.h
+device.o: /local/include/X11/RectObj.h device.h
xtotroff.o: /local/include/X11/Xlib.h /usr/include/sys/types.h
xtotroff.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
xtotroff.o: /local/include/X11/X.h /local/include/X11/Xfuncproto.h
diff --git a/xditview/README b/xditview/README
index 59c22b104..b99a99185 100644
--- a/xditview/README
+++ b/xditview/README
@@ -8,7 +8,7 @@ See the file INSTALL in this directory for installation instructions.
xditview is copyrighted by MIT under the usual X terms (see
gxditview.man); my changes to it are in the public domain.
-Please report bugs as described in the file ../BUG-REPORT.
+Please report bugs to bug-groff@prep.ai.mit.edu.
James Clark
jjc@jclark.com
diff --git a/xditview/device.c b/xditview/device.c
index 3f49a9961..45cce4c6c 100644
--- a/xditview/device.c
+++ b/xditview/device.c
@@ -7,7 +7,10 @@
#include <X11/Intrinsic.h>
#include "device.h"
-#include "path.h"
+
+#ifndef FONTPATH
+#define FONTPATH "/usr/local/lib/groff/font:/usr/local/lib/font:/usr/lib/font"
+#endif
extern void exit();
extern char *strtok(), *strchr();
diff --git a/xditview/draw.c b/xditview/draw.c
index ad0fbafd8..4d4d5b44a 100644
--- a/xditview/draw.c
+++ b/xditview/draw.c
@@ -327,26 +327,6 @@ int FakeCharacter (dw, buf, wid)
case pack2('F', 'l'):
chars = "ffl";
break;
-#if 0
- case pack2('e', 'm'): /* em dash */
- chars = "--";
- break;
-#endif
- case pack2('f', '/'): /* fraction slash */
- chars = "/";
- break;
- case pack2('l', 'q'):
- chars = "``";
- break;
- case pack2('r', 'q'):
- chars = "''";
- break;
- case pack2('O', 'E'):
- chars = "OE";
- break;
- case pack2('o', 'e'):
- chars = "oe";
- break;
}
if (!chars)
return 0;
diff --git a/xditview/eqnchar b/xditview/eqnchar
deleted file mode 100644
index 386a51887..000000000
--- a/xditview/eqnchar
+++ /dev/null
@@ -1,13 +0,0 @@
-.EQ
-sdefine << %{ < back 20 < }%
-sdefine >> %{ > back 20 > }%
-
-sdefine dotdot %accent "\fR\(ad\fP"%
-sdefine vec %accent {up 52 "\s[\En[.s]/2u]\(->\s0"}%
-sdefine dyad %accent {up 52 "\s[\En[.s]/2u]\(<>\s0"}%
-
-sdefine inf %"\s[\En[.s]*13u/10u]\v'12M'\(if\v'-12M'\s0"%
-sdefine cdot %type "binary" \(md%
-
-set axis_height 32
-.EN
diff --git a/xditview/gxditview.man b/xditview/gxditview.man
index 0a0d5c8e2..f1aaa524c 100644
--- a/xditview/gxditview.man
+++ b/xditview/gxditview.man
@@ -1,5 +1,5 @@
.\" -*- nroff -*-
-.TH GXDITVIEW 1 "Release 4" "X Version 11"
+.TH GXDITVIEW 1 "Release 5" "X Version 11"
.SH NAME
gxditview \- display gtroff output files
.SH SYNOPSIS
@@ -52,6 +52,32 @@ Exit from
.IR gxditview .
.PP
The
+.BR n ,
+Space
+and Return keys are bound to the
+.B Next\ Page
+action.
+The
+.BR q ,
+BackSpace
+and
+Delete
+keys are bound to the
+.B Previous\ Page
+action.
+The
+.B q
+key is bound to the
+.B Quit
+action.
+The
+.B r
+key is bound to the
+.B Rerasterize
+action which rereads the current file, and redisplays the current page;
+if the current file is a command, the command will be reexecuted.
+.PP
+The
.B paperlength
and
.B paperwidth
@@ -101,6 +127,14 @@ widget's
.B resolution
resource.
The default is 75.
+.TP
+.BI \-filename\ string
+The default filename displayed in the dialog box for the
+.B Open
+menu entry will be
+.IR string .
+This can be either a filename, or a command starting with
+.BR | .
.PP
The following standard X Toolkit command line arguments are commonly used with
.IR gxditview :
diff --git a/xditview/path.h b/xditview/path.h
deleted file mode 100644
index 66c66aae5..000000000
--- a/xditview/path.h
+++ /dev/null
@@ -1 +0,0 @@
-#define FONTPATH ".:/usr/local/lib/groff/font:/usr/local/lib/font:/usr/lib/font"
diff --git a/xditview/tmac.Xps b/xditview/tmac.Xps
deleted file mode 100644
index af5ac93e3..000000000
--- a/xditview/tmac.Xps
+++ /dev/null
@@ -1,5 +0,0 @@
-.mso tmac.ps
-.char \(bu \Z'\X'ps: invis'\fS\(bu\fP\X'ps: endinvis''\(bu
-.char \(em \X'ps: invis'\
-\Z'\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m''\
-\X'ps: endinvis'\(em
diff --git a/xditview/xditview.c b/xditview/xditview.c
index 925b66258..704a6b09f 100644
--- a/xditview/xditview.c
+++ b/xditview/xditview.c
@@ -58,6 +58,7 @@ extern void exit();
static struct app_resources {
char *print_command;
+ char *filename;
} app_resources;
#define offset(field) XtOffset(struct app_resources *, field)
@@ -67,6 +68,8 @@ static struct app_resources {
static XtResource resources[] = {
{"printCommand", "PrintCommand", XtRString, sizeof(char*),
offset(print_command), XtRString, NULL},
+ {"filename", "Filename", XtRString, sizeof(char*),
+ offset(filename), XtRString, NULL},
};
#undef offset
@@ -79,6 +82,7 @@ static XrmOptionDescRec options[] = {
{"-backingStore", "*dvi.backingStore", XrmoptionSepArg, NULL},
{"-resolution", "*dvi.resolution", XrmoptionSepArg, NULL},
{"-printCommand", ".printCommand", XrmoptionSepArg, NULL},
+{"-filename", ".filename", XrmoptionSepArg, NULL},
{"-noPolyText", "*dvi.noPolyText", XrmoptionNoArg, "TRUE"},
};
@@ -128,6 +132,7 @@ static void NextPageAction(), PreviousPageAction(), SelectPageAction();
static void OpenFileAction(), QuitAction();
static void AcceptAction(), CancelAction();
static void PrintAction();
+static void RerasterizeAction();
XtActionsRec xditview_actions[] = {
"NextPage", NextPageAction,
@@ -135,6 +140,7 @@ XtActionsRec xditview_actions[] = {
"SelectPage", SelectPageAction,
"Print", PrintAction,
"OpenFile", OpenFileAction,
+ "Rerasterize", RerasterizeAction,
"Quit", QuitAction,
"Accept", AcceptAction,
"Cancel", CancelAction,
@@ -215,6 +221,9 @@ void main(argc, argv)
XtGetValues (dvi, pageNumberArgs, 1);
if (file_name)
NewFile (file_name);
+ /* NewFile modifies current_file_name, so do this here. */
+ if (app_resources.filename)
+ strcpy(current_file_name, app_resources.filename);
XtRealizeWidget (toplevel);
if (file_name)
SetPageNumber (page_number);
@@ -394,6 +403,22 @@ DoPrint (name)
strcpy(current_print_command, name);
}
+static void
+RerasterizeAction()
+{
+ Arg args[1];
+ int number;
+
+ if (current_file_name[0] == 0) {
+ /* XXX display an error message */
+ return;
+ }
+ XtSetArg (args[0], XtNpageNumber, &number);
+ XtGetValues (dvi, args, 1);
+ NewFile(current_file_name);
+ SetPageNumber (number);
+}
+
/* ARGSUSED */
static void