From 9574391f1c92725d497fa2a84962aee68b5cbf25 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 28 Aug 2009 17:52:47 +0000 Subject: fontinst 1.933 (24aug09) git-svn-id: svn://tug.org/texlive/trunk@14924 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/fonts/fontinst/README | 114 + Master/texmf-dist/doc/fonts/fontinst/base/README | 116 - .../doc/fonts/fontinst/base/encspecs/encspecs.tex | 1334 ------ .../doc/fonts/fontinst/base/encspecs/omxdraft.etx | 985 ---- .../doc/fonts/fontinst/base/encspecs/ot1draft.etx | 1027 ----- .../doc/fonts/fontinst/base/encspecs/t1draft.etx | 1484 ------- .../doc/fonts/fontinst/base/examples/basicex.tex | 431 -- .../doc/fonts/fontinst/base/examples/basicex2.tex | 50 - .../doc/fonts/fontinst/base/manual/fontinst.dvi | Bin 207780 -> 0 bytes .../doc/fonts/fontinst/base/manual/fontinst.pdf | Bin 381721 -> 0 bytes .../doc/fonts/fontinst/base/manual/fontinst.tex | 4160 ----------------- .../doc/fonts/fontinst/base/manual/intro98.dvi | Bin 62532 -> 0 bytes .../doc/fonts/fontinst/base/manual/intro98.pdf | Bin 172067 -> 0 bytes .../doc/fonts/fontinst/base/manual/intro98.tex | 1330 ------ .../doc/fonts/fontinst/base/manual/roadmap.eps | 265 -- .../fonts/fontinst/base/talks/et99-font-tables.pdf | Bin 201767 -> 0 bytes .../fontinst/base/talks/et99-font-tutorial.pdf | Bin 242186 -> 0 bytes .../fonts/fontinst/base/test/comparemetrics.sty | 941 ---- .../doc/fonts/fontinst/base/test/comparepls.tex | 73 - .../doc/fonts/fontinst/base/test/scaledtest.tex | 8 - .../doc/fonts/fontinst/base/test/speedtest1.tex | 62 - .../doc/fonts/fontinst/base/test/testfont.tex | 208 - .../doc/fonts/fontinst/base/test/testsc.tex | 41 - .../doc/fonts/fontinst/base/test/v1901test.mtx | 22 - .../doc/fonts/fontinst/base/test/v1901test.tex | 214 - .../doc/fonts/fontinst/base/test/v1902test.tex | 11 - .../doc/fonts/fontinst/base/test/v1905test.tex | 22 - .../doc/fonts/fontinst/base/test/v1906test.mtx | 64 - .../doc/fonts/fontinst/base/test/v1906test.tex | 12 - .../doc/fonts/fontinst/base/test/v1913test.tex | 21 - .../doc/fonts/fontinst/base/test/v1914test.tex | 50 - .../doc/fonts/fontinst/base/test/v1914testmap.tex | 17 - .../doc/fonts/fontinst/base/test/v1914testshow.tex | 22 - .../doc/fonts/fontinst/base/test/v1915test.tex | 25 - .../doc/fonts/fontinst/base/test/v1915testmap.tex | 9 - .../doc/fonts/fontinst/base/test/v1916test.mtx | 23 - .../doc/fonts/fontinst/base/test/v1916test.tex | 14 - .../doc/fonts/fontinst/base/test/v1916test2.tex | 27 - .../doc/fonts/fontinst/base/test/v1923test.tex | 47 - .../doc/fonts/fontinst/base/test/v1927test.tex | 18 - .../doc/fonts/fontinst/base/test/v1928test.tex | 13 - .../doc/fonts/fontinst/base/test/v1928test2.tex | 32 - .../doc/fonts/fontinst/encspecs/encspecs.tex | 1443 ++++++ .../doc/fonts/fontinst/encspecs/omxdraft.etx | 985 ++++ .../doc/fonts/fontinst/encspecs/ot1draft.etx | 1027 +++++ .../doc/fonts/fontinst/encspecs/t1draft.etx | 1484 +++++++ .../doc/fonts/fontinst/examples/basic/basicex.tex | 431 ++ .../doc/fonts/fontinst/examples/basic/basicex2.tex | 50 + .../doc/fonts/fontinst/examples/eurofont/Makefile | 45 + .../fonts/fontinst/examples/eurofont/eurofont.map | 12 + .../fonts/fontinst/examples/eurofont/eurofont.tex | 43 + .../doc/fonts/fontinst/examples/mathptm/Makefile | 24 + .../fonts/fontinst/examples/mathptm/fontptcm.tex | 75 + .../fonts/fontinst/examples/mathptm/mathtest.tex | 643 +++ .../fonts/fontinst/examples/mathptm/resetsy.mtx | 30 + .../fonts/fontinst/examples/mathptm/unsetmu.mtx | 7 + .../doc/fonts/fontinst/examples/mathptm/zrhax.mtx | 15 + .../doc/fonts/fontinst/examples/mathptm/zrmhax.mtx | 14 + .../fonts/fontinst/examples/mathptm/zrmkern.mtx | 158 + .../doc/fonts/fontinst/examples/mathptm/zrvhax.mtx | 73 + .../doc/fonts/fontinst/examples/mathptm/zryhax.mtx | 26 + .../doc/fonts/fontinst/examples/mathptmx/Makefile | 23 + .../fonts/fontinst/examples/mathptmx/fontptcmx.tex | 76 + .../fonts/fontinst/examples/mathptmx/mathptmx.sty | 42 + .../fonts/fontinst/examples/mathptmx/mathtestx.tex | 643 +++ .../fonts/fontinst/examples/mathptmx/resetsy.mtx | 30 + .../fonts/fontinst/examples/mathptmx/unsetmu.mtx | 7 + .../doc/fonts/fontinst/examples/mathptmx/zrhax.mtx | 15 + .../fonts/fontinst/examples/mathptmx/zrmhax.mtx | 14 + .../fonts/fontinst/examples/mathptmx/zrmkernx.mtx | 239 + .../fonts/fontinst/examples/mathptmx/zrvhax.mtx | 73 + .../fonts/fontinst/examples/mathptmx/zryhax.mtx | 26 + .../fonts/fontinst/examples/mathptmx/zrykernx.mtx | 35 + .../doc/fonts/fontinst/manual/fontinst.pdf | Bin 0 -> 463486 bytes .../doc/fonts/fontinst/manual/fontinst.tex | 4680 ++++++++++++++++++++ .../doc/fonts/fontinst/manual/intro98.pdf | Bin 0 -> 190986 bytes .../doc/fonts/fontinst/manual/intro98.tex | 1330 ++++++ .../doc/fonts/fontinst/manual/roadmap.eps | 265 ++ .../doc/fonts/fontinst/talks/et99-font-tables.pdf | Bin 0 -> 201767 bytes .../fonts/fontinst/talks/et99-font-tutorial.pdf | Bin 0 -> 242186 bytes .../texmf-dist/doc/fonts/fontinst/test/cc-pl.enc | 258 ++ .../doc/fonts/fontinst/test/comparemetrics.sty | 941 ++++ .../doc/fonts/fontinst/test/comparepls.tex | 73 + .../texmf-dist/doc/fonts/fontinst/test/fadrr.mtx | 51 + .../doc/fonts/fontinst/test/multislot-test.tex | 16 + .../doc/fonts/fontinst/test/multislot.etx | 54 + .../doc/fonts/fontinst/test/omsdraft.etx | 871 ++++ .../texmf-dist/doc/fonts/fontinst/test/testsc.tex | 41 + .../doc/fonts/fontinst/test/v1901test.mtx | 22 + .../doc/fonts/fontinst/test/v1901test.tex | 214 + .../doc/fonts/fontinst/test/v1902test.tex | 11 + .../doc/fonts/fontinst/test/v1905test.tex | 22 + .../doc/fonts/fontinst/test/v1906test.etx | 128 + .../doc/fonts/fontinst/test/v1906test.mtx | 64 + .../doc/fonts/fontinst/test/v1906test.tex | 12 + .../doc/fonts/fontinst/test/v1913test.tex | 21 + .../doc/fonts/fontinst/test/v1914test.tex | 50 + .../doc/fonts/fontinst/test/v1914testmap.tex | 17 + .../doc/fonts/fontinst/test/v1914testshow.tex | 22 + .../doc/fonts/fontinst/test/v1915test.tex | 25 + .../doc/fonts/fontinst/test/v1915testmap.tex | 9 + .../doc/fonts/fontinst/test/v1916test.mtx | 23 + .../doc/fonts/fontinst/test/v1916test.tex | 14 + .../doc/fonts/fontinst/test/v1916test2.tex | 27 + .../doc/fonts/fontinst/test/v1923test.tex | 47 + .../doc/fonts/fontinst/test/v1927test.tex | 18 + .../doc/fonts/fontinst/test/v1928test.tex | 13 + .../doc/fonts/fontinst/test/v1928test2.tex | 32 + .../doc/fonts/fontinst/test/v1930test.tex | 16 + .../doc/fonts/fontinst/test/v1931test0.tex | 8 + .../doc/fonts/fontinst/test/v1931test1.tex | 50 + .../doc/fonts/fontinst/test/v1931test2.tex | 35 + Master/texmf-dist/source/fontinst/base/CHANGES | 6 +- .../texmf-dist/source/fontinst/base/fibasics.dtx | 38 +- Master/texmf-dist/source/fontinst/base/ficonv.dtx | 337 +- Master/texmf-dist/source/fontinst/base/fimain.dtx | 77 +- .../texmf-dist/source/fontinst/base/fimapgen.dtx | 100 +- .../texmf-dist/source/fontinst/base/fisource.dvi | Bin 1091112 -> 1147220 bytes .../texmf-dist/source/fontinst/base/fisource.tex | 82 +- Master/texmf-dist/source/fontinst/base/fitrig.dtx | 326 ++ .../texmf-dist/source/fontinst/base/fontinst.ins | 28 +- Master/texmf-dist/tex/fontinst/base/cfntinst.sty | 230 +- Master/texmf-dist/tex/fontinst/base/finstmsc.sty | 70 +- Master/texmf-dist/tex/fontinst/base/fontinst.sty | 230 +- Master/texmf-dist/tex/fontinst/base/multislot.sty | 234 + Master/texmf-dist/tex/fontinst/base/xfntinst.sty | 230 +- Master/texmf-dist/tex/fontinst/latinetx/t1.etx | 44 +- .../texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx | 12 +- Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx | 74 +- Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx | 5 +- .../texmf-dist/tex/fontinst/latinmtx/lubuild.mtx | 10 + Master/texmf-dist/tex/fontinst/smbletx/ts1.etx | 6 +- .../texmf-dist/tex/fontinst/smblmtx/textcomp.mtx | 6 +- Master/texmf-dist/tex/latex/fontinst/fontdoc.sty | 10 +- Master/tlpkg/libexec/ctan2tds | 6 +- 135 files changed, 19202 insertions(+), 13539 deletions(-) create mode 100644 Master/texmf-dist/doc/fonts/fontinst/README delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/README delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex delete mode 100644 Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/Makefile create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.map create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/Makefile create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/fontptcm.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/mathtest.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/resetsy.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/unsetmu.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmkern.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrvhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zryhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/Makefile create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/fontptcmx.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathptmx.sty create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathtestx.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/resetsy.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/unsetmu.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmkernx.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrvhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zryhax.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrykernx.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdf create mode 100644 Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdf create mode 100644 Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps create mode 100644 Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf create mode 100644 Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/cc-pl.enc create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/fadrr.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/multislot-test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/multislot.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/omsdraft.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1906test.etx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1930test.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1931test0.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1931test1.tex create mode 100644 Master/texmf-dist/doc/fonts/fontinst/test/v1931test2.tex create mode 100644 Master/texmf-dist/source/fontinst/base/fitrig.dtx create mode 100644 Master/texmf-dist/tex/fontinst/base/multislot.sty (limited to 'Master') diff --git a/Master/texmf-dist/doc/fonts/fontinst/README b/Master/texmf-dist/doc/fonts/fontinst/README new file mode 100644 index 00000000000..b6a30ea506f --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/README @@ -0,0 +1,114 @@ +README for fontinst + +* What is it? + +Fontinst is a program that helps with installing fonts +for (La)TeX. Since it is written entirely in TeX macros, +it is completely portable. + +More precisely, fontinst helps mainly with the number +crunching and shoveling parts of font installation. This +means in practice that it creates a number of files which +give the TeX metrics (and related information) for a font +family that (La)TeX needs to do any typesetting in these +fonts. Fontinst furthermore makes it easy to create fonts +containing glyphs from more than one base font, taking +advantage of e.g. "expert" font sets. + +Fontinst cannot examine files to see if they contain any +useful information or work with binary file formats; those +tasks must normally be done manually or with the help of +some other tool, such as the pltotf and vptovf programs. +Nor can fontinst automatically search for files, but if +they are named according to the fontname scheme (Berry) +then fontinst sometimes succeeds very well in guessing +what the interesting files are called. + + +* Documentation + +The doc directory contains pure documentation; in +particular the doc/manual directory should be of +interest, as it contains the fontinst manual. For questions +about the meaning of fontinst commands, see this manual. + +The manual is however not a tutorial on how to use fontinst. +Some alternative sources of information that you may find +useful are: + + * Philipp Lehman's "The Font Installation Guide" + Available on CTAN, at info/Type1fonts/fontinstallationguide/ + + * intro98.tex - parts of the 1998 fontinst v1.8 manual + that were split off during the v1.9 revision. These are + much more tutorial in style, although not entirely modern. + + * The fontinst mailing list and its archives + (See below for relevant addresses.) + + * The fontinst Literate Programming sources (see + source/fisource.dvi). If a command isn't documented + anywhere else, there is probably a discussion of it + in the sources. They're thoroughly indexed. + +The examples directory contains some examples (with +comments) of using fontinst to install a font family. + + +* Installation + +To use fontinst, you only need to make sure the inputs +directory and its subdirectories are on TeX's input path. +Usually you do this by moving it to a suitable location. +In a TDS texmf tree, the inputs directory is usually +made the ${TEXMF}/tex/fontinst directory. + +You will probably also want to move the file fontdoc.sty +in the latex directory to some location where TeX will +find it. Many of the .mtx and .etx files in the inputs +hierarchy are simultaneously fontinst input files and +LaTeX documents; the fontdoc package is needed to typeset +them as the latter. In a TDS texmf tree, the normal place +for fontdoc.sty is in the tex/latex/misc directory. + +Also recall that some TeX implementations maintain a +database over files that have been installed. If you've +placed fontinst in a suitable place but TeX complains it +cannot find the file fontinst.sty then the problem may +be that you need to update this database of files. That +is however nothing that is particular for fontinst. + + +* Latin and other scripts + +The fontinst distribution includes the necessary encoding +definition (.etx) files for the latin script as used in +European languages, but there is nothing in fontinst as +a program that restricts it to these languages. In the T2 +bundle (CTAN:macros/latex/contrib/t2) there are +corresponding fontinst files for the cyrillic scripts +(and in the future it might become part of the main +fontinst distribution). + + +* The test directory + +This is mainly of interest for advanced fontinst users. +It collects some files that were written to test the new +features in various versions of fontinst. + + +* Mailing list + +Questions and bug reports should be sent to the fontinst +mailing list + + fontinst@tug.org + +General information about the mailing list is at: + + http://tug.org/mailman/listinfo/fontinst + + +22 August 2009, +Lars Hellstr\"om diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/README b/Master/texmf-dist/doc/fonts/fontinst/base/README deleted file mode 100644 index 9e5f39cde19..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/README +++ /dev/null @@ -1,116 +0,0 @@ -README for fontinst - -* What is it? - -Fontinst is a program that helps with installing fonts -for (La)TeX. Since it is written entirely in TeX macros, -it is completely portable. - -More precisely, fontinst helps mainly with the number -crunching and shoveling parts of font installation. This -means in practice that it creates a number of files which -give the TeX metrics (and related information) for a font -family that (La)TeX needs to do any typesetting in these -fonts. Fontinst furthermore makes it easy to create fonts -containing glyphs from more than one base font, taking -advantage of e.g. "expert" font sets. - -Fontinst cannot examine files to see if they contain any -useful information or work with binary file formats; those -tasks must normally be done manually or with the help of -some other tool, such as the pltotf and vptovf programs. -Nor can fontinst automatically search for files, but if -they are named according to the fontname scheme (Berry) -then fontinst sometimes succeeds very well in guessing -what the interesting files are called. - - -* Documentation - -The doc directory contains pure documentation; in -particular the doc/manual directory should be of -interest, as it contains the fontinst manual. For all -questions about how one uses fontinst, see this manual. - -Sadly, the manual has been neglected for some time, and -although it was recently revised, much remains to do. -In particular, several commands still lack description and -explanations (although at least the manual now lists -all the syntaxes). Some alternative sources of information -that you may find useful are: - - * Philipp Lehman's "The Font Installation Guide" - Available on CTAN, at info/Type1fonts/fontinstallationguide/ - - * intro98.tex - parts of the 1998 fontinst v1.8 manual - that were split off during the recent revision. - - * The fontinst mailing list and its archives - (See below for relevant addresses.) - - * The fontinst Literate Programming sources (see - source/fisource.dvi). If a command isn't documented - anywhere else, there is probably a discussion of it - in the sources. They're thoroughly indexed. - -The examples directory contains some examples (with -comments) of using fontinst to install a font family. - - -* Installation - -To use fontinst, you only need to make sure the inputs -directory and its subdirectories are on TeX's input path. -Usually you do this by moving it to a suitable location. -In a TDS texmf tree, the inputs directory is usually -made the ${TEXMF}/tex/fontinst directory. - -You will probably also want to move the file fontdoc.sty -in the latex directory to some location where TeX will -find it. Many of the .mtx and .etx files in the inputs -hierarchy are simultaneously fontinst input files and -LaTeX documents; the fontdoc package is needed to typeset -them as the latter. In a TDS texmf tree, the normal place -for fontdoc.sty is in the tex/latex/misc directory. - -Also recall that some TeX implementations maintain a -database over files that have been installed. If you've -placed fontinst in a suitable place but TeX complains it -cannot find the file fontinst.sty then the problem may -be that you need to update this database of files. That -is however nothing that is particular for fontinst. - - -* Latin and other scripts - -The fontinst distribution includes the necessary encoding -definition (.etx) files for the latin script as used in -European languages, but there is nothing in fontinst as -a program that restricts it to these languages. In the T2 -bundle (CTAN:macros/latex/contrib/t2) there are -corresponding fontinst files for the cyrillic scripts -(and in the future it might become part of the main -fontinst distribution). - - -* The test directory - -This is mainly of interest for advanced fontinst users. -It collects some files that were written to test the new -features in various versions of fontinst. - - -* Mailing list - -Questions and bug reports should be sent to the fontinst -mailing list - - fontinst@tug.org - -General information about the mailing list is at: - - http://tug.org/mailman/listinfo/fontinst - - -16 December 2004, -Lars Hellstr\"om diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex deleted file mode 100644 index 88911506970..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex +++ /dev/null @@ -1,1334 +0,0 @@ -\documentclass[a4paper]{article} - -\usepackage{array} - -\makeatletter -\@ifundefined{l@nohyphenation}{\newlanguage\l@nohyphenation}{} -\DeclareRobustCommand\meta[1]{% - \ensuremath{\langle}% - \sbox{\z@}{% - \setlanguage\l@nohyphenation - \normalfont\itshape #1\/% - \setlanguage\language - }% - \unhbox\z@ - \ensuremath{\rangle}% -} -\makeatother -\DeclareRobustCommand\marg[1]{% - \texttt{\char`\{}\meta{#1}\texttt{\char`\}}% -} -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} - -\makeatletter -\DeclareTextFontCommand\textsmaller{% - \fontsize{\scaledsize{\f@size}}{\f@baselineskip}\selectfont -} -\newcommand\scaledsize[1]{% - \ifdim #1\p@>6\p@ - \ifdim #1\p@>7\p@ - \ifdim #1\p@>8\p@ - \ifdim #1\p@>9\p@ - \ifdim #1\p@>10\p@ - \ifdim #1\p@>11\p@ - \ifdim #1\p@>12\p@ - \ifdim #1\p@>14\p@ 14% - \else 12\fi - \else 11\fi - \else 10\fi - \else 9\fi - \else 8\fi - \else 7\fi - \else 6\fi - \else 5\fi -} -\makeatother -\DeclareRobustCommand\ETX{\textsmaller{ETX}} -\DeclareRobustCommand\PDF{\textsmaller{PDF}} - -% From tugboat.cls -\def\thinskip{\hskip 0.16667em\relax} -\def\endash{--} -\def\emdash{\endash-} -\makeatletter -\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} -\def\dash{\d@sh\nobreak\endash} -\def\Dash{\d@sh\nobreak\emdash} -\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} -\def\rdash{\d@sh\nobreak\endash} -\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} -\def\Rdash{\d@sh\nobreak\emdash} -\makeatother - -\usepackage{shortvrb} -\MakeShortVerb{\|} -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} - -\newcommand{\TeXOmega}{Omega} -\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} -\DeclareRobustCommand\package[1]{\textsf{#1}} - -\providecommand*{\href}[2]{#2} -\newcommand*{\ctanref}[2]{\href{ftp://ftp.ctan.org/#1}{#2}} - -\title{Writing \ETX\ format font encoding specifications} -\author{Lars Hellstr\"om} -\date{2003/07/09} - -\begin{document} -\maketitle - -\begin{abstract} - This paper explains how one writes formal specifications of font - encodings for \LaTeX\ and suggests a ratification procedure for such - specifications. -\end{abstract} - - -\tableofcontents - -\vspace{0mm plus 35mm} -\pagebreak[2] - - -\section{Introduction} - -This is a kind of FAQ on some initial questions, and my personal -answers to those. - -\paragraph*{Why should one specify font encodings?} -Because without a specification, font -designers\footnote{Maybe not a good term, since it is really about -making fonts available to \TeX. Some of these people actually -design glyphs, but most of them merely working with the metrics.} -cannot tell whether their fonts will work in general, they can -only test that they work in the cases they know about. Font design -is subject to a surprising amount of obscure technicalities and it -is very hard to consider (or even find documentation that -mentions) them all. - -\paragraph*{Why should one make formal specifications?} -Because the informal specifications that we have today -are incomplete and hard to use. E.g.\ the \LaTeX\ -\meta{enc}\texttt{enc.def} files only say something about the -characters that are accessed via commands, and even for those you -really have to do reverse engineering to figure out what the -encoding contains. To figure out what the remaining characters -should do you have to compile what the various user manuals claim -to work and then work backwards from that, but I don't think the -general problem of which character tokens are allowed in input is -thoroughly treated anywhere. On top of that, \LaTeX\ itself -contributes some character tokens when the document is being -typeset.\footnote{This is basically the ``a \texttt{T}$*$ encoding -must contain the characters \ldots'' problem that was the reason -that the \texttt{T2} encoding had to be split up.} - -On the other side of things there are the files which tell e.g. -\textsf{fontinst} or \textsf{AFMtoTFM} what the target font -encoding is. These are basically recipes which are known (?\@) to -produce valid results, and they do usually provide more -information about the encoding than the sources listed above, but -they don't give much information about where the recipe can be -modified. - -\paragraph*{Why use the \ETX\ format?} -To begin with it is an established format; many of those -who are making fonts already use it, even if for a slightly -different purpose. Another major reason is that an \ETX\ file is both -a \LaTeX\ document and a processable data file; this is the same kind -of bilinguality that has made the \texttt{.dtx} format so useful. -Finally the \ETX\ format makes it easy to create experimental font -installations when a new encoding is being designed; \textsf{fontinst} -can directly read the file, but the file can also be automatically -converted to a PostScript encoding vector if that approach seems more -convenient. - -On the other hand, there are some features (such as the prominent -role of the glyph names) of the \ETX\ format that would -probably had been done differently in a file format that was built -from scratch, but then you would also lose several of the advantages -listed above. - - -\section{Points to keep in mind} - -\subsection{Characters, glyphs, and slots} - -One fundamental difference one must understand is that between -characters and glyphs. A \emph{character} is a semantic entity---it -carries some meaning, even if you usually have to combine several -characters to make up even one word---whereas a \emph{glyph} simply -is a piece of graphics. In printed text, glyphs are used to represent -characters and the first step of reading is to determine which -character(s) a given glyph is representing.\footnote{Some \PDF\ viewers -also try to accomplish this, but in general they need extra -information to do it right. The generic solution provided is to embed -a \emph{ToUnicode CMap}\Ldash which is precisely a map from slots to -characters\Rdash in the \PDF\ font object.} - -In the output, \TeX\ neither deals with characters nor glyphs, really -(although many of its messages speak of characters), but with -\emph{slots}, which essentially are numbered positions in a font. To -\TeX, a slot is simply something which can have certain metric -properties (width, height, depth, etc.\@) but to the driver which -actually does the printing the slot also specifies a glyph. The same -slot in two different fonts can correspond to two quite different -characters. - -For completeness it should also be mentioned that the \emph{input} of -\TeX\ is a stream of semantic entities and thus \TeX\ is dealing with -characters on that side, but the input is not the subject of this -paper. - - -\subsection{Ligatures} - -In typography, a \emph{ligature} is a glyph which has been formed by -joining glyphs that represent two or more characters; this joining can -involve quite a lot of deformation of the original shapes. Examples -of ligatures are the `fi' ligature (from `f' and `i'), the `\AE' -ligature (from `A' and `E'), and the `\textit{\&}' character (from `E' -and `t'), the latter two of which has evolved to become characters of -their own. For those ligatures (such as `fi') that have not evolved to -characters, \TeX\ has a mechanism for forming the ligature out of the -characters it is composed from, under the guidance of ligature\slash -kerning programs found in the font. - -More technically, what happens is really that if the |\char| (or -equivalent) for one slot is immediately followed by the |\char| (or -equivalent) for another (or the same) slot and there is a ligaturing -instruction in the \texttt{\small LIGKERN} table of the current font -which applies to this slot pair then this ligaturing instruction is -executed. This usually replaces the two slots in the pair with a -single new slot specified by the ligaturing instruction (it could -also keep one or both of the original slots, but that is less common). -\TeX\ has no idea about whether these replacements change the meaning -of anything, but \TeX\ assumes that it doesn't, and it is up to the -font designer to ensure that this is the case. - -Apart from forming ligatures in text, the ligaturing mechanism of -\TeX\ is traditionally also employed for another task which is much -more problematic. Ligatures are also used to produce certain -characters which are not part of visible ASCII---the most common are -the endash (typed as |--|) and the emdash (typed as |---|). This is a -problem because it violates \TeX's assumption that the meaning is -unchanged; the classical problem with this appears in the \texttt{OT2} -encoding, where the Unicode character \texttt{U+0446} -(\textsc{cyrillic small letter tse}) could be typed as |ts|, whilst -the |t| and |s| by themselves produced Unicode characters -\texttt{U+0442} (\textsc{cyrillic small letter te}) and \texttt{U+0441} -(\textsc{cyrillic small letter es}) respectively. \TeX's hyphenation -mechanism can however decompose ligatures, so it sometimes happened -that the \textsc{tse} was hyphenated as \textsc{te}-\textsc{es}, -which is quite different from what was intended. Since this is such -an obvious disadvantage, the use of ligatures for forming non-English -letters quickly disappeared after 8-bit input encodings became -available. The practice still remains in use for punctuation, however, -and the font designer must be aware of this. For many font encodings -there is a set of ligatures which must be present and replace two or -more characters by a single, different character. These ligatures are -called \emph{mandatory ligatures} in this paper. - -The use of mandatory ligatures in new font encodings is strongly -discouraged, for a number of reasons. The main problem is that they -create unhealthy dependencies between input and output encoding, -whereas these should ideally be totally independent. Using ligatures -in this way complicates the internal representation of text, and it -also makes it much harder to typeset text where those ligatures are not -wanted (such as verbatim text). Furthermore it creates problems with -kerning, since the ``ligature'' has not yet been formed when a kern -to the left of it is inserted. Finally, a much better solution (when -it is available) is to use an \TeXOmega\ translation process -(see~\cite[Sec.~8--11]{Omega-doc}), since that \emph{is} independent -of the font, different translations can be combined, and they can -easily handle even ``abbreviations'' much more complicated than those -ligatures can deal with. - - -\subsection{Output stages} - -On its way out of \LaTeX\ towards the printed text, a character passes -through a number of stages. The following five seem to cover what is -relevant for the present discussion: -\begin{enumerate} - \item \emph{\LaTeX\ Internal Character Representation} (LICR); - see~\cite{LaTeXCompanion}, Section~7.11 for a full description. - At this point the character is a character token (e.g.~|a|), - a text command (e.g.~|\ss|), or a combination (e.g.~|\H{o}|). - \item \emph{Horizontal material;} this is what the character is - en route from \TeX's mouth to its stomach. For most characters - this is equivalent to a single |\char| command (e.g.\ |a| is - equivalent to |\char|\,|97|), but some require more than one, some - are combined using the |\accent| and |\char| commands, some - involve rules and\slash or kerns, and some are built using boxes - that arbitrarily combine the above elements. - \item \emph{DVI commands;} this is the DVI file commands that - produce the printed representation of the character. - \item \emph{Printed text;} this is the graphical representation of - the character, e.g. as ink on paper or as a pattern on a computer - screen. Here the text consists of glyphs. - \item \emph{Interpreted text;} this is essentially printed text - modulo equivalence of interpretation, hence the text doesn't really - reach this stage until someone reads it. Here the text consists of - characters. -\end{enumerate} - -In theory there is a universal mapping from LICR to interpreted text, -but various technical restrictions make it impossible to simultaneously -support the entire mapping. A \LaTeX\ encoding selects a restriction -of this mapping to a limited set which will be ``well supported'' -(meaning kerning and such between characters in the set works), whereas -elements outside this set at best can be supported through temporary -encoding changes. The encoding also specifies a decomposition of the -mapping into one part which maps LICR to horizontal material and one -part which maps horizontal material to interpreted text. The first -part is realized by the text command definitions usually found in the -\meta{enc}\texttt{enc.def} file for the encoding. The second part is -the font encoding, the specification of which is the topic of this -paper. It is also worth noticing that an actual font is a mapping of -horizontal material to printed text. - -An alternative decomposition of the mapping from LICR to interpreted -text would be at the DVI command level, but even though this -decomposition is realized in most \TeX\ implementations, it has very -little relevance for the discussion of encodings. The main reason for -this is that it depends not only on the encoding of a font, but -also on its metrics. Furthermore it is worth noticing that in e.g.\ -pdf\TeX\ there need not be a DVI command level. - - -\subsection{Hyphenation} - -There are strong connections between font encoding and hyphenation because -\TeX's hyphenation mechanism operates on horizontal material; more -precisely the hyphenation mechanism only works on pieces of horizontal -material that are equivalent to sequences of |\char| commands. This -implies that hyphenation patterns, as selected via the |\language| -parameter, are not only for a specific language, they are also for a -specific font encoding. - -The hyphenation mechanism uses the |\lccode| values to distinguish -between three types of slots: lower case letters (|\lccode|\(\,n = -n\)), upper case letters (|\lccode|\(\,n \notin \{0,n\}\)), and -non-letters (|\lccode|\(\,n = 0\)); only the first two types can be -part of a hyphenatable word and only lower case letters are needed -in the hyphenation patters. This does however place severe -restrictions on how letters can be placed in a text font because -\TeX\ uses the same |\lccode| values for all text in a paragraph and -therefore these values cannot be changed whenever the encoding changes. -In \LaTeX\ the |\lccode| table is not allowed to change at all and -consequently all text font encodings must work using the standard set -of |\lccode| values. - -In \eTeX\ each set of hyphenation patterns has its own set of -|\lccode| values for hyphenation, so the problem isn't as severe -there. The hyphenation mechanism of \TeXOmega\ should become -completely independent of the font encoding, although the last time I -checked it was still operating on material encoded according to -a font encoding. - - -\subsection{Production and specification \ETX\ files} - -Finally, it is worth pointing out the difference between an \ETX\ file -created for the specification of a font encoding and one created for -being used in actually producing fonts with this encoding. They are -usually not the same. Specification \ETX s certainly may be of direct -use in the production of fonts---especially experimental fonts -produced as part of the work on a new encoding---but they are usually -not ideal for the purpose. In particular there is often a need to -switch between alternative names for a glyph to accommodate what is -actually in the fonts, but such trickeries are undesirable -complications in a specification. On the other hand a production -\ETX\ file has little need for verbose comments, whereas they are rather -an advantage in a specification \ETX\ file. - -Therefore one shouldn't be surprised if there are two \ETX\ files for a -specific encoding: one which is a specification version and one which -is a production version. If both might need to be in the same -directory then one should, as a rule of thumb, include a -`\texttt{spec}' in the name of the specification version. - - -\section{Font encoding specifications} - -\subsection{Basic principles} - -Most features of the font encoding are categorized as either -\emph{mandatory} or \emph{ordinary}. The mandatory features are what -macros may rely on, whereas the ordinary simply are something which -fonts with this encoding normally provide. Font designers may choose -to provide other features than the ordinary, but are recommended to -provide the ordinary features to the extent that the available -resources permit. - -Many internal references in the specification are in the form of -\emph{glyph names} and the choice of these is a slightly tricky -matter. From the point of formal specification, the choices can be -completely arbitrary, but from the point of practical usefulness they -most likely are not. One of the main advantages of the \ETX\ format -for specifications is that such specifications can also be used to -make experimental implementations, but this requires that the glyph -names in the specification are the same as those used in the fonts -from which the experimental implementation should be built. Yet -another aspect is that the glyph names are best chosen to be the ones -one can expect to find in actual fonts, as that will make things -easier for other people that want to make non-experimental -implementations later. For this last purpose, a good reference is -Adobe's technical note on Unicode and glyph names~\cite{unicodesign}. -For most common glyphs, \cite{unicodesign} ends up recommending that -one should follow the Adobe glyph list~\cite{AGL}, which however has -the peculiar trait of recommending names on the form -\texttt{afii}\textit{ddddd} (rather than the Unicode-based alternative -\texttt{uni}\textit{xxxx}) for most non-latin glyphs. This is somewhat -put in perspective by~\cite{ATN5013}. - - -\subsection{Slot assignments} - -The purpose of the slot assignments is to specify for each slot which -character or characters it is mapped to. That one slot is mapped to -many characters is an unfortunate, but not very uncommon, reality in -many encodings, as limitations in font size have often encouraged -identifications of two characters which are almost the same. It should -be avoided in new encodings. - -Slot assignmets are done using the |\nextslot| command and a -|\setslot| \dots\ |\endsetslot| construction as follows: -\begin{quote} - |\nextslot|\marg{slot number}\\* - |\setslot|\marg{glyph name}\\* - \mbox{\quad}\meta{slot commands}\\* - |\endsetslot| -\end{quote} -A typical example of this is -\begin{quote}\begin{verbatim} -\nextslot{65} -\setslot{A} - \Unicode{0041}{LATIN CAPITAL LETTER A} -\endsetslot -\end{verbatim}\end{quote} -which gets typeset as -\begin{quote} - \textbf{Slot 65 `\texttt{A}'}\\* - Unicode character \texttt{U+0041}, \textsc{latin capital letter a}. -\end{quote} - -The |\nextslot| command does not typeset anything; it simply stores -the slot number in a counter, for later use by |\setslot|. The -|\endsetslot| command increments this counter by one. Hence the -|\nextslot| command is unnecessary between |\setslot|s for consecutive -slots. Besides |\nextslot|, there is also a command |\skipslots| which -increments the slot number counter by a specified amount. The -argument of both |\nextslot| and |\skipslots| can be arbitrary -\package{fontinst} integer expressions (see~\cite{fontinst-man}). All -\TeX\ \meta{number}s that survive full expansion are valid -\package{fontinst} integer expressions, but for example |`\~| isn't, -as |\~| is a macro which will break before the expression is typeset. -These cases can however be fixed by preceding the \TeX\ \meta{number} -by |\number|, as |\number`\~| survives full expansion by expanding to -|126|. - -The main duty of the \meta{slot commands} is to specify the target -character (or characters) for this slot. The simplest way of doing -this is to use the |\Unicode| command, which has the syntax -\begin{quote} - |\Unicode|\marg{code point}\marg{name} -\end{quote} -The \meta{code point} is the number of the character (in hexadecimal -notation, usually a four-digit number) and the \meta{name} is the name. -Case is insignificant in these arguments. If a slot corresponds to a -string of characters rather than to a single character, then one uses -the |\charseq| command, which has the syntax -\begin{quote} - |\charseq|\marg{\cs{Unicode} commands} -\end{quote} -e.g. -\begin{quote}\begin{verbatim} -\nextslot{30} -\setslot{ffi} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0069}{LATIN SMALL LETTER I} - } -\endsetslot -\end{verbatim}\end{quote} -Several |\Unicode| commands not in the argument of a |\charseq| -instead mean that each of the listed characters is a valid -interpretation of the slot. - -If a character cannot be specified in terms of Unicode code points then -the specification should simply be a description in text which -identifies the character. Such descriptions are written using the -|\comment| command -\begin{quote} - |\comment|\marg{text} -\end{quote} -It is worth noticing that the \meta{text} is technically only an -argument of |\comment| when the program processing the \ETX\ file is -ignoring |\comment| commands. This means |\verb| and similar -catcode-changing commands \emph{can} be used in the \meta{text}. The -|\par| command is on the other hand not allowed in the \meta{text}. - -The |\comment| command should also be used for any further piece of -explanation of or commentary to the character used for the slot, if the -exposition seems to need it. There can be any number of |\comment| -commands in the \meta{slot commands}. - - -\subsection{Ligatures} - -There are three classes of ligatures in the font encoding -specifications: mandatory, ordinary, and odd. Mandatory ligatures must -be present in any font which complies with the encoding, whereas -ordinary and odd ligatures need not be. No clear distinction can be -made between ordinary and odd ligatures, but a non-mandatory ligature -should be categorized as ordinary if it makes sense for the majority -of users, and as odd otherwise. Hence the `fi' ligature is -categorized as ordinary in the \texttt{T1} encoding (although it -makes no sense in Turkish), whereas the `ij' ligature is odd. - -In the \ETX\ format, a ligature is specified using one of the slot -commands -\begin{quote} - |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ - |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ - |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new} -\end{quote} -|\Ligature| is used for mandatory ligatures, |\ligature| is used for -ordinary ligatures, and |\oddligature| is used for odd ligatures. The -\meta{right} and \meta{new} arguments are names of the glyphs being -assigned to the slots involved in this ligature. The \meta{right} -specifies the right part in the slot pair being affected by the -ligature, whereas the left part is the one of the |\setslot| \dots\ -|\endsetslot| construction in which the ligaturing command is placed. -The \meta{new} specifies a new slot which will be inserted by the -ligaturing instruction. The \meta{ligtype} is the actual ligaturing -instruction that will be used; it must be |LIG|, |/LIG|, |/LIG>|, -|LIG/|, |LIG/>|, |/LIG/|, |/LIG/>|, or |/LIG/>>|. The slashes specify -retention of the left or right original character; the |>| signs -specify passing over that many slots in the result without further -ligature processing. \meta{note}, finally, is a piece of text which -explains when the odd ligature may be appropriate. It is typeset as a -footnote. - -As an example of ligatures we find the following in the specification -of the \texttt{T1} encoding: -\begin{quote} - |\nextslot{33}|\\ - |\setslot{exclam}|\\ - | \Unicode{0021}{EXCLAMATION MARK}|\\ - | \Ligature{LIG}{quoteleft}{exclamdown}|\\ - |\endsetslot| -\end{quote} -It is typeset as -\begin{quote} - \textbf{Slot 33 `\texttt{exclam}'}\\* - Unicode character \texttt{U+0021}, \textsc{exclamation mark}.\\* - \textbf{Mandatory ligature} - \texttt{exclam}${}*{}$\texttt{quoteleft}${}\rightarrow - {}$\texttt{exclamdown} -\end{quote} -With other \meta{ligtype}s there may be more names listed on the -right hand side and possibly a `$\lfloor$' symbol showing the -position at which ligature processing will start afterwards. - - -\subsection{Math font specialities} - -There are numerous technicalities which are special to math fonts, but -only a few of them are exhibited in \ETX\ files.\footnote{For an -overview of the subject, see for example Vieth~\cite{Vieth2001}.} Most -of these have to do with the \TeX\ mechanisms that find sufficiently -large characters for commands like |\left|, |\sqrt|, and |\widetilde|. - -The first mechanism for this is that a character in a font can sort of -say ``If I'm too small, then then try character \dots\ instead''. This -is expressed in an \ETX\ file using the |\nextlarger| command, which -has the syntax -\begin{quote} - |\nextlarger|\marg{glyph name} -\end{quote} -The second mechanism constructs a sufficiently large character from -smaller pieces; this is known as a `varchar' or `extensible character'. -This is expressed in an \ETX\ file using an ``extensible recipe'', the -syntax for which is -\begin{quote} - |\varchar| \meta{varchar commands} |\endvarchar| -\end{quote} -where each \meta{varchar command} is one of -\begin{quote} - |\varrep|\marg{glyph name}\\ - |\vartop|\marg{glyph name}\\ - |\varmid|\marg{glyph name}\\ - |\varbot|\marg{glyph name} -\end{quote} -There can be at most one of each and their order is irrelevant. The -most important is the |\varrep| command, as that is the part which is -repeated until the character is sufficiently large. The |\vartop|, -|\varmid|, and |\varbot| commands are used to specify some other part -which should be put at the top, middle, and bottom of the extensible -character respectively. Not all extensible recipes use all of these, -however. - -As an example, here is how a very large left brace is constructed: -\begin{center} - \begin{tabular}{>{% - \fontencoding{OMX}\fontfamily{cmex}\selectfont - $\vcenter\bgroup\hbox\bgroup - }l<{\egroup\egroup$} l} - \char"38& For |\vartop{bracelefttp}|\\ - \char"3E& For |\varrep{braceex}|\\ - \char"3C& For |\varmid{braceleftmid}|\\ - \char"3E& Again for |\varrep{braceex}|\\ - \char"3A& For |\varbot{braceleftbt}| - \end{tabular} -\end{center} - -Both |\nextlarger| and |\varchar| commands are like |\ligature| in -that they describe ordinary features for the encoding; they appear in -a specification \ETX\ file mainly to explain the purpose of some -ordinary character. There is no such thing as a mandatory |\nextlarger| -or |\varchar|, but varchars are occationally used to a similar effect. -In these cases, the character generated by the extensible recipe is -something quite different from what a |\char| for that slot would -produce. Thus for the slot to produce the expected result it must be -referenced using a |\delimiter| or |\radical| primitive, since those -are the only ones which make use of the extensible recipe. The effect -is that the slot has a \emph{semimandatory} assignment; the result of -|\char| is unspecified (as for a slot with an ordinary assignment), but -the result for a large delimiter or radical is not (as for a slot with -a mandatory assignment). - -Thus some math fonts have an extra section ``Semimandatory characters'' -between the mandatory and ordinary character sections. In that section -for the \texttt{OMX} encoding we find for example -\begin{quote}\begin{verbatim} -\nextslot{60} -\setslot{braceleftmid} - \Unicode{2016}{DOUBLE VERTICAL LINE} - \comment{This is the large size of the |\Arrowvert| - delimiter, a glyphic variation on |\Vert|. - The \texttt{braceleftmid} glyph ordinarily - placed in this slot must not be too tall, - or else the extensible recipe actually producing - the character might sometimes not be used.} - \varchar - \varrep{arrowvertex} - \endvarchar -\endsetslot -\end{verbatim}\end{quote} -which is typeset as -\begin{quote} - \textbf{Slot 60 `\texttt{braceleftmid}'}\\* - Unicode character \texttt{U+2016}, \textsc{double vertical line}.\\ - This is the large size of the |\Arrowvert| - delimiter, a glyphic variation on |\Vert|. - The \texttt{braceleftmid} glyph ordinarily - placed in this slot must not be too tall, - or else the extensible recipe actually producing - the character might sometimes not be used.\\ - \textbf{Extensible glyph:}\\* - \textbf{Repeated} \texttt{arrowvertex} -\end{quote} - - - - -\subsection{Fontdimens} - -Each \TeX\ font contains a list of fontdimens, numbered from $1$ and -up, which are accessible via the |\fontdimen| \TeX\ primitive. Quite a -few are also used implicitly by \TeX\ and therefore cannot be left out -even if they are totally irrelevant, but as one can always include -some extra fontdimens in a font---the only bounds on how many -fontdimens there may be are the general bound on the size of a TFM -file and the amount of font memory \TeX\ has available---this is -usually not a problem. - -The reason fontdimens are part of font encoding specifications is -that the meaning of e.g.\ |\fontdimen|\,|8| varies between different -fonts depending on their encoding; thus the encoding specification -must define the quantity stored in each |\fontdimen| parameter. This -is done using the |\setfontdimen| command, which has the syntax -\begin{quote} - |\setfontdimen|\marg{number}\marg{name} -\end{quote} -The \meta{number} is the fontdimen number (as a sequence of decimal -digits where the first digit isn't zero) and the \meta{name} is a -symbolic name for the quantity. - -The standard list of symbolic names for fontdimen quantities appears -below; the listed quantities should always be described using the names -in this list. Encoding specifications that employ other quantities as -fontdimens should include definitions of these quantities. Those -quantities that are defined as ``Formula parameter \dots'' have to -do with how mathematical formulae are rendered and are usually much -too complicated to explain here. For exact definitions of these -parameters, the reader is referred to Appendix~G of \textit{The -\TeX book}~\cite{TeXbook}. -\begin{list}{}{% - \setlength\labelwidth{0pt}% - \setlength\itemindent{-\leftmargin}% - \def\makelabel#1{\hspace{\labelsep}\normalfont\itshape #1}% - \setlength\itemsep{0.5\itemsep}% - \setlength\parsep{0.5\parsep}% -} -\item[acccapheight] - The height of accented full capitals. -\item[ascender] - The height of lower case letters with ascenders. -\item[axisheight] Formula parameter $\sigma_{22}$. -\item[baselineskip] - The font designer's recommendation for natural length of the - \TeX\ parameter |\baselineskip|. -\item[bigopspacing1] Formula parameter $\xi_{9}$. -\item[bigopspacing2] Formula parameter $\xi_{10}$. -\item[bigopspacing3] Formula parameter $\xi_{11}$. -\item[bigopspacing4] Formula parameter $\xi_{12}$. -\item[bigopspacing5] Formula parameter $\xi_{13}$. -\item[capheight] - The height of full capitals. -\item[defaultrulethickness] Formula parameter $\xi_{8}$. -\item[delim1] Formula parameter $\sigma_{20}$. -\item[delim2] Formula parameter $\sigma_{21}$. -\item[denom1] Formula parameter $\sigma_{11}$. -\item[denom2] Formula parameter $\sigma_{12}$. -\item[descender] - The depth of lower case letters with descenders. -\item[digitwidth] - The median width of the digits in the font. -\item[extraspace] - The natural width of extra interword glue at the end of a sentence. - \TeX\ implicitly uses this parameter if |\spacefactor| is $2000$ or - more and |\xspaceskip| is zero. -\item[interword] - The natural width of interword glue (spaces). \TeX\ implicitly uses - this parameter unless |\spaceskip| is nonzero. -\item[italicslant] - The slant per point of the font. Unlike all other fontdimens, it is - not proportional to the font size. -\item[maxdepth] - The maximal depth over all slots in the font. -\item[maxheight] - The maximal height over all slots in the font. -\item[num1] Formula parameter $\sigma_{8}$. -\item[num2] Formula parameter $\sigma_{9}$. -\item[num3] Formula parameter $\sigma_{10}$. -\item[quad] - The quad width of the font, normally approximately equal to the - font size and\slash or the width of an `M'. Also implicitly available - as the length unit |em| and used for determining the size of the - length unit |mu|. -\item[shrinkword] - The (finite) shrink component of interword glue (spaces). \TeX\ - implicitly uses this parameter unless |\spaceskip| is nonzero. -\item[stretchword] - The (finite) stretch component of interword glue (spaces). \TeX\ - implicitly uses this parameter unless |\spaceskip| is nonzero. -\item[sub1] Formula parameter $\sigma_{16}$. -\item[sub2] Formula parameter $\sigma_{17}$. -\item[subdrop] Formula parameter $\sigma_{19}$. -\item[sup1] Formula parameter $\sigma_{13}$. -\item[sup2] Formula parameter $\sigma_{14}$. -\item[sup3] Formula parameter $\sigma_{15}$. -\item[supdrop] Formula parameter $\sigma_{18}$. -\item[verticalstem] - The dominant width of vertical stems. This quantity is meant to be used - as a measure of how ``dark'' the font is. -\item[xheight] - The x-height (height of lower case letters without ascenders). Also - implicitly available as the length unit |ex|. -\end{list} - - -\subsection{The codingscheme} - -The final encoding-dependent piece of information in a \TeX\ font is -the codingscheme, which is essentially a string declaring what -encoding the font has. This information is currently only used by -programs that convert the information in a \TeX\ font to some other -format and these use it to identify the glyphs in the font. Therefore -this string should be chosen so that the contents of the slots in the -font can be positively identified. Observe that the encoding -specification by itself does not provide enough information for this, -since there are usually a couple of slots that do not contain -mandatory characters. On the other hand, it is not a problem in this -context if the font leaves some of the slots (even mandatory ones) -empty as that is anyway easily detected. The only problem is with -fonts where the slots are assigned to other characters than the ones -specified in the encoding. - -For that reason, it is appropriate to assign two codingscheme strings -to each encoding. The main codingscheme is for fonts were all slots -(mandatory and ordinary alike) have been assigned according to the -specification or have been left empty. The variant codingscheme is for -fonts where some ordinary slots have been assigned other characters -than the ones listed in the specification, but where the mandatory -slots are still assigned according to the specification or are left -empty. The font encoding specification should give the main -codingscheme name, whereas the variant codingscheme name could be -formed by adding \verb*| VARIANT| to the main codingscheme name. - -Technically the codingscheme is specified by setting the -\texttt{codingscheme} string variable. This has the syntax -\begin{quote} - |\setstr{codingscheme}|\marg{codingscheme name} -\end{quote} -e.g. -\begin{quote} - |\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN}| -\end{quote} -which is typeset as -\begin{quote} - \textbf{Default} s(\texttt{codingscheme}) = - \verb*|EXTENDED TEX FONT ENCODING - LATIN| -\end{quote} -A codingscheme name may be at most 40 characters long and may not -contain parentheses. If the entire \verb*| VARIANT| cannot be suffixed -to a main name because the result becomes to long (as in the above -example) then use the first 40 characters of the result. - - -\subsection{Overall document structure} -\label{Ssec:Structure} - -The overall structure of a font encoding specification should be -roughly the following -\begin{quote} - |\relax|\\ - |\documentclass[twocolumn]{article}|\\ - |\usepackage[specification]{fontdoc}|\\ - \meta{preamble}\\ - |\begin{document}|\\ - \meta{title}\\ - \meta{manifest}\\ - |\encoding|\\ - \meta{body}\\ - |\endencoding|\\ - \meta{discussion}\\ - \meta{change history}\\ - \meta{bibliography}\\ - |\end{document}| -\end{quote} -The commands described in the preceding subsections must all go in -the \meta{body} part of the document, as that is the only part of the -file which actually gets processed as a data file. The part before -|\encoding| is skipped and the part after |\endencoding| is never -even input, so whatever appears there is only part of the \LaTeX\ -document. For the purposes of processing as a data file, the -important markers in the file are the |\relax|, the |\endcoding|, and -the |\endencoding| commands. - -The \meta{title} is the usual |\maketitle| (and the like) stuff. The -person or persons who appear as author(s) are elsewhere in this paper -described as the \emph{encoding proposers}. The \meta{title} should -also give the date when the specification was last changed. - -The \meta{manifest} is an important, although usually pretty short, -part of the specification. It is a piece of text which explains the -purpose of the encoding (in particular what it can be used for) and -the basic ideas (if any) which have been used in its construction. It -is often best marked up as an abstract. - -The \meta{discussion} is the place for any longer comments on the -encoding, such as analyses of different implementations, comparisons -with other encodings, etc. This is also the place to explain any more -general structures in the encoding, such as the arrow kit in the -proposed \texttt{MS2} encoding~\cite{ClasenVieth}. In cases where the -specification is mainly a formulation of what is already an -established standard the \meta{discussion} is often rather short as -the relevant discussion has already been published elsewhere, but -it is anyway a service to the reader to include this information. -References to the original documents should always be given. - -It might be convenient to include an FAQ section at the end of the -discussion. This is particularly suited for explaining things where -one has to look for a while and consult the references to find the -relevant information. - -The \meta{change history} documents how the specification has changed -over time. It is preferably detailed, as each detail in an encoding -is important, but one should not be surprised if it is anyway rather -short due to that there haven't been that many changes. - -The \meta{bibliography} is an important part of the specification. It -should at the very least include all the sources which have been used -in compiling the encoding specification, regardless of whether they -are printed, available on the net, merely ``personal communication'', -or something else. It is also a service to the reader to include in -the bibliography some more general references for related matters. - -The \meta{preamble} is just a normal \LaTeX\ preamble and there are no -restrictions on defining new commands in it, although use of such -commands in the \meta{body} part is subject to the same restrictions -as use of any general \LaTeX\ command. The preamble should however -\emph{not} load any packages not part of the required suite of -\LaTeX\ packages, as that may prevent users who do not have these -packages from typesetting the specification. Likewise, the -specification should \emph{not} require that some special font is -available. Glyph examples for characters are usually better -referenced via Unicode character charts than via special fonts. - -An exception to this rule about packages is that the specification -must load the \package{fontdoc} package, as shown in the outline -above, since that defines the |\setslot| etc.\ commands that should -appear in the \meta{body}. This should not be a problem, as the -\package{fontdoc} package can preferably be kept in the same directory -as the collection of encoding specifications (see below). The -\texttt{specification} option should be passed to the package to let it know -that the file being processed is an encoding specification---otherwise -|\Ligature| and |\ligature| will get the same formatting, for one. It -is not necessary to use the \package{article} document class, and -neither must it be passed the \texttt{twocolumn} option, but it is -customary to do so. In principle any other document class within -required \LaTeX\ will do just as well. - -If you absolutely think that using some non-required package -significantly improves the specification, then try writing the code so -that is loads the package only if it is available and provide some -kind of fallback definition for sites where it is not. E.g.\ the -\package{url} package could be loaded as -\begin{verbatim} -\IfFileExists{url.sty}{\usepackage{url}}{} -\providecommand\url{\verb} -\end{verbatim} -The |\url| command defined by this is not equivalent to the command -defined by the \package{url} package, but it can serve fairly well -(with a couple of extra overfull lines as only ill effect) if its -use is somewhat restricted. - -Finally, a technical restriction on the \meta{preamble}, \meta{title}, -and \meta{manifest} is that they must not contain any mismatched -|\if|s (of any type) or |\fi|s, as \TeX\ conditionals will be used for -skipping those parts of the file when it is processed as a data file. -If the definition of some macro includes mismatched |\if|s or |\fi|s -(this will probably occur only rarely) then include some extra code -so that they do match. - - -% All technical parts of the encoding specification (slot assignments, -% fontdimens, etc.\@) have to be in the \meta{encoding commands} part. -% The other parts are suitably used for longer commentry, such as the -% mainfest (see below), revision history, and bibliography. -% -% When the file is being typeset as a \LaTeX\ document there is nothing -% special going on. The |\encoding| and |\endencoding| commands may set -% some internal variables, but otherwise they do very little. When the -% file is being read by \package{fontinst}, things are quite different. -% Everything between the initial |\relax| and |\encoding| is skipped, -% and the file is not read further than to the |\endencoding|. Hence -% the \meta{preamble}, \meta{\LaTeX\ text 1}, and \meta{\LaTeX\ text 2} -% can contain pretty much anything (with a few exceptions) which is -% legal in a \LaTeX\ document. - - -\subsection{Encoding specification body syntax} - -The \meta{body} part of an encoding specification must comply to a -much stricter syntax than the rest of the file. The \meta{body} is -a sequence of \meta{encoding command}s, each of which should be one -of the following: -\begin{quote} - |\setslot|\marg{glyph name} \meta{slots commands} |\endsetslot|\\ - |\nextslot|\marg{number}\\ - |\skipslots|\marg{number}\\ - |\setfontdimen|\marg{number}\marg{name}\\ - |\setstr{codingscheme}|\marg{codingscheme name}\\ - |\needsfontinstversion|\marg{version number} -\end{quote} -The |\needsfontinstversion| command is usually placed immediately -after the |\encoding| command. The \meta{version number} must be at -least |1.918| for many of the features described in this file to be -available, and at least |1.928| if the |\charseq| command is used. - -The \meta{slot commands} are likewise a sequence of \meta{slot -command}s, each of which should be one of the following: -\begin{quote} - |\Unicode|\marg{code point}\marg{name}\\ - |\charseq|\marg{\cs{Unicode} commands}\\ - |\comment|\marg{text}\\ - |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ - |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ - |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new}\\ - |\nextlarger|\marg{glyph name}\\ - |\varchar| \meta{varchar commands} |\endvarchar| -\end{quote} -where \meta{varchar commands} similarly is a sequence of \meta{varchar -command}s, each of which should be one of the following: -\begin{quote} - |\varrep|\marg{glyph name}\\ - |\vartop|\marg{glyph name}\\ - |\varmid|\marg{glyph name}\\ - |\varbot|\marg{glyph name} -\end{quote} -Finally, one can include any number of \meta{comment command}s between -any two encoding, slot, or varchar commands. The comment commands are -\begin{quote} - |\begincomment| \meta{\LaTeX\ text} |\endcomment|\\ - |\label|\marg{reference label} -\end{quote} -The \meta{\LaTeX\ text} can be pretty much any \LaTeX\ code that can -appear in conditional text. (|\begincomment| is either |\iffalse| or -|\iftrue| depending on whether the encoding specification is -processed as a data file or typeset as a \LaTeX\ document respectively. -|\endcomment| is always |\fi|.) The |\label| command is just -the normal \LaTeX\ |\label| command; when it is used in a \meta{slot -commands} it references that particular slot (by number and glyph -name). - -The full syntax of the \ETX\ format can be found in the -\package{fontinst} manual~\cite{fontinst-man}, but font encoding -specifications only need a subset of that. - - -\subsection{Additional \package{fontdoc} features} - -There is an ``in comment paragraph'' form |\textunicode| of the -|\Unicode| command. Both commands have the same syntax, but -|\textunicode| is only allowed in ``comment'' contexts. A typical use -of |\textunicode| is -\begin{quote} - |\comment{An |\dots\\ - \quad\dots| this is \textunicode{2012}{FIGURE DASH}; in |\dots\\ - |}| -\end{quote} -which is typeset as -\begin{quote} - An \dots\ this is \texttt{U+2012} (\textsc{figure dash}); in \dots -\end{quote} - -The \package{fontdoc} package inputs a configuration file -\texttt{fontdoc.cfg} if that exists. This can be used to pass -additional options to the package. The only currently available -options that this could be of interest for are the \texttt{hypertex} -and \texttt{pdftex} options, which hyperlinks each \texttt{U+}\dots\ -generated by |\Unicode| or |\textunicode| (using Hyper\TeX\ or -pdf\TeX\ conventions\footnote{One could just as well do the same -thing using some other convention if a suitable definition of -\cs{FD@codepoint} is included in \texttt{fontdoc.cfg}. See the -\package{fontinst} sources~\cite{fontinst-pre} for more details.} -respectively) to a corresponding glyph image on the Unicode consortium -website. To use this feature one should put the line -\begin{quote} - |\ExecuteOptions{hypertex}| -\end{quote} -or -\begin{quote} - |\ExecuteOptions{pdftex}| -\end{quote} -in the \texttt{fontdoc.cfg} file. \emph{Please} do not include this -option in the |\usepackage|\nolinebreak[1]|{fontdoc}| of an encoding -specification file as that can be a severe annoyance for people whose -\TeX\ program or DVI viewers do not support the necessary extensions. -% Hyper\TeX\ |\special|s. - - -\section{Font encoding ratification} - -This section describes a suggested ratification process for font -encoding specifications. As there are fewer technical matters that -impose restrictions on what it may look like, it is probably more -subjective than the other parts of this paper. - -\medskip - -A specification in the process of being ratified can be in one of -three different stages: \emph{draft}, \emph{beta}, or \emph{final}. -Initially the specification is in the draft stage, during which it -will be scrutinized and can be subject to major changes. A -specification which is in the beta stage has got a formal approval -but the encoding in question may still be subject to some minor -changes if weighty arguments present themselves. Once the -specification has reached the final stage, the encoding may not -change at all. - - -\subsection{Getting to the draft stage} - -The process of taking an encoding to the draft stage can be -summarized in the following steps. Being in the draft stage doesn't -really say anything about whether the encoding is in any way correct -or useful, except in that some people (the encoding proposers) -believe it is and are willing to spend some time on ratifying it. - -\paragraph{Write an encoding specification} The first step is to -write a specification for the font encoding in question. This -document must not only technically describe the encoding but also -explain what the encoding is for and why it was created. See -Subsection~\ref{Ssec:Structure} for details on how the document is -preferably organised. - -\paragraph{Request an encoding name} The second step is to write to -the \LaTeX3 project and request a \LaTeX\ encoding name for the -encoding. This mail should be in the form of a \LaTeX\ bug report, it -must be sent to -\begin{quote} - \href{mailto:latex-bugs@latex-project.org}% - {\texttt{latex-bugs@latex-project.org}}, -\end{quote} -and it must include the encoding specification file. Suggestions for -an encoding name are appreciated, but not necessarily accepted. -The purpose of this mail is \emph{not} to get an approval of the -encoding, but only to have a reasonable name assigned to it. - -\paragraph{Upload the specification to CTAN} The third step is make -the encoding specification publicly available by uploading it to -CTAN. Encoding specifications are collected in the -\begin{quote} - \ctanref{info/encodings}{\texttt{info/encodings}} -\end{quote} -directory (which should also contain the most recent version of this -paper). The name of the uploaded file should be -\meta{encoding name}\texttt{draft.etx}. The reason for this naming is -that it must be clear that the specification has not yet been ratified. - -\paragraph{Announce the encoding} When the upload has been confirmed, -it is time to announce the encoding by posting a message about it to -the relevant forums. Most important is the \texttt{tex-fonts} mailing -list, since that is where new encodings should be debated. Messages -should also be posted to the \texttt{comp.text.tex} newsgroup and any -forums related to the intended use of the encoding: an encoding for -Sanskrit should be announced on Indian \TeX\ users forums, an -encoding for printing chess positions should be announced on some -chess-with-\TeX\ user forum, etc.; in the extent that such forums exist. - -The full address of the \texttt{tex-fonts} mailing list is -\begin{quote} - \texttt{tex-fonts@math.utah.edu} -\end{quote} -This list rejects postings from non-members, so you need to subscribe -to it before you can post your announcement. This is done by sending -a `subscribe me' mail to -\begin{quote} - \href{mailto:tex-fonts-request@math.utah.edu} - {\texttt{tex-fonts-request@math.utah.edu}} -\end{quote} -The list archives can be found at -\begin{quote} - \href{http://www.math.utah.edu/mailman/listinfo/tex-fonts} - {\textsc{http:}/\slash \texttt{www.math.utah.edu}\slash - \texttt{mailman}\slash \texttt{listinfo}\slash - \texttt{tex-fonts}} -\end{quote} -A tip is to read through the messages from a couple of months -before you write up your announcement, as that should help you get -acquainted with the normal style on the list. Please do not send -messages encoded in markup languages (notably, \textsmaller{HTML}, -\textsmaller{XML}, and word processor formats) to the list. - -\paragraph{Experimental encodings} There is a point in going through -the above procedure even for experimental encodings, i.e., encodings -whose names start with an \texttt{E}. Of course there is no idea in -ratifying a specification of an experimental encoding, as it is very -likely to frequently change, but having a proper name assigned to the -encoding and uploading its specification to CTAN makes it much simpler -for other people to learn about and make references to the encoding. - - -\subsection{From draft to beta stage} - -The main difference between a draft and beta stage specification -respectively is that beta stage specifications have been scrutinized -by other people and found to be free of errors. The practical -implementation of this is that a debate is held (in the normal -anarchical manner of mailing list debates) on the \texttt{tex-fonts} -mailing list. In particular the following aspects of the -specification should be checked: -\begin{enumerate} - \item \emph{Is the encoding technically correct?} - There are many factors which affect what \TeX\ does and it is - easy to overlook some. (The \cs{lccode}s seem to be particularly - troublesome, in this respect.) Sometimes fonts simply cannot work - as an encoding specifies they should and it is important that - such defects in the encoding are discovered on an early stage. - \item \emph{Are there any errors in the specification?} - A font encoding specification is largely a table and typos are - easy to make. Proof-reading may be boring, but it is very, very - important. - \item \emph{Is the specification sufficiently precise?} - Are there any omissions, ambiguities, inaccuracies, or completely - irrelevant material in the specification? There shouldn't be. -\end{enumerate} -During the debate, the encoding proposers should hear what other -people have to say about the encoding draft, revise it accordingly -when some flaw is pointed out, and upload the revised version. This -cycle may well have to be repeated several times before everyone's -content. It is worth pointing out that in practice the debate should -turn out to be more of a collective authoring of the specification -than a defense of its validity. There is no point in going into it -expecting the worst. - -Unfortunately, it might happen that there never is a complete agreement -on an encoding specification---depending on what side on takes, either -the encoding proposers refuse to correct obvious flaws in it, or someone -on the list insists that there is a flaw although there is obviously -not---but hopefully that will never happen. If it anyway does happen -then the person objecting should send a mail whose subject contains the -phrase "formal protest against XXX encoding" (with XXX replaced by -whatever the encoding is called) to the list. Then it will be up to -the powers that be to decide on the fate of the encoding (see below). - -\paragraph{Summarize the debate} When the debate on the encoding is -over---e.g.\ a month after anyone last posted anything new on the -subject---then the encoding proposers should summarize the debate on -the encoding specification draft and post this summary as a follow-up -on the original mail to \texttt{latex-bugs}. This summary should list -the changes that have been made to the encoding, what suggestions there -were for changes which have not been included, and whether there were -any formal protests against the encoding. The summary should also explain -what the proposers want to have be done with the encoding. In the -usual case this is having it advanced to beta stage, but the proposers -might alternatively at this point have reached the conclusion that the -encoding wasn't such a good idea to start with and therefore withdraw -it, possibly to come again later with a different proposal. - -In response to this summary, the \LaTeX-project people may do one of -three things: -\begin{itemize} - \item - If the proposers wants the encoding specification advanced and - there are no formal protests against this, then the encoding - should be advanced to the beta stage. The \LaTeX-project - people do this by adding the encoding to the list of approved - (beta or final stage) encodings that they [presumably] maintain. - \item - If the proposers want to withdraw the encoding specification - then the name assigned to it should once again be made available - for use for other encodings. - \item - If the proposers want the encoding specification advanced but - there is some formal protest against this, then the entire matter - should be handed over to some suitable authority, as a suggestion - some technical TUG committee, for resolution. -\end{itemize} - - -\paragraph{Update the specification on CTAN} When the specification -has reached the beta stage, its file on CTAN should be updated to say -so. In particular the file name should be changed from \meta{encoding -name}\texttt{draft.etx} to \meta{encoding name}\texttt{spec.etx}. - - -\paragraph{Modifying beta stage encodings} If a beta stage encoding is -modified then the revised specification should go through the above -procedure of ratification again before it can replace the previous -\meta{encoding name}\texttt{spec.etx} file on CTAN. The revised -version should thus initially be uploaded as \meta{encoding -name}\texttt{draft.etx}, reannounced, and redebated. It can however -be expected that such debates will not be as extensive as the -original debates. - - -\subsection{From beta stage to final stage} - -The requirements for going from beta stage to final stage are more -about showing that the encoding has reached a certain maturity than -about demonstrating any technical merits of it. The main difference in -usefulness between a beta stage encoding and a final stage encoding is -that the latter can be considered safe for archival purposes, whereas -one should have certain reservations against such use of beta stage -encodings. - -It seems reasonable that the following conditions should have to be -fulfilled before a beta stage encoding can be made a final stage -encoding: -\begin{itemize} - \item At least one year must have passed since the last change was - made to the specification. - \item At least two people other than the proposer must have - succeeded in implemented the encoding in a font. -\end{itemize} -It is quite possible that some condition should be added or some of -the above conditions reformulated. - - -% References updated 2004/08/07. -\begin{thebibliography}{???} -\bibitem{ATN5013} - Adobe Systems Incorporated: - \textit{Adobe Standard Cyrillic Font Specification}, - Adobe Technical Note \#5013, 1998; - \href{http://partners.adobe.com/asn/developer/pdfs/tn/% - 5013.Cyrillic_Font_Spec.pdf}{\textsc{http}:/\slash - \texttt{partners.adobe.com}\slash \texttt{asn}\slash - \texttt{developer}\slash \texttt{pdfs}\slash \texttt{tn}\slash - \texttt{5013.Cyrillic\_Font\_Spec.pdf}}. -\bibitem{AGL} - Adobe Systems Incorporated: \textit{Adobe Glyph List}, - text file, 1998, - \href{http://partners.adobe.com/asn/developer/type/glyphlist.txt} - {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash - \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash - \texttt{glyphlist.txt}}. -\bibitem{unicodesign} - Adobe Systems Incorporated: - \textit{Adobe Solutions Network: Unicode and Glyph Names}, - web page, 1998, - \href{http://partners.adobe.com/asn/developer/type/unicodegn.html} - {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash - \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash - \texttt{unicodegn.html}}. -\bibitem{ClasenVieth} - Matthias Clasen and Ulrik Vieth: - \textit{Towards a new Math Font Encoding for (La)TeX}, - March 1998, presented at EuroTeX'98; - \href{http://tug.org/twg/mfg/papers/current/mfg-euro-all.ps.gz} - {\textsc{http}:/\slash \texttt{tug.org}\slash \texttt{twg}\slash - \texttt{mfg}\slash \texttt{papers}\slash \texttt{current}\slash - \texttt{mfg-euro-all.ps.gz}}. -\bibitem{fontinst-man} - Alan Jeffrey, Rowland McDonnell, Ulrik Vieth, and Lars Hellstr\"om: - \textit{\package{fontinst}---font installation software for \TeX} - (manual), 2004, - \ctanref{fonts/utilities/fontinst/doc/fontinst.tex}{% - \textsc{ctan}:\discretionary{}{}{\thinspace}% - \texttt{fonts}\slash \texttt{utilities}\slash - \texttt{fontinst}\slash \texttt{doc}\slash \texttt{fontinst.tex}}. -% \bibitem{fontinst} -% Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: -% \textit{The \package{fontinst} utility}, documented source code, -% v\,1.801, -% \ctanref{fonts/utilities/fontinst/source}{% -% \textsc{ctan}:\discretionary{}{}{\thinspace}% -% \texttt{fonts}\slash \texttt{utilities}\slash -% \texttt{fontinst}\slash \texttt{source}/}. -\bibitem{fontinst-pre} - Alan Jeffrey, Sebastian Rahtz, Ulrik Vieth, and Lars Hellstr\"om: - \textit{The \package{fontinst} utility}, documented source code, - v\,1.9xx, - \ctanref{fonts/utilities/fontinst/source}{% - \textsc{ctan}:\discretionary{}{}{\thinspace}% - \texttt{fonts}\slash \texttt{utilities}\slash - \texttt{fontinst}\slash \texttt{source}/}. -\bibitem{TeXbook} - Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \TeX book}, - Ad\-di\-son--Wes\-ley, 1991; - volume A of \textit{Computers and typesetting}. -\bibitem{LaTeXCompanion} - Frank Mittelbach and Michel Goossens, with Johannes Braams, - David Carlisle, and Chris Rowley: - \textit{The \LaTeX\ Companion} (second edition), - Ad\-di\-son--Wes\-ley, 2004; ISBN~0-201-36299-6. -\bibitem{Omega-doc} - John Plaice and Yannis Haralambous: - \textit{Draft documentation for the Omega system}, - version~1.12, 1999; - \href{http://omega.cse.unsw.edu.au:8080/doc-1.12.ps}{% - \textsc{http:}/\slash \texttt{omega.cse.unsw.edu.au:8080}\slash - \texttt{doc-1.12.ps}}. -% \textsc{ctan}:\discretionary{}{}{\thinspace}% -% \texttt{systems}\slash \texttt{omega}\slash -% \texttt{omega-doc-1.8.tar.gz}. -\bibitem{Vieth2001} - Ulrik Vieth: - \textit{Math typesetting in \TeX: The~good, the~bad, the~ugly}, - to appear in the proceedings of Euro\TeX\ 2001; - \href{http://www.ntg.nl/eurotex/vieth.pdf}{% - \textsc{http}:/\slash \texttt{www.ntg.nl}\slash - \texttt{eurotex}\slash \texttt{vieth.pdf}}. -\end{thebibliography} - - -\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx deleted file mode 100644 index efccabde857..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx +++ /dev/null @@ -1,985 +0,0 @@ -\documentclass[twocolumn]{article} -\usepackage[specification]{fontdoc}[2001/06/01] - -% \usepackage[T1]{fontenc} -\DeclareTextCommandDefault{\textvisiblespace}{% - \mbox{\kern.06em\vrule height.3ex}% - \vbox{\hrule width.3em}% - \hbox{\vrule height.3ex\kern.06em}} - -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} - -\showbranches - -\begin{document} - -\title{\texttt{OMX} encoding draft specification} -\author{Lars Hellstr\"om} -\date{2001/10/20} -\maketitle - -\begin{abstract} - The \TeX\ math extensions (\texttt{OMX}) encoding is a container for - most of the ``growing'' characters in the standard math set-up, but - that is pretty much the extent of it. Some of the characters occur - in ``normal size'' in other encodings; in these cases it is usually - a single math command that usually make use of characters in both - encodings. -\end{abstract} - - -\encoding - -\begincomment -\section{Mandatory characters} - -\subsection{Delimiters} -\endcomment - -\nextslot{0} -\setslot{parenleftbig} - \Unicode{0028}{LEFT PARENTHESIS} - \nextlarger{parenleftBig} -\endsetslot - -\setslot{parenrightbig} - \Unicode{0029}{RIGHT PARENTHESIS} - \nextlarger{parenrightBig} -\endsetslot - -\setslot{bracketleftbig} - \Unicode{005B}{LEFT SQUARE BRACKET} - \nextlarger{bracketleftBig} -\endsetslot - -\setslot{bracketrightbig} - \Unicode{005D}{RIGHT SQUARE BRACKET} - \nextlarger{bracketrightBig} -\endsetslot - -\setslot{floorleftbig} - \Unicode{230A}{LEFT FLOOR} - \nextlarger{floorleftBig} -\endsetslot - -\setslot{floorrightbig} - \Unicode{230B}{RIGHT FLOOR} - \nextlarger{floorrightBig} -\endsetslot - -\setslot{ceilingleftbig} - \Unicode{2308}{LEFT CEILING} - \nextlarger{ceilingleftBig} -\endsetslot - -\setslot{ceilingrightbig} - \Unicode{2309}{RIGHT CEILING} - \nextlarger{ceilingrightBig} -\endsetslot - -\setslot{braceleftbig} - \Unicode{007B}{LEFT CURLY BRACKET} - \nextlarger{braceleftBig} -\endsetslot - -\setslot{bracerightbig} - \Unicode{007D}{RIGHT CURLY BRACKET} - \nextlarger{bracerightBig} -\endsetslot - -\setslot{angleleftbig} - \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} - \nextlarger{angleleftBig} -\endsetslot - -\setslot{anglerightbig} - \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} - \nextlarger{anglerightBig} -\endsetslot - -\setslot{barex} - \Unicode{007C}{VERTICAL LINE} - \comment{This is used by the \cs{vert} command. When not accessed - as a delimiter, this character may be much shorter than one - would expect.} - \varchar - \varrep{barex} - \endvarchar -\endsetslot - -\setslot{bardblex} - \Unicode{2016}{DOUBLE VERTICAL LINE} - \comment{This is used by the \cs{Vert} command. When not accessed - as a delimiter, this character may be much shorter than one - would expect.} - \varchar - \varrep{bardblex} - \endvarchar -\endsetslot - -\setslot{slashbig} - \Unicode{2215}{DIVISION SLASH} - \comment{Although this character is normally accessed via \TeX's - growing delimiter mechanism, it is not used as such in formulae, - but as a large division slash. Since the use is unambigously for - division and the like, it would be inaccurate to identify this - character with \textunicode{002F}{SOLIDUS}.} - \nextlarger{slashBig} -\endsetslot - -\setslot{backslashbig} - \Unicode{005C}{REVERSE SOLIDUS} - \comment{This is \TeX's \cs{backslash} (use for ``double coset''), - not \cs{setminus}, and hence it is not - \textunicode{2216}{SET MINUS}.} - \nextlarger{backslashBig} -\endsetslot - -\nextslot{62} -\setslot{braceex} - \Unicode{007C}{VERTICAL LINE} - \comment{This is used by the \cs{bracevert} command.} - \label{braceex} - \varchar - \varrep{braceex} - \endvarchar - \comment{This slot contains the repeatable part of a extensible - brace delimiter. In the standard set-up, the extensible recipes of - slots~\ref{bracelefttp}, \ref{bracerighttp}, \ref{braceleftbt}, - \ref{bracerightbt}, \ref{parenleftbt}, and \ref{parenrightbt} all - make use of this slot.} -\endsetslot - -\nextslot{"42} -\setslot{parenleftex} - \Unicode{007C}{VERTICAL LINE} - \comment{As astonishing as it may seem, there is no command which - accesses this slot. The glyph is similar to that in - slot~\ref{braceex}, but shifted to the left.} - \varchar - \varrep{parenleftex} - \endvarchar -\endsetslot - -\setslot{parenrightex} - \Unicode{007C}{VERTICAL LINE} - \comment{As astonishing as it may seem, there is no command which - accesses this slot. The glyph is similar to that in - slot~\ref{braceex}, but shifted to the right.} - \varchar - \varrep{parenrightex} - \endvarchar -\endsetslot - -\nextslot{"7A} -\setslot{bracehtipdownleft} - \comment{This is \cs{braceld}, a tip (pointing left, bending down) - used to build over- and underbraces.} -\endsetslot - -\setslot{bracehtipdownright} - \comment{This is \cs{bracerd}, a tip (pointing right, bending down) - used to build over- and underbraces.} -\endsetslot - -\setslot{bracehtipupleft} - \comment{This is \cs{bracelu}, a tip (pointing left, bending up) - used to build over- and underbraces.} -\endsetslot - -\setslot{bracehtipupright} - \comment{This is \cs{braceru}, a tip (pointing right, bending up) - used to build over- and underbraces.} -\endsetslot - - - -\begincomment -\subsection{Text style operators} - -With the exception of the integrals, all the following characters -should be \textsc{n-ary \dots}, but some cases there are no such -variants defined in Unicode. -\endcomment - -\nextslot{"46} -\setslot{unionsqtext} - \Unicode{2294}{SQUARE CUP} - \nextlarger{unionsqdisplay} -\endsetslot - -\skipslots{1} -\setslot{contintegraltext} - \Unicode{222E}{CONTOUR INTEGRAL} - \nextlarger{contintegraldisplay} -\endsetslot - -\skipslots{1} -\setslot{circledottext} - \Unicode{2299}{CIRCLED DOT OPERATOR} - \nextlarger{circledotdisplay} -\endsetslot - -\skipslots{1} -\setslot{circleplustext} - \Unicode{2295}{CIRCLED PLUS} - \nextlarger{circleplusdisplay} -\endsetslot - -\skipslots{1} -\setslot{circlemultiplytext} - \Unicode{2297}{CIRCLED TIMES} - \nextlarger{circlemultiplydisplay} -\endsetslot - -\skipslots{1} -\setslot{summationtext} - \Unicode{2211}{N-ARY SUMMATION} - \nextlarger{summationdisplay} -\endsetslot - -\setslot{producttext} - \Unicode{220F}{N-ARY PRODUCT} - \nextlarger{productdisplay} -\endsetslot - -\setslot{integraltext} - \Unicode{222B}{INTEGRAL} - \nextlarger{integraldisplay} -\endsetslot - -\setslot{uniontext} - \Unicode{22C3}{N-ARY UNION} - \nextlarger{uniondisplay} -\endsetslot - -\setslot{intersectiontext} - \Unicode{22C2}{N-ARY INTERSECTION} - \nextlarger{intersectiondisplay} -\endsetslot - -\setslot{unionmultitext} - \Unicode{228E}{MULTISET UNION} - \nextlarger{unionmultidisplay} -\endsetslot - -\setslot{logicalandtext} - \Unicode{22C0}{N-ARY LOGICAL AND} - \nextlarger{logicalanddisplay} -\endsetslot - -\setslot{logicalortext} - \Unicode{22C1}{N-ARY LOGICAL OR} - \nextlarger{logicalordisplay} -\endsetslot - -\skipslots{8} -\setslot{coproducttext} - \Unicode{2210}{N-ARY COPRODUCT} - \nextlarger{coproductdisplay} -\endsetslot - - - -\begincomment -\subsection{Accents, arrows, and the radical} -\endcomment - -\nextslot{"62} -\setslot{hatwide} - \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} - \nextlarger{hatwider} -\endsetslot - -\skipslots{2} - -\setslot{tildewide} - \Unicode{0303}{COMBINING TILDE} - \nextlarger{tildewider} -\endsetslot - -\nextslot{"70} -\setslot{radicalbig} - \Unicode{221A}{SQUARE ROOT} - \nextlarger{radicalBig} -\endsetslot - -\nextslot{"78} -\setslot{arrowtp} - \Unicode{2191}{UPWARDS ARROW} - \varchar - \vartop{arrowtp} - \varrep{arrowvertex} - \endvarchar -\endsetslot - -\setslot{arrowbt} - \Unicode{2193}{DOWNWARDS ARROW} - \varchar - \varrep{arrowvertex} - \varbot{arrowbt} - \endvarchar -\endsetslot - -\nextslot{"7E} -\setslot{arrowdbltp} - \Unicode{21D1}{UPWARDS DOUBLE ARROW} - \varchar - \vartop{arrowdbltp} - \varrep{arrowdblvertex} - \endvarchar -\endsetslot - -\setslot{arrowdblbt} - \Unicode{21D3}{DOWNWARDS DOUBLE ARROW} - \varchar - \varrep{arrowdblvertex} - \varbot{arrowdblbt} - \endvarchar -\endsetslot - - - - - - -\begincomment -\section{Semimandatory characters} -\endcomment - -\nextslot{"3A} -\setslot{braceleftbt} - \comment{This is the \cs{lgroup} delimiter, which looks like a - \textunicode{007B}{LEFT CURLY BRACKET} with flat middle section. - There does not seem to be such a character in Unicode, but a - close approximation would be a narrowed - \textunicode{3014}{LEFT TORTOISE SHELL BRACKET}.} - \label{braceleftbt} - \varchar - \vartop{bracelefttp} - \varrep{braceex} - \varbot{braceleftbt} - \endvarchar - \comment{The slot contains the curved bottom of a - \textunicode{007B}{LEFT CURLY BRACKET}.} -\endsetslot - -\setslot{bracerightbt} - \comment{This is the \cs{rgroup} delimiter, which looks like a - \textunicode{007D}{RIGHT CURLY BRACKET} with flat middle section. - There does not seem to be such a character in Unicode, but a - close approximation would be a narrowed - \textunicode{3015}{RIGHT TORTOISE SHELL BRACKET}.} - \label{bracerightbt} - \varchar - \vartop{bracerighttp} - \varrep{braceex} - \varbot{bracerightbt} - \endvarchar - \comment{The slot contains the curved bottom of a - \textunicode{007D}{RIGHT CURLY BRACKET}.} -\endsetslot - -\setslot{braceleftmid} - \Unicode{007C}{VERTICAL LINE} - \comment{This is used by the \cs{arrowvert} command.} - \varchar - \varrep{arrowvertex} - \endvarchar - \comment{The slot contains the middle part of a - \textunicode{007B}{LEFT CURLY BRACKET}.} -\endsetslot - -\setslot{bracerightmid} - \Unicode{2016}{DOUBLE VERTICAL LINE} - \comment{This is used by the \cs{Arrowvert} command.} - \varchar - \varrep{arrowdblvertex} - \endvarchar - \comment{The slot contains the middle part of a - \textunicode{007D}{RIGHT CURLY BRACKET}.} -\endsetslot - -\skipslots{1} - -\setslot{arrowvertex} - \Unicode{2195}{UP DOWN ARROW} - \varchar - \vartop{arrowtp} - \varrep{arrowvertex} - \varbot{arrowbt} - \endvarchar - \comment{This slot contains the repeatable middle part of a vertical - arrow.} -\endsetslot - -\setslot{parenleftbt} - \label{parenleftbt} - \comment{This is the \cs{lmoustache} delimiter, whose top half is - like \cs{lgroup} and whose bottom half is like \cs{rgroup}.} - \varchar - \vartop{bracelefttp} - \varrep{braceex} - \varbot{bracerightbt} - \endvarchar - \comment{This slot contains the curved bottom of a - \textunicode{0028}{LEFT PARENTHESIS}.} -\endsetslot - -\setslot{parenrightbt} - \label{parenrightbt} - \comment{This is the \cs{rmoustache} delimiter, whose top half is - like \cs{rgroup} and whose bottom half is like \cs{lgroup}.} - \varchar - \vartop{bracerighttp} - \varrep{braceex} - \varbot{braceleftbt} - \endvarchar - \comment{This slot contains the curved bottom of a - \textunicode{0029}{RIGHT PARENTHESIS}.} -\endsetslot - -\nextslot{"77} -\setslot{arrowdblvertex} - \Unicode{21D5}{UP DOWN DOUBLE ARROW} - \varchar - \vartop{arrowdbltp} - \varbot{arrowdblbt} - \varrep{arrowdblvertex} - \endvarchar - \comment{This slot contains the repeatable middle part of a vertical - double arrow.} -\endsetslot - - - - - -\begincomment -\section{Ordinary characters} -\endcomment - - -\begincomment -\subsection{\texttt{Big} size delimiters} -\endcomment - -\nextslot{16} -\setslot{parenleftBig} - \Unicode{0028}{LEFT PARENTHESIS} - \nextlarger{parenleftbigg} -\endsetslot - -\setslot{parenrightBig} - \Unicode{0029}{RIGHT PARENTHESIS} - \nextlarger{parenrightbigg} -\endsetslot - -\nextslot{46} -\setslot{slashBig} - \Unicode{2215}{DIVISION SLASH} - \nextlarger{slashbigg} -\endsetslot - -\setslot{backslashBig} - \Unicode{005C}{REVERSE SOLIDUS} - \nextlarger{backslashbigg} -\endsetslot - -\nextslot{"44} -\setslot{angleleftBig} - \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} - \nextlarger{angleleftbigg} -\endsetslot - -\setslot{anglerightBig} - \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} - \nextlarger{anglerightbigg} -\endsetslot - -\nextslot{"68} -\setslot{bracketleftBig} - \Unicode{005B}{LEFT SQUARE BRACKET} - \nextlarger{bracketleftbigg} -\endsetslot - -\setslot{bracketrightBig} - \Unicode{005D}{RIGHT SQUARE BRACKET} - \nextlarger{bracketrightbigg} -\endsetslot - -\setslot{floorleftBig} - \Unicode{230A}{LEFT FLOOR} - \nextlarger{floorleftbigg} -\endsetslot - -\setslot{floorrightBig} - \Unicode{230B}{RIGHT FLOOR} - \nextlarger{floorrightbigg} -\endsetslot - -\setslot{ceilingleftBig} - \Unicode{2308}{LEFT CEILING} - \nextlarger{ceilingleftbigg} -\endsetslot - -\setslot{ceilingrightBig} - \Unicode{2309}{RIGHT CEILING} - \nextlarger{ceilingrightbigg} -\endsetslot - -\setslot{braceleftBig} - \Unicode{007B}{LEFT CURLY BRACKET} - \nextlarger{braceleftbigg} -\endsetslot - -\setslot{bracerightBig} - \Unicode{007D}{RIGHT CURLY BRACKET} - \nextlarger{bracerightbigg} -\endsetslot - - - - - -\begincomment -\subsection{\texttt{bigg} size delimiters} -\endcomment - -\nextslot{18} -\setslot{parenleftbigg} - \Unicode{0028}{LEFT PARENTHESIS} - \nextlarger{parenleftBigg} -\endsetslot - -\setslot{parenrightbigg} - \Unicode{0029}{RIGHT PARENTHESIS} - \nextlarger{parenrightBigg} -\endsetslot - -\setslot{bracketleftbigg} - \Unicode{005B}{LEFT SQUARE BRACKET} - \nextlarger{bracketleftBigg} -\endsetslot - -\setslot{bracketrightbigg} - \Unicode{005D}{RIGHT SQUARE BRACKET} - \nextlarger{bracketrightBigg} -\endsetslot - -\setslot{floorleftbigg} - \Unicode{230A}{LEFT FLOOR} - \nextlarger{floorleftBigg} -\endsetslot - -\setslot{floorrightbigg} - \Unicode{230B}{RIGHT FLOOR} - \nextlarger{floorrightBigg} -\endsetslot - -\setslot{ceilingleftbigg} - \Unicode{2308}{LEFT CEILING} - \nextlarger{ceilingleftBigg} -\endsetslot - -\setslot{ceilingrightbigg} - \Unicode{2309}{RIGHT CEILING} - \nextlarger{ceilingrightBigg} -\endsetslot - -\setslot{braceleftbigg} - \Unicode{007B}{LEFT CURLY BRACKET} - \nextlarger{braceleftBigg} -\endsetslot - -\setslot{bracerightbigg} - \Unicode{007D}{RIGHT CURLY BRACKET} - \nextlarger{bracerightBigg} -\endsetslot - -\setslot{angleleftbigg} - \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} - \nextlarger{angleleftBigg} -\endsetslot - -\setslot{anglerightbigg} - \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} - \nextlarger{anglerightBigg} -\endsetslot - -\setslot{slashbigg} - \Unicode{2215}{DIVISION SLASH} - \nextlarger{slashBigg} -\endsetslot - -\setslot{backslashbigg} - \Unicode{005C}{REVERSE SOLIDUS} - \nextlarger{backslashBigg} -\endsetslot - - - -\begincomment -\subsection{\texttt{Bigg} size delimiters} -\endcomment - -\nextslot{32} -\setslot{parenleftBigg} - \Unicode{0028}{LEFT PARENTHESIS} - \nextlarger{parenlefttp} -\endsetslot - -\setslot{parenrightBigg} - \Unicode{0029}{RIGHT PARENTHESIS} - \nextlarger{parenrighttp} -\endsetslot - -\setslot{bracketleftBigg} - \Unicode{005B}{LEFT SQUARE BRACKET} - \nextlarger{bracketlefttp} -\endsetslot - -\setslot{bracketrightBigg} - \Unicode{005D}{RIGHT SQUARE BRACKET} - \nextlarger{bracketrighttp} -\endsetslot - -\setslot{floorleftBigg} - \Unicode{230A}{LEFT FLOOR} - \nextlarger{bracketleftbt} -\endsetslot - -\setslot{floorrightBigg} - \Unicode{230B}{RIGHT FLOOR} - \nextlarger{bracketrightbt} -\endsetslot - -\setslot{ceilingleftBigg} - \Unicode{2308}{LEFT CEILING} - \nextlarger{bracketleftex} -\endsetslot - -\setslot{ceilingrightBigg} - \Unicode{2309}{RIGHT CEILING} - \nextlarger{bracketrightex} -\endsetslot - -\setslot{braceleftBigg} - \Unicode{007B}{LEFT CURLY BRACKET} - \nextlarger{bracelefttp} -\endsetslot - -\setslot{bracerightBigg} - \Unicode{007D}{RIGHT CURLY BRACKET} - \nextlarger{bracerighttp} -\endsetslot - -\setslot{angleleftBigg} - \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} -\endsetslot - -\setslot{anglerightBigg} - \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} -\endsetslot - -\setslot{slashBigg} - \Unicode{2215}{DIVISION SLASH} -\endsetslot - -\setslot{backslashBigg} - \Unicode{005C}{REVERSE SOLIDUS} -\endsetslot - - - -\begincomment -\subsection{Extensible delimiters} -\endcomment - -\nextslot{48} -\setslot{parenlefttp} - \comment{This slot contains the curved top of a - \textunicode{0028}{LEFT PARENTHESIS}.} - \varchar - \vartop{parenlefttp} - \varrep{parenleftex} - \varbot{parenleftbt} - \endvarchar -\endsetslot - -\setslot{parenrighttp} - \comment{This slot contains the curved top of a - \textunicode{0029}{RIGHT PARENTHESIS}.} - \varchar - \vartop{parenrighttp} - \varrep{parenrightex} - \varbot{parenrightbt} - \endvarchar -\endsetslot - -\setslot{bracketlefttp} - \comment{This slot contains the corner top of a - \textunicode{005B}{LEFT SQUARE BRACKET}.} - \varchar - \vartop{bracketlefttp} - \varrep{bracketleftex} - \varbot{bracketleftbt} - \endvarchar -\endsetslot - -\setslot{bracketrighttp} - \comment{This slot contains the corner top of a - \textunicode{005D}{RIGHT SQUARE BRACKET}.} - \varchar - \vartop{bracketrighttp} - \varrep{bracketrightex} - \varbot{bracketrightbt} - \endvarchar -\endsetslot - -\setslot{bracketleftbt} - \comment{This slot contains the corner bottom of a - \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the - final slot in the chain of larger sizes of - \textunicode{230A}{LEFT FLOOR}.} - \varchar - \varrep{bracketleftex} - \varbot{bracketleftbt} - \endvarchar -\endsetslot - -\setslot{bracketrightbt} - \comment{This slot contains the corner bottom of a - \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the - final slot in the chain of larger sizes of - \textunicode{230B}{RIGHT FLOOR}.} - \varchar - \varrep{bracketrightex} - \varbot{bracketrightbt} - \endvarchar -\endsetslot - -\setslot{bracketleftex} - \comment{This slot contains the repeatable middle part of a - \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the - final slot in the chain of larger sizes of - \textunicode{2308}{LEFT CEILING}.} - \varchar - \vartop{bracketlefttp} - \varrep{bracketleftex} - \endvarchar -\endsetslot - -\setslot{bracketrightex} - \comment{This slot contains the repeatable middle part of a - \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the - final slot in the chain of larger sizes of - \textunicode{2309}{RIGHT CEILING}.} - \varchar - \vartop{bracketrighttp} - \varrep{bracketrightex} - \endvarchar -\endsetslot - -\setslot{bracelefttp} - \comment{This slot contains the curved top of a - \textunicode{007B}{LEFT CURLY BRACKET}.} - \label{bracelefttp} - \varchar - \vartop{bracelefttp} - \varrep{braceex} - \varmid{braceleftmid} - \varbot{braceleftbt} - \endvarchar -\endsetslot - -\setslot{bracerighttp} - \comment{This slot contains the curved top of a - \textunicode{007D}{RIGHT CURLY BRACKET}.} - \label{bracerighttp} - \varchar - \vartop{bracerighttp} - \varrep{braceex} - \varmid{bracerightmid} - \varbot{bracerightbt} - \endvarchar -\endsetslot - - - - - -\begincomment -\subsection{Display style operators} -\endcomment - -\nextslot{"47} -\setslot{unionsqdisplay} - \Unicode{2294}{SQUARE CUP} -\endsetslot - -\skipslots{1} -\setslot{contintegraldisplay} - \Unicode{222E}{CONTOUR INTEGRAL} -\endsetslot - -\skipslots{1} -\setslot{circledotdisplay} - \Unicode{2299}{CIRCLED DOT OPERATOR} -\endsetslot - -\skipslots{1} -\setslot{circleplusdisplay} - \Unicode{2295}{CIRCLED PLUS} -\endsetslot - -\skipslots{1} -\setslot{circlemultiplydisplay} - \Unicode{2297}{CIRCLED TIMES} -\endsetslot - -\skipslots{8} -\setslot{summationdisplay} - \Unicode{2211}{N-ARY SUMMATION} -\endsetslot - -\setslot{productdisplay} - \Unicode{220F}{N-ARY PRODUCT} -\endsetslot - -\setslot{integraldisplay} - \Unicode{222B}{INTEGRAL} -\endsetslot - -\setslot{uniondisplay} - \Unicode{22C3}{N-ARY UNION} -\endsetslot - -\setslot{intersectiondisplay} - \Unicode{22C2}{N-ARY INTERSECTION} -\endsetslot - -\setslot{unionmultidisplay} - \Unicode{228E}{MULTISET UNION} -\endsetslot - -\setslot{logicalanddisplay} - \Unicode{22C0}{N-ARY LOGICAL AND} -\endsetslot - -\setslot{logicalordisplay} - \Unicode{22C1}{N-ARY LOGICAL OR} -\endsetslot - -\skipslots{1} -\setslot{coproductdisplay} - \Unicode{2210}{N-ARY COPRODUCT} -\endsetslot - - - -\begincomment -\subsection{Accents} -\endcomment - -\nextslot{"63} -\setslot{hatwider} - \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} - \nextlarger{hatwiderr} -\endsetslot - -\setslot{hatwiderr} - \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} -\endsetslot - -\skipslots{1} - -\setslot{tildewider} - \Unicode{0303}{COMBINING TILDE} - \nextlarger{tildewiderr} -\endsetslot - -\setslot{tildewiderr} - \Unicode{0303}{COMBINING TILDE} -\endsetslot - - -\begincomment -\subsection{Radicals} -\endcomment - -\nextslot{"71} -\setslot{radicalBig} - \Unicode{221A}{SQUARE ROOT} - \nextlarger{radicalbigg} -\endsetslot - -\setslot{radicalbigg} - \Unicode{221A}{SQUARE ROOT} - \nextlarger{radicalBigg} -\endsetslot - -\setslot{radicalBigg} - \Unicode{221A}{SQUARE ROOT} - \nextlarger{radicalbt} -\endsetslot - -\setslot{radicalbt} - \Unicode{221A}{SQUARE ROOT} - \varchar - \varbot{radicalbt} - \vartop{radicaltp} - \varrep{radicalvertex} - \endvarchar -\endsetslot - -\setslot{radicalvertex} - \comment{This is the repeatable, vertically middle part of an - extensible \textunicode{221A}{SQUARE ROOT}.} -\endsetslot - -\setslot{radicaltp} - \comment{This is the top corner part of an extensible - \textunicode{221A}{SQUARE ROOT}.} -\endsetslot - - - - - -\begincomment -\section{Fontdimens and codingscheme} - -\texttt{OMX} fonts have the necessary fontdimens to serve as a math -group 3 font. -\endcomment - -\setfontdimen{1}{italicslant} % italic slant -\setfontdimen{2}{interword} % interword space -\setfontdimen{3}{stretchword} % interword stretch -\setfontdimen{4}{shrinkword} % interword shrink -\setfontdimen{5}{xheight} % x-height -\setfontdimen{6}{quad} % quad -\setfontdimen{7}{extraspace} % extra space after . - -\setfontdimen{8}{defaultrulethickness} % default rule thickness -\setfontdimen{9}{bigopspacing1} % bigopspacing 1 -\setfontdimen{10}{bigopspacing2} % bigopspacing 2 -\setfontdimen{11}{bigopspacing3} % bigopspacing 3 -\setfontdimen{12}{bigopspacing4} % bigopspacing 4 -\setfontdimen{13}{bigopspacing5} % bigopspacing 5 - -\setstr{codingscheme}{TEX MATH EXTENSION} - - - - - -\endencoding - - -\section{Discussion} - - - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx deleted file mode 100644 index 6f07bbd6f4a..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx +++ /dev/null @@ -1,1027 +0,0 @@ -\relax -\documentclass[twocolumn]{article} -\usepackage[specification]{fontdoc}[2004/11/28] - -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} - -\showbranches - -\begin{document} - -\title{\texttt{OT1} encoding draft specification} -\author{Lars Hellstr\"om} -\date{2004/12/16} -\maketitle - -\begin{abstract} - The \texttt{OT1} encoding is an attempt to describe the encoding of - the text fonts in Donald~E.~Knuth's \emph{Computer Modern} family - of fonts~\cite{ComputerModern}. This is an impossibile goal, since - these fonts present no less than five different encodings, but they - are nontheless largely treated by \LaTeX\ as having identical - encodings. Due to the ambiguities this creates, and in view of that - the \texttt{T1} encoding supersedes \texttt{OT1} as text font - encoding, there is little point in using the text commands for - distiguishing mandatory features of \texttt{OT1} from the ordinary. - - \texttt{OT1} is however also used as a math font encoding (to go - with \texttt{OML}, \texttt{OMS}, and \texttt{OMX}), and that use is - today the by far most important since there is no obvious alternative - to the standard math font set-up. Therefore this specification - considers a feature of the encoding to be mandatory if it is - (i)~necessary for the standard math set-up or (ii)~is a text feature - which works for all encoding variants. -\end{abstract} - -\encoding -\needsfontinstversion{1.928} - - - -\begincomment -\section{Encoding variants} - -This document aims to record all the encoding variations that are -present within the set of fonts classified by \LaTeX\ as having the -\texttt{OT1} encoding. It turns out that they can all be described -using only two parameters. One of these might be called -`\textit{ligaturing}' as one factor it affects is how many ligatures -there will be in the font. The other parameter is best called -`\textit{italicizing}' as it is different between italic and -non-italic fonts. Most of the Computer Modern fonts have -\(\mathit{ligaturing} = 2\) and \(\mathit{italicizing} = 0\). - -\endcomment -\setint{ligaturing}{2} -\setint{italicizing}{0} - - -\begincomment - - -\section{Mandatory characters} - -\subsection{Latin letters} -\endcomment - -\nextslot{16} -\setslot{dotlessi} - \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} - \comment{A dotless i `\i', used to produce accented letters such as - `\=\i'. It is not used for math.} -\endsetslot - -\setslot{dotlessj} - \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} - \comment{A dotless j `\j', used to produce accented letters such as - `\=\j'. It is not used for math. The Unicode standard does not - define this character, but Adobe has assigned code point - \texttt{U+F6BE} (which is in the private use subarea assigned by - Adobe) to it.} -\endsetslot - -\nextslot{25} -\setslot{germandbls} - \Unicode{00DF}{LATIN SMALL LETTER SHARP S} - \comment{This slot is not used in math.} -\endsetslot - -\setslot{ae} - \Unicode{00E6}{LATIN SMALL LETTER AE} - \comment{This slot is not used in math.} -\endsetslot - -\setslot{oe} - \Unicode{0153}{LATIN SMALL LIGATURE OE} - \comment{This is a single letter, and should not be faked with `oe'. - It is not used in math.} -\endsetslot - -\setslot{oslash} - \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} - \comment{This slot is not used in math.} -\endsetslot - -\setslot{AE} - \Unicode{00C6}{LATIN CAPITAL LETTER AE} - \comment{This slot is not used in math.} -\endsetslot - -\setslot{OE} - \Unicode{0152}{LATIN CAPITAL LIGATURE OE} - \comment{This is a single letter, and should not be faked with - `OE'. It is not used in math.} -\endsetslot - -\setslot{Oslash} - \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} - \comment{This slot is not used in math.} -\endsetslot - - -\nextslot{65} -\setslot{A} - \Unicode{0041}{LATIN CAPITAL LETTER A} - \label{A} -\endsetslot - -\setslot{B} - \Unicode{0042}{LATIN CAPITAL LETTER B} -\endsetslot - -\setslot{C} - \Unicode{0043}{LATIN CAPITAL LETTER C} -\endsetslot - -\setslot{D} - \Unicode{0044}{LATIN CAPITAL LETTER D} -\endsetslot - -\setslot{E} - \Unicode{0045}{LATIN CAPITAL LETTER E} -\endsetslot - -\setslot{F} - \Unicode{0046}{LATIN CAPITAL LETTER F} -\endsetslot - -\setslot{G} - \Unicode{0047}{LATIN CAPITAL LETTER G} -\endsetslot - -\setslot{H} - \Unicode{0048}{LATIN CAPITAL LETTER H} -\endsetslot - -\setslot{I} - \Unicode{0049}{LATIN CAPITAL LETTER I} -\endsetslot - -\setslot{J} - \Unicode{004A}{LATIN CAPITAL LETTER J} -\endsetslot - -\setslot{K} - \Unicode{004B}{LATIN CAPITAL LETTER K} -\endsetslot - -\setslot{L} - \Unicode{004C}{LATIN CAPITAL LETTER L} -\endsetslot - -\setslot{M} - \Unicode{004D}{LATIN CAPITAL LETTER M} -\endsetslot - -\setslot{N} - \Unicode{004E}{LATIN CAPITAL LETTER N} -\endsetslot - -\setslot{O} - \Unicode{004F}{LATIN CAPITAL LETTER O} -\endsetslot - -\setslot{P} - \Unicode{0050}{LATIN CAPITAL LETTER P} -\endsetslot - -\setslot{Q} - \Unicode{0051}{LATIN CAPITAL LETTER Q} -\endsetslot - -\setslot{R} - \Unicode{0052}{LATIN CAPITAL LETTER R} -\endsetslot - -\setslot{S} - \Unicode{0053}{LATIN CAPITAL LETTER S} -\endsetslot - -\setslot{T} - \Unicode{0054}{LATIN CAPITAL LETTER T} -\endsetslot - -\setslot{U} - \Unicode{0055}{LATIN CAPITAL LETTER U} -\endsetslot - -\setslot{V} - \Unicode{0056}{LATIN CAPITAL LETTER V} -\endsetslot - -\setslot{W} - \Unicode{0057}{LATIN CAPITAL LETTER W} -\endsetslot - -\setslot{X} - \Unicode{0058}{LATIN CAPITAL LETTER X} -\endsetslot - -\setslot{Y} - \Unicode{0059}{LATIN CAPITAL LETTER Y} - \label{Y} -\endsetslot - -\setslot{Z} - \Unicode{005A}{LATIN CAPITAL LETTER Z} -\endsetslot - - -\nextslot{97} -\setslot{a} - \Unicode{0061}{LATIN SMALL LETTER A} -\endsetslot - -\setslot{b} - \Unicode{0062}{LATIN SMALL LETTER B} -\endsetslot - -\setslot{c} - \Unicode{0063}{LATIN SMALL LETTER C} -\endsetslot - -\setslot{d} - \Unicode{0064}{LATIN SMALL LETTER D} -\endsetslot - -\setslot{e} - \Unicode{0065}{LATIN SMALL LETTER E} -\endsetslot - -\setslot{f} - \Unicode{0066}{LATIN SMALL LETTER F} - \ifnumber{\int{ligaturing}}={2}\then - \ligature{LIG}{f}{ff} - \ligature{LIG}{i}{fi} - \ligature{LIG}{l}{fl} - \Fi -\endsetslot - -\setslot{g} - \Unicode{0067}{LATIN SMALL LETTER G} -\endsetslot - -\setslot{h} - \Unicode{0068}{LATIN SMALL LETTER H} -\endsetslot - -\setslot{i} - \Unicode{0069}{LATIN SMALL LETTER I} -\endsetslot - -\setslot{j} - \Unicode{006A}{LATIN SMALL LETTER J} -\endsetslot - -\setslot{k} - \Unicode{006B}{LATIN SMALL LETTER K} -\endsetslot - -\setslot{l} - \Unicode{006C}{LATIN SMALL LETTER L} -\endsetslot - -\setslot{m} - \Unicode{006D}{LATIN SMALL LETTER M} -\endsetslot - -\setslot{n} - \Unicode{006E}{LATIN SMALL LETTER N} -\endsetslot - -\setslot{o} - \Unicode{006F}{LATIN SMALL LETTER O} -\endsetslot - -\setslot{p} - \Unicode{0070}{LATIN SMALL LETTER P} -\endsetslot - -\setslot{q} - \Unicode{0071}{LATIN SMALL LETTER Q} -\endsetslot - -\setslot{r} - \Unicode{0072}{LATIN SMALL LETTER R} -\endsetslot - -\setslot{s} - \Unicode{0073}{LATIN SMALL LETTER S} -\endsetslot - -\setslot{t} - \Unicode{0074}{LATIN SMALL LETTER T} -\endsetslot - -\setslot{u} - \Unicode{0075}{LATIN SMALL LETTER U} -\endsetslot - -\setslot{v} - \Unicode{0076}{LATIN SMALL LETTER V} -\endsetslot - -\setslot{w} - \Unicode{0077}{LATIN SMALL LETTER W} -\endsetslot - -\setslot{x} - \Unicode{0078}{LATIN SMALL LETTER X} -\endsetslot - -\setslot{y} - \Unicode{0079}{LATIN SMALL LETTER Y} -\endsetslot - -\setslot{z} - \Unicode{007A}{LATIN SMALL LETTER Z} -\endsetslot - - -\begincomment -\subsection{Greek letters} -\endcomment - -\nextslot{0} -\setslot{Gamma} - \Unicode{0393}{GREEK CAPITAL LETTER GAMMA} -\endsetslot - -\setslot{Delta} - \Unicode{0394}{GREEK CAPITAL LETTER DELTA} -\endsetslot - -\setslot{Theta} - \Unicode{0398}{GREEK CAPITAL LETTER THETA} -\endsetslot - -\setslot{Lambda} - \Unicode{039B}{GREEK CAPITAL LETTER LAMBDA} - % Unicode's preferred name for this character seems to be - % GREEK CAPITAL LETTER LAMDA, i.e., without the `B'. Why? - % GREEK CAPITAL LETTER LAMBDA is listed as an alternative name. -\endsetslot - -\setslot{Xi} - \Unicode{039E}{GREEK CAPITAL LETTER XI} -\endsetslot - -\setslot{Pi} - \Unicode{03A0}{GREEK CAPITAL LETTER PI} -\endsetslot - -\setslot{Sigma} - \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA} -\endsetslot - -\setslot{Upsilon1} - \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL} - \comment{This is primarily a math character and it is should - be visually distinct from the character in slot~\ref{Y}. This is - not generally the case for the normal Upsilon - \textunicode{03A5}{GREEK CAPITAL LETTER UPSILON}, which is by - the way what usually has the glyph name \texttt{Upsilon}. - An argument for the latter is however that all the purely - mathematical Upsilons that exist in the Unicode standard are - described as variants of the non-hook character.} -\endsetslot - -\setslot{Phi} - \Unicode{03A6}{GREEK CAPITAL LETTER PHI} -\endsetslot - -\setslot{Psi} - \Unicode{03A8}{GREEK CAPITAL LETTER PSI} -\endsetslot - -\setslot{Omega} - \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA} -\endsetslot - - -\begincomment -\subsection{Digits} -\endcomment - -\nextslot{48} -\setslot{zero} - \Unicode{0030}{DIGIT ZERO} -\endsetslot - -\setslot{one} - \Unicode{0031}{DIGIT ONE} -\endsetslot - -\setslot{two} - \Unicode{0032}{DIGIT TWO} -\endsetslot - -\setslot{three} - \Unicode{0033}{DIGIT THREE} -\endsetslot - -\setslot{four} - \Unicode{0034}{DIGIT FOUR} -\endsetslot - -\setslot{five} - \Unicode{0035}{DIGIT FIVE} -\endsetslot - -\setslot{six} - \Unicode{0036}{DIGIT SIX} -\endsetslot - -\setslot{seven} - \Unicode{0037}{DIGIT SEVEN} -\endsetslot - -\setslot{eight} - \Unicode{0038}{DIGIT EIGHT} -\endsetslot - -\setslot{nine} - \Unicode{0039}{DIGIT NINE} -\endsetslot - - -\begincomment -\subsection{Accents} -\endcomment - -\nextslot{18} -\setslot{grave} - \Unicode{0300}{COMBINING GRAVE ACCENT} -\endsetslot - -\setslot{acute} - \Unicode{0301}{COMBINING ACUTE ACCENT} -\endsetslot - -\setslot{caron} - \Unicode{030C}{COMBINING CARON} - \comment{The caron or h\'a\v cek accent `\v{}'.} -\endsetslot - -\setslot{breve} - \Unicode{0306}{COMBINING BREVE} -\endsetslot - -\setslot{macron} - \Unicode{0304}{COMBINING MACRON} -\endsetslot - -\setslot{ring} - \Unicode{030A}{COMBINING RING ABOVE} - \comment{The text definition of `\verb|\r{A}|' assumes that this - glyph has the same width as that in slot~\ref{A}.} -\endsetslot - -\setslot{cedilla} - \Unicode{0327}{COMBINING CEDILLA} - \comment{This slot is not required for math, but is used by - the \cs{c} \LaTeX\ command.} -\endsetslot - - -\nextslot{94} -\setslot{circumflex} - \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} - \Unicode{005E}{CIRCUMFLEX ACCENT} -\endsetslot - -\ifnumber{\int{ligaturing}}>{0}\then - -\setslot{dotaccent} - \Unicode{0307}{COMBINING DOT ABOVE} - \label{dotaccent} -\endsetslot - -\begincomment -\par\medskip -Note that the \(\mathit{ligaturing} = 0\) assignment to -slot~\ref{underscore} is ordinary, not mandatory. -\endcomment - -\Fi - - -\nextslot{126} -\setslot{tilde} - \Unicode{0303}{COMBINING TILDE} - \Unicode{007E}{TILDE} -\endsetslot - -\setslot{dieresis} - \Unicode{0308}{COMBINING DIAERESIS} -\endsetslot - - -\begincomment -\subsection{Symbols} -\endcomment - -\nextslot{33} -\setslot{exclam} - \Unicode{0021}{EXCLAMATION MARK} - \Ligature{LIG}{quoteleft}{exclamdown} -\endsetslot - -\skipslots{1} - -\setslot{numbersign} - \Unicode{0023}{NUMBER SIGN} - \comment{This slot is not used for math.} -\endsetslot - -\ifnumber{\int{italicizing}}={0}\then - -\setslot{dollar} - \Unicode{0024}{DOLLAR SIGN} -\endsetslot - -\Else - -\setslot{sterling} - \Unicode{00A3}{POUND SIGN} -\endsetslot - -\Fi - -\setslot{percent} - \Unicode{0025}{PERCENT SIGN} - \comment{This slot is not used for math.} -\endsetslot - -\setslot{ampersand} - \Unicode{0026}{AMPERSAND} - \comment{This slot is not used for math.} -\endsetslot - -\setslot{quoteright} - \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} - \comment{This slot is not used for math.} - \ifnumber{\int{ligaturing}}>{0}\then - \Ligature{LIG}{quoteright}{quotedblright} - \Fi -\endsetslot - -\setslot{parenleft} - \Unicode{0028}{LEFT PARENTHESIS} -\endsetslot - -\setslot{parenright} - \Unicode{0029}{RIGHT PARENTHESIS} -\endsetslot - -\setslot{asterisk} - \Unicode{002A}{ASTERISK} - \comment{This slot is not used for math.} -\endsetslot - -\setslot{plus} - \Unicode{002B}{PLUS SIGN} -\endsetslot - -\setslot{comma} - \Unicode{002C}{COMMA} - \comment{This slot is not used for math.} -\endsetslot - -\setslot{hyphen} - \Unicode{002D}{HYPHEN-MINUS} - \comment{This slot is not used for math.} - \ifnumber{\int{ligaturing}}>{0}\then - \Ligature{LIG}{hyphen}{endash} - \Fi -\endsetslot - -\setslot{period} - \Unicode{002E}{FULL STOP} - \comment{This slot is not used for math.} -\endsetslot - -\setslot{slash} - \Unicode{002F}{SOLIDUS} -\endsetslot - -\nextslot{58} -\setslot{colon} - \Unicode{003A}{COLON} -\endsetslot - -\setslot{semicolon} - \Unicode{003B}{SEMICOLON} -\endsetslot - -\skipslots{1} - -\setslot{equal} - \Unicode{003D}{EQUALS SIGN} -\endsetslot - -\skipslots{1} - -\setslot{question} - \Unicode{003F}{QUESTION MARK} - \Ligature{LIG}{quoteleft}{questiondown} -\endsetslot - -\setslot{at} - \Unicode{0040}{COMMERCIAL AT} - \comment{This slot is not used for math.} -\endsetslot - -\nextslot{91} -\setslot{bracketleft} - \Unicode{005B}{LEFT SQUARE BRACKET} -\endsetslot - -\skipslots{1} - -\setslot{bracketright} - \Unicode{005D}{RIGHT SQUARE BRACKET} -\endsetslot - -\nextslot{96} -\setslot{quoteleft} - \Unicode{2018}{LEFT SINGLE QUOTATION MARK} - \comment{This slot is not used for math.} - \ifnumber{\int{ligaturing}}>{0}\then - \Ligature{LIG}{quoteleft}{quotedblleft} - \Fi -\endsetslot - - - -\begincomment -\section{Ordinary characters} - -\subsection{Letters} -\endcomment - -\ifnumber{\int{ligaturing}}={2}\then - -\nextslot{11} -\setslot{ff} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - } - \comment{This glyph should be two characters wide in a monowidth - font.} - \ligature{LIG}{i}{ffi} - \ligature{LIG}{l}{ffl} -\endsetslot - -\setslot{fi} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0069}{LATIN SMALL LETTER I} - } - \comment{This glyph should be two characters wide in a monowidth - font.} -\endsetslot - -\setslot{fl} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{006C}{LATIN SMALL LETTER L} - } - \comment{This glyph should be two characters wide in a monowidth - font.} -\endsetslot - -\setslot{ffi} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0069}{LATIN SMALL LETTER I} - } - \comment{This glyph should be three characters wide in a monowidth - font.} -\endsetslot - -\setslot{ffl} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{006C}{LATIN SMALL LETTER L} - } - \comment{This glyph should be three characters wide in a monowidth - font.} -\endsetslot - -\Fi - -\nextslot{"8A} -\setslot{Lslash} - \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} - \comment{The letter `\L'.} -\endsetslot - -\nextslot{"AA} -\setslot{lslash} - \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} - \comment{The letter `\l'.} -\endsetslot - - -\begincomment -\subsection{Accents} -\endcomment - -\ifnumber{\int{ligaturing}}>{0}\then - -\nextslot{125} -\setslot{hungarumlaut} - \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} - \comment{The long Hungarian umlaut `\H{}'.} -\endsetslot - -\Fi - -\begincomment -\subsection{Symbols} -\endcomment - -\ifnumber{\int{ligaturing}}<{2}\then - -\nextslot{11} -\setslot{arrowup} - \Unicode{2191}{UPWARDS ARROW} -\endsetslot - -\setslot{arrowdown} - \Unicode{2193}{DOWNWARDS ARROW} -\endsetslot - -\setslot{quotesingle} - \Unicode{0027}{APOSTROPHE} -\endsetslot - -\setslot{exclamdown} - \Unicode{00A1}{INVERTED EXCLAMATION MARK} -\endsetslot - -\setslot{questiondown} - \Unicode{00BF}{INVERTED QUESTION MARK} -\endsetslot - -\Fi - -\nextslot{32} -\ifnumber{\int{ligaturing}}>{0}\then - -\setslot{lslashslash} - \comment{When this character is followed by - \textunicode{004C}{LATIN CAPITAL LETTER L} then the combined - result is \textunicode{0141}{LATIN CAPITAL LETTER L WITH STROKE}; - this is used by the \cs{L} command. When this character is - followed by \textunicode{006C}{LATIN SMALL LETTER L} then the - combined result is \textunicode{0142}{LATIN SMALL LETTER L WITH - STROKE}; this is used by the \cs{l} command. There are no further - semantics for this character.} - \ligature{LIG}{L}{Lslash} - \ligature{LIG}{l}{lslash} - \comment{These ligatures, and the characters they point to, were - added by Alan Jeffrey early in \textsf{fontinst} development in - order to allow the character in this slot to exhibit the correct - behaviour even in fonts where there is no corresponding glyph.} -\endsetslot - -\Else - -\setslot{visiblespace} - \Unicode{2423}{OPEN BOX} - \comment{A visible space glyph `\textvisiblespace'.} -\endsetslot - -\Fi - - -\nextslot{34} -\ifnumber{\int{ligaturing}}>{0}\then - -\setslot{quotedblright} - \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} -\endsetslot - -\Else - -\setslot{quotedbl} - \Unicode{0022}{QUOTATION MARK} -\endsetslot - -\Fi - -\nextslot{60} -\ifnumber{\int{ligaturing}}={2}\then - -\setslot{exclamdown} - \Unicode{00A1}{INVERTED EXCLAMATION MARK} -\endsetslot - -\skipslots{1} - -\setslot{questiondown} - \Unicode{00BF}{INVERTED QUESTION MARK} -\endsetslot - -\Else - -\setslot{less} - \Unicode{003C}{LESS-THAN SIGN} -\endsetslot - -\skipslots{1} - -\setslot{greater} - \Unicode{003E}{GREATER-THAN SIGN} -\endsetslot - -\Fi - -\nextslot{92} -\ifnumber{\int{ligaturing}}>{0}\then - -\setslot{quotedblleft} - \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} -\endsetslot - -\Else - -\setslot{backslash} - \Unicode{005C}{REVERSE SOLIDUS} -\endsetslot - -\nextslot{95} -\setslot{underscore} - \Unicode{005F}{LOW LINE} - \label{underscore} -\endsetslot - -\begincomment -\par\medskip -Note that the \(\mathit{ligaturing} > 0\) assignment to -slot~\ref{dotaccent} is mandatory, not ordinary. -\endcomment - -\Fi - - -\nextslot{123} -\ifnumber{\int{ligaturing}}>{0}\then - -\setslot{endash} - \Unicode{2013}{EN DASH} - \Ligature{LIG}{hyphen}{emdash} -\endsetslot - -\setslot{emdash} - \Unicode{2014}{EM DASH} - \comment{In a monowidth font this character is preferably given the - width of two normal characters.} -\endsetslot - -\Else - -\setslot{braceleft} - \Unicode{007B}{LEFT CURLY BRACKET} -\endsetslot - -\setslot{bar} - \Unicode{007C}{VERTICAL LINE} -\endsetslot - -\setslot{braceright} - \Unicode{007D}{RIGHT CURLY BRACKET} -\endsetslot - -\Fi - - -\begincomment -\section{Fontdimens} -\endcomment - -\setfontdimen{1}{italicslant} % italic slant -\setfontdimen{2}{interword} % interword space -\setfontdimen{3}{stretchword} % interword stretch -\setfontdimen{4}{shrinkword} % interword shrink -\setfontdimen{5}{xheight} % x-height -\setfontdimen{6}{quad} % quad -\setfontdimen{7}{extraspace} % extra space after . - - -\begincomment -\section{Coding scheme} -\endcomment - -\ifnumber{\int{ligaturing}}={2}\then - -\setstr{codingscheme}{TEX TEXT} - -\Else\ifnumber{\int{ligaturing}}={1}\then - -\setstr{codingscheme}{TEX TEXT WITHOUT F-LIGATURES} - -\Else - -\setstr{codingscheme}{TEX TYPEWRITER TEXT} - -\Fi\Fi - - -\endencoding - - -\section{Discussion} - - -\subsection{\texttt{OT1} as math font encoding} - -As source for the math requirements on the \texttt{OT1} encoding -was used the standard \LaTeX\ math set-up~\cite{fontdef}. Those -definitions that make use of \texttt{OT1} fonts either use the -\texttt{operators} symbol font\slash font family~0 or have math -class~7 (\cs{mathalpha}). - -There are two slots used for math that have different assignments -in different encoding variants. Slot 36 (\texttt{dollar}\slash -\texttt{sterling}) depends on the $\mathit{italicizing}$, and is used -by the commands \cs{mathdollar} (called by \verb|\$|) and -\cs{mathsterling} (called by \cs{pounds}). This works because these -commands explicitly take the character from a font with the correct -$\mathit{italicizing}$. - -Slot~95 (\texttt{dotaccent}\slash \texttt{underline}) depends on the -$\mathit{ligaturing}$ and is used by the \cs{dot} command. This -command does \emph{not} work for fonts with \(\mathit{ligaturing}=0\), -and hence e.g.\ the formula \verb|$\mathtt{\dot{x}}$| does not produce -a typewriter dotted `x', but rather an `x' and underscore printed on -top of each other. This is thus an error, but due to that it is -unlikely that the error will be missed by the author who encounters -it, the error is probably harmless. - - -\subsection{\texttt{OT1} as text font encoding} - -The sources used to determine the text requirements on the -\texttt{OT1} encoding were~\cite{ltoutenc}. - -It turns out that there are LICR commands which rely on non-mandatory -features of the font. It is mostly for the \(\mathit{ligaturing} = 0\) -fonts that commands produce incorrect results. The following commands -work with all \texttt{OT1} fonts which have \(\mathit{ligaturing} > 0\) -but fail with the others: \cs{L}, \cs{l}, \cs{.}, \cs{H}, -\cs{textemdash}, \cs{textendash}, and \cs{textquotedblleft}. -In addition, the command \cs{textquotedblright} produces a -reasonable, but not exactly correct, result. - -Traditionally the \cs{textexclamdown} and \cs{textquestiondown} have -only worked for fonts which have \(\mathit{ligaturing} = 2\), but -that can be fixed; see~\cite{latex/3368}. - - -\section{Changes} - -The changes made to this specification since the original 2001/09/09 -version are as follows. - -2004/12/16: Changed the f-ligatures to character sequences, which -makes more sense for \texttt{CMap}s. Incremented needed versions -accordingly. /LH - - -\begin{thebibliography}{9} -\bibitem{ltoutenc} - Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach, - Chris Rowley, and Rainer Sch\"opf: - \textit{ltoutenc.dtx}, v\,1.91 (2000); - the file \texttt{ltoutenc.dtx} in the \LaTeX\ base distribution. -\bibitem{latex/3368} - Lars Hellstr\"om: - \textit{\texttt{OT1} def.\ of \cs{textexclamdown} and - \cs{textquestiondown}}, \LaTeX\ bugs database entry - \textbf{latex/3368}, 2001. -% ; \textsc{http:}/\slash \texttt{www.latex-project.org}\slash -% \texttt{cgi-bin}\slash \texttt{ltxbugs2html\discretionary{?}{}{?}% -% pr=latex/3368}. -\bibitem{ComputerModern} - Donald E. Knuth: - \textit{Computer Modern Typefaces}, - volume E of \textit{Computers \& Typesetting}, - Ad\-di\-son--Wes\-ley, 1986, xvi+588\,pp.; - ISBN~0-201-13446-2. -\bibitem{fontdef} - Frank Mittelbach and Rainer Sch\"opf: - \textit{The \texttt{fontdef.dtx} file}, v\,2.2x (1999); - the file \texttt{fontdef.dtx} in the \LaTeX\ base distribution. -\end{thebibliography} - - -\end{document} - - - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx deleted file mode 100644 index d82c9e53ed0..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx +++ /dev/null @@ -1,1484 +0,0 @@ -\relax -\documentclass[twocolumn]{article} -\usepackage[specification]{fontdoc}[2004/11/28] -\usepackage{shortvrb} - -\MakeShortVerb{\|} - -\begin{document} -\title{\texttt{T1} encoding draft specification} -\author{Lars Hellstr\"om} -\date{2002/07/05} -\maketitle - -\begin{abstract} - The \texttt{T1} encoding covers most\footnote{But not quite all.} - letters in the latin script that are used in European languages. - Code points 32--126 coincide with ASCII\footnote{As defined in - Appendix C of \emph{The \TeX book}~\cite{TeXbook}, not as defined - by the ANSI.} and code points 192--255 are mainly the same as in - the latin-1 encoding~\cite{ISO8859-1,latin-page}, but there are - exceptions. -\end{abstract} - -\encoding - -\needsfontinstversion{1.928} - -\begincomment -\section{Mandatory characters} -\endcomment - -\begincomment -\subsection{Letters} -More than two thirds of the characters in the encoding are letters. -This is a deliberate choice: \TeX's hyphenation algorithm requires -that all characters in a word are taken from the same font, hence it -is advantageous\footnote{Probably less so than what was thought when -the encoding was designed, but still advantageous.} to keep as many -letters as possible in the same font. Taking symbols from other fonts -is less of a disadvantage. - -\subsubsection{``Unaccented'' letters in slots 0--127} -\endcomment - -\nextslot{25} -\setslot{dotlessi} - \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} - \comment{A dotless i `\i', used to produce accented letters such as - `\=\i'.} -\endsetslot - -\setslot{dotlessj} - \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} - \comment{A dotless j `\j', used to produce accented letters such as - `\=\j'. The Unicode standard does not define this character, but - Adobe has assigned code point \texttt{U+F6BE} (which lies - in the private use subarea assigned by Adobe) to it.} -\endsetslot - - -\nextslot{65} -\setslot{A} - \Unicode{0041}{LATIN CAPITAL LETTER A} -\endsetslot - -\setslot{B} - \Unicode{0042}{LATIN CAPITAL LETTER B} -\endsetslot - -\setslot{C} - \Unicode{0043}{LATIN CAPITAL LETTER C} -\endsetslot - -\setslot{D} - \Unicode{0044}{LATIN CAPITAL LETTER D} -\endsetslot - -\setslot{E} - \Unicode{0045}{LATIN CAPITAL LETTER E} -\endsetslot - -\setslot{F} - \Unicode{0046}{LATIN CAPITAL LETTER F} -\endsetslot - -\setslot{G} - \Unicode{0047}{LATIN CAPITAL LETTER G} -\endsetslot - -\setslot{H} - \Unicode{0048}{LATIN CAPITAL LETTER H} -\endsetslot - -\setslot{I} - \Unicode{0049}{LATIN CAPITAL LETTER I} - \oddligature{This ligature only occurs in Dutch typography.} - {LIG}{J}{IJ} - \oddligature{This ligature only occurs in Dutch typography.} - {LIG}{j}{IJ} -\endsetslot - -\setslot{J} - \Unicode{004A}{LATIN CAPITAL LETTER J} -\endsetslot - -\setslot{K} - \Unicode{004B}{LATIN CAPITAL LETTER K} -\endsetslot - -\setslot{L} - \Unicode{004C}{LATIN CAPITAL LETTER L} -\endsetslot - -\setslot{M} - \Unicode{004D}{LATIN CAPITAL LETTER M} -\endsetslot - -\setslot{N} - \Unicode{004E}{LATIN CAPITAL LETTER N} -\endsetslot - -\setslot{O} - \Unicode{004F}{LATIN CAPITAL LETTER O} -\endsetslot - -\setslot{P} - \Unicode{0050}{LATIN CAPITAL LETTER P} -\endsetslot - -\setslot{Q} - \Unicode{0051}{LATIN CAPITAL LETTER Q} -\endsetslot - -\setslot{R} - \Unicode{0052}{LATIN CAPITAL LETTER R} -\endsetslot - -\setslot{S} - \Unicode{0053}{LATIN CAPITAL LETTER S} -\endsetslot - -\setslot{T} - \Unicode{0054}{LATIN CAPITAL LETTER T} -\endsetslot - -\setslot{U} - \Unicode{0055}{LATIN CAPITAL LETTER U} -\endsetslot - -\setslot{V} - \Unicode{0056}{LATIN CAPITAL LETTER V} -\endsetslot - -\setslot{W} - \Unicode{0057}{LATIN CAPITAL LETTER W} -\endsetslot - -\setslot{X} - \Unicode{0058}{LATIN CAPITAL LETTER X} -\endsetslot - -\setslot{Y} - \Unicode{0059}{LATIN CAPITAL LETTER Y} -\endsetslot - -\setslot{Z} - \Unicode{005A}{LATIN CAPITAL LETTER Z} -\endsetslot - - -\nextslot{97} -\setslot{a} - \Unicode{0061}{LATIN SMALL LETTER A} -\endsetslot - -\setslot{b} - \Unicode{0062}{LATIN SMALL LETTER B} -\endsetslot - -\setslot{c} - \Unicode{0063}{LATIN SMALL LETTER C} -\endsetslot - -\setslot{d} - \Unicode{0064}{LATIN SMALL LETTER D} -\endsetslot - -\setslot{e} - \Unicode{0065}{LATIN SMALL LETTER E} -\endsetslot - -\setslot{f} - \Unicode{0066}{LATIN SMALL LETTER F} - \ligature{LIG}{f}{ff} - \ligature{LIG}{i}{fi} - \ligature{LIG}{l}{fl} -\endsetslot - -\setslot{g} - \Unicode{0067}{LATIN SMALL LETTER G} -\endsetslot - -\setslot{h} - \Unicode{0068}{LATIN SMALL LETTER H} -\endsetslot - -\setslot{i} - \Unicode{0069}{LATIN SMALL LETTER I} - \oddligature{This ligature only occurs in Dutch typography.} - {LIG}{j}{ij} -\endsetslot - -\setslot{j} - \Unicode{006A}{LATIN SMALL LETTER J} -\endsetslot - -\setslot{k} - \Unicode{006B}{LATIN SMALL LETTER K} -\endsetslot - -\setslot{l} - \Unicode{006C}{LATIN SMALL LETTER L} -\endsetslot - -\setslot{m} - \Unicode{006D}{LATIN SMALL LETTER M} -\endsetslot - -\setslot{n} - \Unicode{006E}{LATIN SMALL LETTER N} -\endsetslot - -\setslot{o} - \Unicode{006F}{LATIN SMALL LETTER O} -\endsetslot - -\setslot{p} - \Unicode{0070}{LATIN SMALL LETTER P} -\endsetslot - -\setslot{q} - \Unicode{0071}{LATIN SMALL LETTER Q} -\endsetslot - -\setslot{r} - \Unicode{0072}{LATIN SMALL LETTER R} -\endsetslot - -\setslot{s} - \Unicode{0073}{LATIN SMALL LETTER S} -\endsetslot - -\setslot{t} - \Unicode{0074}{LATIN SMALL LETTER T} -\endsetslot - -\setslot{u} - \Unicode{0075}{LATIN SMALL LETTER U} -\endsetslot - -\setslot{v} - \Unicode{0076}{LATIN SMALL LETTER V} -\endsetslot - -\setslot{w} - \Unicode{0077}{LATIN SMALL LETTER W} -\endsetslot - -\setslot{x} - \Unicode{0078}{LATIN SMALL LETTER X} -\endsetslot - -\setslot{y} - \Unicode{0079}{LATIN SMALL LETTER Y} -\endsetslot - -\setslot{z} - \Unicode{007A}{LATIN SMALL LETTER Z} -\endsetslot - - -\begincomment -\subsubsection{Mainly East-European accented letters - in slots 128--191} -\endcomment - -\nextslot{128} -\setslot{Abreve} - \Unicode{0102}{LATIN CAPITAL LETTER A WITH BREVE} -\endsetslot - -\setslot{Aogonek} - \Unicode{0104}{LATIN CAPITAL LETTER A WITH OGONEK} -\endsetslot - -\setslot{Cacute} - \Unicode{0106}{LATIN CAPITAL LETTER C WITH ACUTE} -\endsetslot - -\setslot{Ccaron} - \Unicode{010C}{LATIN CAPITAL LETTER C WITH CARON} -\endsetslot - -\setslot{Dcaron} - \Unicode{010E}{LATIN CAPITAL LETTER D WITH CARON} -\endsetslot - -\setslot{Ecaron} - \Unicode{011A}{LATIN CAPITAL LETTER E WITH CARON} -\endsetslot - -\setslot{Eogonek} - \Unicode{0118}{LATIN CAPITAL LETTER E WITH OGONEK} -\endsetslot - -\setslot{Gbreve} - \Unicode{011E}{LATIN CAPITAL LETTER G WITH BREVE} -\endsetslot - -\setslot{Lacute} - \Unicode{0139}{LATIN CAPITAL LETTER L WITH ACUTE} -\endsetslot - -\setslot{Lcaron} - \Unicode{013D}{LATIN CAPITAL LETTER L WITH CARON} - \comment{The normal glyph for this character consists of a capital - L and a right single quote, but the underlying accent is a caron. - The glyph name \texttt{Lquoteright} is not uncommon, but - \cite{AGL} uses \texttt{Lcaron}.} -\endsetslot - -\setslot{Lslash} - \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} - \comment{The letter `\L'.} -\endsetslot - -\setslot{Nacute} - \Unicode{0143}{LATIN CAPITAL LETTER N WITH ACUTE} -\endsetslot - -\setslot{Ncaron} - \Unicode{0147}{LATIN CAPITAL LETTER N WITH CARON} -\endsetslot - -\setslot{Eng} - \Unicode{014A}{LATIN CAPITAL LETTER ENG} -\endsetslot - -\setslot{Ohungarumlaut} - \Unicode{0150}{LATIN CAPITAL LETTER O WITH DOUBLE ACUTE} - \comment{The letter `\H{O}'.} -\endsetslot - -\setslot{Racute} - \Unicode{0154}{LATIN CAPITAL LETTER R WITH ACUTE} -\endsetslot - -\setslot{Rcaron} - \Unicode{0158}{LATIN CAPITAL LETTER R WITH CARON} -\endsetslot - -\setslot{Sacute} - \Unicode{015A}{LATIN CAPITAL LETTER S WITH ACUTE} -\endsetslot - -\setslot{Scaron} - \Unicode{0160}{LATIN CAPITAL LETTER S WITH CARON} -\endsetslot - -\setslot{Scedilla} - \Unicode{015E}{LATIN CAPITAL LETTER S WITH CEDILLA} - \comment{In Romanian, character \textunicode{0218}{latin - capital letter s with comma below} is preferred, but that - wasn't known when this encoding was designed.} -\endsetslot - -\setslot{Tcaron} - \Unicode{0164}{LATIN CAPITAL LETTER T WITH CARON} -\endsetslot - -\setslot{Tcommaaccent} - \Unicode{021A}{LATIN CAPITAL LETTER T WITH COMMA BELOW} -\endsetslot - -\setslot{Uhungarumlaut} - \Unicode{0170}{LATIN CAPITAL LETTER U WITH DOUBLE ACUTE} - \comment{The letter `\H{U}'.} -\endsetslot - -\setslot{Uring} - \Unicode{016E}{LATIN CAPITAL LETTER U WITH RING ABOVE} -\endsetslot - -\setslot{Ydieresis} - \Unicode{0178}{LATIN CAPITAL LETTER Y WITH DIAERESIS} -\endsetslot - -\setslot{Zacute} - \Unicode{0179}{LATIN CAPITAL LETTER Z WITH ACUTE} -\endsetslot - -\setslot{Zcaron} - \Unicode{017D}{LATIN CAPITAL LETTER Z WITH CARON} -\endsetslot - -\setslot{Zdotaccent} - \Unicode{017B}{LATIN CAPITAL LETTER Z WITH DOT ABOVE} -\endsetslot - -\skipslots{1} -\setslot{Idotaccent} - \Unicode{0130}{LATIN CAPITAL LETTER I WITH DOT ABOVE} - \comment{This character's |\lccode| value points to slot 105 - (\texttt{i}), as does that of slot 73 (\texttt{I}).} -\endsetslot - -\setslot{dcroat} - \Unicode{0111}{LATIN SMALL LETTER D WITH STROKE} -\endsetslot - - -\nextslot{160} -\setslot{abreve} - \Unicode{0103}{LATIN SMALL LETTER A WITH BREVE} -\endsetslot - -\setslot{aogonek} - \Unicode{0105}{LATIN SMALL LETTER A WITH OGONEK} -\endsetslot - -\setslot{cacute} - \Unicode{0107}{LATIN SMALL LETTER C WITH ACUTE} -\endsetslot - -\setslot{ccaron} - \Unicode{010D}{LATIN SMALL LETTER C WITH CARON} -\endsetslot - -\setslot{dcaron} - \Unicode{010F}{LATIN SMALL LETTER D WITH CARON} - \comment{The normal glyph for this character consists of a - lower case d and a right single quote, but the underlying - accent is a caron.} -\endsetslot - -\setslot{ecaron} - \Unicode{011B}{LATIN SMALL LETTER E WITH CARON} -\endsetslot - -\setslot{eogonek} - \Unicode{0119}{LATIN SMALL LETTER E WITH OGONEK} -\endsetslot - -\setslot{gbreve} - \Unicode{011F}{LATIN SMALL LETTER G WITH BREVE} -\endsetslot - -\setslot{lacute} - \Unicode{013A}{LATIN SMALL LETTER L WITH ACUTE} -\endsetslot - -\setslot{lcaron} - \Unicode{013E}{LATIN SMALL LETTER L WITH CARON} - \comment{The normal glyph for this character consists of a - lower case l and a right single quote, but the underlying - accent is a caron. The glyph name \texttt{lquoteright} is - not uncommon, but \cite{AGL} uses \texttt{lcaron}.} -\endsetslot - -\setslot{lslash} - \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} -\endsetslot - -\setslot{nacute} - \Unicode{0144}{LATIN SMALL LETTER N WITH ACUTE} -\endsetslot - -\setslot{ncaron} - \Unicode{0148}{LATIN SMALL LETTER N WITH CARON} -\endsetslot - -\setslot{eng} - \Unicode{014B}{LATIN SMALL LETTER ENG} -\endsetslot - -\setslot{ohungarumlaut} - \Unicode{0151}{LATIN SMALL LETTER O WITH DOUBLE ACUTE} - \comment{The letter `\H{o}'.} -\endsetslot - -\setslot{racute} - \Unicode{0155}{LATIN SMALL LETTER R WITH ACUTE} -\endsetslot - -\setslot{rcaron} - \Unicode{0159}{LATIN SMALL LETTER R WITH CARON} -\endsetslot - -\setslot{sacute} - \Unicode{015B}{LATIN SMALL LETTER S WITH ACUTE} -\endsetslot - -\setslot{scaron} - \Unicode{0161}{LATIN SMALL LETTER S WITH CARON} -\endsetslot - -\setslot{scedilla} - \Unicode{015F}{LATIN SMALL LETTER S WITH CEDILLA} - \comment{In Romanian, character \textunicode{0219}{latin - small letter s with comma below} is preferred, but that - wasn't known when this encoding was designed.} -\endsetslot - -\setslot{tcaron} - \Unicode{0165}{LATIN SMALL LETTER T WITH CARON} - \comment{The normal glyph for this character consists of a - lower case t and a right single quote, but the underlying - accent is a caron.} -\endsetslot - -\setslot{tcommaaccent} - \Unicode{021B}{LATIN SMALL LETTER T WITH COMMA BELOW} -\endsetslot - -\setslot{uhungarumlaut} - \Unicode{0171}{LATIN SMALL LETTER U WITH DOUBLE ACUTE} -\endsetslot - -\setslot{uring} - \Unicode{016F}{LATIN SMALL LETTER U WITH RING ABOVE} -\endsetslot - -\setslot{ydieresis} - \Unicode{00FF}{LATIN SMALL LETTER Y WITH DIAERESIS} -\endsetslot - -\setslot{zacute} - \Unicode{017A}{LATIN SMALL LETTER Z WITH ACUTE} -\endsetslot - -\setslot{zcaron} - \Unicode{017E}{LATIN SMALL LETTER Z WITH CARON} -\endsetslot - -\setslot{zdotaccent} - \Unicode{017C}{LATIN SMALL LETTER Z WITH DOT ABOVE} -\endsetslot - - -\begincomment -\subsubsection{Mainly West-European accented letters in slots 192--255} -\endcomment - -\nextslot{192} -\setslot{Agrave} - \Unicode{00C0}{LATIN CAPITAL LETTER A WITH GRAVE} -\endsetslot - -\setslot{Aacute} - \Unicode{00C1}{LATIN CAPITAL LETTER A WITH ACUTE} -\endsetslot - -\setslot{Acircumflex} - \Unicode{00C2}{LATIN CAPITAL LETTER A WITH CIRCUMFLEX} -\endsetslot - -\setslot{Atilde} - \Unicode{00C3}{LATIN CAPITAL LETTER A WITH TILDE} -\endsetslot - -\setslot{Adieresis} - \Unicode{00C4}{LATIN CAPITAL LETTER A WITH DIAERESIS} -\endsetslot - -\setslot{Aring} - \Unicode{00C5}{LATIN CAPITAL LETTER A WITH RING ABOVE} -\endsetslot - -\setslot{AE} - \Unicode{00C6}{LATIN CAPITAL LETTER AE} -\endsetslot - -\setslot{Ccedilla} - \Unicode{00C7}{LATIN CAPITAL LETTER C WITH CEDILLA} -\endsetslot - -\setslot{Egrave} - \Unicode{00C8}{LATIN CAPITAL LETTER E WITH GRAVE} -\endsetslot - -\setslot{Eacute} - \Unicode{00C9}{LATIN CAPITAL LETTER E WITH ACUTE} -\endsetslot - -\setslot{Ecircumflex} - \Unicode{00CA}{LATIN CAPITAL LETTER E WITH CIRCUMFLEX} -\endsetslot - -\setslot{Edieresis} - \Unicode{00CB}{LATIN CAPITAL LETTER E WITH DIAERESIS} -\endsetslot - -\setslot{Igrave} - \Unicode{00CC}{LATIN CAPITAL LETTER I WITH GRAVE} -\endsetslot - -\setslot{Iacute} - \Unicode{00CD}{LATIN CAPITAL LETTER I WITH ACUTE} -\endsetslot - -\setslot{Icircumflex} - \Unicode{00CE}{LATIN CAPITAL LETTER I WITH CIRCUMFLEX} -\endsetslot - -\setslot{Idieresis} - \Unicode{00CF}{LATIN CAPITAL LETTER I WITH DIAERESIS} -\endsetslot - -\setslot{Eth} - \Unicode{00D0}{LATIN CAPITAL LETTER ETH} - \Unicode{0110}{LATIN CAPITAL LETTER D WITH STROKE} - \comment{This slot is being used to represent two different - letters whose capital forms are identical. The |\lccode| value - points to slot \ref{eth}.} -\endsetslot - -\setslot{Ntilde} - \Unicode{00D1}{LATIN CAPITAL LETTER N WITH TILDE} -\endsetslot - -\setslot{Ograve} - \Unicode{00D2}{LATIN CAPITAL LETTER O WITH GRAVE} -\endsetslot - -\setslot{Oacute} - \Unicode{00D3}{LATIN CAPITAL LETTER O WITH ACUTE} -\endsetslot - -\setslot{Ocircumflex} - \Unicode{00D4}{LATIN CAPITAL LETTER O WITH CIRCUMFLEX} -\endsetslot - -\setslot{Otilde} - \Unicode{00D5}{LATIN CAPITAL LETTER O WITH TILDE} -\endsetslot - -\setslot{Odieresis} - \Unicode{00D6}{LATIN CAPITAL LETTER O WITH DIAERESIS} -\endsetslot - -\setslot{OE} - \Unicode{0152}{LATIN CAPITAL LIGATURE OE} - \comment{This is a single letter, and should not be faked with `OE'.} -\endsetslot - -\setslot{Oslash} - \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} -\endsetslot - -\setslot{Ugrave} - \Unicode{00D9}{LATIN CAPITAL LETTER U WITH GRAVE} -\endsetslot - -\setslot{Uacute} - \Unicode{00DA}{LATIN CAPITAL LETTER U WITH ACUTE} -\endsetslot - -\setslot{Ucircumflex} - \Unicode{00DB}{LATIN CAPITAL LETTER U WITH CIRCUMFLEX} -\endsetslot - -\setslot{Udieresis} - \Unicode{00DC}{LATIN CAPITAL LETTER U WITH DIAERESIS} -\endsetslot - -\setslot{Yacute} - \Unicode{00DD}{LATIN CAPITAL LETTER Y WITH ACUTE} -\endsetslot - -\setslot{Thorn} - \Unicode{00DE}{LATIN CAPITAL LETTER THORN} -\endsetslot - -\setslot{SS} - \comment{This is an ``uppercased'' sharp s (`\ss') which always - looks exactly like two S's next to each other. In a monowidth - font it should be two letters wide. There are other characters - which could have made better use of this slot; the only function - of this slot which could not have been handled using macros is - that |\SS| and |SS| can have different hyphenation.} - \label{SS} - \charseq{ - \Unicode{0053}{LATIN CAPITAL LETTER S} - \Unicode{0053}{LATIN CAPITAL LETTER S} - } -\endsetslot - -\setslot{agrave} - \Unicode{00E0}{LATIN SMALL LETTER A WITH GRAVE} -\endsetslot - -\setslot{aacute} - \Unicode{00E1}{LATIN SMALL LETTER A WITH ACUTE} -\endsetslot - -\setslot{acircumflex} - \Unicode{00E2}{LATIN SMALL LETTER A WITH CIRCUMFLEX} -\endsetslot - -\setslot{atilde} - \Unicode{00E3}{LATIN SMALL LETTER A WITH TILDE} -\endsetslot - -\setslot{adieresis} - \Unicode{00E4}{LATIN SMALL LETTER A WITH DIAERESIS} -\endsetslot - -\setslot{aring} - \Unicode{00E5}{LATIN SMALL LETTER A WITH RING ABOVE} -\endsetslot - -\setslot{ae} - \Unicode{00E6}{LATIN SMALL LETTER AE} -\endsetslot - -\setslot{ccedilla} - \Unicode{00E7}{LATIN SMALL LETTER C WITH CEDILLA} -\endsetslot - -\setslot{egrave} - \Unicode{00E8}{LATIN SMALL LETTER E WITH GRAVE} -\endsetslot - -\setslot{eacute} - \Unicode{00E9}{LATIN SMALL LETTER E WITH ACUTE} -\endsetslot - -\setslot{ecircumflex} - \Unicode{00EA}{LATIN SMALL LETTER E WITH CIRCUMFLEX} -\endsetslot - -\setslot{edieresis} - \Unicode{00EB}{LATIN SMALL LETTER E WITH DIAERESIS} -\endsetslot - -\setslot{igrave} - \Unicode{00EC}{LATIN SMALL LETTER I WITH GRAVE} -\endsetslot - -\setslot{iacute} - \Unicode{00ED}{LATIN SMALL LETTER I WITH ACUTE} -\endsetslot - -\setslot{icircumflex} - \Unicode{00EE}{LATIN SMALL LETTER I WITH CIRCUMFLEX} -\endsetslot - -\setslot{idieresis} - \Unicode{00EF}{LATIN SMALL LETTER I WITH DIAERESIS} -\endsetslot - -\setslot{eth} - \Unicode{00F0}{LATIN SMALL LETTER ETH} - \label{eth} -\endsetslot - -\setslot{ntilde} - \Unicode{00F1}{LATIN SMALL LETTER N WITH TILDE} -\endsetslot - -\setslot{ograve} - \Unicode{00F2}{LATIN SMALL LETTER O WITH GRAVE} -\endsetslot - -\setslot{oacute} - \Unicode{00F3}{LATIN SMALL LETTER O WITH ACUTE} -\endsetslot - -\setslot{ocircumflex} - \Unicode{00F4}{LATIN SMALL LETTER O WITH CIRCUMFLEX} -\endsetslot - -\setslot{otilde} - \Unicode{00F5}{LATIN SMALL LETTER O WITH TILDE} -\endsetslot - -\setslot{odieresis} - \Unicode{00F6}{LATIN SMALL LETTER O WITH DIAERESIS} -\endsetslot - -\setslot{oe} - \Unicode{0153}{LATIN SMALL LIGATURE OE} - \comment{This is a single letter, and should not be faked with `oe'.} -\endsetslot - -\setslot{oslash} - \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} -\endsetslot - -\setslot{ugrave} - \Unicode{00F9}{LATIN SMALL LETTER U WITH GRAVE} -\endsetslot - -\setslot{uacute} - \Unicode{00FA}{LATIN SMALL LETTER U WITH ACUTE} -\endsetslot - -\setslot{ucircumflex} - \Unicode{00FB}{LATIN SMALL LETTER U WITH CIRCUMFLEX} -\endsetslot - -\setslot{udieresis} - \Unicode{00FC}{LATIN SMALL LETTER U WITH DIAERESIS} -\endsetslot - -\setslot{yacute} - \Unicode{00FD}{LATIN SMALL LETTER Y WITH ACUTE} -\endsetslot - -\setslot{thorn} - \Unicode{00FE}{LATIN SMALL LETTER THORN} -\endsetslot - -\setslot{germandbls} - \Unicode{00DF}{LATIN SMALL LETTER SHARP S} -\endsetslot - - -\begincomment -\subsection{Accents} -The Unicode equivalents of the accents are taken to be the combining -forms of the accents found in code point \texttt{U+0300} and upwards. -The reasons for this are (i) that they are primarily used with the -|\accent| primitive, i.e., as combining characters, (ii) that some -of them (e.g. \texttt{tilde}) have non-combining counterparts -elsewhere in the encoding, and (iii) that they are not primarily -phonetic marks. -\endcomment - -\nextslot{0} -\setslot{grave} - \Unicode{0300}{COMBINING GRAVE ACCENT} -\endsetslot - -\setslot{acute} - \Unicode{0301}{COMBINING ACUTE ACCENT} -\endsetslot - -\setslot{circumflex} - \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} -\endsetslot - -\setslot{tilde} - \Unicode{0303}{COMBINING TILDE} -\endsetslot - -\setslot{dieresis} - \Unicode{0308}{COMBINING DIAERESIS} -\endsetslot - -\setslot{hungarumlaut} - \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} - \comment{The long Hungarian umlaut `\H{}'.} -\endsetslot - -\setslot{ring} - \Unicode{030A}{COMBINING RING ABOVE} -\endsetslot - -\setslot{caron} - \Unicode{030C}{COMBINING CARON} - \comment{The caron or h\'a\v cek accent `\v{}'.} -\endsetslot - -\setslot{breve} - \Unicode{0306}{COMBINING BREVE} -\endsetslot - -\setslot{macron} - \Unicode{0304}{COMBINING MACRON} -\endsetslot - -\setslot{dotaccent} - \Unicode{0307}{COMBINING DOT ABOVE} -\endsetslot - -\setslot{cedilla} - \Unicode{0327}{COMBINING CEDILLA} -\endsetslot - -\setslot{ogonek} - \Unicode{0328}{COMBINING OGONEK} -\endsetslot - - -\begincomment -\subsection{Digits} -\endcomment - -\nextslot{48} -\setslot{zero} - \Unicode{0030}{DIGIT ZERO} -\endsetslot - -\setslot{one} - \Unicode{0031}{DIGIT ONE} -\endsetslot - -\setslot{two} - \Unicode{0032}{DIGIT TWO} -\endsetslot - -\setslot{three} - \Unicode{0033}{DIGIT THREE} -\endsetslot - -\setslot{four} - \Unicode{0034}{DIGIT FOUR} -\endsetslot - -\setslot{five} - \Unicode{0035}{DIGIT FIVE} -\endsetslot - -\setslot{six} - \Unicode{0036}{DIGIT SIX} -\endsetslot - -\setslot{seven} - \Unicode{0037}{DIGIT SEVEN} -\endsetslot - -\setslot{eight} - \Unicode{0038}{DIGIT EIGHT} -\endsetslot - -\setslot{nine} - \Unicode{0039}{DIGIT NINE} -\endsetslot - - -\begincomment -\subsection{Symbols and punctuation} -\endcomment - -\nextslot{13} -\setslot{quotesinglbase} - \Unicode{201A}{SINGLE LOW-9 QUOTATION MARK} -\endsetslot - -\setslot{guilsinglleft} - \Unicode{2039}{SINGLE LEFT-POINTING ANGLE QUOTATION MARK} - \comment{In French typography this is an opening quotation mark, - but in German typography it is a closing quotation mark. The - character should kern well in both cases.} -\endsetslot - -\setslot{guilsinglright} - \Unicode{203A}{SINGLE RIGHT-POINTING ANGLE QUOTATION MARK} - \comment{In French typography this is a closing quotation mark, - but in German typography it is an opening quotation mark. The - character should kern well in both cases.} -\endsetslot - -\setslot{quotedblleft} - \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} -\endsetslot - -\setslot{quotedblright} - \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} - \comment{In English typography this quotation mark is always - closing, but in Swedish typography it is also an opening - quotation mark. The character should kern well in both cases.} -\endsetslot - -\setslot{quotedblbase} - \Unicode{201E}{DOUBLE LOW-9 QUOTATION MARK} -\endsetslot - -\setslot{guillemotleft} - \Unicode{00AB}{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK} - \comment{In French typography this is an opening quotation mark, - but in German typography it is a closing quotation mark. The - character should kern well in both cases. The glyph name is - misspelt (it should be \texttt{guillemetleft}), but this - incorrect name is \emph{de facto} the glyph name used.} -\endsetslot - -\setslot{guillemotright} - \Unicode{00BB}{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK} - \comment{In French typography this is a closing quotation mark, - but in German typography it is an opening quotation mark. The - character should kern well in both cases. The glyph name is - misspelt (it should be \texttt{guillemetright}), but this - incorrect name is \emph{de facto} the glyph name used.} -\endsetslot - -\setslot{endash} - \Unicode{2013}{EN DASH} - \label{endash} - \Ligature{LIG}{hyphen}{emdash} -\endsetslot - -\setslot{emdash} - \Unicode{2014}{EM DASH} - \comment{In a monowidth font this character is preferably given the - width of two normal characters.} -\endsetslot - -\nextslot{32} -\setslot{visiblespace} - \Unicode{2423}{OPEN BOX} - \comment{A visible space glyph `\textvisiblespace'.} -\endsetslot - -\setslot{exclam} - \Unicode{0021}{EXCLAMATION MARK} - \Ligature{LIG}{quoteleft}{exclamdown} -\endsetslot - -\setslot{quotedbl} - \Unicode{0022}{QUOTATION MARK} - \comment{The `neutral' double quotation mark, included for use in - monowidth fonts, or for setting computer programs.} -\endsetslot - -\setslot{numbersign} - \Unicode{0023}{NUMBER SIGN} -\endsetslot - -\setslot{dollar} - \Unicode{0024}{DOLLAR SIGN} -\endsetslot - -\setslot{percent} - \Unicode{0025}{PERCENT SIGN} -\endsetslot - -\setslot{ampersand} - \Unicode{0026}{AMPERSAND} -\endsetslot - -\setslot{quoteright} - \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} - \Ligature{LIG}{quoteright}{quotedblright} -\endsetslot - -\setslot{parenleft} - \Unicode{0028}{LEFT PARENTHESIS} -\endsetslot - -\setslot{parenright} - \Unicode{0029}{RIGHT PARENTHESIS} -\endsetslot - -\setslot{asterisk} - \Unicode{002A}{ASTERISK} -\endsetslot - -\setslot{plus} - \Unicode{002B}{PLUS SIGN} -\endsetslot - -\setslot{comma} - \Unicode{002C}{COMMA} - \Ligature{LIG}{comma}{quotedblbase} -\endsetslot - -\setslot{hyphen} - \Unicode{002D}{HYPHEN-MINUS} - \Ligature{LIG}{hyphen}{endash} - \Ligature{LIG}{hyphenchar}{hyphenchar} - \comment{See also slot \ref{hyphenchar}.} - \label{hyphen} -\endsetslot - -\setslot{period} - \Unicode{002E}{FULL STOP} -\endsetslot - -\setslot{slash} - \Unicode{002F}{SOLIDUS} -\endsetslot - -\skipslots{10} -\setslot{colon} - \Unicode{003A}{COLON} -\endsetslot - -\setslot{semicolon} - \Unicode{003B}{SEMICOLON} -\endsetslot - -\setslot{less} - \Unicode{003C}{LESS-THAN SIGN} - \Ligature{LIG}{less}{guillemotleft} -\endsetslot - -\setslot{equal} - \Unicode{003D}{EQUALS SIGN} -\endsetslot - -\setslot{greater} - \Unicode{003E}{GREATER-THAN SIGN} - \Ligature{LIG}{greater}{guillemotright} -\endsetslot - -\setslot{question} - \Unicode{003F}{QUESTION MARK} - \Ligature{LIG}{quoteleft}{questiondown} -\endsetslot - -\setslot{at} - \Unicode{0040}{COMMERCIAL AT} -\endsetslot - -\nextslot{91} -\setslot{bracketleft} - \Unicode{005B}{LEFT SQUARE BRACKET} -\endsetslot - -\setslot{backslash} - \Unicode{005C}{REVERSE SOLIDUS} -\endsetslot - -\setslot{bracketright} - \Unicode{005D}{RIGHT SQUARE BRACKET} -\endsetslot - -\setslot{asciicircum} - \Unicode{005E}{CIRCUMFLEX ACCENT} - \comment{The ASCII upward-pointing arrow head `\textasciicircum'. - This is included for compatibility with typewriter fonts used - for computer listings.} -\endsetslot - -\setslot{underscore} - \Unicode{005F}{LOW LINE} - \comment{The ASCII underline character `\textunderscore', usually - set on the baseline. This is included for compatibility with - typewriter fonts used for computer listings.} -\endsetslot - -\setslot{quoteleft} - \Unicode{2018}{LEFT SINGLE QUOTATION MARK} - \Ligature{LIG}{quoteleft}{quotedblleft} -\endsetslot - -\nextslot{123} -\setslot{braceleft} - \Unicode{007B}{LEFT CURLY BRACKET} -\endsetslot - -\setslot{bar} - \Unicode{007C}{VERTICAL LINE} - \comment{The ASCII vertical bar `\textbar'. - This is included for compatibility with typewriter fonts used - for computer listings.} -\endsetslot - -\setslot{braceright} - \Unicode{007D}{RIGHT CURLY BRACKET} -\endsetslot - -\setslot{asciitilde} - \Unicode{007E}{TILDE} - \comment{The ASCII tilde `\textasciitilde'. - This is included for compatibility with typewriter fonts used - for computer listings.} -\endsetslot - -\nextslot{159} -\setslot{section} - \Unicode{00A7}{SECTION SIGN} -\endsetslot - -\nextslot{189} -\setslot{exclamdown} - \Unicode{00A1}{INVERTED EXCLAMATION MARK} -\endsetslot - -\setslot{questiondown} - \Unicode{00BF}{INVERTED QUESTION MARK} -\endsetslot - -\setslot{sterling} - \Unicode{00A3}{POUND SIGN} -\endsetslot - - - -\begincomment -\subsection{Miscellanea} -\endcomment - -\nextslot{23} -\setslot{compwordmark} - \Unicode{200C}{ZERO WIDTH NON-JOINER} - \comment{An invisible glyph, with zero width and depth, but the - height of lower case letters without ascenders. - It is used to stop ligaturing in words like `shelf{}ful'. - It is possible that this character should be considered a - letter (and that hyphenation patterns should be designed to - include it), but since its |\lccode| is 0, \TeX's hyphenation - mechanism considers it to be a nonletter which ends the - hyphenatable part of a word.} -\endsetslot - -\setslot{perthousandzero} - \comment{A glyph which is placed after `\%' to produce a - `per-thousand', or twice to produce `per-ten-thousand'. - Your guess is as good as mine as to what this glyph should look - like in a monowidth font. Since most fonts don't include this - glyph anyway, its use is discouraged.} -\endsetslot - -\nextslot{127} -\setslot{hyphenchar} - \label{hyphenchar} - \comment{This character is provided as a discretionary hyphen - symbol and may only appear at the end of a line, since it is often - hanging out of the character box, but apart from that it is almost - always the same as the \texttt{hyphen} character. Since \LaTeX\ - sets the |\hyphenchar| of \texttt{T1} fonts to slot \ref{hyphen} - rather than this slot, this feature is usually not used.} -\endsetslot - - - -\begincomment -\section{Usual characters} -The following characters are only accessed through ligatures and can -therefore be replaced by others or completely left out if the -ligature programs are modified accordingly. -\endcomment - - -\nextslot{27} -\setslot{ff} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - } - \comment{This glyph should be two characters wide in a monowidth - font.} - \ligature{LIG}{i}{ffi} - \ligature{LIG}{l}{ffl} -\endsetslot - -\setslot{fi} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0069}{LATIN SMALL LETTER I} - } - \comment{This glyph should be two characters wide in a monowidth - font.} -\endsetslot - -\setslot{fl} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{006C}{LATIN SMALL LETTER L} - } - \comment{This glyph should be two characters wide in a monowidth - font.} -\endsetslot - -\setslot{ffi} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0069}{LATIN SMALL LETTER I} - } - \comment{This glyph should be three characters wide in a monowidth - font.} -\endsetslot - -\setslot{ffl} - \charseq{ - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{0066}{LATIN SMALL LETTER F} - \Unicode{006C}{LATIN SMALL LETTER L} - } - \comment{This glyph should be three characters wide in a monowidth - font.} -\endsetslot - -\nextslot{156} -\setslot{IJ} - \Unicode{0132}{LATIN CAPITAL LIGATURE IJ} - \comment{This is a single letter, and in a monowidth font should - ideally be one letter wide.} -\endsetslot - -\nextslot{188} -\setslot{ij} - \Unicode{0133}{LATIN SMALL LIGATURE IJ} - \comment{This is a single letter, and in a monowidth font should - ideally be one letter wide.} -\endsetslot - - -\begincomment -\section{Fontdimens} -\endcomment - -\setfontdimen{1}{italicslant} % italic slant -\setfontdimen{2}{interword} % interword space -\setfontdimen{3}{stretchword} % interword stretch -\setfontdimen{4}{shrinkword} % interword shrink -\setfontdimen{5}{xheight} % x-height -\setfontdimen{6}{quad} % quad -\setfontdimen{7}{extraspace} % extra space after . -\setfontdimen{8}{capheight} % cap height -\setfontdimen{9}{ascender} % ascender -\setfontdimen{10}{acccapheight} % accented cap height -\setfontdimen{11}{descender} % descender's depth -\setfontdimen{12}{maxheight} % max height -\setfontdimen{13}{maxdepth} % max depth -\setfontdimen{14}{digitwidth} % digit width -\setfontdimen{15}{verticalstem} % dominant width of verical stems -\setfontdimen{16}{baselineskip} % baselineskip - - -\begincomment -\section{Coding scheme} -\endcomment - -\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN} - - -\endencoding - - -\section{Discussion} - -As the \texttt{T1} encoding is an established standard, the discussion -of it has already been published elsewhere. [Unfortunately, I do not -know where as it all happened long before I started using \TeX. This -part of the document definitely needs to be improved. To begin with, I -would like to know if the TUGboat articles whose bibliography entries -appear in Figure~\ref{Bib-entries} are relevant for the matter. -\begin{figure*} -\small -\begin{verbatim} -@Article{Beebe:TB11-2-171, - author = "Nelson Beebe", - title = "{Character set encoding}", - journal = j-TUGboat, - volume = "11", - number = "2", - pages = "171--175", - month = jun, - year = "1990", - ISSN = "0896-3207", - bibdate = "Fri Jun 4 18:08:09 MDT 1999", - bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; - http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", - acknowledgement = ack-bnb # " and " # ack-nhfb, -} -@Article{Bien:TB11-2-175, - author = "Janusz S. Bie{\'n}", - title = "{On standards for computer modern font extensions}", - journal = j-TUGboat, - volume = "11", - number = "2", - pages = "175--183", - month = jun, - year = "1990", - ISSN = "0896-3207", - bibdate = "Fri Jun 4 18:08:09 MDT 1999", - bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; - http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", - acknowledgement = ack-bnb # " and " # ack-nhfb, -} -@Article{Ferguson:TB11-4-514, - author = "Michael Ferguson", - title = "{Report on multilingual activities}", - journal = j-TUGboat, - volume = "11", - number = "4", - pages = "514--516", - month = nov, - year = "1990", - ISSN = "0896-3207", - bibdate = "Fri Jun 4 18:08:09 MDT 1999", - bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; - http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", - acknowledgement = ack-bnb # " and " # ack-nhfb, -} -\end{verbatim} -\normalsize - -\caption{Entries in \texttt{tugboat.bib} which may describe papers -that contain (at least part of) the discussion regarding the -\texttt{T1} encoding} -\label{Bib-entries} -\end{figure*} -Actually reading them would be nice too, as would of course getting -the references for whatever other papers there might be that -constituted the discussion of the \texttt{T1} encoding. The file -\texttt{cork.enc} in the \textit{Fontname} standard makes a cryptic -reference to ``TTN 1(4), December 1992'', whatever that might be.] - -I can however answer questions on the more immediate matter of how the -interpretation of the established standard that this file expresses was -constructed. It is mainly the result of a comparison between the -file \texttt{t1.etx}~\cite{t1.etx}, the Unicode -standard~\cite{Unicode}, and the Adobe glyph list~\cite{AGL}. - -(Some concerns have been expressed about the fact that the glyph name -listed for slot~0 is `\texttt{grave}', although that glyph name in -\cite{AGL} corresponds to \textunicode{0060}{GRAVE ACCENT}, whereas -\textunicode{0300}{COMBINING GRAVE ACCENT} is listed as corresponding -to `\texttt{gravecomb}'. This is however formally irrelevant, since -the glyph names are formally only internal labels in the encoding -specification. `\texttt{gravecomb}' would furthermore be a more -impractical label, since most font contains a `\texttt{grave}' glyph -that is used as a combining accent but no `\texttt{gravecomb}' -glyph.) - - -\section{Changes} - -The changes made to this specification since the original 2001/06/19 -version are as follows. - -2001/09/01: Corrected some typos (reported by Vladimir Volovich). /LH - -2001/09/16: Added \cite{latin-page} to the bibliography. /LH - -2001/09/21: Removed comment on \textunicode{2012}{FIGURE DASH} from -slot~\ref{endash}. \cite[Sec.~6.1]{Unicode} makes quite clear that -it's not to be used for ranges. /LH - -2002/07/05: Added the Ferguson:TB11-4-514 and ``TTN~1(4)'' references -to the discussion section. Also added remark on \texttt{grave} versus -\texttt{gravecomb}. /LH - -2004/11/28: Changed the f-ligatures to character sequences, which -makes more sense for \texttt{CMap}s. Added equivalent for -slot~\ref{SS}. /LH - - -\begin{thebibliography}{9} -\bibitem{AGL} - Adobe Systems Incorporated: \textit{Adobe Glyph List}, 1998; - \textsc{http}:/\slash \texttt{partners.adobe.com}\slash - \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash - \texttt{glyphlist.txt} -\bibitem{latin-page} - Roman Czyborra: \textit{The ISO 8859 Alphabet Soup}, web page at - \textsc{http:}/\slash \texttt{czyborra.com}\slash - \texttt{charsets}\slash \texttt{iso8859.html}, 1998. -\bibitem{ISO8859-1} - International Organization for Standardization: - \textit{ISO/IEC standard 8859-1} (Information technology -- - 8-bit single-byte coded graphic character sets -- - Part 1: Latin alphabet No. 1). - See also~\cite{latin-page}. -\bibitem{t1.etx} - Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: - \textit{The \TeX\ extended text encoding vector}, - version~1.801, 1998, - \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{fonts}\slash - \texttt{utilities}\slash \texttt{fontinst}\slash - \texttt{inputs}\slash \texttt{etx}\slash \texttt{t1.etx}. -\bibitem{TeXbook} - Donald E.\ Knuth, Duane Bibby (illustrations): - \textit{The \TeX book}, Ad\-di\-son--Wes\-ley, 1986; - ISBN~0-201-13447-0. -\bibitem{Unicode} - The Unicode Consortium (editor), \emph{et al.}: - \textit{The Unicode Standard, Version 3.0}, - Addison Wesley Longman Publisher, 2000; ISBN~0-201-61633-5. - Most of the information in this book is also available online at - the Unicode consortium website, at \textsc{http}:/\slash - \texttt{www.unicode.org}\slash \texttt{unicode}\slash - \texttt{uni2book}\slash \texttt{u2.html}. -\end{thebibliography} - - - -\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex deleted file mode 100644 index fe7f6f69935..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex +++ /dev/null @@ -1,431 +0,0 @@ -% basicex.tex -% -% This file contains some basic examples of commands for -% installing the AGaramond family of fonts with fontinst v1.9. -% It is pretty similar to what the \latinfamily command -% does for these fonts, but the details are not identical. -% -% In case you want to run this file yourself, the metrics for -% the AGaramond font family can be downloaded from -% -% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/051-100/100/ -% and -% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/101-150/101/ -% -% The AFM files found in these directories should then be renamed -% as indicated in the Fontname adobe.map file. Also note that -% the line endings are Windows-style (CRLF), so you probably need -% to download as binary and do some conversion before you can use -% these files comfortably. - -\input fontinst.sty - -% This tells fontinst to collect information about font -% transformations in the file basicex.recs. That file is -% then used by basicex2.tex. -\recordtransforms{basicex.recs} - -% These commands perform transformations on the metrics of -% some of the fonts, thereby creating new metrics files for -% the transformed fonts. -\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} -\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}} -\transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}} -\transformfont{padro8r}{\slantfont{250}{\frommtx{padr8r}}} -\transformfont{padro8x}{\slantfont{250}{\fromafm{padr8x}}} - -% The first three lines of each group reencode fonts -% so that TeX can access all glyphs in them. -\transformfont{pads8r}{\reencodefont{8r}{\fromafm{pads8a}}} -\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} -\transformfont{padsi8r}{\reencodefont{8r}{\fromafm{padsi8a}}} -% The last two lines artifically create slanted variants -% of fonts by skewing them. 250 is the natural slant of -% the italics in this family. -\transformfont{padso8r}{\slantfont{250}{\frommtx{pads8r}}} -\transformfont{padso8x}{\slantfont{250}{\fromafm{pads8x}}} - -\transformfont{padb8r}{\reencodefont{8r}{\fromafm{padb8a}}} -% There is no padbc8a, hence nothing to make a padbc8r from. -\transformfont{padbi8r}{\reencodefont{8r}{\fromafm{padbi8a}}} -\transformfont{padbo8r}{\slantfont{250}{\frommtx{padb8r}}} -\transformfont{padbo8x}{\slantfont{250}{\fromafm{padb8x}}} -% The DVI driver must be told to make the same transformations -% to the actual fonts when a document using them is to be viewed -% or printed. The information collected in basicex.recs can -% help with this. The job of basicex2.tex is to translate this -% information to a format understood by DVI drivers. - - -% The \transformfont commands above generate metric files in MTX -% format (for use by the \installfont commands below) and PL -% format (for transformation to TFMs that are needed by the DVI -% driver when interpreting VFs based on these fonts). These PL -% files are minimal and not suitable for direct use in typesetting -% since there is no kerning information, ligaturing instructions, -% or fontdimens, but they are perfectly adequate to serve as -% base fonts for VFs. -% -% The next bunch of commands generate a new set of PL files for -% these fonts (overwriting the previous), and these new files -% do contain kerning information, ligaturing instructions, and -% fontdimens. (As a side-effect, these files are also larger than -% the previous ones.) Since 8r-encoded fonts are not in practice -% used for typesetting (not much, anyway), it is perfectly -% possible to skip this step. -\installfonts - \installrawfont {padr8r}{padr8r,8r}{8r} {8r}{pad}{m}{n}{} - \installrawfont {padrc8r}{padrc8r,8r}{8r} {8r}{pad}{m}{sc}{} - \installrawfont {padri8r}{padri8r,8r}{8r} {8r}{pad}{m}{it}{} - \installrawfont {padro8r}{padro8r,8r}{8r} {8r}{pad}{m}{sl}{} - - \installrawfont {pads8r}{pads8r,8r}{8r} {8r}{pad}{sb}{n}{} - \installrawfont {padsc8r}{padsc8r,8r}{8r} {8r}{pad}{sb}{sc}{} - \installrawfont {padsi8r}{padsi8r,8r}{8r} {8r}{pad}{sb}{it}{} - \installrawfont {padso8r}{padso8r,8r}{8r} {8r}{pad}{sb}{sl}{} - - \installrawfont {padb8r}{padb8r,8r}{8r} {8r}{pad}{b}{n}{} - \installrawfont {padbi8r}{padbi8r,8r}{8r} {8r}{pad}{b}{it}{} - \installrawfont {padbo8r}{padbo8r,8r}{8r} {8r}{pad}{b}{sl}{} -\endinstallfonts - - -% In the above commands, the commands have been lined up to -% visually separate those arguments that have to do with how -% a font is declared to LaTeX (rightmost) from those arguments -% that specify how the font is made and what it should be called. - - -% The following commands make a very basic installation of "pad" -% families in the OT1, T1, and TS1 encodings; there is not attempt -% to make use of the -Exp (expert) or -SC (smallcaps) fonts in -% the AGaramond family. (One reason for making this distinction -% is that Adobe sell these other fonts separately, so some people -% may have the basic set used below and nothing more. Another -% reason is that for many typefaces, there are no expert or -SC -% fonts at all. Adapting an example using such fonts to a typeface -% which do not have them is much too confusing for a beginner.) -\installfonts - \installfamily{OT1}{pad}{} - \installfamily{T1}{pad}{} - \installfamily{TS1}{pad}{} - - \installfont {padr8t}{padr8r,newlatin}{t1} {T1}{pad}{m}{n}{} - \installfont {padr7t}{padr8r,newlatin}{ot1} {OT1}{pad}{m}{n}{} - \installfont {padrc8t}{padr8r,newlatin}{t1c} {T1}{pad}{m}{sc}{} - \installfont {padrc7t}{padr8r,newlatin}{ot1c} {OT1}{pad}{m}{sc}{} - \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{} - % There is no difference between the n and the sc shapes - % of TS1 encoded fonts, hence the same TeX font can be - % used for both. LaTeX does however need the declarations - % to be explicit, hence this \installfontas command. - \installfontas{padr8i} {TS1}{pad}{m}{sc}{} - % The "option nosc" below is a speed optimization. - % newlatin.mtx normally makes sure that a smallcaps - % alphabet is defined (faking it if necessary), - % regardless of whether that alphabet is at all - % going to be used. By passing it the "nosc" option, - % one can tell newlatin.mtx to completely skip those - % commands that have to do with smallcaps. - \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{} - \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{} - \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{} - \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{} - \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{} - \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{} - - % The reason newlatin is not passed the nosc option when - % making the "n" shape fonts here is another (more tricky) - % speed optimization. If the metric argument of two - % subsequent \installfont commands are identical then the - % respective glyph bases will be identical too, and in these - % cases fontinst saves work by not rebuilding the glyph base - % at the second command, but instead using the cached - % definitions from the first. - \installfont {pads8t}{pads8r,newlatin}{t1} {T1}{pad}{sb}{n}{} - \installfont {pads7t}{pads8r,newlatin}{ot1} {OT1}{pad}{sb}{n}{} - \installfont {padsc8t}{pads8r,newlatin}{t1c} {T1}{pad}{sb}{sc}{} - \installfont {padsc7t}{pads8r,newlatin}{ot1c} {OT1}{pad}{sb}{sc}{} - % Thus the last four commands cause four fonts to be - % generated, but the pads8r.mtx and newlatin.mtx files - % are only read once. - \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{} - \installfontas{pads8i} {TS1}{pad}{sb}{sc}{} - \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{} - \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{} - \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{} - \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{} - \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{} - \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{} - - \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{} - \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{} - \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{} - \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{} - \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{} - \installfontas{padb8i} {TS1}{pad}{b}{sc}{} - \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{} - \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{} - \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{} - \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{} - \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{} - \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{} -\endinstallfonts - - -% The set of commands above will "fake" an sc shape for the typeface -% by making dual use of the capitals in the n shape (Regular): both -% as normal (for the upper case in the sc shape) and shrunk to 80% of -% their normal size (for the lower case in the sc shape). This works -% (anyone who looks at it will understand what was intended), but it -% does not look good, and therefore it is always better to make use -% of proper smallcaps when it is available. -% -% The next set of commands is another take at creating the "pad" -% families, this time making use of the proper smallcaps in padrc8r -% and padsc8r. The files created by this set of commands will -% completely overwrite the files created by the previous set of -% commands; in practice one would only include one set of commands, -% but both are provided here for comparison. -\installfonts - \installfamily{OT1}{pad}{} - \installfamily{T1}{pad}{} - \installfamily{TS1}{pad}{} - - % Since the glyph bases used for the n and sc shapes in this - % case are different, there is no point in doing the smallcaps - % processing when making the n shape fonts. - \installfont {padr8t}{padr8r,newlatin option nosc}{t1} {T1}{pad}{m}{n}{} - \installfont {padr7t}{padr8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{n}{} - % There is actually no point in doing that processing for - % the sc shape fonts either! This is because the glyph names - % used in padrc8r are the same as those used in padr8r (and - % padri8r), and thus the smallcaps glyphs will already have - % been delt with by the code for lower case glyphs. Another - % consequence is that the same ETX files as are used for - % the other shapes should be used for the sc shape. - \installfont {padrc8t}{padrc8r,newlatin option nosc}{t1} {T1}{pad}{m}{sc}{} - \installfont {padrc7t}{padrc8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sc}{} - \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{} - \installfontas{padr8i} {TS1}{pad}{m}{sc}{} - \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{} - \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{} - \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{} - \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{} - \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{} - \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{} - - \installfont {pads8t}{pads8r,newlatin option nosc}{t1} {T1}{pad}{sb}{n}{} - \installfont {pads7t}{pads8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{n}{} - \installfont {padsc8t}{padsc8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sc}{} - \installfont {padsc7t}{padsc8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sc}{} - \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{} - \installfontas{pads8i} {TS1}{pad}{sb}{sc}{} - \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{} - \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{} - \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{} - \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{} - \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{} - \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{} - - % There is however no padbc8r font; hence the sc shape of - % the b series must still be faked, just as above. - \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{} - \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{} - \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{} - \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{} - \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{} - \installfontas{padb8i} {TS1}{pad}{b}{sc}{} - \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{} - \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{} - \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{} - \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{} - \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{} - \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{} -\endinstallfonts - - -% The "pad" family installed above is however still far from perfect. -% The `ff', `ffi', and `ffl' ligatures are fakes, since those aren't -% available in the fonts used. There are however such glyphs in the -% expert (8x) companions of the fonts used above, and hence the -% results will be better if these resources can be combined. -% -% One of the great advantages with TeX, virtual fonts, and fontinst -% is the ease with which one can combine glyphs from (what the foundry -% has packaged as) several different fonts into a single font; -% if \installfont is given the metrics of two fonts, and some glyph -% is available in one font but not the other, then fontinst will -% automatically take it from the font where it was available. -% Hence one can fill in (at least some of) the blanks of one font -% by also listing a second font in the metrics argument of -% \installfont. It will do the right thing automatically. -\installfonts - \installfamily{OT1}{padx}{} - \installfamily{T1}{padx}{} - \installfamily{TS1}{padx}{} - % The "padx" family name used here is mainly motivated by - % tradition. It has been considered useful to simultaneously - % on a single system have both a family of virtual fonts which - % do not make use of the expert set of base fonts, and a family - % of virtual fonts which do make use of the expert set of base - % fonts. For this to work, the different fonts must have - % different names. In the Fontname scheme, this is accomplished - % by including an "x" variant letter in the names to signify that - % the font is "expertized". In LaTeX there is no proper standard - % for this, but the custom is to similarly append an "x" to the - % basic three letter family name, thus yielding "padx" instead - % of "pad". - - % The Fontname scheme is in this case further complicated by - % a desire to avoid names of more than eight characters - % (a limit which is important in many old file systems). - % Therefore many of the two-character variants starting with - % 9 is a combination of an encoding variant with one or two - % other variants (most commonly the "x" variant). The commands - % below utilize these abbreviations (but there is no software - % involved which would require them to). - \installfont {padr9e}{padr8r,padr8x,newlatin}{t1} {T1}{padx}{m}{n}{} - \installfont {padr9t}{padr8r,padr8x,newlatin}{ot1} {OT1}{padx}{m}{n}{} - % Besides the extra ligatures, the upright 8x fonts also contain - % a proper smallcaps alphabet. This makes it possible to make do - % without the -c8r fonts. The commands below will make a font - % using the upper case from padr8r and (as lower case) the - % small caps from padr8x. - \installfont {padrc9e}{padr8r,padr8x,newlatin}{t1c} {T1}{padx}{m}{sc}{} - \installfont {padrc9t}{padr8r,padr8x,newlatin}{ot1c} {OT1}{padx}{m}{sc}{} - \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padx}{m}{n}{} - \installfontas{padr9i} {TS1}{padx}{m}{sc}{} - \installfont {padri9e}{padri8r,padri8x,newlatin option nosc}{t1} {T1}{padx}{m}{it}{} - \installfont {padri9t}{padri8r,padri8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{it}{} - \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padx}{m}{it}{} - \installfont {padro9e}{padro8r,padro8x,newlatin option nosc}{t1} {T1}{padx}{m}{sl}{} - \installfont {padro9t}{padro8r,padro8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{sl}{} - \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padx}{m}{sl}{} - - \installfont {pads9e}{pads8r,pads8x,newlatin}{t1} {T1}{padx}{sb}{n}{} - \installfont {pads9t}{pads8r,pads8x,newlatin}{ot1} {OT1}{padx}{sb}{n}{} - \installfont {padsc9e}{pads8r,pads8x,newlatin}{t1c} {T1}{padx}{sb}{sc}{} - \installfont {padsc9t}{pads8r,pads8x,newlatin}{ot1c} {OT1}{padx}{sb}{sc}{} - \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padx}{sb}{n}{} - \installfontas{pads9i} {TS1}{padx}{sb}{sc}{} - \installfont {padsi9e}{padsi8r,padsi8x,newlatin option nosc}{t1} {T1}{padx}{sb}{it}{} - \installfont {padsi9t}{padsi8r,padsi8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{it}{} - \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padx}{sb}{it}{} - \installfont {padso9e}{padso8r,padso8x,newlatin option nosc}{t1} {T1}{padx}{sb}{sl}{} - \installfont {padso9t}{padso8r,padso8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{sl}{} - \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padx}{sb}{sl}{} - - \installfont {padb9e}{padb8r,padb8x,newlatin}{t1} {T1}{padx}{b}{n}{} - \installfont {padb9t}{padb8r,padb8x,newlatin}{ot1} {OT1}{padx}{b}{n}{} - % The padb8x font does not contain a smallcaps alphabet -- - % hence in this case the newlatin.mtx file reverts to faking - % such an alphabet by shrinking the upper case. The commands - % can however be the same as above! - \installfont {padbc9e}{padb8r,padb8x,newlatin}{t1c} {T1}{padx}{b}{sc}{} - \installfont {padbc9t}{padb8r,padb8x,newlatin}{ot1c} {OT1}{padx}{b}{sc}{} - \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padx}{b}{n}{} - \installfontas{padb9i} {TS1}{padx}{b}{sc}{} - \installfont {padbi9e}{padbi8r,padbi8x,newlatin option nosc}{t1} {T1}{padx}{b}{it}{} - \installfont {padbi9t}{padbi8r,padbi8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{it}{} - \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padx}{b}{it}{} - \installfont {padbo9e}{padbo8r,padbo8x,newlatin option nosc}{t1} {T1}{padx}{b}{sl}{} - \installfont {padbo9t}{padbo8r,padbo8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{sl}{} - \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padx}{b}{sl}{} -\endinstallfonts - - -% Finally we get to my personal favourite -- the families with hanging -% (a.k.a. oldstyle) figures. From a historical point of view, this is -% really the most correct appearence of these fonts, because in the 16th -% century (when Claude Garamond designed the metal types after which the -% AGaramond fonts where modelled) there was no such thing as lining -% figures; all figures were hanging. -% -% The 8x fonts all contain a suitable set of hanging figures. This makes -% it very straightforward to make use of these instead of the lining -% digits of the base fonts. One simply has to make use of ETX files -% which selects these glyphs hanging figure glyphs instead of the -% lining figure glyphs. -\installfonts - \installfamily{OT1}{padj}{} - \installfamily{T1}{padj}{} - \installfamily{TS1}{padj}{} - % Another custom: a "j" (the Fontname hanging figure variant letter) - % is appended to the LaTeX family name to distinguish between - % lining and hanging figure families. - - \installfont {padr9d}{padr8r,padr8x,newlatin}{t1j} {T1}{padj}{m}{n}{} - \installfont {padr9o}{padr8r,padr8x,newlatin}{ot1j} {OT1}{padj}{m}{n}{} - \installfont {padrc9d}{padr8r,padr8x,newlatin}{t1cj} {T1}{padj}{m}{sc}{} - \installfont {padrc9o}{padr8r,padr8x,newlatin}{ot1cj} {OT1}{padj}{m}{sc}{} - \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padj}{m}{n}{} - \installfontas{padr9i} {TS1}{padj}{m}{sc}{} - \installfont {padri9d}{padri8r,padri8x,newlatin option nosc}{t1j} {T1}{padj}{m}{it}{} - \installfont {padri9o}{padri8r,padri8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{it}{} - \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padj}{m}{it}{} - \installfont {padro9d}{padro8r,padro8x,newlatin option nosc}{t1j} {T1}{padj}{m}{sl}{} - \installfont {padro9o}{padro8r,padro8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{sl}{} - \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padj}{m}{sl}{} - - \installfont {pads9d}{pads8r,pads8x,newlatin}{t1j} {T1}{padj}{sb}{n}{} - \installfont {pads9o}{pads8r,pads8x,newlatin}{ot1j} {OT1}{padj}{sb}{n}{} - \installfont {padsc9d}{pads8r,pads8x,newlatin}{t1cj} {T1}{padj}{sb}{sc}{} - \installfont {padsc9o}{pads8r,pads8x,newlatin}{ot1cj} {OT1}{padj}{sb}{sc}{} - \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padj}{sb}{n}{} - \installfontas{pads9i} {TS1}{padj}{sb}{sc}{} - \installfont {padsi9d}{padsi8r,padsi8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{it}{} - \installfont {padsi9o}{padsi8r,padsi8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{it}{} - \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padj}{sb}{it}{} - \installfont {padso9d}{padso8r,padso8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{sl}{} - \installfont {padso9o}{padso8r,padso8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{sl}{} - \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padj}{sb}{sl}{} - - \installfont {padb9d}{padb8r,padb8x,newlatin}{t1j} {T1}{padj}{b}{n}{} - \installfont {padb9o}{padb8r,padb8x,newlatin}{ot1j} {OT1}{padj}{b}{n}{} - \installfont {padbc9d}{padb8r,padb8x,newlatin}{t1cj} {T1}{padj}{b}{sc}{} - \installfont {padbc9o}{padb8r,padb8x,newlatin}{ot1cj} {OT1}{padj}{b}{sc}{} - \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padj}{b}{n}{} - \installfontas{padb9i} {TS1}{padj}{b}{sc}{} - \installfont {padbi9d}{padbi8r,padbi8x,newlatin option nosc}{t1j} {T1}{padj}{b}{it}{} - \installfont {padbi9o}{padbi8r,padbi8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{it}{} - \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padj}{b}{it}{} - \installfont {padbo9d}{padbo8r,padbo8x,newlatin option nosc}{t1j} {T1}{padj}{b}{sl}{} - \installfont {padbo9o}{padbo8r,padbo8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{sl}{} - \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padj}{b}{sl}{} -\endinstallfonts - -% This closes the file opened by \recordtransforms above. -\endrecordtransforms - -\bye - -% The installations made by the above commands are certainly not -% optimal. Some things which can be improved are: -% -% - Although the padrc9e, padrc9t, padsc9e, padsc9t, padrc9d, -% padrc9o, padsc9d, and padsc9o fonts contain proper smallcaps -% glyphs, there are no kerns between the smallcaps and -% the upper case in these fonts, because there were no such -% kerns in any of the fonts they are based on. There are -% however such kerning pairs in padrc8r and padsc8r, and it is -% quite easy to extract this information using the \reglyphfont -% command with the settings in the csckrn2x.tex file. -% -% - The padrc8t, padrc7t, padsc8t, and padsc7t fonts that are -% based on padrc8r and padsc8r respectively have hanging figures, -% whereas the other fonts in the same family have lining figures. -% This is only because that is how the foundry packaged the -% glyphs into fonts, and the careful font installer might want -% to straighten out this situation. One way to do that is -% to make use of the unsetnum.mtx file, another is to make -% use of the `suffix' mechanism (new in v1.923). -% -% - One glyph which is missing from all the fonts made above is -% the Euro glyph (and that is kind of awkward these days, although -% as of v1.926 textcomp.mtx fakes this using a C and two rules). -% One way to supply a Euro glyph is to provide yet another font -% (besides the -8r's and -8x's) as base font, if that extra -% font contains the missing Euro glyph. The same trick can be used -% to get greek capitals for the OT1-encoded fonts. - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex deleted file mode 100644 index 74fe2a4df5a..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex +++ /dev/null @@ -1,50 +0,0 @@ -% -% basicex2.tex -% -% fontinst command file for writing map file fragments for -% the raw fonts used by the fonts made in basicex.tex. -% - -\input finstmsc.sty - -% At this point, you might want to change some settings -% to make the map file fragments written better adjusted -% to your particular system. Some common examples are: -% -% \resetstr{PSfontsuffix}{.pfb} -% -% which is useful if the actual fonts are in PFB format. -% -% \AssumeLWFN -% -% This is useful if the font files are named according to -% the old Mac OS Classic convention for PostScript fonts -% (names like AGarBolIta). - -\adddriver{dvips}{dvips.map} -% This causes a .map file for dvips to be written. -% It is probably better to choose a name that has to -% do with the fonts than to use `dvips.map'. -% In some systems, there is a program updmap which combines -% several small .map files such as this one into a large -% psfonts.map file. -\adddriver{dvipdfm}{dvipdfm.map} -% Similar file for dvipdfm. -\adddriver{pltotf}{pltotf-script.sh} -% A shell script that runs pltotf on those .pl files -% which you need to turn into .tfm files. -\adddriver{debug}{mapdump.txt} -% This file contains the available data in a human-readable -% format. This is useful if your dvi driver uses some other -% kind of map file. - -\input basicex.recs -% This is where all the work is done. - -\donedrivers -% This closes the files and does some cleanup. - -\bye - - - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi deleted file mode 100644 index ae8133acad4..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf deleted file mode 100644 index 20c50851cdd..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex deleted file mode 100644 index 19f5f012231..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex +++ /dev/null @@ -1,4160 +0,0 @@ -%%% ==================================================================== -%%% @LaTeX-file{ -%%% author = "Alan Jeffrey and Rowland McDonnell and -%%% Ulrik Vieth and Lars Hellstr{\"o}m", -%%% version = "1.928", -%%% date = "2004-12-16", -%%% time = "12:18:32 +01:00", -%%% filename = "fontinst.tex", -%%% email = "fontinst@tug.org", -%%% checksum = "", -%%% codetable = "ISO/ASCII", -%%% keywords = "fontinst, TeX, PostScript, documentation", -%%% supported = "yes", -%%% abstract = "This is the documentation for the fontinst -%%% font installation package.", -%%% package = "fontinst", -%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" -%%% } -%%% ==================================================================== - -% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey - -% Modified by Rowland McDonnell June 1998 -% Modified and revised by Ulrik Vieth June 1998 -% Modified by Lars Hellstr\"om July 2004 - - -\documentclass[a4paper]{ltxguide} -\usepackage[OT1]{fontenc} -\usepackage{url,xspace} -\usepackage{graphicx} - -\IfFileExists{palatino.flag}{ - \renewcommand\rmdefault{ppl} -} -%\renewcommand\rmdefault{padx} -%\renewcommand\rmdefault{pmnx} - -% \MakeShortVerb{\|} - - -% Title page and running heads. - -\makeatletter -\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} -\newcommand{\version}[1]{\renewcommand{\@version}{#1}} -\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} - -\newcommand{\@subtitle}{} -\newcommand{\@version}{???} -\newcommand{\@illustration}{cover.eps} - -% \pagestyle{myheadings} -% \AtBeginDocument{\markright{\small\itshape -% \@author\hfill\@title: \@subtitle\quad}} - - -\renewcommand{\maketitle}{{% - \thispagestyle{empty}% - \normalfont\centering - \null - {\fontsize{100}{100}\textit{\@title}}% - \par\bigskip - {\Large\textbf{\@subtitle}}% - \vfill - \includegraphics[width=\textwidth]{\@illustration}% - \vfill - {\Large\textbf{% - \def\and{\egroup\qquad\hbox\bgroup} - \leavevmode \hbox{\@author}\\[\smallskipamount] - \@title~v\@version - \quad\textperiodcentered\quad \@date}}% - \clearpage -}} -\makeatother - - -% Set lists tighter (assuming non-zero \parskip). - -\makeatletter -\renewcommand{\@listI}{% - \leftmargin\leftmargini - \parsep\medskipamount - \itemsep\z@ % + parsep - \topsep\z@ % + parskip - \partopsep\z@ -} -\newenvironment{isyntax}{% - \let\\\@centercr - \list{}{% - \itemsep \z@ - \itemindent -1.5em% - \listparindent \itemindent - \advance \leftmargin 1.5em% - }% - \advance \rightskip \z@\@plus0.7\linewidth \relax - \linepenalty=100\relax - \item\relax -}{\endlist} -\makeatother - -\newenvironment{smalldes}{% - \list{}{% - \setlength\labelwidth{0pt}% - \setlength\itemindent{-\leftmargin}% - \setlength\listparindent{1em}% - \setlength\parsep{0pt}% - \setlength\itemsep{0pt plus 1pt}% - \setlength\topsep{\itemsep}% - \let\makelabel\descriptionlabel - }% -}{\endlist} - -\newenvironment{hackernote}{% - \list{}{ - \setlength{\leftmargin}{0pt}% - \setlength\labelwidth{0pt}% - \setlength{\listparindent}{1.4em}% - \setlength{\parsep}{0pt plus 1pt}% - \setlength{\itemsep}{\medskipamount}% - }\item[]% - \small - \textit{Note for hackers.}\hspace{0.5em}% -}{\endlist} - -% % I don't use the <...> feature for verbatim, -% % so I undo that ltxguide feature. -% \makeatletter -% \renewcommand{\verbatim@font}{% -% \normalfont \ttfamily -% % \catcode`\<=\active -% % \catcode`\>=\active -% } -% \makeatother - - -% ltxguide.cls decl environment, but with equal space above and -% below. -\DeleteShortVerb{\|} -\makeatletter -\newenvironment{decl*}[1][]{% - \par - \small\addvspace{2.3ex}% - \vskip -\parskip - \ifx\relax#1\relax - \def\@decl@date{}% - \else - \def\@decl@date{\NEWfeature{#1}}% - \fi - \noindent\hspace{-\leftmargini}% - \begin{tabular}{|l|}% - \hline\ignorespaces -}{% - \\\hline - \end{tabular}% - \nobreak\@decl@date\par\nobreak - \vspace{2.3ex}\vskip -\parskip -} -\makeatother -\MakeShortVerb{\|} - - -% Set spacing around captions. - -\setlength{\abovecaptionskip}{\medskipamount} -\setlength{\belowcaptionskip}{\medskipamount} - -% Markup for logos, file types, programs, etc. - -\newcommand*{\meta}{\m} -\newcommand*{\marg}{\arg} -\newcommand*{\parg}[1]{\texttt{(}\m{#1}\texttt{)}} - -\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} - -\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} -\newcommand*{\OzMF}{O\kern-.03em zMF} -\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} - -\newcommand{\PS}{Post\-Script\xspace} -\newcommand{\TT}{True\-Type\xspace} - -\newcommand*{\setfilename}[1]{\texttt{#1}} -\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} -\newcommand*{\setpackagename}[1]{\textsf{#1}} - -\newcommand{\dvips} {\setpackagename{dvips}\xspace} -\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} -\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} -\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} -\newcommand{\fontdoc}{\setpackagename{font\-doc}\xspace} -\newcommand{\Fontdoc}{\setpackagename{Font\-doc}\xspace} - -% \show\fontname -\newcommand{\fontnamekb}{fontname\xspace} -\newcommand{\Fontnamekb}{Fontname\xspace} - -\newcommand{\mf} {\setfilename{mf}\xspace} -\newcommand{\Mf} {\setfilename{Mf}\xspace} -\newcommand{\vf} {\setfilename{vf}\xspace} -\newcommand{\Vf} {\setfilename{Vf}\xspace} -\newcommand{\pl} {\setfilename{pl}\xspace} -\newcommand{\Pl} {\setfilename{Pl}\xspace} -\newcommand{\fd} {\setfilename{fd}\xspace} -\newcommand{\Fd} {\setfilename{Fd}\xspace} -\newcommand{\pk} {\setfilename{pk}\xspace} -\newcommand{\Pk} {\setfilename{Pk}\xspace} -\newcommand{\afm}{\setfilename{afm}\xspace} -\newcommand{\Afm}{\setfilename{Afm}\xspace} -\newcommand{\vpl}{\setfilename{vpl}\xspace} -\newcommand{\Vpl}{\setfilename{Vpl}\xspace} -\newcommand{\tfm}{\setfilename{tfm}\xspace} -\newcommand{\Tfm}{\setfilename{Tfm}\xspace} -\newcommand{\mtx}{\setfilename{mtx}\xspace} -\newcommand{\Mtx}{\setfilename{Mtx}\xspace} -\newcommand{\etx}{\setfilename{etx}\xspace} -\newcommand{\Etx}{\setfilename{Etx}\xspace} -\newcommand{\pfa}{\setfilename{pfa}\xspace} -\newcommand{\Pfa}{\setfilename{Pfa}\xspace} -\newcommand{\pfb}{\setfilename{pfb}\xspace} -\newcommand{\Pfb}{\setfilename{Pfb}\xspace} -\newcommand{\dvi}{\setfilename{dvi}\xspace} -\newcommand{\Dvi}{\setfilename{Dvi}\xspace} -\newcommand{\pdf}{\setfilename{pdf}\xspace} -\newcommand{\Pdf}{\setfilename{Pdf}\xspace} -\newcommand{\ttf}{\setfilename{ttf}\xspace} -\newcommand{\Ttf}{\setfilename{Ttf}\xspace} - -\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} -\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} -\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} -\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} - -\newcommand{\BibTeX}{Bib\TeX} - - -% % Stolen from Dr Knuth -% \makeatletter % borrow the private macros of PLAIN (with care) -% \def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -% \def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -% % macros for font tables -% \def\oddline#1{\cr -% \noalign{\nointerlineskip} -% \multispan{19}\hrulefill& -% \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr -% \noalign{\nointerlineskip}} -% \def\evenline{\cr\noalign{\hrule}} -% \def\chartstrut{\lower4.5pt\vbox to14pt{}} -% \def\beginchart#1{$$\global\count@=0 #1 -% \halign to\hsize\bgroup -% \chartstrut##\tabskip0pt plus10pt& -% &\hfil##\hfil&\vrule##\cr -% \lower6.5pt\null -% &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -% \def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& -% &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} -% \def\*{\global\advance\count@ by1 } -% \def\:{\setbox0=\hbox{\char\count@}% -% \ifdim\ht0>7.5pt\reposition -% \else\ifdim\dp0>2.5pt\reposition\fi\fi -% \box0\global\advance\count@ by1 } -% \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} -% \def\smallchart{% -% %\global\advance\count@ by16 -% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 -% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 -% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 -% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 -% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 -% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 -% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 -% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 -% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} -% -% \def\bigchart{% -% %\global\advance\count@ by16 -% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 -% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 -% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 -% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 -% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 -% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 -% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 -% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 -% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8 -% &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9 -% &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A} -% &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B} -% &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C} -% &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D} -% &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E} -% &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F} -% &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} -% -% % \font\xrm = cmr10 at 10pt % change this line to test font -% % \beginchart\xrm \normalchart \endchart -% -% \newcommand{\smallfontchart}[1]{% -% \font\xrm = #1 \beginchart\xrm \smallchart \endchart} -% \newcommand{\bigfontchart}[1]{% -% \font\xrm = #1 \beginchart\xrm \bigchart \endchart} -% -% % \smallfontchart{cmr10 at 10pt} -% % \bigfontchart{ecrm1000 at 10pt} -% \makeatother -% % End stolen from Dr Knuth - - - -\title{fontinst} -\subtitle{Font installation software for \TeX} -\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om} -\illustration{roadmap.eps} -\version{1.9} -\date{December 2004} - -\begin{document} - -\maketitle - -\begin{itshape} - This manual is currently being rewritten, and may therefore be a - bit disorganised. For authoritative information on command syntaxes - and the like, see the Literate Programming sources for - \fontinst. The main file there is \textsl{\texttt{fisource.tex}}. -\end{itshape} - -\bigskip - -\begin{footnotesize} - This manual describes the \texttt{fontinst} software for converting - fonts from Adobe Font Metric format to forms readable by \TeX. This - manual should be distributed with the \texttt{fontinst} software, - which is available by anonymous FTP from - \url{ftp://ftp.tex.ac.uk/tex-archive/fonts/utilities/fontinst}, and - on the various CD-ROMs containing material from the CTAN archives. - Please do not contact the author directly for copies. - - If you would like to report a bug with \texttt{fontinst}, please - mail \url{fontinst@tug.org}. The mail will be sent to the - \texttt{fontinst} mailing list. If you would like to be on the - \texttt{fontinst} mailing list, see - \url{http://tug.org/mailman/listinfo/fontinst}. -\end{footnotesize} - -\tableofcontents - -% \vfill - -\clearpage - - -% \section{Introduction} -% -% Digital fonts, as they may be bought from a foundry or other supplier, -% are usually not directly usable with \LaTeX. An obvious problem can be -% that the font information is not available in a format that \LaTeX\ -% understands. A more subtle problem is that the fonts are often -% organised in a way that is unsuitable for automatic typesetting. -% % \Fontinst was written to overcome these problems. -% -% % The main thing \fontinst does is creating virtual fonts (\vf's). -% -% -% % The \fontinst package is a set of \TeX\ macros written to create -% % virtual fonts for use with \TeX. - - -\section{Defining terms} - -This is rather a large and perhaps tedious section. You might be -tempted to skip it so you can get to some more direct information on -how to use \fontinst. That's fine if you understand everything about -how \TeX\ handles fonts. If not, I suggest you at least skim though -this section. - -\subsection{What's a font?} - -Once upon a time, this question was easily answered: a font is a -set of type in one size, style, etc. There used to be no -ambiguity, because a font was a collection of chunks of type metal -kept in a drawer, one drawer for each font. - -These days, with digital typesetting, things are more complicated. -What a font `is' isn't easy to pin down. A typical use of a \PS -font with \LaTeX\ might use these elements: -\begin{itemize} -\item Type 1 printer font file -\item Bitmap screen font file -\item Adobe font metric file (\afm file) -\item \TeX\ font metric file (\tfm file) -\item Virtual font file (\vf file) -\item font definition file (\fd file) -\end{itemize} -Looked at from a particular point of view, each of these files -`is' the font. So what's going on? - - -\subsubsection{Type 1 printer font files} - -These files contain the information needed by your printer to draw -the shapes of all the characters in a font. They're typically -files with a \pfa or \pfb extension; on Macs they're usually in -files of type `LWFN' which usually have icons that look like a -laser printer. The information in all these files is basically -the same: the only difference is in its representation. \pfa -stands for `printer font ASCII', while \pfb stands for `printer -font binary'. That is, \pfa files contain plain text information, -while \pfb files contain the same information encoded as -machine-readable binary data. - -If you have Adobe Type Manager (ATM) installed on your computer, -ATM will use these files to draw an accurate representation of the -letters on the screen of your computer when you are previewing a -\TeX\ document. - -Printer font files are not used directly by \TeX\ at all -- \TeX\ -just prepares a \dvi file that refers to the fonts by name and the -characters by number: \TeX\ knows nothing about the shapes -involved. The DVI driver uses the printer font files when you ask -it to print the \dvi file. This means that you can produce a \dvi -file which uses, say, Palatino, even if you do not have the -Type~1 printer font file for this font on your computer. You will -need to find a computer that does have Palatino before you can -print it or preview it, though. - -Pdf\TeX\ is different from \TeX\ in this respect; since pdf\TeX\ -integrates most of the functionality of a DVI driver, it may be unable -to generate working \pdf output if the some Type~1 printer font file -is not available. - - -\subsubsection{Bitmap screen font files} - -These files contain a low-resolution bitmap for drawing a -representation of the font on the screen of your computer if ATM -is not installed. In the \TeX\ world, these files are only used -for screen previews by the DVI driver. They are kept in font -suitcase files on Macintoshes. -%\marginnote{And where on other computers?} - - -\subsubsection{Adobe font metric files (\afm files)} - -These files are text files which contain information about the -size of each character in a font, kerning and ligature -information, and so on. They can't be used by \TeX\ directly, but -the information they contain is essential if you want to use a -font with \TeX. \Fontinst can create from an \afm file the -necessary \tfm and \vf files so you can use a font with \TeX. -Once you have created all the files you need to use a font with -\TeX, you can remove the corresponding \afm files from your -computer unless you have other software that needs them. - -The job of turning an \afm file into a set of \tfm and \vf files -is one of the main uses for \fontinst. Most of this document is -concerned with this process, so don't worry if it seems a bit -vague at the moment. - - -\subsubsection{\TeX\ font metric files (\tfm files)} - -These are binary data files in a format designed for use by \TeX\ -which contain (more-or-less) the same information as \afm files: -the size of each character in a font (font metric data), kerning, -and ligature information. - -When you select a font in \TeX, you are telling \TeX\ to typeset -using a particular \tfm file; from \TeX's point of view, a \tfm -file (and nothing else) \emph{is} a font. \TeX\ itself doesn't -see printer font files, screen bitmaps, \pk files, \vf files, or -anything else to do with fonts: only \tfm files. - -\TeX\ uses these \tfm files to decide where to put characters when -typesetting. From \TeX's point of view, \tfm files are fonts, -even though they contain no information about the shape of -letters, and are not used by anything except \TeX\ -- once you -have produced a \dvi file, you don't need the \tfm files to print -it out. (This is a slight lie: \dvips can read \tfm files -corresponding to \PS and \TT fonts so it can modify the metrics -slightly to improve the letterspacing at your chosen output -resolution. This is an optional minor tweak and not an essential -part of the output process.) - - -\subsubsection{Property list files (\pl files)} - -\pl files are human-readable text files which contain all the font -metric, kerning, ligature, and other information needed to create -a \tfm file. You can convert between the two file formats using -\tftopl and \pltotf. - - -\subsubsection{Virtual font files (\vf files)} - -These are binary data files in a format designed for use by \TeX\ -\dvi drivers. They're main purpose in life is to let you use -fonts in different encodings to the standard \TeX\ encodings. -These files are used by \dvi driver software only. - -They are used only by \dvi drivers to work out what it should -\emph{really} print when you ask for a particular character. -Technically they are like subroutine libraries for \dvi drivers, -with one subroutine for each character in the virtual font: when -the \dvi driver sees a \dvi command to set a character from a virtual -font, it will execute a sequence of \dvi commands (the ``mapcommands -property'' of this character) that it reads in the \vf file. You need -not worry about the details of this, as \fontinst deals with them for -you. Creating and using virtual fonts is what this document is about, -so don't worry if this doesn't make sense yet. (After all, how much -do you need to know about the inner workings of \dvi files to typeset -and print \TeX\ documents?) - -Each \vf file has a \tfm file with the same name. To use a -virtual font, you select the \tfm file as the font to use in your -document. When the \dvi driver comes across this \tfm file in the -\dvi file, it looks up the \vf file and uses that to decide what -to do. - - -\subsubsection{Virtual property list files (\vpl files)} - -\vpl files are human-readable text files which contain all the -font metric, kerning, mapping, and other information needed to -create a \vf and \tfm pair. - -\vptovf will create a \vf/\tfm pair from a \vpl file. \vftovp -will create a \vpl from a \vf/\tfm pair. \vftovp also needs to be -able to read all the \tfm files that are referred to by a \vf to -recreate the \vpl\ -- it looks at the checksums to verify that -everything's okay. - - -\subsubsection{Font definition files (\fd files)} - -These are files containing commands to tell \LaTeX\ which \tfm -files to associate with a request for a font using \LaTeX's font -selection commands. - -For example, here is a small and edited part of the \fd file -supplied with \setpackagename{PSNFSS} to allow you to use the -Adobe Times font in T1 encoding: - -\begin{verbatim} - \ProvidesFile{t1ptm.fd} - [1997/02/11 Fontinst v1.6 font definitions for T1/ptm.] - - \DeclareFontFamily{T1}{ptm}{} - - \DeclareFontShape{T1}{ptm}{m}{n} {<<->> ptmr8t}{} - \DeclareFontShape{T1}{ptm}{m}{it}{<<->> ptmri8t}{} - ... - \DeclareFontShape{T1}{ptm}{b}{n} {<<->> ptmb8t}{} - \DeclareFontShape{T1}{ptm}{b}{it}{<<->> ptmbi8t}{} - ... -\end{verbatim} -What this means is: when you use \LaTeX\ to select the font family -|ptm| in T1 encoding in the medium series (|m|) and normal shape -(|n|), \TeX\ uses the font \texttt{ptmr8t.tfm}. Similarly, if you -select bold italic, \TeX\ uses \texttt{ptmbi8t.tfm}. - -\LaTeX\ works out which \fd file to load based on the current -encoding and font family selected. If you've selected T1 encoded -|ptm| like this: -\begin{verbatim} - \fontencoding{T1}\fontfamily{ptm}\selectfont -\end{verbatim} -\LaTeX\ loads the file \url{t1ptm.fd} (if it doesn't exist, you're -in trouble). As you can see above, this file contains information -so that \LaTeX\ knows which \tfm file to use. So if you ask for, -say, |T1/ptm/b/it| (T1 encoded Times-Roman, bold series, italic -shape), you get the font \texttt{ptmbi8t}. - -You can find more about \fd files and \LaTeX's font selection commands -at CTAN: -\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} -and \url{ftp://ftp.tex.ac.uk/tex-archive/info/simple-nfss.tex} are -both useful. - - -\subsection{What does \fontinst do?} - -\fontinst creates \vpl and \pl files from \afm or \pl files to map -any glyph or combination of glyphs in the original font files to -any slot in the output font file. There, isn't that better? Off -you go now\ldots - -If you're still confused, I'll explain a few things. -\begin{description} -\item[Glyph] - A glyph is an image, often associated with one or several characters. - Some examples of glyphs are: - `A', `\textsf{A}', `$\mathcal{A}$', `B', `F', - `{\usefont{OT1}{cmr}{m}{n}f}', - `{\usefont{OT1}{cmr}{m}{n}fi}', `\~{}'. - Fonts are collections of glyphs. \Fontinst refers to glyphs by name. -\item[Slot] - This is jargon for `a numbered position in a font'. (What is - important is the number, and that this number refers to a position - in a font, but which font is usually irrelevant.) -\item[Character] - The modern definition is that a character is the smallest component - of written language that has semantic value. Speaking of a - character, one refers to the abstract meaning and/or shape, rather - than a specific shape. - - Since fonts have often contained a unique glyph for each character - and each usable glyph has been assigned a particular slot, - it is not uncommon (in particular in older terminology) to see the - three mixed up, usually so that one says `character' where one of - the other two would have been more correct. The \TeX-related font - file formats is no exception, as you may see examples of elsewhere - in this document. -\item[Encoding] - There are really two different encoding concepts that one encounters - when using \fontinst. The differences are not great, and an - encoding of one kind often corresponds to an encoding of the other - kind, but it is not merely a matter of translation. - - A \emph{\LaTeX\ encoding} is a mapping from characters (or more - formally \LaTeX\ Internal Character Representations) to slots. - In the \texttt{OT1} encoding, `\o' (or more technically `|\o|') maps - to slot~28, whereas in the \texttt{T1} encoding it maps to slot~248. - This kind of encoding affects what \TeX\ is doing; \dvi drivers are - not involved. - - A \emph{font encoding} (or \emph{encoding vector}) is a mapping from - slots to glyph names. This is the kind of encoding that \fontinst - primarily deals with, and also the kind of encoding that \dvi - drivers make use of. \texttt{ot1.etx} associates slot~28 with - `\texttt{oslash}', whereas \texttt{t1.etx} and \texttt{EC.enc} (one - of several to \texttt{T1} corresponding encoding vectors that come - with \dvips) associates slot~28 with `\texttt{fi}'. - - \LaTeX\ encodings occur in \fontinst only as names and only in - relation to \fd files. It is unlikely that you will need to create - one of your own. The mappings defined by font encodings are on the - other hand of great importance and \etx files are used to direct - the generation of virtual fonts. Advanced \fontinst users may well - find that they need to create new font encodings to achieve their - goals. -\end{description} - -% You're probably familiar with ASCII -% encoding, which has the letter `A' in slot~65, `B' in slot~66, -% and so on. That's it, really. \TeX\ uses several different -% encodings. The most common ones are OT1 (the original \TeX\ -% 7~bit encoding) and T1 (the newer \TeX\ 8~bit encoding). -% % -- much more on this later. - -The thing is that the average \PS font comes in Adobe standard -encoding, which, for example, has the glyph dotless~i `\i' in -slot~245. But \TeX\ \texttt{T1} encoding expects the glyph o~dieresis -`{\"o}' in that slot, and wants dotless~i in slot~25. So if you -tried to use a raw \PS font with \TeX, any time you tried to get -a `{\"o}', you'd get a `\i'; and every time you tried to get a `\i', -you'd get a blank, because Adobe standard encoding says that -slot~25 is empty. The process of dealing with this problem is -called `re-encoding', and is what \fontinst helps with. - -This might not make much sense yet; the best thing to do is relax. -There's a lot of things that need to be dealt with when you're -setting up \LaTeX\ to use a new font, so you can expect to be a -bit confused until you've done it a few times. - - -\subsection{What do you do with \fontinst?} - -If you're using \fontinst, the usual steps you need to take to use -an ordinary \PS text font with \LaTeX\ are these: - -\begin{enumerate} -\item Give the \afm files an appropriate name. -\item Use \fontinst to produce an |8r| encoded \pl files from - these \afm files. -\item Use \fontinst to create T1 and OT1 encoded \pl and \vpl - files from the |8r| encoded \pl files (this procedure will also - create suitable \fd files). -\item Use \pltotf to turn each \pl file into a \tfm file. -\item Use \vptovf to turn each \vpl file into a pair of \vf and - \tfm files. -\item Move the \tfm, \vf, and \fd files into the appropriate - directories so \LaTeX\ can see them. -\item Tell your DVI driver about the new font (edit \dvips's - \texttt{psfonts.map} file, or \OzTeX's \texttt{Default} - configuration file. -\item Perhaps write a package file to make selecting the new font - a little easier. -\item Test it. -\end{enumerate} - - -\section{Fontmaking commands} - -There are three main types of files that you may write to control what -\fontinst does: \emph{command files} (usually with suffix -\setdotfilename{tex}), \emph{encoding definition files} (suffix -\setdotfilename{etx}), and \emph{metric files} (suffix -\setdotfilename{mtx}). Command files directly tell \fontinst to do -things, whereas the purpose of an encoding or metric file is more to -store data, but all three file types are technically sequences of -\TeX\ commands that \fontinst execute when reading the file. Normal -\TeX\ syntax rules apply in all three file types, although a few -commands may behave in unfamiliar ways. - -Within the command file category, it is possible to discern certain -subcategories. Most command files are written for one particular -task, but some are common pieces that have been factored out from -larger command files and are merely meant to be |\input| where -appropriate. (\setfilename{csc2x.tex} in the \fontinst distribution is -an example of this latter kind.) One may also distinguish between -command files that are made for use with \setfilename{fontinst.sty} -command definitions and command files that are made for use with -\setfilename{finstmsc.sty} command definitions. This section documents -the commands that are particular to the former category, whereas the -next section documents commands that are particular to the latter. - - -\subsection{Install commands} - -The core fontmaking takes place within a block of ``install -commands''. (This name is a bit unfortunate since nothing is actually -installed; rather some files that need to be installed are generated.) -Such blocks have the structure -\begin{quote} - |\installfonts|\\ - \m{install commands}\\ - |\endinstallfonts| -\end{quote} -The \m{install commands} describe the fonts, glyphs and encodings used -to build fonts, whereas the purpose of the delimiting |\installfonts| -and |\endinstallfonts| are rather to organise the writing of \fd files. -\begin{decl*} - |\installfonts|\\ - |\endinstallfonts| -\end{decl*} -At |\installfonts|, \fontinst's internal list of \fd files to generate -are cleared. At |\endinstallfonts|, \fd files are written for those -combinations of encoding and font family that appeared in the -\meta{install commands}. - -\begin{hackernote} - |\installfonts|, |\endinstallfonts|, and the individual - install commands between them also cooperate in a rather complicated - grouping scheme to cache glyphbases. This may interfere with - non-\fontinst commands in the \meta{install commands}. If for - example an assignment to some |\tracing|\dots\ parameter here does - not seem to have any effect, try making the assignment |\global|. -\end{hackernote} - -The most important \meta{install command} is -\begin{decl*} - |\installfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl*} -This produces a \TeX\ virtual font called \m{font-name}. The -\meta{metrics-list} and the \meta{etx-list} determine this font, -whereas the other arguments specify how the \fd file will declare it -for \LaTeX. The \m{encoding}, \m{family}, \m{series}, and \m{shape} -are precisely the NFSS parameters. The \m{size} is either a shorthand -declared by \verb|\declaresize| (see below), or is an \fd size -specification. - -Like most \fontinst lists, the elements in the \meta{metrics-list} and -\meta{etx-list} are separated by commas (so-called comma-separated -lists). In their simplest form, the elements of these lists are file -names (minus suffixes): \mtx files in the \meta{metrics-list} and -\etx files in the \meta{etx-list}. First the \mtx files are processed -to build up a glyphbase, i.e., store definitions of glyphs and their -metric properties in memory, and then the \etx files are processed -(several times) to select a set of glyphs and write the corresponding -information to a \vpl file. - -For example, to install the \texttt{T1}-encoded Times Roman font -(using \texttt{t1.etx} and \texttt{latin.mtx}), you say: -\begin{verbatim} - \installfont{ptmr8t}{ptmr8r,latin}{t1} - {T1}{ptm}{m}{n}{} -\end{verbatim} -To install a \texttt{OT1}-encoded Times Roman font, with a scaled -version of Symbol for the Greek letters, you say: -\begin{verbatim} - \installfont{zptmrsy}{ptmr8r,psyr scaled 1100,latin}{ot1} - {OT1}{ptm}{m}{n}{} -\end{verbatim} - -As the second example indicates, there is more to the list items than -just file names. In the case of an metrics list item, the syntax -permits the two forms -\begin{decl*} - \meta{filename}\meta{optional modifiers}\\ - |\metrics| \meta{metric commands} -\end{decl*} -\NEWfeature{v1.923} -where an \meta{optional modifier} is one of -\begin{decl*} - \verb*| scaled |\meta{rawscale factor}\\ - \verb*| suffix |\meta{glyph name suffix}\\ - \verb*| encoding |\meta{etx}\\ - \verb*| option |\meta{string} -\end{decl*} -A list item may contain several such modifiers, but most commonly it -does not contain any. The -\meta{metric commands} are explicit metric commands, as described in -Section~\ref{Sec:Metric}; this latter feature is meant for minor -adjustments that you don't want to bother creating a separate \mtx -file for. - -The \meta{filename} above primarily refers to a file -\meta{filename}\texttt{.mtx}, but that need not always exist before -executing the above command. If there exists a \pl, \afm, or \vpl file -with the right name then that is first converted to a corresponding -\mtx file. However, a special case occurs if there is an |encoding| -modifier: this forces conversion of a \pl or \vpl file even if an -\mtx file exists, and also forces using the specified \etx file when -assigning glyph names to the slots of that file. Normally the choice -of \etx file for such conversions to \mtx is based on -|\declareencoding| declarations. - -The |scaled| modifier sets the \texttt{rawscale} variable for the -processing of that file. This has the effect of scaling all raw -glyphs from that file to \meta{rawscale factor} per milles of their -previous size. The |suffix| modified causes the \meta{glyph name -suffix} to be implicitly appended to all glyphs defined by this file. -The |option| modifier adds the \meta{string} to the list of ``options'' -for this file. The |\ifoption| command can be used in the file to test -whether a particular string has been supplied as an option. - -\begin{hackernote} - In general, \fontinst commands process comma-separated list arguments - by first splitting at commas and then fully expanding each item, but - this \meta{metrics-list} argument is an exception. This is first - fully expanded (|\edef|) and then split into items. The difference - is that a macro used in this \meta{metrics-list} argument can expand - to several list items, whereas a macro used in an ordinary - comma-separated list argument can only expand to (part of) a single - list item. - - The |\metrics| list items do however constitute an exception within - this exception. These list items are in their entirety protected - from the initial full expansion, so you don't have to worry about - peculiar fragility errors there. -\end{hackernote} - -The elements in the \meta{etx-list} have fewer variants, but there is -still a general syntax -\begin{decl*} - \meta{filename}\meta{optional modifiers} -\end{decl*} -The \meta{optional modifier}s permitted are: -\begin{decl*} - \verb*| mtxasetx|\\ - \verb*| option |\meta{string} -\end{decl*} -The \texttt{option} one is as for metric files. \texttt{mtxasetx} is -probably only relevant for use with |\installrawfont| (see below). - - -\begin{decl}[v1.912] - |\installfontas|\arg{font-name}\\% - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl} -This install command adds an \fd entry for the \meta{font-name}, but -it doesn't actually generate that font. Usually that font was -generated by a previous |\installfont|, and this is used to create -additional entries for the font. - - -\begin{decl} - |\installrawfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl} -This is similar to |\installfont| except that it produces -a \TeX\ raw font as \pl file rather than a virtual font. Often a \pl -font with the specified name will already exist when this command is -called, and that will then be overwritten. These two \pl files will -typically be somewhat different. -The normal reason for using this command is that one wishes to -``refine'' the metrics of a font that was generated by transformation -commands. - -For example, to install an \texttt{8r}-encoded Times Roman raw font -(using \texttt{8r.etx} and \texttt{8r.mtx}), you say: -\begin{verbatim} - \installrawfont{ptmr8r}{ptmr8r,8r}{8r} - {8r}{ptm}{m}{n}{} -\end{verbatim} - -The effect of a -\begin{decl*}[v1.923] - \meta{filename}\verb*| mtxasetx| -\end{decl*} -in the \meta{etx-list} is not that \meta{filename}\texttt{.etx} is -read, but that \meta{filename}\texttt{.mtx} is read. The -interpretation of the commands in this file is however not the -customary, and almost the only thing paid attention to is the -correspondence between glyph names and slot numbers that is provided -by the |\setrawglyph| and |\setscaledrawglyph| commands; this -correspondence is treated as if it was given by |\setslot| \dots\ -|\endsetslot| commands in an \etx file. This is however only -guaranteed to work with transformable metric files. - -The purpose of this feature is to simplify installation of fonts with -very special encodings, such as ``Dingbat'' or ``Pi'' fonts. Instead -of creating an \etx file, which would probably only be useful with -that particular font, one can make use of the fact that the -interesting information is anyway available in the \mtx file. To -install Zapf Dingbats in their default encoding, one can thus say -\begin{verbatim} - \installrawfont{pzdr}{pzdr}{pzdr mtxasetx} - {U}{pzd}{m}{n}{} -\end{verbatim} - -Unlike the case with |\installfont|, which actually creates a real -(although virtual) font, |\installrawfont| can only create the -metrics for a font. The \dvi driver will require some other kind of -implementation of this font, usually an entry in some map file (e.g. -\texttt{psfonts.map}, in the case of \dvips) that links the \TeX\ font -name to e.g.\ a \PS\ font name and file. (Many \dvi drivers are -configured in such a way that they, without such a map file entry, -will call Metafont with the font name and thereby raise a sequence of -error messages about a \setdotfilename{mf} that doesn't exist. These -results are often rather confusing.) - - - -\begin{decl} - |\installfamily|\arg{encoding}\arg{family}\arg{fd-commands} -\end{decl} -This tells \fontinst to write an \fd file for the given combination -of encoding and family, and clears the internal list of entries to -put in that file. |\installfamily| commands usually come first in each -block of \meta{install commands}. - -For example, to produces a \LaTeX\ family with the \texttt{T1}-encoded -Times family, you say: -\begin{verbatim} - \installfamily{T1}{ptm}{} -\end{verbatim} -The \m{fd-commands} are executed every time a font in that family is -loaded, for example to stop the Courier font from being hyphenated you -say: -\begin{verbatim} - \installfamily{T1}{pcr}{\hyphenchar\font=-1} -\end{verbatim} -In more recent versions of \fontinst, the |\installfamily| command is -only necessary if you want the \m{fd-commands} argument to be -nonempty, but it doesn't hurt to make it explicit. - -\begin{hackernote} - The \m{fd-commands} argument is tokenized with the current catcodes - and written to file without expansion. In particular this means - that spaces will be inserted after all control sequences whose - names consists of letters, which can be unexpected if you intend to - make use of control sequences whose names contain |@| characters. -\end{hackernote} - - - - -\subsection{Transformation commands} - - -\begin{decl} - |\transformfont|\arg{font-name}\arg{transformed font} -\end{decl} -This makes a raw transformed font, for example expanded, slanted, -condensed or re-encoded. \emph{It is the responsibility of the device - driver to implement this transform.} Each \verb|\transformfont| -command writes out an \mtx file and a raw \pl file for \m{font-name}. - -The following commands are valid \m{transformed font}s: -\begin{decl*} - |\fromafm|\arg{afm}\\ - |\fromany|\arg{whatever}\\ - |\frompl|\arg{pl}\\ - |\fromplgivenetx|\marg{pl}\marg{etx}\\ - |\frommtx|\arg{mtx} -\end{decl*} -This reads the metrics of a font which is about to be transformed from -an external file. |\fromafm|, |\frompl|, and |\fromplgivenetx| write out -an \mtx file corresponding to the \afm or \pl file. In addition, -|\formafm| also writes out a raw \pl file, containing just the glyph -metrics but no kerning information. |\fromplgivenetx| permits -specifying which encoding file to use when associating glyph names to -slots, whereas |\frompl| tries to guess this from the -\texttt{CODINGSCHEME} property of the \pl file. |\fromany| looks for -a file in any of the formats (in the order \mtx, \pl, \afm) and -behaves as the first |\from|\dots\ for which it found a file. - -A \m{transformed font} may also be one of the following: -\begin{decl*} - |\scalefont|\arg{integer expression}\arg{transformed font}\\ - |\xscalefont|\arg{integer expression}\arg{transformed font}\\ - |\yscalefont|\arg{integer expression}\arg{transformed font}\\ - |\slantfont|\arg{integer expression}\arg{transformed font} -\end{decl*} -This applies a geometric transformation to the font metrics of -\m{transformed font}. The scale factor or slant factor are given in -1000 units to the design size. Typical examples are 167 for slanted -fonts or 850 for condensed fonts. - -The final case of a \m{transformed font} is: -\begin{decl*} - |\reencodefont|\arg{etx}\arg{transformed font} -\end{decl*} -This rearranges the encoding vector of \m{transformed font} to match -the encoding given by the \etx file. - - -For example, to create an oblique, |8r|-encoded version of Adobe Times -called \texttt{ptmro8r} you say: -\begin{verbatim} - \transformfont{ptmro8r}{ - \reencodefont{8r}{ - \slantfont{167}{\fromafm{ptmr8a}} - } - } -\end{verbatim} -This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, -\texttt{ptmro8r.mtx} and \texttt{ptmro8r.pl}, which can then be used -as raw fonts in \verb|\installfont| commands. The equivalent -transformation can also be achieved in two steps: -\begin{verbatim} - \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} - \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} -\end{verbatim} -This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, -\texttt{ptmr8r.mtx}, \texttt{ptmr8r.pl}, \texttt{ptmro8r.mtx} and -\texttt{ptmro8r.pl}. - -You will have to inform your device driver about the transformed font, -using the syntax appropriate for that driver. For example, in \dvips -you add a line to \texttt{psfonts.map}: -\begin{verbatim} - ptmro8r Times-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc -\end{verbatim} -See Section~\ref{Sec:Mapmaking} and -Subsection~\ref{Ssec:MapFragments} for details on how to generate -such lines automatically. - - -\subsection{Reglyphing commands} - -``Reglyphing'' is an \mtx file transformation that changes glyph -names but leaves the slot numbers and metrics as they were; -optionally it may drop some of the metric commands. See -Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this. - -\begin{decl} - |\reglyphfonts|\\ - |\endreglyphfonts| -\end{decl} - -\begin{decl} - |\reglyphfont|\marg{destination font}\marg{source font} -\end{decl} - -\begin{decl} - |\renameglyph|\marg{to}\marg{from}\\ - |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ - |\killglyph|\marg{glyph}\\ - |\killglyphweighted|\marg{glyph}\marg{weight} -\end{decl} - -\begin{decl} - |\offmtxcommand|\marg{command}\\ - |\onmtxcommand|\marg{command} -\end{decl} - - - - -\subsection{Miscellaneous settings} - -\begin{decl} - |\substitutesilent|\arg{to}\arg{from}\\ - |\substitutenoisy|\arg{to}\arg{from} -\end{decl} -This declares a \LaTeX\ font substitution, that the series or shape -\m{to} should be substituted if necessary by the series or shape -\m{from}. \verb|\substitutesilent| means that when the font -substitution is made, no warning will given. - -\verb|\substitutenoisy| is the same as \verb|\substitutesilent|, but -gives a warning when the substitution is made by \LaTeX. - -For example, to say that the series |bx| can be replaced by the -series |b|, you say: -\begin{verbatim} - \substitutesilent{bx}{b} -\end{verbatim} -To say that the shape |ui| can be replaced by the shape |i|, you say: -\begin{verbatim} - \substitutenoisy{ui}{it} -\end{verbatim} - -The following weight substitutions are standard: -\begin{verbatim} - \substitutesilent{bx}{b} - \substitutesilent{b}{bx} - \substitutesilent{b}{sb} - \substitutesilent{b}{db} - \substitutesilent{m}{mb} - \substitutesilent{m}{l} -\end{verbatim} -The following shape substitutions are standard: -\begin{verbatim} - \substitutenoisy{ui}{it} - \substitutesilent{it}{sl} - \substitutesilent{sl}{it} -\end{verbatim} - -The |\installfontas| command should be considered as an -alternative to using font substitution, as it gives much finer -control over what \fd entries will be made. - - -\begin{decl} - |\declaresize|\arg{size}\arg{fd-size-range} -\end{decl} -This declares a new size, and gives the \fd size specifications for -it. For example, \url{fontinst.sty} declares the following sizes: -\begin{verbatim} - \declaresize{}{<<->>} - \declaresize{5}{<<5>>} - \declaresize{6}{<<6>>} - \declaresize{7}{<<7>>} - \declaresize{8}{<<8>>} - \declaresize{9}{<<9>>} - \declaresize{10}{<<10>>} - \declaresize{11}{<<10.95>>} - \declaresize{12}{<<12>>} - \declaresize{14}{<<14.4>>} - \declaresize{17}{<<17.28>>} - \declaresize{20}{<<20.74>>} - \declaresize{25}{<<24.88>>} -\end{verbatim} - -\begin{decl} - |\declareencoding|\arg{string}\arg{etx} -\end{decl} -This declares which \etx file corresponds to which \texttt{codingscheme} -string. For example, \url{fontinst.sty} declares the following -encoding strings: -\begin{verbatim} - \declareencoding{TEX TEXT}{ot1} - \declareencoding{TEX TEXT WITHOUT F-LIGATURES}{ot1} - \declareencoding{TEX TYPEWRITER TEXT}{ot1tt} - \declareencoding{TEX MATH ITALIC}{oml} - \declareencoding{TEX MATH SYMBOLS}{oms} - \declareencoding{TEX MATH EXTENSION}{omx} - \declareencoding{EXTENDED TEX FONT ENCODING - LATIN}{t1} - \declareencoding{TEX TEXT COMPANION SYMBOLS 1---TS1}{ts1} - \declareencoding{TEXBASE1ENCODING}{8r} - \declareencoding{TEX TYPEWRITER AND WINDOWS ANSI}{8y} -\end{verbatim} - - - - - -\subsection{Other} - -The following commands also belong to this section, but there is -currently no description of them here. - - -|\afmtomtx|\marg{afmfile}\marg{mtxfile} - -|\endrecordtransforms| - -|\etxtopl|\marg{encoding list}\marg{plfile} - -|\etxtovpl|\marg{encoding list}\marg{vplfile} - -|\fakenarrow|\marg{width factor} - -|\generalpltomtx|\marg{plfile}\marg{mtxfile}\marg{plsuffix}\marg{opt-enc} - -|\latinfamily|\marg{family}\marg{commands} - -|\mtxtomtx|\marg{source MTX}\marg{destination MTX} - -|\mtxtopl|\marg{mtxfile}\marg{plfile} - -|\NOFILES| - -|\recordtransforms|\marg{filename} - - - - -\section{Mapmaking commands} -\label{Sec:Mapmaking} - -The commands described in this section are for use with command files -that input \texttt{finstmsc.sty}. - - -\subsection{Mapfile command reference} - -For an introduction to making map file entries, see -Subsection~\ref{Ssec:MapFragments}. - -\begin{decl} - |\adddriver|\marg{driver name}\marg{fragment file name} -\end{decl} -This opens the file \meta{fragment file name} for writing mapfile -entries to. The \meta{driver name} selects the format of these -entries. - -\begin{decl} - |\makemapentry|\marg{\TeX\ font name} -\end{decl} -This causes a mapfile entry for the specified font to be written to -all files currently open for receiving mapfile entries. These -commands are usually automatically generated by \fontinst. - -\begin{decl} - |\donedrivers| -\end{decl} -This closes all files open for receiving mapfile entries. - - -\subsection{Drivers} - -The \meta{driver name}s that may be used with |\adddriver| are: - -\begin{decl} - |dvips| -\end{decl} -The \dvips driver. The mapfiles generated are useful also with pdf\TeX. - -\begin{decl} - |dvipdfm| -\end{decl} -The \setpackagename{dvipdfm} \dvi-to-\pdf driver. Not much tested, -but appears to work. - -\begin{decl}[v1.915] - |pltotf| -\end{decl} -Not really a \dvi driver. The file that is generated is a shell -script of \texttt{pltotf} commands for converting precisely those \pl -files which are needed to \tfm files (\fontinst generally generates -also a bunch of \pl files that in the end turn out to be -unnecessary). The \texttt{TFMfileprefix} variable can be used to -specify a path to the directory where these files should be placed. - -\begin{decl} - |debug| -\end{decl} -Not a \dvi driver either, but for each base font a report on the -information that was available. Useful if you need to write the -driver file yourself. - - -\subsection{Configuration commands} - -The following commands configure the generation of mapfile entries, -mostly with respect to how various pieces of information are deduced -from other pieces. - -\begin{decl} - |\AssumeAMSBSYY|\\ - |\AssumeBaKoMa|\\ - |\AssumeLWFN|\\ - |\AssumeMetafont| -\end{decl} - -\begin{decl} - |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action} -\end{decl} - -\begin{decl} - |\specifypsfont|\marg{PS font name}\marg{actions} -\end{decl} - - -An \meta{action} is one of -\begin{decl*}[v1.928] - |\download|\marg{file}\\ - |\fulldownload|\marg{file} -\end{decl*} -where \meta{file} is a file to download (`download' typically means -``include in the generated \PS output or equivalent''). The difference -between |\download| and |\fulldownload| have to do with how partial -downloading (subsetting) of fonts should be handled. |\download| means -use the driver's defaults (often settable via command line options) -for this. |\fulldownload| means don't subset: always include the full -font, if \fontinst knows how to express this in a map file entry for -this particular driver. - -Additional actions could be added in the future, if there is a need -for them. - - -\begin{decl} - |\storemapdata|\marg{\TeX\ font name}\marg{source}\marg{transforms} -\end{decl} -This records information about how the font named \meta{\TeX\ font -name} was generated. Such commands are usually found in the file of -recorded transforms. If a font is encountered for which no -information has been stored, then the corresponding \mtx file will be -sourced, looking for a |\storemapdata| command there. - -A \meta{source} is one of -\begin{decl*} - |\fromafm|\marg{AFM name}\marg{PS name}\\ - |\frompl|\marg{PL name}\\ - |\frommtx|\marg{MTX name}\\ - |\fromvpl| -\end{decl*} -Note that several of them have a different syntax and meaning than -they do in fontmaking command files. - -A \meta{transform} is one of -\begin{decl*} - |\reencodefont|\marg{etx}\\ - |\reglyphfont|\\ - |\transformfont|\marg{x-scale}\marg{slant-scale} -\end{decl*} -Note that all of these have a different meaning than they do in -fontmaking command files. - -\begin{decl} - |\debugvalue|\arg{name} -\end{decl} -This adds a value to the list of those that are reported by the -\texttt{debug} driver. Example: -\begin{verbatim} - \debugvalue{PS_font_file} -\end{verbatim} - - - -\subsection{Basic conversion commands} - -Some of the basic ``convert an $X$ file to a $Y$ file'' commands in -\fontinst are not useful as part of a fontmaking run, and are -available only in \texttt{finstmsc.sty} to conserve some memory. - -\begin{decl} - |\enctoetx|\marg{encfile}\marg{etxfile} -\end{decl} -This reads the file \meta{encfile}\texttt{.enc} which should be -simple \PS code defining a \PS encoding vector and generates a -corresponding rudimentary \fontinst encoding file -\meta{etxfile}\texttt{.etx}. It's a basic ``import encoding to -\fontinst'' command. - -\begin{decl}[v1.911] - |\etxtoenc|\marg{etxfiles}\marg{encfile} -\end{decl} -This does the opposite of |\enctoetx|; the information in the \etx -files that is converted is the correspondence between slots and glyph -names. -\NEWfeature{v1.927} -The \meta{etxfiles} argument is a comma-separated list of encoding -files which are superimposed to generate the \PS encoding. The first -|\setslot| for a particular slot is the one which decides which glyph -will be placed there. - -\begin{decl}[v1.928] - |\etxtocmap|\marg{etxfile}\marg{cmapfile} -\end{decl} -This reads an \etx file and generates a corresponding ToUnicode CMap -file; the information that is converted is the map from slot numbers -to |\Unicode| code points. - - - - -\section{General commands} - - - -This section describes commands and mechanisms that are the same in -all file types. Commands that are particular for one type of file are -described in subsequent sections. - - -\subsection{Variables} - -Many (but not all) of the activities \fontinst perform can be -understood as either ``setting variables'' or ``formatting and writing -to file data stored in some variable''. The accessing of variables is -an important aspect of how \fontinst works. - -Variables come in different types and variables of different types -live in different namespaces; |\int{foo}|, |\str{foo}|, and -|\dim{foo}| refer to three different variables which are all named -|foo|. Variables are either set or not set. Unless the contrary is -stated explicitly, variables default to not being set. It is an error -to access the value of a variable that has not been set. \Fontinst -variable assignments are as a rule local, i.e., will be undone when -the enclosing \TeX\ group is ended. Most command file commands that -cause files to be read will begin a group before reading the file(s) -and end the group at some point after having read them. - -Taking string variables as an example, there are three commands for -changing a string variable: -\begin{decl*} - |\setstr|\arg{name}\arg{string expression}\\ - |\resetstr|\arg{name}\arg{string expression}\\ - |\unsetstr|\arg{name} -\end{decl*} -The |\resetstr| command unconditionally sets the string variable -\meta{name} to the full expansion of the \meta{string expression}. -The |\unsetstr| command unconditionally renders the string variable -\meta{name} unset. If the the string variable \meta{name} is -currently unset then the |\setstr| command will set it to the full -expansion of the \meta{string expression}, but if it already is set -then |\setstr| does nothing. - -This pattern with three commands, one |\set|\dots\ which only sets -unset variables, one |\reset|\dots\ which sets variables regardless of -whether they have been set or not, and one |\unset|\dots\ which unsets -variables is recurring in \fontinst. Variables are most commonly set -using some |\set|\dots\ command; this has the effect that the first -command to try to set a variable is the one which actually sets it. - -If |\set|\dots\ is the command for setting the value of a variable, -the command for getting that value has the same name without the -|set| part, e.g., |\setint|--|\int|, |\setkern|--|\kern|, etc. There -are typically also conditionals for testing whether variables are -set, and these take the form |\ifis|\dots\arg{name}|\then|. - - -The following commands for changing the value of a variable can be -used anywhere: - -\begin{decl} - |\setdim|\arg{dim}\arg{dimension}\\ - |\setint|\arg{int}\arg{integer expression}\\ - |\setstr|\arg{str}\arg{string expression} -\end{decl} -If the dimension variable \m{dim} is currently undefined, it is -defined to be the current value of \m{dimension}. - -If the integer variable \m{int} is currently undefined, it is -defined to be the current value of \m{integer expression}. - -If the string variable \m{str} is currently undefined, it is -defined to be the current value of \m{string expression}. - -\begin{decl} - |\setcommand|\arg{command}\meta{parameter text}\arg{replacement text} -\end{decl} -If the command \m{command} is currently undefined, it is defined to -grab parameters as specified by the \meta{parameter text} and then -expand to the \m{replacement text}. This uses the same syntax for -parameters as the \TeX\ \verb|\def| command. -\begin{center} - \begin{tabular}{r l} - No. parameters& \meta{parameter text}\\ - 0& (empty)\\ - 1& |#1|\\ - 2& |#1#2|\\ - 3& |#1#2#3|\\ - \multicolumn{2}{c}{and so on.} - \end{tabular} -\end{center} -Some examples: -\begin{verbatim} - \setcommand\lc#1#2{#2} - \setcommand\lc#1#2{#1small} -\end{verbatim} -With the first definition, |\lc{A}{a}| expands to |a|, but with the -second it expands to |Asmall|. - -\begin{decl} - |\resetdim|\arg{dim}\arg{dimension}\\ - |\resetint|\arg{int}\arg{integer expression}\\ - |\resetstr|\arg{str}\arg{string expression} -\end{decl} -The dimension variable \m{dim} is defined to be the current value -of \m{dimension}. - -The integer variable \m{int} is defined to be the current value of -\m{integer expression}. - -The string variable \m{str} is defined to be the current value of -the \m{string expression}. (|\resetstr| mostly boils down to a \TeX\ -|\edef| command.) - -\begin{decl} - |\resetcommand|\arg{command}\meta{parameter text}\arg{replacement text} -\end{decl} -The command \m{command} is defined to grab parameters as specified by -the \meta{parameter text} and then expand to the \m{replacement text}. -This is a synonym for the \TeX\ \verb|\def| command. - -\begin{decl} - |\unsetdim|\arg{dim}\\ - |\unsetint|\arg{int}\\ - |\unsetstr|\arg{str}\\ - |\unsetcommand|\arg{command} -\end{decl} -Makes \m{dim}, \m{int}, \m{str}, or \m{command} an undefined -dimension, integer, string or command. - -\begin{decl}[v1.900] - |\offcommand|\marg{command}\\ - |\oncommand|\marg{command} -\end{decl} -|\offcommand| turns off a command, i.e., it redefines it to do -nothing (while still taking the same number of arguments). -|\oncommand| turns a command back on, i.e., it restores the -definition the command had before a previous |\offcommand|. Using -|\offcommand| on a command that is already off or |\oncommand| on a -command that is not off has no effect. - - -\subsection{Argument types} - -There are roughly six types of arguments that \fontinst -commands can take. These are -\begin{itemize} - \item integer expressions, - \item string expressions, - \item comma-separated lists of string expressions, - \item dimensions, - \item commands (i.e., \TeX\ control sequences), and - \item other (pretty much ``none of the above''). -\end{itemize} -Integer expressions are explained in Subsection~\ref{Sec:integer} -below. - -The most common form of a string expression is simply a sequence of -character tokens, but any balanced text which expands to such a -sequence of tokens is legal. Several of the standard \etx files use -macros in string expressions to make glyph names to some extent -configurable. Besides such custom macros, the following \fontinst -commands may be used to access variable values inside a string -expression -\begin{decl*} - |\strint|\arg{int}\\ - |\str|\arg{str}\\ - |\dim|\arg{dim} -\end{decl*} -Incidentally, these \m{int}, \m{str}, and \m{dim} are themselves -string expressions (for the names of integer, string, and dimen -respectively variables). - -Dimensions are simply \TeX\ \meta{dimen}s; their use is rather -limited. \Fontinst does not provide for any sort of ``dimen -expressions''. Most actual lengths are expressed as integer -expressions, in \afm units ($1/1000$ of the font size). - -Common to integer expressions, string expressions, and -dimensions is that these argument types get expanded during -evaluation (in the case of string expressions, this expansion -\emph{is} the evaluation), which means one can use macros in -arguments of these types. Command arguments do not get -expanded---they are mainly used with commands that modify the -definitions of other commands. - -Comma-separated lists of string expressions are first split at commas -(without prior expansion) and each element is then treated as a -string expression (i.e., \emph{gets expanded}). (As remarked elsewhere, -the \meta{metrics-list} argument of |\installfont| is not properly a -comma-separated list of string expressions, even though it may look -like one.) -As for the ``other'' arguments one cannot give any rules: they -might get expanded, but it could also happen that they won't. - - - -\subsection{Integer expressions} -\label{Sec:integer} - -The \emph{integer expressions} provide a user-friendly syntax for -\TeX\ arithmetic. They are used to manipulate any integers, -including glyph dimensions, which are given in \afm units, that is -1000 to the design size. \TeX\ \pl fonts have their dimensions -converted to \afm units automatically. - -The \emph{integer expressions} are: - -\begin{decl} - \m{number} -\end{decl} -Returns the value of a \TeX\ \m{number} (as explained in -\emph{The \TeX book}). Typical examples of this kind of integer -expression are |0|, |1000|, |538|, |-20|, etc. - -\begin{decl} - |\int|\arg{int} -\end{decl} -Returns the value of the integer variable \m{int}. - -\begin{decl} - |\width|\arg{glyph}\\ - |\height|\arg{glyph}\\ - |\depth|\arg{glyph}\\ - |\italic|\arg{glyph} -\end{decl} -Returns the width, height, depth, or italic correction of the glyph -variable \m{glyph}. - -\begin{decl} - |\kerning|\arg{left}\arg{right} -\end{decl} -Returns the kerning between the \m{left} and \m{right} glyphs. Unlike -other types of variable accesses, where it is an error to access -something that has not been explicitly set, this command returns |0| -if no kern has been set between the two glyphs. - -\begin{decl} - |\neg|\arg{integer expression}\\ - |\add|\arg{integer expression}\arg{integer expression}\\ - |\sub|\arg{integer expression}\arg{integer expression}\\ - |\max|\arg{integer expression}\arg{integer expression}\\ - |\min|\arg{integer expression}\arg{integer expression}\\ - |\mul|\arg{integer expression}\arg{integer expression}\\ - |\div|\arg{integer expression}\arg{integer expression}\\ - |\scale|\arg{integer expression}\arg{integer expression}\\ - |\half|\arg{integer expression}\\ - |\otherhalf|\arg{integer expression} -\end{decl} -|\neg| returns the negation of the \m{integer expression}. - -|\ad| returns the sum of the two \m{integer expression}s. - -|\sub| returns the first \m{integer expression} minus the second. - -|\max| returns the maximum of the two \m{integer expression}s. - -|\min| returns the minimum of the two \m{integer expression}s. - -|\mul| returns the product of the two \m{integer expression}s. - -|\div| returns the first \m{integer expression} divided by the second. - -|\scale| returns the first \m{integer expression} times the second, -divided by 1000. |\scale| does better rounding than the corresponding -combination of |\mul| and |\div|. - -|\half| returns half the \m{integer expression}. It does better -rounding than |\scale|\arg{integer expression}|{500}| or -|\div|\arg{integer expression}|{2}|. - -|\otherhalf| returns the ``other half'' of the \m{integer -expression}, i.e., the sum of |\half| something and |\otherhalf| the -same thing is that thing back. - - -\subsection{Conditionals and loops} - -\Fontinst has a rather extensive family of conditionals (|\if|s), and -as of late also some convenient loop commands. The most common forms -of a \fontinst conditional are -\begin{decl*} - |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Fi|\\ - |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Else| - \meta{else branch} |\Fi| -\end{decl*} -i.e., \fontinst uses Plain\TeX\ style conditionals rather than \LaTeX\ -style conditionals. Every |\if|\dots\ command can be thought of as -testing some condition. If the condition is true then the \meta{then -branch} will be executed, but not the \meta{else branch} (if there is -one). If the condition is false then the \meta{then branch} will nor be -executed, but if there is an \meta{else branch} then that will be -executed. Conditionals may be nested (i.e., occur in the then or else -branch). - -\begin{hackernote} - The |\then| is not just syntactic sugar, but a functional part of - those conditionals which take arguments. Its purpose is to look - like an |\if| to \TeX\ when the conditional occurs in a skipped - branch of another conditional. -\end{hackernote} - -The most common conditionals are those which test if a variable is set. -\begin{decl*} - |\ifisint|\arg{int}|\then|\\ - |\ifisdim|\arg{dim}|\then|\\ - |\ifisstr|\arg{str}|\then|\\ - |\ifiscommand|\arg{command}|\then| -\end{decl*} -These cause the following \meta{then branch} to be executed if the -specified variable is set, and the \meta{else branch} to be executed -if the variable is not set. The \meta{int}, \meta{dim}, and -\meta{str} are string expressions for the names of an integer, -dimension, and string respectively variable. The \meta{command} is -the actual control sequence (command variable) that should be tested. - -\begin{decl} - |\ifisglyph|\arg{glyph}|\then| -\end{decl} -This similarly tests if a glyph (also a variable of a kind) is set in -the current glyph base. The glyph name \meta{glyph} is a string -expression. - -\begin{decl}[v1.917] - |\ifareglyphs|\marg{glyph list}|\then| -\end{decl} -This command tests whether all the glyphs in the \meta{glyph list} -(a comma-separated list of string expressions) are set in the current -glyph base. If one of the glyphs is not set then condition is false. - -\begin{decl}[v1.900] - |\ifnumber|\marg{integer expression}\meta{rel}% - \marg{integer expression}|\then| -\end{decl} -The \meta{rel} is one of \texttt{<}, \texttt{=}, and \texttt{>}. -This command evaluates the two \meta{integer expression}s and -then tests whether the specified relation holds between their values. - -\begin{decl}[v1.900] - |\ifiskern|\marg{glyph1}\marg{glyph2}|\then| -\end{decl} -This tests whether a kern has been set with \meta{glyph1} on the left -and \meta{glyph2} on the right (both arguments are string -expressions). This is almost the negation of -\begin{verbatim} - \ifnumber{\kerning{}{}}={0}\then -\end{verbatim} -but |\ifiskern| can distinguish the case that an zero kern has been -set (true) from the case that no such kern has been set (false), -which |\kerning| can not. It is however unlikely that this -distinction would ever be of use in a practical situation. - -\begin{decl}[v1.924] - |\ifoption|\marg{string}|\then| -\end{decl} -Test whether \meta{string} (a string expression) is among the current -list of options. This list is by default empty, elements are added -using |option| modifiers (cf.~the description of |\installfont|), and -the list is cleared for each new file for which one can specify -options. - -\begin{decl}[v1.909] - |\Else| - |\Fi| -\end{decl} -For \fontinst, these two control sequences are precisely the same as -the \TeX\ primitives |\else| and |\fi|, but things are a bit more -complicated in \fontdoc. The mechanism in \fontdoc\ that allows it to -present both branches of the conditional in the typeset output -requires that |\Else| and |\Fi| generate typeset output. See also the -|\showbranches| \fontdoc command. - -\begin{hackernote} - Before |\Else| and |\Fi| were introduced, the \TeX\ primitives - |\else| and |\fi| were used instead for \fontinst conditionals. - Back then, \fontdoc defined all conditionals to expand to |\iftrue|. - - It used to be the case that all conditionals would be fully - expandable (which in particular would have made it possible to use - them in string expressions), but that is no longer the case. -\end{hackernote} - - - -\begin{decl}[v1.901] - |\for|\parg{name}\marg{start}\marg{stop}\marg{step} - \meta{body} |\endfor|\parg{name} -\end{decl} -will cause the \meta{body} code to be repeated some number of times. -How many depends on the values of \meta{start}, \meta{stop}, and -\meta{step}, which are integer expressions. - -As a precaution, the \meta{body} is not allowed to contain any -empty lines (|\par| tokens). If you want to have the visual -separation (for sakes of legibility or otherwise), put a |%| -somewhere on the line---that makes it nonempty. - -\meta{name} is used as the name of an integer variable. This -variable gets reset to the value of \meta{start} before the first -repetition of \meta{body code}. After each repetition but the last, -it is incremented by \meta{step}. \meta{body} gets repeated if -the value of \meta{name} has not gotten past that of \meta{stop}. To -get past means to be bigger if \meta{step} is positive and to be -smaller if \meta{step} is negative. In the case that \meta{step} is -zero, the entire construction above will be equivalent to -\begin{quote} - |\resetint|\marg{name}\marg{start}\\ - \meta{body} -\end{quote} - -|\for| \textellipsis\ |\endfor| constructions can be nested. -\meta{name} is used by |\for| to identify its matching |\endfor|, so -they need to be identical in |\for| and |\endfor|. \textbf{Note} that -the delimiters around the \meta{name} are parentheses, not braces. - - -\begin{decl}[v1.901] - |\foreach|\parg{name}\marg{csep-list} - \meta{body} |\endfor|\parg{name} -\end{decl} -will cause the \meta{body} code to be repeated one time for each item -in the \meta{csep-list}. \meta{csep-list} is a comma-separated list -of string expressions. - -As a precaution, the \meta{body} is not allowed to contain any -empty lines (|\par| tokens). If you want to have the visual -separation (for sakes of legibility or otherwise), put a |%| -somewhere on the line---that makes it nonempty. - -\meta{name} is used as the name of a string variable. Before each -repetition of the \meta{body code}, this variable will get reset to -the next item in the \meta{csep-list}. - -|\foreach|\textellipsis\ |\endfor| constructions can be nested. -\meta{name} is used by |\foreach| to identify its matching |\endfor|, -so they need to be identical in |\foreach| and |\endfor|. -\textbf{Note} that the delimiters around the \meta{name} are -parentheses, not braces. - - - -\subsection{Other general commands} - -\begin{decl} - |\needsfontinstversion|\arg{version} -\end{decl} -This issues a warning if the current version of the \fontinst -package is less than \m{version}. - -\begin{decl} - |\needsTeXextension|\marg{extension tests}\marg{who}\\ - |\eTeX|\marg{version number}\\ - |\pdfTeX|\marg{version number}\marg{revision} -\end{decl} - -\begin{decl}[v1.915] - |\fontinstcc|\\ - |\normalcc| -\end{decl} -|\fontinstcc| switches to the catcodes used in e.g.\@ -\texttt{fontinst.sty}: |_| and |@| are letters, space and newline are -ignored, and |~| is a space. |\normalcc| switches back to normal -catcodes. - -\begin{decl}[v1.900] - |\begincomment| \meta{text} |\endcomment| -\end{decl} -This hides the \meta{text} from \fontinst processing, but allows it -to show up when the file is typeset with \fontdoc. - -\begin{decl}[v1.906] - |\fontinsterror|\marg{subsystem}\marg{error}\marg{help}\\ - |\fontinstwarning|\marg{subsystem}\marg{warning}\\ - |\fontinstwarningnoline|\marg{subsystem}\marg{warning}\\ - |\fontinstinfo|\marg{subsystem}\marg{info} -\end{decl} - -\begin{decl}[v1.906] - |\messagebreak| -\end{decl} - - -Finally, there are two Plain\TeX\ commands which should be mentioned: -\begin{decl*} - |\input| \meta{file name}\\ - |\bye| -\end{decl*} - - - - - -\section{Encoding files} - -An \emph{encoding file} (or \texttt{.etx} file) is a \TeX\ document -with the structure: -\begin{quote} - |\relax|\\ - \meta{ignored material}\\ - |\encoding|\\ - \meta{encoding commands}\\ - |\endencoding|\\ - \meta{ignored material} -\end{quote} -This describes the encoding of a font, using the \m{encoding commands}. - -Since the encoding file ignores any material between \verb|\relax| and -\verb|\encoding|, an \emph{encoding file} can also be a \LaTeX\ -document. The structure is then -\begin{quote} - |\relax|\\ - |\documentclass{article} %| Or some other class\\ - |\usepackage{fontdoc}|\\ - \meta{\LaTeX\ preamble}\\ - |\begin{document}|\\ - \meta{\LaTeX\ text}\\ - |\encoding|\\ - \m{encoding commands}\\ - |\endencoding|\\ - \meta{\LaTeX\ text}\\ - |\end{document}| -\end{quote} - - -See also the descriptions in \emph{Writing ETX format font encoding -specifications} (\texttt{encspecs.tex}). - - -\subsection{Encoding commands} - -The \m{encoding commands} are: - -\begin{decl} - |\nextslot|\arg{integer expression} -\end{decl} -Sets the number of the next slot. If there is no \verb|\nextslot| -command, the number is the successor of the previous slot. - -\begin{decl}[v1.8] - |\skipslots|\arg{integer expressions} -\end{decl} -Advances the number of the next slot. - -\begin{decl} - |\setslot|\arg{glyph} \m{slot commands} |\endsetslot| -\end{decl} -Assigns \m{glyph} to the current slot. The \m{slot commands} can be -used to specify additional behaviour for the slot, and typically also -contains comments about the glyph. - -\begin{decl}[v1.9] - |\setleftboundary|\marg{glyph} \m{slot commands} - |\endsetleftboundary| -\end{decl} -Makes the beginning of a word (left boundary) behave like the right -side of \m{glyph} with respect to kerning. |\ligature| commands in -the \meta{slot commands} create beginning of word ligatures. - -\begin{decl}[v1.9] - |\setrightboundary|\marg{glyph} -\end{decl} -Makes the end of a word (right boundary) behave like the left -side of \m{glyph} with respect to kerning and ligatures. The current -slot position is left empty. - -\begin{decl} - |\inputetx|\arg{file} -\end{decl} -Inputs the \m{encoding commands} of \m{file}\texttt{.etx}. - -\begin{decl}[v1.917] - |\setfontdimen|\marg{fontdimen no.}\marg{integer variable} -\end{decl} -Sets up a correspondence between a font dimension and an integer -variable. When generating a font, the font dimension value is taken -from the integer variable. When converting a font from \pl or \vpl -format, the fontdimen value will be recorded as a |\setint| command -for the variable. - -\begin{decl}[v1.924] - |\ifdirect| -\end{decl} -Encoding files set up a correspondence between slot numbers and glyph -names, which can be used in two different ways. In the \emph{direct} -mode, encoding files map slot numbers to glyph names. In the -\emph{inverse} mode, glyph names are mapped to slot numbers. The -inverse mapping can in general be one-to-many, and when precisely one -target slot is needed \fontinst chooses that arbitrarily. The |\ifdirect| -conditional can be used to disambiguate the inverse mapping, by -conditionalising all undesired |\setslot|s on that the file is being -interpreted in the direct mode. - -Currently the only case in which encoding files are being read in -the inverse mode is when reencoding fonts. - -\begin{decl}[v1.8] - |\setslotcomment|\marg{text}\\ - |\resetslotcomment|\marg{text}\\ - |\unsetslotcomment| -\end{decl} -These commands can be used to specify an automatic |\comment| text -for all slots. They are ignored by \fontinst, but interpreted by -\fontdoc. - -\begin{decl}[v1.8] - |\useexamplefont|\marg{font} -\end{decl} -This command is ignored by \fontinst. In \fontdoc it sets the font -that is used by the |\slotexample| command. The \meta{font} argument -has the same syntax for a font as the \TeX\ primitive |\font|. - - - - -\subsection{Slot commands} - -The \m{slot commands} are: - -\begin{decl} - |\comment|\arg{text} -\end{decl} -A comment, which is ignored by \fontinst, but typeset as a separate -paragraph by \fontdoc. - -\begin{decl}[v1.917] - |\label|\arg{text} -\end{decl} -A reference label, which records the slot number and glyph name. -Ignored by \fontinst. - -\begin{decl} - |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph} -\end{decl} -|\ligature| declares a ligature of type \m{ligtype} from the current -glyph followed by the first glyph to the second glyph. The \m{ligtype}s -are as in \vpl files (see the \texttt{vptovf} Web source for more -details). For example: -\begin{verbatim} - \setslot{ff} - \ligature{LIG}{i}{ffi} - \ligature{LIG}{l}{ffl} - \comment{The `ff' ligature.} - \endsetslot -\end{verbatim} -\begin{decl*}[v1.918] - |\Ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\ - |\oddligature|\marg{note}\arg{ligtype}\arg{glyph}\arg{glyph} -\end{decl*} -The |\Ligature| command is by default a synonym of |\ligature| (but -\fontdoc may typeset them differently). The |\oddligature| command is -by default ignored by \fontinst. See \setfilename{encspecs.tex} for -an explanation of the semantic differences. - -\begin{decl} - |\makerightboundary|\arg{glyph} -\end{decl} -This makes the current slot the end of word (right boundary) marker -with respect to ligatures and kerning, i.e., \TeX\ will kern and -ligature as if there was an invisible occurrence of this character -after the last character of every word. All kerns and ligatures with -\meta{glyph} as the right part will apply for this slot. - -It is preferable to use |\setrightboundary| to control end of word -behaviour if you have an empty slot to spare. - -\begin{decl} - |\Unicode|\marg{code point}\marg{name}\\ - |\charseq|\marg{\cs{Unicode} commands} -\end{decl} -These commands declare a Unicode character or character sequence as -possible interpretations of what is in this slot. They are ignored -when making fonts, but \fontdoc give them a prominent role in -encoding specifications and to |\etxtocmap| they are the primary -properties of the slot. - -\begin{decl}[Obsolete?!] - |\usedas|\arg{type}\arg{control sequence} -\end{decl} -This command declares a \TeX\ control sequence for this slot, with -the \emph{type} taken from: -\begin{verbatim} - char accent mathord - mathbin mathrel mathopen - mathclose mathpunct mathvariable - mathaccent mathdelim -\end{verbatim} -There is currently no code in \fontinst which makes any use of this -command. - -\begin{decl} - |\nextlarger|\arg{glyph} -\end{decl} -Sets a \textsc{nextlarger} entry from the current slot to the -\m{glyph}. - -\begin{decl} - |\varchar| - \m{varchar commands} - |\endvarchar| -\end{decl} -Sets a \textsc{varchar} entry for the current slot, using the -\m{varchar commands}. The \m{varchar commands} are: -\begin{decl} - |\vartop|\arg{glyph}\\ - |\varmid|\arg{glyph}\\ - |\varbot|\arg{glyph}\\ - |\varrep|\arg{glyph} -\end{decl} -Sets the top, middle, bottom, or repeated \m{glyph} of the -\textsc{varchar}. - - -\subsection{Other} - -The following commands belong to this section, but there is currently -no description of them here. - -|\ifisinslot|\marg{glyph}\marg{slot}|\then| - - - - -\section{Metric files} -\label{Sec:Metric} - - -A \emph{metric file} (or \mtx file) is a \TeX\ document with the -structure: -\begin{quote} - |\relax|\\ - \emph{ignored material}\\ - |\metrics|\\ - \m{metric commands}\\ - |\endmetrics|\\ - \emph{ignored material} -\end{quote} -This describes the glyphs in a font, using the \m{metric commands}. -Like encoding files, metric files can simultaneously be \LaTeX\ -documents. - -Metric files are usually either \emph{hand-crafted} or -\emph{transformable}. The transformable metric files typically encode -the metrics of one particular font and are automatically generated. -Hand-crafted metric files (such as \setfilename{latin.mtx}) typically -do not contain much explicit metric data, instead the code there makes -use of metrics previously specified by other files to construct new -glyphs or adjust metrics to meet special conditions. Whereas -transformable metric files tend to be mere lists of metric data, the -hand-crafted metric files are more like programs. - - -\subsection{Metric commands} - -The \m{metric commands} are as follows. All glyph name arguments are -string expressions. - -\begin{decl} - |\setglyph|\arg{name} \m{glyph commands} |\endsetglyph| -\end{decl} -If the glyph called \m{name} is undefined, it is built using the -\m{glyph commands} given below, for example: -\begin{verbatim} - \setglyph{IJ} - \glyph{I}{1000} - \glyph{J}{1000} - \endsetglyph - \setglyph{Asmall} - \glyph{A}{850} - \endsetglyph -\end{verbatim} -The \meta{glyph commands} are not executed if the glyph has already -been set. - -\begin{decl} - |\resetglyph|\arg{name} - \m{glyph commands} - |\endresetglyph| -\end{decl} -Gives the definition of the glyph called \m{name} using the -\m{glyph commands}. - -\begin{decl} - |\unsetglyph|\arg{name} -\end{decl} -Makes the glyph called \m{name} undefined. - -\begin{decl} - |\setrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction}\\ - |\setscaledrawglyph|% - \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction} -\end{decl} -This sets a glyph called \m{name} from the \m{font}, which has the -given design size, slot, width, height, depth and italic correction. -The \meta{scale} is a scaling factor which has been applied to the -font to give it the specified metrics. These commands will usually be -generated automatically from an \afm or \pl file. - -If the integer variable \texttt{rawscale} is set, another scaling by -that amount will be applied to the glyph. - -\begin{decl} - |\setnotglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction}\\ - |\setscalednotglyph|% - \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction} -\end{decl} -These sets a glyph called \m{name}\texttt{-not}, which is present in -the \m{font}, but is not in the default encoding. They take the same -arguments as |\setrawglyph| and |\setscaledrawglyph| respectively, -although the slot will normally be $-1$. This command will usually -be generated automatically from an \afm file. - -Reencoding a font can turn |\setrawglyph| commands into -|\setnotglyph| commands and vice versa. - -\begin{decl} - |\inputmtx|\arg{file} -\end{decl} -Inputs the \m{metric commands} of \m{file}\texttt{.mtx}. - -\begin{decl}[v1.9] - |\usemtxpackage|\marg{package~list}\\ - |\ProvidesMtxPackage|\marg{package~name} -\end{decl} - - -\subsection{Glyph commands} - -The \m{glyph commands} add material to the glyph currently being -constructed in a |\setglyph| \dots\ |\endsetglyph| or -|\resetglyph| \dots\ |\endresetglyph|. They are: - -\begin{decl} - |\glyph|\arg{glyph}\arg{integer expression} -\end{decl} -Sets the named glyph \m{glyph} at the given scale, with 1000 as the -natural size. This: -\begin{itemize} - \item - Advances the current glyph width. - \item - Sets the current glyph height to be at least the height of the - named glyph, adjusted for the current vertical offset. - \item - Sets the current glyph depth to be at least the depth of the - named glyph, adjusted for the current vertical offset. - \item - Sets the current glyph italic correction to be the same as the - set glyph. -\end{itemize} -The named glyph must have already been defined, otherwise an error -will occur. For example: -\begin{verbatim} - \setglyph{fi} - \glyph{f}{1000} - \glyph{i}{1000} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphrule|\arg{integer expression}\arg{integer expression} -\end{decl} -Sets a rule of the given width and height, for example: -\begin{verbatim} - \setglyph{underline} - \glyphrule{333}{40} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphspecial|\arg{string expression} -\end{decl} -Sets a driver-dependent \verb|\special|, for example: -\begin{verbatim} - \setglyph{crest} - \glyphspecial{Filename: crest.eps} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphwarning|\arg{string expression} -\end{decl} -Sets a warning \verb|\special|, and produces a warning message each -time the glyph is used, for example: -\begin{verbatim} - \setglyph{missingglyph} - \glyphrule{500}{500} - \glyphwarning{Missing glyph `missingglyph'} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\movert|\arg{integer expression} -\end{decl} -Moves right by the given amount, and advances the current glyph width, -for example: -\begin{verbatim} - \setglyph{Asmall} - \movert{50} - \glyph{A}{700} - \movert{50} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\moveup|\arg{integer expression} -\end{decl} -Moves up by the given amount, and advances the current vertical -offset. Each glyph should always end at vertical offset zero, for -example: -\begin{verbatim} - \setglyph{onehalf} - \moveup{500} - \glyph{one}{700} - \moveup{-500} - \glyph{slash}{1000} - \moveup{-200} - \glyph{two}{700} - \moveup{200} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\push| \m{glyph commands} |\pop| -\end{decl} -Performs the \m{glyph commands}, but at the |\pop| the current -position and glyph width are restored to what they were at the |\push|, -for example: -\begin{verbatim} - \setglyph{aacute} - \push - \movert{\half{\sub{\width{a}}{\width{acute}}}} - \glyph{acute}{1000} - \pop - \glyph{a}{1000} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphpcc|\arg{glyph}\arg{integer expression}\arg{integer expression} -\end{decl} -This is generated from \texttt{PCC} instructions in an \afm file, and -is syntactic sugar for: -\begin{quote} - \small - |\push|\\ - |\movert|\arg{first integer expression}\\ - |\moveup|\arg{second integer expression}\\ - |\glyph|\arg{glyph}|{1000}|\\ - |\pop| -\end{quote} - -\begin{decl} - |\resetwidth|\arg{integer expression}\\ - |\resetheight|\arg{integer expression}\\ - |\resetdepth|\arg{integer expression}\\ - |\resetitalic|\arg{integer expression} -\end{decl} -Sets the width, height, depth, or italic correction of the current -glyph. - -\begin{decl} - |\samesize|\arg{glyph} -\end{decl} -Sets the dimensions of the current glyph to be the same as \m{glyph}. - -Inside the definition of \m{glyph}, you can use expressions such as -|\width|\arg{glyph}, which will refer to the glyph defined so far. -For example, a display summation sign can be defined to be a text -summation $\sum$ scaled 120\% with 0.5\,pt extra height and depth -using: -\begin{verbatim} - \setglyph{summationdisplay} - \glyph{summationtext}{1200} - \resetheight{\add{\height{summationdisplay}}{50}} - \resetdepth{\add{\depth{summationdisplay}}{50}} - \endsetglyph -\end{verbatim} -Within a |\resetglyph|, these expressions will refer to the previous -definition of the glyph. For example, you can add sidebearings to the -letter `A' with: -\begin{verbatim} - \resetglyph{A} - \movert{25} - \glyph{A}{1000} - \movert{25} - \endresetglyph -\end{verbatim} - - -\subsection{Kerning commands} - -The kerning commands may be used anywhere in a metrics file. - -\begin{decl} - |\setkern|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -This sets a kern between the two glyphs, scaled by the current -value of \texttt{rawscale}, unless such a kern already has been set. - -\begin{decl}[v1.9] - |\resetkern|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -|\resetkern| unconditionally sets a kern between the two glyphs, -scaled by the current value of \texttt{rawscale}. - -\begin{decl} - |\setleftkerning|\arg{glyph}\arg{glyph}\arg{integer expression}\\ - |\setrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -Sets the amount by which the first glyph should mimic how the second -glyph kerns on the left or right, for example: -\begin{verbatim} - \setleftkerning{Asmall}{A}{850} - \setrightkerning{Asmall}{A}{850} - \setleftkerning{IJ}{I}{1000} - \setrightkerning{IJ}{J}{1000} -\end{verbatim} -The commands work by copying kerning pairs containing the first glyph. -As the names indicates, these commands do not override kerning pairs -previously set. - -\begin{decl}[v1.8] - |\setleftrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -Sets the amount by which the first glyph should mimic how the second -glyph kerns on both sides, for example: -\begin{verbatim} - \setleftrightkerning{Asmall}{A}{850} -\end{verbatim} -This command is equivalent to doing first a |\setleftkerning| and -then a |\setrightkerning|. - -\begin{decl}[v1.906] - |\noleftkerning|\arg{glyph}\\ - |\norightkerning|\arg{glyph}\\ - |\noleftrightkerning|\arg{glyph} -\end{decl} -Removes all kerning on the specified side(s) of the \meta{glyph}. - -\begin{decl}[v1.9] - |\unsetkerns|\marg{left~glyph~list}\marg{right~glyph~list} -\end{decl} -Removes all kerns with one glyph in the \meta{left glyph list} on the -left and one glyph in the \meta{right glyph list} on the right. - - - -\subsection{Other} - -\begin{decl}[v1.915] - |\aliased|\marg{font's name}\marg{alias name} -\end{decl} -This command is meant to be used in glyph name arguments of commands -one may find in metric files. It was added to support combining -mapfile entry generation with a custom form of reglyphing that has -been developed for the \texttt{T2} bundle (Cyrillic font support). -This does however not necessarily mean that the \texttt{T2} bundle -has been updated to take advantage of this feature. - -The basic problem is that cyrillic fonts display a much greater -variation in how the glyphs are named than latin fonts do.% -\footnote{The Adobe guidelines have not been as prevailing here as -in the latin range, but this isn't entirely surprising when they -give suggestions such as using the name \texttt{afii10018} for -\texttt{U+0411} (\textsc{cyrillic capital letter be}), even though -there is a good reason: AFII is a glyph registry.} -This complicates writing files similar to \setfilename{latin.mtx}, so -the author of the \texttt{T2} bundle took the route to regularize the -glyph names at the \afm to \mtx conversion step. Since \TeX\ does not -know anything about glyph names, this makes no difference for the -virtual fonts that are built. -The glyph names do however make a difference for base fonts that are -reencoded, since \PS encoding vectors list explicit glyph names that -have to be the same as in the font. \Fontinst's choice of encoding -vector for a mapfile entry is based on which \etx file was used in the -reencoding, and hence the glyph names used when reencoding must match -those actually used in the font, or problems will follow. - -The |\aliased| command can be used to preserve the information -necessary for such reencodings. If a glyph name is specified as for -example -\begin{verbatim} - \aliased{afii10018}{CYRB} -\end{verbatim} -then \fontinst will behave as if the glyph name is \texttt{CYRB} -(i.e., the \meta{alias name}) for all purposes \emph{except} -reencoding, where instead \fontinst behaves as if the glyph name is -the \meta{font's name} \texttt{afii10018}. This makes it possible to -use \etx files when reencoding which can be correctly translated to -the right encoding vectors. - - - -\section{\textsf{fontdoc} commands} - -The following commands are defined by \fontdoc but are unknown to -\fontinst. - - -\subsection{Comment commands} - -\begin{decl} - |\plaindiv|\\ - |\plainint|\\ - |\plainmax|\\ - |\plainmin|\\ - |\plainneg| -\end{decl} -These are the \LaTeX\ definitions of |\div|, |\int|, |\max|, |\min|, -and |\neg| respectively. They are provided under these names because -\fontinst uses the normal names for integer expression constructions. - -\begin{decl}[v1.8] - |\slotexample| -\end{decl} -This typesets the character in the current slot from the example font -(cf.~|\useexamplefont|). - -\begin{decl}[v1.916] - |\macroparameter|\marg{digit} -\end{decl} -This can be used in integer and string expressions. It typesets as -\textit{\#n}, where `\textit{n}' is the \meta{digit}. - -\begin{decl}[v1.918] - |\textunicode|\marg{code point}\marg{name} -\end{decl} -This generates a reference to a particular Unicode character, for use -within a |\comment| or similar. - - -\subsection{Style control commands} - -\begin{decl}[v1.909] - |\showbranches| -\end{decl} -The is the main switch that turns on displaying both branches of -\fontinst conditionals. If you use this command in an encoding or -metrics file, you \textbf{must} use |\Else| and |\Fi| to delimit the -conditionals in that file. If you do not use this command in an -encoding or metrics file, then the conditionals will not generate any -typeset material and neither will their \meta{else branch}es. - - - - -\section{\fontinst variables} - -The following is a list of the \fontinst variables that are -accessible for the user through the |\set|\textellipsis, -|\reset|\textellipsis, |\unset|\textellipsis, etc.\ commands. You may -of course set or use other variables in the MTX and ETX files you -write yourself, as does for example the standard MTX file -\texttt{latin.mtx}, but all variables that \fontinst commands -implicitly use or set are listed below. - -\begin{list}{}{% - \setlength\labelwidth{0pt}% - \setlength\itemindent{-\leftmargin}% - \setlength\parsep{0pt} - \def\makelabel#1{\hspace\labelsep \normalfont\ttfamily #1}% -} - \item[acccapheight] (integer denoting length) - \begin{smalldes} - \item[Description] The height of accented full capitals. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[address] (string) - \begin{smalldes} - \item[Description] Snailmail address put in \BibTeX-style file - header of automatically generated ENC files. No - \texttt{address} field is written unless the \texttt{address} - string is set. Quotes are not automatically inserted around - the \texttt{address} string. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. - \end{smalldes} - \item[afm-name] (string) - \begin{smalldes} - \item[Description] Name of source font. Internal variable. - \item[Set by] |\from|\dots\ commands. - \item[Used by] The |\transform|\-|font|, |\install|\-|font|, - |\install|\-|raw|\-|font|, and |\reglyph|\-|font| commands. - \end{smalldes} - \item[ascender] (integer denoting length) - \begin{smalldes} - \item[Description] The ascender height of the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this integer. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[author] (string) - \begin{smalldes} - \item[Description] Author name(s) put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[\cs{autoinstallfamily}] (command) - \begin{smalldes} - \item[Description] Command called by the font installation - commands, as - \begin{quote} - |\autoinstallfamily|\marg{encoding}\marg{family} - \end{quote} - when they are asked to install a font with a combination of - \meta{encoding} and \meta{family} that has not been seen - before (there was no explicit |\installfamily|). - \item[Set by] Explicit commands. Defaults to calling - |\installfamily|. - \item[Used by] Font installation commands. - \end{smalldes} - \item[axisheight] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{22}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[baselineskip] (integer denoting length) - \begin{smalldes} - \item[Description] - The font designer's recommendation for natural length of the - \TeX\ parameter |\baselineskip|. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{9}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{10}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{11}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing4] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{12}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing5] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{13}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[capheight] (integer denoting length) - \begin{smalldes} - \item[Description] The height of the font's full capitals. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[cmapname] (string) - \begin{smalldes} - \item[Description] The name given to the CMap generated from - an ETX file. - \item[Set by] ETX files. - \item[Used by] The ETX-to-CMap converter. When not set, the - value |fontinst-|\nolinebreak[1]\meta{cmap file name} is - used instead. - \end{smalldes} - \item[codingscheme] (string) - \begin{smalldes} - \item[Description] The codingscheme name. - \item[Set by] ETX files. - \item[Used by] The (V)PL writer. When not set, the - value \texttt{UNKNOWN} is used instead. - \end{smalldes} - \item[defaultrulethickness] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{8}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[delim1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{20}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[delim2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{21}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[denom1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{11}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[denom2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{12}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[descender] (integer denoting length) - \begin{smalldes} - \item[Description] The depth of lower case letters with descenders. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[descender\_neg] (integer denoting length) - \begin{smalldes} - \item[Description] The vertical position of the descender line - of the font, i.e., the negative of the font's descender depth. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[designsize] (dimension) - \begin{smalldes} - \item[Description] The design size of the font. - \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes - |\setdim| commands for this variable. - \item[Used by] The (V)PL writer. The design size defaults to - $10\,\mathrm{pt}$ if this variable is not set. - \item[Note] The value of this variable has no effect on how - the font is declared to \LaTeX. - \end{smalldes} - \item[designunits] (dimension denoting a real number) - \begin{smalldes} - \item[Description] The design size of a font expressed in the - design unit used in a (V)PL file. - \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes - |\setdim| commands for this variable. - \item[Used by] Nothing. If this variable is set, but to any - value other than $1\,\mathrm{pt}$, then some metrics are most - likely wrong. - \end{smalldes} - \item[digitwidth] (integer denoting length) - \begin{smalldes} - \item[Description] The median width of the digits in the font. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[email] (string) - \begin{smalldes} - \item[Description] Email address put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[encodingname] (string) - \begin{smalldes} - \item[Description] The name by which the encoding in question is - made known to a Postscript interpreter. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value |fontinst-|\nolinebreak[1]|autoenc-|\nolinebreak[1]% - \meta{etx name} is used instead. - \end{smalldes} - \item[etx-name] (string) - \begin{smalldes} - \item[Description] Name of ETX file. Internal variable in - |\transform|\-|font|. - \item[Set by] The |\reencodefont| command. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[extraspace] (integer denoting length) - \begin{smalldes} - \item[Description] - The natural width of extra interword glue at the end of a - sentence. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[fontdimen($n$)] (integer) - \begin{smalldes} - \item[Description] Family of semi-internal variables that store - the values to use for font dimension $n$. It is preferred - that the newer |\set|\-|font|\-|dimen| interface is used for - setting these values. - \item[Set by] ETX files. - \item[Used by] The (V)PL writer. - \end{smalldes} - \item[\cs{iftokeep}] (macro) - \begin{smalldes} - \item[Description] |\iftokeep|\,\#1\,|\then|, where \#1 will - be a \meta{number}, behaves like a switch and decides whether - a glyph is kept or not while reglyphing. - \item[Set by] Explicit commands. Defaults to - $$ - \mbox{\cs{iftokeep}\,\#1\,\cs{then}} \mapsto - \mbox{\cs{ifnum}\,\texttt{-1<}\#1} - $$ - \item[Used by] The |\reglyphfont| command. - \end{smalldes} - \item[interword] (integer denoting length) - \begin{smalldes} - \item[Description] The natural width of interword glue (spaces). - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[italicslant] (integer denoting factor) - \begin{smalldes} - \item[Description] The italic slant of a font. - \item[Set by] MTX files generated from AFM or (V)PL files. MTX - files generated by |\transformfont|. Locally in the AFM-to-MTX - converter for possible use in |\uprightitalcorr| or - |\slanteditalcorr|. - \item[Used by] MTX files (\texttt{latin.mtx} and the like). ETX - files (for determining \texttt{fontdimen(1)}). - \end{smalldes} - \item[killweight] (integer) - \begin{smalldes} - \item[Description] Weight for glyphs that are killed. - \item[Set by] Explicit commands. Defaults to $-10$ if not set. - \item[Used by] The |\kill|\-|glyph| command; indirectly - the |\reglyphfont| command. - \end{smalldes} - \item[letterspacing] (integer denoting length) - \begin{smalldes} - \item[Description] Extra width added to all glyphs of a font. - \item[Set by] ETX or MTX files. - \item[Used by] The (V)PL writer. Defaults to $0$ if not set. - \end{smalldes} - \item[maxdepth] (integer denoting length) - \begin{smalldes} - \item[Description] The maximal depth over all slots in the font. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[maxdepth\_neg] (integer denoting length) - \begin{smalldes} - \item[Description] The negative of the maximal depth of a glyph in - the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[maxheight] (integer denoting length) - \begin{smalldes} - \item[Description] The maximal height of a glyph in the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[minimumkern] (integer denoting length) - \begin{smalldes} - \item[Description] Kerns whose size in absolute value is less - than or equal to this variable are ignored. - \item[Set by] Command files or MTX files. - \item[Used by] The AFM-to-MTX converter and the (V)PL file - generator. When not set, the value $0$ is used instead. - \end{smalldes} - \item[monowidth] (flag integer) - \begin{smalldes} - \item[Description] Set if this font is monowidth, unset otherwise. - \item[Set by] MTX files. The AFM-to-MTX converter writes a - |\setint| command for this variable if the AFM specifies - \texttt{IsFixedPitch true}. - \item[Used by] Some MTX files (\texttt{latin.mtx} and the like), - ETX files. - \end{smalldes} - \item[num1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{8}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[num2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{9}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[num3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{10}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[quad] (integer denoting length) - \begin{smalldes} - \item[Description] - The quad width of the font, normally approximately equal to - the font size and\slash or the width of an `M'. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[PSfontsuffix] (string) - \begin{smalldes} - \item[Description] Suffix added to font names to form name of - file to download to include font. - \item[Set by] Explicit commands in mapmaking command - files. Defaults to `\texttt{.pfa}'. - \item[Used by] The map file fragments writer. - \end{smalldes} - \item[rawscale] (integer denoting factor) - \begin{smalldes} - \item[Description] Scaling factor applied to raw glyphs. - \item[Set by] The |\installfont| command (\texttt{scaled} - clauses in argument \#2). Unset for metric files listed - without a \texttt{scaled} clause. - \item[Used by] The |\set|\-|raw|\-|glyph|, - |\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, - |\set|\-|scaled|\-|not|\-|glyph|, |\set|\-|kern|, and - |\reset|\-|kern| commands. - \end{smalldes} - \item[renameweight] (integer) - \begin{smalldes} - \item[Description] Weight for glyphs that are renamed. - \item[Set by] Explicit commands. Defaults to $1$ if not set. - \item[Used by] The |\rename|\-|glyph| command; indirectly - the |\reglyphfont| command. - \end{smalldes} - \item[requireglyphs] (flag integer) - \begin{smalldes} - \item[Description] Set if warnings are to be generated for - glyphs listed in ETX files but not present in the glyph - base. - \item[Set by] Explicit commands. By default not set. - \item[Used by] The (V)PL file generator. - \end{smalldes} - \item[rightboundary] (string) - \begin{smalldes} - \item[Description] The name of a glyph with the property that - kerns on the left may be intended as right word boundary kerns. - \item[Set by] MTX files. The (V)PL-to-MTX converter can write - |\setstr| commands for this variable. - \item[Used by] Some MTX files. - \end{smalldes} - \item[shrinkword] (integer denoting length) - \begin{smalldes} - \item[Description] - The (finite) shrink component of interword glue. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[slant-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Factor to slant by. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\slant|\-|font|, |\xscale|\-|font|, and - |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[\cs{SlantAmount}] (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] Slant factor used for faking oblique shape. - \item[Set by] Explicit commands. Defaults to \texttt{167}. - \item[Used by] The |\latinfamily| command. - \end{smalldes} - \item[\cs{slanteditalcorr}] - (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] The integer expression used to calculate a - guess for the italic correction of glyphs in a font with - positive slant. It has the syntax - \begin{quote} - \cs{slanteditalcorr}\marg{width}\marg{left}\marg{right}% - \marg{bottom}\marg{top} - \end{quote} - where \meta{width} is the glyph's advance width, and the - remaining arguments are coordinates of sides of the glyph's - bounding box. The \texttt{italicslant} integer provides the - italic slant of the font. - \item[Set by] Explicit commands in \textsf{fontinst} command - files. Defaults to - $$ - \max\{0, \mathit{right}-\mathit{width}\}. - $$ - \item[Used by] The AFM-to-MTX converter. - \end{smalldes} - \item[stretchword] (integer denoting length) - \begin{smalldes} - \item[Description] - The (finite) stretch component of interword glue. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sub1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{16}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sub2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{17}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[subdrop] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{19}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{13}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{14}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{15}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[supdrop] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{18}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[TFMfileprefix] (string) - \begin{smalldes} - \item[Description] Prefix (typically a path) added to names of - TFM files. - \item[Set by] Explicit commands in mapmaking command - files. By default not set, which is equivalent to being empty. - \item[Used by] The \textsf{PLtoTF} ``map file fragments writer''. - \end{smalldes} - \item[underlinethickness] (integer denoting length) - \begin{smalldes} - \item[Description] The recommended thickness of an underlining - rule. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX files (\texttt{latin.mtx} and the like). - \end{smalldes} - \item[\cs{uprightitalcorr}] - (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] The integer expression used to calculate a - guess for the italic correction of glyphs in a font with - non-positive slant. It has the syntax - \begin{quote} - \cs{uprightitalcorr}\marg{width}\marg{left}\marg{right}% - \marg{bottom}\marg{top} - \end{quote} - where \meta{width} is the glyph's advance width, and the - remaining arguments are coordinates of sides of the glyph's - bounding box. The \texttt{italicslant} integer provides the - italic slant of the font. - \item[Set by] Explicit commands in \textsf{fontinst} command - files. Defaults to $0$. - \item[Used by] The AFM-to-MTX converter. - \end{smalldes} - \item[version] (string) - \begin{smalldes} - \item[Description] Version number put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[verticalstem] (integer denoting length) - \begin{smalldes} - \item[Description] The dominant width of vertical stems - (usually the width of stems of lower case letters). - \item[Set by] MTX files. The AFM-to-MTX converter writes - |\setint| commands for this variable if the AFM file specifies - \texttt{StdVW}. - \item[Used by] Currently nothing. - \end{smalldes} - \item[\texttt{warningspecials}] (switch) - \begin{smalldes} - \item[Description] Controls whether |\glyphwarning| commands - will generate VPL \texttt{SPECIAL}s. Defaults to `true'. - \item[Set by] Explicit commands (|\warningspecialstrue| and - |\warningspecialsfalse|). - \item[Used by] The (V)PL file generator. - \end{smalldes} - \item[x-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Horizontal scaling factor. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\xscale|\-|font| and |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[xheight] (integer denoting length) - \begin{smalldes} - \item[Description] The x-height of the font. - \item[Set by] MTX files. The AFM-to-MTX and (V)PL-to-MTX - converters usually write |\setint| commands for this variable. - \item[Used by] MTX files, and ETX files (for determining - \texttt{fontdimen(5)}). - \end{smalldes} - \item[y-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Vertical scaling factor. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\yscale|\-|font| and |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[\meta{\rmfamily glyph}-spacing] (integer denoting length) - \begin{smalldes} - \item[Description] Glyph-specific override for - \texttt{letterspacing}; extra width added to the glyph - \meta{glyph} as part of the process of writing a VPL - file. - \item[Set by] ETX or MTX files. - \item[Used by] The (V)PL writer. Defaults to $0$ if not set. - \end{smalldes} -\end{list} -Besides these, the |\latinfamily| command provides a whole range of -parameters (|\latin_weights|, |\latin_widths|, |\latin_shapes|, etc.) -that are often used somewhat like variables. That subject -does however deserve to be treated separately. - - - -\section{Customisation} - -The \fontinst package reads a file \texttt{fontinst.rc} if it -exists. This can contain your own customisations. The catcodes that -are in force when this file is read are the same as those selected by -|\fontinstcc|. - -Similarly \texttt{finstmsc.sty} reads \texttt{finstmsc.rc} and the -\fontdoc package reads \texttt{fontdoc.cfg}. - -You can create a \texttt{fontinst} format by running ini\TeX{} on -\texttt{fontinst.sty} then saying \verb|\dump|. - - -\section{Notes on features new with v\,1.9} - -The following notes are copied from \texttt{fisource.tex}; they were -written to explain new \fontinst features to old \fontinst users. - - -\subsection{Metric packages} - -\Fontinst has traditionally come with a collection of MTX -files that complement the MTX files generated from base font metrics, -in that they build glyphs that may be missing from the base fonts or -in some other way needs to be improved. The most well-known of these -is the \texttt{latin.mtx} file; other examples include -\texttt{textcomp.mtx}, \texttt{mathit.mtx}, and \texttt{latinsc.mtx}. -A problem with these is however that they cannot produce optimal -results for all fonts simply because there are irregular differences -in how fonts are set up by the foundries. Most glyphs come out all right, -but there are usually a few for which the parameters used are more or -less wrong. Therefore most high quality font installations are made -with modified versions of these files, where the parameters have been -tuned to the specific font design. - -Modifying in particular \texttt{latin.mtx} is however not an entirely -easy task, because this is a rather large file (with plenty of -archaic pieces of code in curious places). Doing it once is no big -problem, but if one has to do it several times (maybe because some -errors are discovered in the original \texttt{latin.mtx}) then it is -probably no fun anymore. Furthermore, if one has two or three -modified copies of this file because one has made high quality -installations of that many different fonts then even a trivial bugfix -might start to feel like entirely too much work. - -If one has to make modifications then it is usually easier to deal -with several small files (many of which can be used unchanged) than -one big file. Thus it would be better if these big files were split up -into several smaller ones. -The main problem with splitting up something like \texttt{latin.mtx} -is that there are some commands which are defined at the top and -which are then used in almost all sections of the file. One must make -certain that these commands are always loaded, which makes the metric -files somewhat harder to use (especially if the one who tries to use -them is not the one who wrote them). - -One strategy is to include all definitions needed for a metric file in -it. This has the slight disadvantage that the commands will have to be -defined several times. What is worse however, is that the command -definitions will appear in several files, so if one finds a bug in one -of them, one cannot simply correct this bug in one place. As the number -of files can soon become quite large, correcting such bugs can become -a boring procedure indeed. - -Another strategy is to put all the command definitions in one file -and then explicitly include it in the \meta{file-list} argument of -|\installfont|. This eliminates the repeated bug fixing problem, but -requires the user to do something that the computer can actually do -just as well. - -A third strategy is to put the command definitions in one or several -files and then in each metric file the user explicitly mentions load -the command definitions needed for that particular file. Metric -packages uses an improved version of this strategy, since they also -make it possible for \fontinst to remember which packages (i.e., sets -of command definitions) that have already been loaded, so that they -are not unnecessarily loaded again. The \texttt{newlatin.mtx} file is -an alternative to \texttt{latin.mtx} that implements this strategy. -Most of the actual code is located in the following metric packages: -\begin{center} -\begin{tabular}{l p{0.7\linewidth}} - \texttt{ltcmds.mtx}& Defines some common commands used by the other - files.\\ - \texttt{llbuild.mtx}& Builds the latin lower case alphabet - (unaccented letters are `unfakable', the rest are constructed if - not present in the base fonts).\\ - \texttt{lubuild.mtx}& Builds the latin upper case alphabet.\\ - \texttt{lsbuild.mtx}& Builds accented letters in the latin - smallcaps alphabet, but only if there are unaccented letters to - build them from in the base fonts.\\ - \texttt{lsfake.mtx}& Fakes a latin smallcaps alphabet by shrinking - the upper case alphabet, but only if the glyph had not already - been manufactured.\\ - \texttt{lsmisc.mtx}& Make some miscellaneous smallcaps glyphs - (mostly ``smallcaps f-ligatures'').\\ - \texttt{ltpunct.mtx}& Makes digits, punctuation marks, and other - symbols (mostly by marking as ``unfakable''). -\end{tabular} -\end{center} -\noindent All of these are easy to use as components of equivalents -of a modified \texttt{latin.mtx} files, and all dependencies of one -package upon another are handled via explicit |\usemtxpackage| -commands. - -% For information on the syntax etcetera of commands related to metric -% packages, see Section~\ref{Sec:Metric files}. - - -\subsection{Word boundary ligatures and kerns} - -One of the new features added in \TeX~3 was that of ligatures and -kerns with word boundaries. \Fontinst has had an interface -for making such ligatures and kerns, but it has been completely -redesigned in v\,1.9 and the old interface (setting the integer -|boundarychar|) is no longer recognized by \fontinst. Files -which use the old interface can still be processed with -\texttt{cfntinst.sty}, though. - -Before considering the new commands, it is suitable to make a -distinction between proper glyphs and pseudoglyphs. A proper glyph has -been set using one of the commands |\setrawglyph|, |\setglyph|, and -|\resetglyph|. A pseudoglyph is any name used in the context of a -glyph name which does not denote a proper glyph. If a pseudoglyph -|g-not| was set using the |\setnotglyph| command, then -|\ifisglyph{g-not}\then| will evaluate to true, but something can be -a pseudoglyph even if an |\ifisglyph| test evaluates to false. The -interesting point about pseudoglyphs when considering word boundaries -however, is that a pseudoglyph can have ligatures and kerns. - -Kerns and ligatures at the left word boundary (beginning of word) are -specified using the commands |\setleftboundary| and -|\endsetleftboundary|, which are syntactically identical to -|\setslot| and |\endsetslot| respectively. One important difference is -however that the argument to |\setslot| must be a proper glyph, while -the argument to |\setleftboundary| may be any glyph, hence any -pseudoglyph will do just fine. - -|\ligature| commands between |\setleftboundary| and -|\endsetleftboundary| will generate beginning of word ligatures. Kerns -on the right of the glyph specified in |\setleftboundary| will become -beginning of word kerns. - -Kerns and ligatures at the right word boundary (end of word) are -trickier, due to the asymmetrical nature of the ligkern table in a PL -file. What a font can do is to specify that the right word boundary, -for purposes of kerning and ligatures, should be interpreted as -character $n$. By including a kern or ligature with character $n$ on -the right, that kern or ligature will be used at the end of a word, -but it will also be used each time the next character is character -$n$. Because of this, one usually wants the slot $n$, which the right -word boundary is interpreted as being, to be empty whenever the -encoding allows this. - -The command -\begin{quote} - |\setrightboundary|\marg{glyph} -\end{quote} -will mark the current slot as used to denote the right word boundary, -and leave the slot empty, increasing the current slot number by one -just like a |\setslot| \textellipsis\ |\endsetslot| block does. Kerns on -the left of \meta{glyph} will be end of word kerns and |\ligature| -commands with \meta{glyph} as the second argument will be for the end -of a word. - -The command -\begin{quote} - |\makerightboundary|\marg{glyph} -\end{quote} -is similar to |\setrightboundary|, but it is a slot command which may -only be used between a |\setslot| and the matching |\endsetslot|. Like -|\setrightboundary|, it marks the current slot as used to denote the -right word boundary, but the glyph specified in the enclosing |\setslot| -will be written to that slot. Ligatures for the glyph specified by the -|\setslot| and ligatures for the glyph specified by the -|\makerightboundary| will both be for this single slot. Kerns on the -right of the |\setslot| glyph and the |\makerightboundary| glyph will -similarly both be for this single slot. The idea is that the |\setslot| -glyph should be used when making a kern or ligature for that glyph, -while the |\makerightboundary| glyph should be used when making a kern -or ligature for the end of a word. \Fontinst will warn you if -these two uses of the slot directly contradict each other. - - -\subsection{Changing the names of glyphs} -\label{Ssec:Des:Reglyph} - -Sometimes, primarily when making a virtual font from more than one raw -font and two of the raw fonts contain different glyphs with the same -name, it becomes necessary to change the names of some glyphs to make -some sense out of it. The main source of this kind of trouble is the -``caps and small caps'' (SC) and ``oldstyle figures'' (OsF) fonts -within many commercial font families. The typical problem is that what -is typographically different glyphs---such as the lowercase `a' -(\texttt{a}, for \fontinst) and the smallcaps `\textsc{a}' -(\texttt{Asmall}, for \fontinst)---are given the same name by -the foundry. - -One way to get round this is to say for example -\begin{quote} - |\setglyph{Asmall} \glyph{a}{1000} \endsetglyph|\\ - |\setleftrightkerning{Asmall}{a}{1000}|\\ - |\unsetglyph{a}|\\ - |\noleftrightkerning{a}| -\end{quote} -and continuing like that for all the duplicate glyph names. This is -however a rather prolix method and if the number of glyphs is large -then it is usually simpler to use the |\reglyphfont| command. - -To reglyph one or several fonts, one writes -\begin{quote} - |\reglyphfonts|\\ - \vadjust{}\quad \meta{reglyphing commands}\\ - |\endreglyphfonts| -\end{quote} -There are two types of reglyphing commands: the |\reglyphfont| -command, and the commands that modify what |\reglyphfont| will do to -the fonts it operates on. The syntax of |\reglyphfont| is -\begin{quote} - |\reglyphfont|\marg{destination font}\marg{source font} -\end{quote} -The \meta{source font} font here is the name (suffix not included, of -course) of the font metric file one wants to change the glyph names in. -This font metric file can be in any of the formats MTX, PL, AFM, and -VPL, and it will be converted to MTX format if it isn't already in -that format (this happens just as for files listed in the second -argument of |\installfont|). \meta{destination font} (which must be -different from \meta{source font}) will be taken as the name for a -new \texttt{.mtx} file that will be generated. The destination font -can differ from the source font only in two ways: the names of some -glyphs in the source font might be changed, and some of the commands -from the source font might not have been copied to the destination -font. To what extent the fonts are different is determined by what -modifying commands have been executed; when no modifying commands -have been executed, the source and destination font are equal. - -The modifying reglyphing commands are -\begin{quote} - |\renameglyph|\marg{to}\marg{from}\\ - |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ - |\killglyph|\marg{glyph}\\ - |\killglyphweighted|\marg{glyph}\marg{weight}\\ - |\offmtxcommand|\marg{command}\\ - |\onmtxcommand|\marg{command} -\end{quote} -|\renameglyph| simply declares that occurrences of the glyph name -\meta{from} should be replaced by the glyph name \meta{to}. To each -glyph name is also assigned a \emph{weight}, which is used by a -mechanism which conditions copying of commands from the source font to -the destination font by the set of glyphs that command mentions. The -details of this mechanism are however somewhat tricky, so those -interested in the full generality should read the comments in the -source of \fontinst. Here it needs only be noted that if one applies -|\killglyph| to a glyph name, then (under most circumstances) commands -that refer to that glyph name will not be copied to the destination -font. - -|\offmtxcommand| and |\onmtxcommand| also control whether commands are -copied to the destination font, but they look at the actual command -rather than the glyphs it refers to. For example, after the command -\begin{quote} - |\offmtxcommand{\setkern}| -\end{quote} -no |\setkern| commands will be copied. By using |\offmtxcommand|, it -is possible to achieve effects similar to those of the files -\texttt{kernoff.mtx} and \texttt{glyphoff.mtx}---the difference is -that with |\offmtxcommand|, it happens at an earlier stage of the font -generation. As expected, |\onmtxcommand| undoes the effect of -|\offmtxcommand|. - -A special rule pertains to the |\set|\-|raw|\-|glyph|, -|\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, and -|\set|\-|scaled|\-|not|\-|glyph| commands, since |\transformfont| -doesn't care what something was in the source font when it generates -the transformed font. To turn these commands off while reglyphing, -you use |\offmtx|\-|command| on |\set|\-|scaled|\-|raw|\-|glyph|. - -The effects of modifying reglyphing commands are delimited by -|\reglyphfonts| and |\endreglyphfonts|, which starts and ends a group -respectively. - -As we expect the most common reglyphing operation will be to go from SC -glyph names to expert glyph names, there is a file \texttt{csc2x.tex} -in the \fontinst distribution which contains the modifying -reglyphing commands needed for setting up that conversion. Thus you -can write for example -\begin{quote} - |\reglyphfonts|\\ - | \input csc2x|\\ - | \reglyphfont{padrcx8r}{padrc8r}|\\ - | \reglyphfont{padscx8r}{padsc8r}|\\ - |\endreglyphfonts| -\end{quote} -to alter the glyph names in the SC fonts in the Adobe Garamond -(\texttt{pad}) family. -Note that the names of the destination fonts here really are rather -arbitrary, since they will only exist as \texttt{.mtx} files, and -thus only need to work within your local file system. In particular, -all the |\setrawglyph| commands in the destination font files still -refer to the source font, so it is that font which the drivers need -to know about. - - -\subsection{Making map file fragments} -\label{Ssec:MapFragments} - -A \emph{map file fragment} is the lines\footnote{Not in general an -entire map file, hence the word \emph{fragment}.} of a map file that -the corresponding driver would need for handling some set of fonts. -When told to, \fontinst can (in a fairly automatic way) create -the map file fragment which is needed for the set of raw fonts -\fontinst has (i) installed directly (using |\installrawfont|) -or (ii) used as a base font for some installed virtual font (generated -by |\installfont|). \Fontinst does not support the map file -syntaxes of every existing driver, but the system is designed to be -extendable and contributions that extend its capabilities are welcome. -Nor can \fontinst examine your \TeX\ system and -determine every piece of information needed to make the correct map -file fragments, but you can tell it roughly how your installation -looks, it can make guesses which work most of the time, and you can -specify most things explicitly if the guesses turn out to be wrong. -Should the available options for configuring the process turn out to -be inadequate for your needs, then please write to the -\fontinst mailing list about this---there is probably a way -to improve the system so that your needs can be met. - -Now what does one have to do to use this map file fragment writer, -then? First you need to tell \fontinst to record the -information the map file fragment writer needs. You do this by giving -the command -\begin{quote} - |\recordtransforms{whatever.tex}| -\end{quote} -at the beginning of the run. Here \texttt{whatever.tex} is the name of -a file that will be created, so you can use some other name if you -like. After that you do all the calls to |\transform|\-|font|, -|\install|\-|font|, |\install|\-|raw|\-|font|, |\latin|\-|family|, -etc.\ you need to make the fonts you want. When you're done, you give -the command -\begin{quote} - |\endrecordtransforms| -\end{quote} -and end the run (say |\bye|). The file \texttt{whatever.tex} will now -contain the information about which fonts were used and what needs to -be done with them. - -The second step is to actually run the map file fragment writer. -Observe that it is located in the file \texttt{finstmsc.sty}, not -\texttt{fontinst.sty}! The commands you need to give it can be so few -that you can type them in at \TeX's \texttt{*} prompt, but if you are -writing a command file then it should typically have the following -structure (comments not necessary, of course): -\begin{quote} - \begin{tabular}{ll} - |\input finstmsc.sty|& |%| Input command definitions\\ - \meta{general settings} & |%| See below\\ - |\adddriver|\marg{driver name}\marg{output file}& - |%| Open output file\\ - |\input whatever.tex|& |%| Writes to output file(s)\\ - |\donedrivers|& |%| Close output file(s), tidy up\\ - |\bye|& |%| Quit - \end{tabular} -\end{quote} -The |\adddriver| command gives the order ``write map file entries for -the \meta{driver name} DVI driver to the file \meta{output file}.'' The -plan is that it should be possible to use the name of just about any -major driver (\texttt{dvips}, \texttt{xdvi},\footnote{Or -does that use the same map file as \texttt{dvips}? I heard somewhere -that it did. /LH} \texttt{pdftex},\footnote{pdf\TeX\ can read -the map files generated for \texttt{dvips}, but a separate driver is -desirable because the formats are not completely identical.} -\texttt{OzTeX}, etc.) here and get suitable map file entries for that -driver as output, but for the moment only the \texttt{dvips} and -\texttt{dvipdfm}\footnote{Whose support I made very much to illustrate -that you \emph{don't} have to be a big and ancient driver like -\texttt{dvips} to have supporting code put into \fontinst. -(The fact that I just happened to have printed out the documentation and -that is was easy to read also helped, of course.) Note, however, that -there won't be any support for a driver unless someone sits down and -writes the code for it! Don't assume I will. /LH} drivers are supported. - -You may also use \texttt{debug} or \texttt{pltotf} for \meta{driver name}. -The \texttt{debug} ``DVI driver'' file simply contains all the available -information about each font (hence it should come handy for debugging -code writing entries for real drivers) in a format that should be easy -to interpret for a human. It could be the right choice if you're going -to write the map file manually, as the combined effects of several -font transformations are not always easy to compute manually. The -file generated for the \texttt{pltotf} ``driver'' is actually a shell -script consisting of a sequence of \pltotf commands. These commands -perform the \pl to \tfm conversion for precisely those fonts that are -actually needed (\fontinst usually generates \pl files also for a -number of fonts at intermediate stages of transformation, and many of -these need not be converted to \tfm files). The \texttt{TFMfileprefix} -string can be used to add a directory path to the \tfm file names, -perhaps saving the step of moving them to their proper location later. - -The file \texttt{whatever.tex} in the above example contains the -commands (|\makemapentry| commands) that actually cause entries to be -written to the output file. It also contains a number of |\storemapdata| -commands---these describe how some given font was made. If some -metric file you have used contains |\setrawglyph| commands that were -not automatically generated by \fontinst, then there might -not be a |\storemapdata| for the font they refer to in -\texttt{whatever.tex}, so you will have to include such a command -yourself somewhere. This can for example be done in the \meta{general -settings} part of the above example file. - -Another class of things that will typically appear in the -\meta{general settings} part above is commands that will inform the -routines actually writing output about your \TeX\ system, about the set -of fonts you are using on this run, or about something else that might -be useful. Some such commands are of a general nature and affect what -assumptions \fontinst will make in certain conditions when no -specific information is available. For the moment there commands are: -\begin{description} - \item[\cs{AssumeMetafont}] Assume all fonts with PL metrics are - bitmaps generated by Metafont, and therefore make no entries for - them. - \item[\cs{AssumeAMSBSYY}] Assume all fonts with PL metrics have their - \TeX\ names in all upper case as postscript names---just like the - Computer Modern fonts in the AMS\slash Blue~Sky\slash Y\&Y - distribution. - \item[\cs{AssumeBaKoMa}] Assume all fonts with PL metrics have their - \TeX\ names in all lower case as postscript names---just like the - Computer Modern fonts in the BaKoMa distribution. -\end{description} -Otherwise the default action of the routine for finding out the -postscript name of a font simply is to observe that it hasn't got a clue -about what the right value is when the metrics were taken from a PL -file, and therefore it writes `\texttt{??????}' for the postscript name. -\begin{description} - \item[\cs{AssumeLWFN}] Assume postscript fonts for which nothing - else has been specified are stored in files which are named - according to the \mbox{MacOS} scheme for - \texttt{LWFN}s.%\footnote{LaserWriter FoNt} -\end{description} -Otherwise the default action is to use the name of the AFM or PL from -which the metrics were originally taken, and add the file suffix stored -in the string \texttt{PSfontsuffix}. The default value of this string -is \texttt{.pfa}, but it can be changed using |\resetstr|. - -If neither the default nor the LWFN scheme produce correct results -then you may use the more specific |\specifypsfont| command, which -describes exactly which file (or files, if any) a given font is stored -in. The syntax of this command is -\begin{quote} - |\specifypsfont|\marg{PS font name}\marg{actions} -\end{quote} -where the \meta{actions} is a sequence of ``action commands''. -Currently the only such command is -\begin{quote} - |\download|\marg{file} -\end{quote} -which instructs the map file writer to include in any entry using -that PS font and ``instruction'' that the specified file should be -downloaded. Some examples are -\begin{verbatim} - \specifypsfont{Times-Roman}{} - \specifypsfont{Shareware-Cyrillic-Regular}{\download{fcyr.gsf}} - \specifypsfont{zmnl8ac6}{% - \download{MinionMM.pfb}\download{zmnl8ac6.pro}% - } -\end{verbatim} -Many \dvi drivers (for example \dvips) have more than one style of -font downloading (e.g., partial and full downloading). This interface -could be extended to control also such finer details (for example by -adding a |\fulldownload| command to force full download of a font), -but requests for this has so far been scarce. - -Finally, there is the |\declarepsencoding| command which is used to -link ETX files to postscript encodings. If no postscript encoding has -been linked to a given ETX file then \fontinst will -automatically create a postscript encoding (\texttt{.enc}) file for -that encoding, and use this file for all reencoding commands. -The \texttt{8r} encoding is predeclared, and it doesn't -matter if an encoding is undeclared if you never use it to reencode -fonts, but there is potentially a problem with not having declared -encodings you have installed and use for reencoding, as you may then -find yourself having two files with identical names that define -encodings that do not have the same name (as far as postscript is -concerned). - - - -\subsection{Tuning accent positions---an application of loops} - -The accent placements made by \texttt{latin.mtx} certainly aren't -perfect for all fonts, and the only way to find out where they should -be put is through trying in text the accented letters you get for a -couple of values for the position parameter and deciding which one -works best. Since to try one parameter value you need to (i) edit it -into an MTX file, (ii) run \fontinst, (iii) run -\vptovf, (iv) run \TeX\ on some test text, and (v) print that -text, trying one parameter value can take annoyingly much time. -Repeating the same procedure ten times to test ten values is not -something one does without being bored (unless one scripts it, of -course), but it is possible to try ten parameter values in a single -virtual font, and without doing very much typing. - -Say you're not too happy with how \texttt{latin.mtx} positions the -accent in the \texttt{ohungarumlaut} glyph: -\begin{quote} - |\setglyph{ohungarumlaut}|\\ - | \topaccent{o}{hungarumlaut}{500}|\\ - |\endsetglyph| -\end{quote} -The |500| is the horizontal position (in thousandths of the width of -the \texttt{o}) that the centre of \texttt{hungarumlaut} in the glyph -constructed will have, so that is the position parameter value that -you want to change. Create an MTX file containing the code -\begin{quote} - |\for(pos){250}{750}{50}|\\ - | \setglyph{ohungarumlaut\strint{pos}}|\\ - | \topaccent{o}{hungarumlaut}{\int{pos}}|\\ - | \endsetglyph|\\ - | \setleftrightkerning{ohungarumlaut\strint{pos}}|\\ - | {ohungarumlaut}{1000}|\\ - |\endfor(pos)| -\end{quote} -This will set eleven glyphs \texttt{ohungarumlaut250}, -\texttt{ohungarumlaut300}, \texttt{ohungarumlaut350}, \textellipsis\,, -\texttt{ohungarumlaut750}, each being an Hungarianly umlauted `o' -(i.e., an `\H{o}') but all having that umlaut in slightly different -positions. In order to put them in a font, you also need to make an -encoding that contains them. Therefore create an ETX file which -contains the code -\begin{quote} - |\relax\encoding|\\ - |\nextslot{"C0}|\\ - |\for(pos){250}{750}{50}|\\ - | \setslot{ohungarumlaut\strint{pos}}|\\ - | \endsetslot|\\ - |\endfor(pos)|\\ - |\endencoding| -\end{quote} -The command for installing this experiment font would be something like -\begin{quote} - |\installfont|\marg{some name}|{|\meta{the normal list of metrics}% - |,|\penalty0\meta{the new MTX}|}|\penalty0 - |{ot1,|\meta{the new ETX}|}|\penalty0|{OT1}|\textellipsis -\end{quote} -The reason for including \texttt{ot1} in the third argument above is -that you'll need letters other than `\H{o}' against which you can -compare the experimental glyphs. It would not have been possible to -use \texttt{t1} instead of \texttt{ot1} (even though that has more -Hungarian letters) since that would set all slots in the font and -leave none for these experimental \texttt{ohungarumlaut}s. - -It is even possible to use a loop for making the test text. The -\LaTeX\ macros -\begin{verbatim} -\newcount\slotcount -\newcommand\testtext[3]{% - \slotcount=#1\relax - \begin{description}% - \loop\item[\the\slotcount]#3% - \ifnum #2>>\slotcount \advance \slotcount 1 \repeat - \end{description}% -} -\DeclareTextCompositeCommand{\H}{OT1}{o}{\char\slotcount} -\end{verbatim} -will let you write -\begin{quote} - |\testtext|\marg{first}\marg{last}\marg{text} -\end{quote} -to get the text \meta{text} typeset once for each slot from -\meta{first} to \meta{last} inclusive, with |\H{o}| ranging through the -glyphs in this interval. Thus in this case -|\testtext|\penalty\hyphenpenalty|{"C0}|\penalty\hyphenpenalty|{"CA}|% -\penalty\hyphenpenalty|{Erd\H{o}s}| would be a trivial test. - - -\subsection{Font installation commands} -\label{Ssec:FontInstCmds} - -The |\installfont|, |\installrawfont|, and |\installfontas| commands -have the respective syntaxes -\begin{isyntax} - |\installfont|\marg{font-name}\marg{metrics}\marg{etx-list}\penalty0 - \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ - |\installrawfont|\marg{font-name}\marg{metrics}\marg{etx-list}% - \penalty0 - \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ - |\installfontas|\marg{font-name}\penalty0\marg{encoding}% - \marg{family}\marg{series}\marg{shape}\marg{size} -\end{isyntax} -The \meta{font-name} argument and the last five arguments are common -to all these commands. The first argument is the name of a \TeX\ font -to install. The last five arguments are the NFSS attributes under which -that font will be declared to \LaTeX---encoding, family, series, shape, -and size. It is worth observing that encoding names are usually in -upper case, whereas the family, series, and shape are usually in lower -case. The size argument is either a shorthand (declared using -|\declaresize|) for a particular font -size (or range of font sizes), or an explicit list of font sizes or -ranges of sizes, which is copied directly to the font declaration. -The most common case is to let the size argument be empty, as that is -declared as a shorthand for ``any size''. - -The |\installfontas| command does not itself create the font, it just -makes a note that the specified font declaration should be written to -the proper FD file at |\end|\-|install|\-|fonts|. The -|\install|\-|font| and |\install|\-|raw|\-|font| commands do however -produce the font, in the sense that they write a VPL and PL -respectively file for the font. It depends solely on the \meta{metrics} -and \meta{etx-list} arguments what this font will contain. Many -features of these arguments are new with \fontinst v\,1.9; -therefore the complete syntaxes are described below. - -Both arguments are comma-separated lists of basically file names (not -including an extension). The files listed in the \meta{metrics} are -font metric files which together build up a \emph{glyph base} -(definitions of glyphs and metrics related to one or several glyphs), -whereas the files listed in the \meta{etx-list} are encoding definition -files that select a subset of the glyph base for turning into a -\TeX\ font. The font metrics can be in either of the four formats -MTX, PL, AFM, and VPL, which are considered in that order. If the -metrics are not originally in MTX format then they will be converted -to this format (a new file will be created) before they are used. -The encoding definitions must be in ETX format. The files actually -read will have a suffix \texttt{.mtx}, \texttt{.pl}, \texttt{.afm}, -\texttt{.vpl}, or \texttt{.etx} appended to the name given, depending -on which format is expected. - -Within each element of the comma-separated list, the actual file name -is followed by zero or more \emph{modifier clause}s. A \meta{modifier -clause} consists of a \emph{keyword} followed by some number (usually -one) of \emph{arguments}, separated by spaces. The whole thing looks -a lot like the \meta{rule specifications} of e.g.\ the |\vrule| -command, but here the spaces are mandatory. The currently defined -\meta{modifier clause}s are -\begin{description} - \item[\mdseries\textvisiblespace\texttt{option}\textvisiblespace - \meta{string}] - Available for metric and encoding files. This adds \meta{string} - to the list of options for this file, which may affect what code - the file executes. The file can then test, using the |\ifoption| - command, whether a specific string is one of the options it was - given. - \item[\mdseries\textvisiblespace\texttt{scaled}\textvisiblespace - \meta{factor}] - Available for metric files. Causes the \texttt{rawscale} integer - variable to be set to the \meta{factor} (an integer expression) - while the file is being read. This scales glyphs and kerns that - are added to the glyph base by the \meta{factor}. - \item[\mdseries\textvisiblespace\texttt{suffix}\textvisiblespace - \meta{suffix}] - Available for metric files. Causes \meta{suffix} to be appended - to every glyph name appearing in a glyph or kern that file adds - to the glyph base. Thus ``\texttt{suffix /2}'' effectively - changes a - \begin{quote} - |\setrawglyph{a}|\dots - \end{quote} - to a - \begin{quote} - |\setrawglyph{a/2}|\dots - \end{quote} - \item[\mdseries\textvisiblespace\texttt{encoding}\textvisiblespace - \meta{etx-name}] - Available for metric files, and forces \fontinst to - only consider the PL and VPL formats for this font. - As these file formats do not contain glyph names, an ETX file - is used to assign glyph names to the slots in the font. - This ETX file is usually selected according to the - \texttt{CODINGSCHEME} property of the PL or VPL (using the - correspondences set up via the |\declare|\-|encoding| command), - but that information is not always as one would want it (there - are even fonts for which it is quite wrong). An \texttt{encoding} - clause bypasses this automatic mechanism, so that the file - \meta{etx-name}\texttt{.etx} is used instead. - -% % The following is no longer true as of v1.926: -% \textbf{Note:} The first time that a file in PL or VPL format is -% used in a \meta{metrics} argument, a corresponding MTX file is -% generated. This means that if the same file reference is used -% another time then the reference will be to the MTX file, not to -% the original PL or VPL, and thus \texttt{encoding} clauses on -% subsequent uses will have no effect. Each font only has one -% encoding, so it usually makes no sense to switch the ETX file -% used to interpret a font, but since MTX files are not -% automatically deleted between runs there is a risk that this -% takes away the intended effect of an \texttt{encoding} clause. - - \item[\mdseries\textvisiblespace\texttt{mtxasetx}] - This is available for files in the \meta{etx-list}. The actual - function of a - \begin{quote} - \meta{file-name} \texttt{mtxasetx} - \end{quote} - item in the \meta{etx-list} is that the file - \meta{file-name}\texttt{.mtx} is inputted (\emph{not} - \meta{file-name}\texttt{.etx}) and that the correspondence - between glyph names and slot numbers set up in - |\set|\-|raw|\-|glyph| or |\set|\-|scaled|\-|raw|\-|glyph| - commands in this file is treated as if it had been set up by - |\setslot| commands in an ETX file. Provided the MTX file is - transformable, the glyph base will be unaffected. - - The purpose of this feature is to simplify quick and dirty - installations of odd fonts for which no suitable ETX file is - available. This can be useful in early stages of the design of - a new font, but is inferior to installation using proper ETX - files since one for example cannot specify any ligatures in - MTX files. -\end{description} -Furthermore there is a special exception for the \meta{metrics}: if -the first token in one of the list items is the control sequence -|\metrics|, then the rest of that item is interpreted as explicit -metric commands to execute. - -If the \meta{metrics} of two subsequent |\install|\-|font| -or |\install|\-|raw|\-|font| commands are identical then the glyph -bases will be identical as well. This creates an opportunity for -optimization, which \fontinst makes use of by caching glyph -bases from one installation command to the next so that the glyph -base does not have to be rebuilt in these cases. A side-effect of -this caching is that local assignments made between two font -installation commands are cleared out with the glyph base, but -|\setint| and similar \fontinst commands make global -assignments when used in such positions. - -Some examples might be in order. The first is an adaptation of an -installation command from \texttt{mfnt-0.59} %~\cite{mfnt} -by Matthias Clasen and Ulrik Vieth: the installation command for the -8-bit math font \texttt{xma1000} (which can be thought of as being -to \texttt{cmmi10} sort of as \texttt{ecrm1000} is to \texttt{cmr10}). -The first three \texttt{encoding} clauses are more fine-tuning---without -them, a few glyphs would get incorrect names---but the last two are -quite essential, as the \texttt{msam10} and \texttt{msbm10} fonts -incorrectly claim to have the coding scheme \texttt{TEX MATH -SYMBOLS}. -\begin{verbatim} - \installfont{xma1000}{% - yma1000 encoding mcin,% - cmr10 encoding ot1upright,% - cmmi10,% - cmsy10 encoding omscal,% - msam10 encoding msam,% - msbm10 encoding msbm,% - mccmhax,mccmkern,mcmissing,% - cmsy10-base,cmsy10-extra% - }{mc}{MC}{cm}{m}{n}{<<10->>} -\end{verbatim} -Also note the explicit \LaTeX\ size specification for the range -``10\,pt and up''. - -The second example makes use of a \texttt{suffix} clause to combine -the letters from one font with the digits from another. -\begin{verbatim} - \installfont{msbrj8t}{msbr8r,msbrc8r suffix /2,latin}{digit2,t1} - {T1}{msbj}{m}{n}{} -\end{verbatim} -In this case, the glyph base contains the glyphs of Monotype Sabon -(SabonMT)---under names such as \texttt{A} for `A', \texttt{a} for -`a', and \texttt{one} for a lining digit one---as well as the -glyphs of Monotype Sabon Small Caps and Oldstyle Figures -(SabonMT-SCOSF)---under names such as \texttt{A/2} for `A', -\texttt{a/2} for `\textsc{a}', and \texttt{one/2} for a hanging -digit one. The \texttt{digit2.etx} file simply makes the definition -\begin{verbatim} - \setcommand\digit#1{#1/2} -\end{verbatim} -which causes \texttt{t1.etx} to put \texttt{zero/2} in slot 48 (digit -zero), \texttt{one/2} in slot 49 etc., instead of as it normally -would \texttt{zero} in slot 48, \texttt{one} in slot 49 and so on. -The net effect is that the digits in the generated \texttt{msbrj8t} -is from \texttt{msbrc8r} (SabonMT-SCOSF) but everything else is from -\texttt{msbr8r} (SabonMT). - -The third example makes use of an \texttt{mtxasetx} clause to install -(with its default encoding) a font for which creating an appropriate -ETX file seems not worth the trouble. -\begin{verbatim} - \installrawfont{psyr}{psyr,\metrics - \setint{xheight}{\height{alpha}} - }{txtfdmns,psyr mtxasetx}{U}{psy}{m}{n}{} -\end{verbatim} -The effect of the second \texttt{psyr} is that \texttt{psyr.mtx} is -read (in case there was no \texttt{psyr.mtx} then it is created from -(hopefully) \texttt{psyr.afm}) and the information in it will form -the glyph base. Because of the |\metrics| control sequence, the rest -of that item will be interpreted as explicit metric commands -modifying the glyph base, and thus the |\setint| command can provide -a value for the \texttt{xheight} variable (there doesn't seem to be -such a value in the AFM). Once the glyph base is completed, the -|\install|\-|raw|\-|font| starts writing the file \texttt{psyr.pl} -(that's for the first \texttt{psyr}). The encoding of that font will, -because of the \texttt{psyr mtxasetx}, be the same as that used in -\texttt{psyr.mtx}. Finally, the \texttt{txtfdmns} is for -\texttt{txtfdmns.etx}, an ETX file which sets fontdimens 1--16 as for -a \texttt{T1} encoded font but does not set any slots. Since -\texttt{psyr.mtx} reinterpreted as an ETX file sets slots but no -fontdimens, these complement each other nicely. - - - -\subsection{Bounding boxes} - -Han The Thanh has created an implementation of bounding box support -for \fontinst, and it is a modified form of that support -is distributed with \fontinst as the file \texttt{bbox.sty}. To load -this, begin your command file with -\begin{verbatim} - \input fontinst.sty - \input bbox.sty -\end{verbatim} -The reason for not making it default is that keeping track of bounding -boxes increases some of \fontinst's memory requirements quite a lot. - -One important -characteristic of this implementation is that the dimensions of the -bounding box are not bundled into the same data structure (the -|\g-|\meta{glyph} macros) as the glyph's width, height, depth, and -italic correction are, but stored in a separate data structure (the -|\gb-|\meta{glyph} macros). A glyph doesn't need to have its bounding -box set, it is simply a piece of information that \fontinst -will store if you tell it to and which you can later retrieve. - -The bounding box will be stored as coordinates of the sides in the -normal AFM coordinate system. The commands for retrieving these -coordinates are -\begin{center} - \begin{tabular}{ll} - \textbf{Command}& \textbf{Side}\\ - |\bbtop|\marg{glyph}& top ($y$-coordinate)\\ - |\bbbottom|\marg{glyph}& bottom ($y$-coordinate)\\ - |\bbleft|\marg{glyph}& left ($x$-coordinate)\\ - |\bbright|\marg{glyph}& right ($x$-coordinate) - \end{tabular} -\end{center} -In Thanh's implementation the command names were |\ury|, |\lly|, -|\llx|, and |\urx| respectively instead, but I think the former are -easier to remember. If no bounding box has been set for a glyph then -the above commands will instead report the corresponding coordinate of -the glyph's \TeX\ box (i.e.\ |\height|\marg{glyph}, -|\neg{\depth|\marg{glyph}|}|, |0|, and |\width|\marg{glyph} -respectively). - -The command for setting the bounding box of a glyph is -\begin{quote} - |\setglyphbb|\marg{glyph}\marg{left}\marg{bottom}\marg{right}% - \marg{top} -\end{quote} - - - -\section{Miscellaneous notes} - -\subsection{On verbatim, typewriter, and monowidth fonts} - -The verbatim, typewriter, and monowidth concepts are common sources -of confusion for those who use \fontinst to install fonts -with \LaTeX; in particular -there are many misconceptions about the relation between them. The -official view (of which not much has actually been brought forward) -is that these concepts are really about three quite different things. - -A font is a \emph{monowidth} (monospaced, fixed-pitch) font if all -glyphs in it have exactly the same width. Some font formats make -special provisions for such fonts; the most notable example is the -AFM format, where a single \texttt{CharWidth} keyword specifies the -width for all glyphs in the font. \Fontinst responds to this -by including the command -\begin{quote} - |\setint{monowidth}{1}| -\end{quote} -in the MTX file generated from an AFM, but that is everything that is -hard-wired into the program. That a font is monowidth is however -something that one should take note of when installing it for \TeX, -as it means many of the glyphs in it have such a strange appearance -that they are (pretty much) useless. The \texttt{endash} is for -example usually only half as long as the \texttt{hyphen} and the -letters in ligature glyphs are only half as wide as normal letters. -Many of the ETX and MTX files that come with \fontinst -contain special commands to avoid making use of such degenerate -glyphs. - -That a font is a \emph{typewriter} font really only means that it has -a typewriterish look about it. The two most familiar typewriter fonts -are probably Computer Modern Typewriter (\texttt{cmtt}) and Courier. -Both of these fonts are monowidth, but there is no absolute rule about -this. One of the standard \TeX\ fonts is for example Computer Modern -Variable-width Typewriter (\texttt{cmvtt}), which is not a monowidth -font, as Figure~\ref{Fig:TTvsVTT} shows. -\begin{figure} - \begin{tabular}{ll} - \texttt{cmtt}:& \fontfamily{cmtt}\selectfont - The quick brown fox jumps over the lazy dog.\\ - \texttt{cmvtt}:& \fontfamily{cmvtt}\selectfont - The quick brown fox jumps over the lazy dog. - \end{tabular} - \caption{Two typewriter fonts} - \label{Fig:TTvsVTT} -\end{figure} - -The verbatim concept has very little to do with fonts at all; in -\LaTeX\ it is considered to be a property of the environment -(\texttt{verbatim}, \texttt{macrocode}, etc.) rather than a property -of the font. The connection there is with fonts is that the encoding -of the font must contain visible ASCII (as defined in Appendix~C -of \emph{The \TeX book}%~\cite{TeXbook} -) as a subset for the text to -be rendered correctly. The \texttt{cmtt} family is the only one amongst -the original Computer Modern fonts which meets this criterion and -that is the primary grounds for the idea that these three concepts -should be connected. Today that reason is at best a very weak one, as -all \texttt{T1}-encoded fonts also meet the criterion of containing -visible ASCII as a subset. - -A circumstance which has probably added to the confusion is that -\texttt{OT1} is usually claimed to be an encoding. In reality the -Computer Modern fonts that are declared in \LaTeX\ as being -\texttt{OT1} display as many as five different encodings, as shown in -Table~\ref{Tab:OT1-fonts}. -\begin{table} - \begin{tabular}{lccc} - & \texttt{TEX TEXT}& - \begin{tabular}[b]{c}\texttt{TEX TEXT WITHOUT}\\ - \texttt{F-LIGATURES}\end{tabular}& - \texttt{TEX TYPEWRITER TEXT}\\ - \noalign{\medskip} - non-italic& - \begin{tabular}{l} - \texttt{cmb10}\\ - \texttt{cmbx5}--\texttt{12}\\ - \texttt{cmbxsl10}\\ - \texttt{cmdunh10}\\ - \texttt{cmff10}\\ - \texttt{cmfib8}\\ - \texttt{cmr6}--\texttt{17}\\ - \texttt{cmsl8}--\texttt{12}\\ - \texttt{cmss8}--\texttt{17}\\ - \texttt{cmssbx10}\\ - \texttt{cmssdc10}\\ - \texttt{cmssi8}--\texttt{17}\\ - \texttt{cmssq8}\\ - \texttt{cmssqi8}\\ - \texttt{cmvtt10} - \end{tabular}& - \begin{tabular}{l} - \texttt{cmcsc8}--\texttt{10}\\ - \texttt{cmr5} - \end{tabular}& - \begin{tabular}{l} - \texttt{cmsltt10}\\ - \texttt{cmtcsc10}\\ - \texttt{cmtt8}--\texttt{12} - \end{tabular}\\ - \noalign{\medskip} - italic& - \begin{tabular}{l} - \texttt{cmbxti10}\\ - \texttt{cmfi10}\\ - \texttt{cmti7}--\texttt{12}\\ - \texttt{cmu10} - \end{tabular}&& - \begin{tabular}{l} - \texttt{cmitt10} - \end{tabular} - \end{tabular} - \caption{``\texttt{OT1}-encoded'' Computer Modern fonts, collected - according to the actual font encoding} - \label{Tab:OT1-fonts} -\end{table} -Since most monowidth fonts are only used for setting verbatim text, -there is some code in \texttt{ot1.etx} which automatically chooses a -\texttt{TEX TYPEWRITER TEXT} encoding for the font when the -\texttt{monowidth} integer is set. The only reason for this is the -guess that this is what the user wanted. - - - -\section*{Acknowledgements} - -I'd like to thank all of the \fontinst $\alpha$-testers, especially -Karl Berry, Damian Cugley, Steve Grahthwohl, Yannis Haralambous, Alan -Hoenig, Rob Hutchings, Constantin Kahn, Peter Busk Laursen, Ciar{\'a}n {\'O} -Duibh{\'\i}n, Hilmar Schlegel, Paul Thompson, Norman Walsh and John Wells, -who made excellent bug-catchers! - -Thanks to Barry Smith, Frank Mittelbach, and especially Sebastian -Rahtz for many useful email discussions on how virtual fonts should -interact with \LaTeXe. - -Thanks to Karl Berry and Damain Cugley for detailed comments on this -documentation. - -Thanks to David Carlisle for the use of his \texttt{trig} macros for -calculating trigonometry. - - -% \section*{Warranty and distribution} -% -% There is no warranty for the \fontinst package, to the extent -% permitted by applicable law. Except when otherwise stated in writing, -% the author provides 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 package prove defective, you assume -% the cost of all necessary servicing, repair or correction. -% -% In no event unless required by applicable law or agreed to in writing -% will the author 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. -% -% Redistribution of unchanged files is allowed provided that all files -% listed in the \texttt{MANIFEST} file are distributed. -% -% If you receive only some of these files from someone, or if you -% receieve altered files, then complain! - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi deleted file mode 100644 index d272df5088e..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf deleted file mode 100644 index 3f517608d16..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex deleted file mode 100644 index 0e7c485ab6c..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex +++ /dev/null @@ -1,1330 +0,0 @@ -%%% ==================================================================== -%%% @LaTeX-file{ -%%% author = "Alan Jeffrey and Rowland McDonnell and -%%% Ulrik Vieth and Lars Hellstr{\"o}m", -%%% version = "1.927", -%%% date = "28 July 2004", -%%% time = "23:20:27 CEST", -%%% filename = "intro98.tex", -%%% email = "fontinst@tug.org", -%%% checksum = "", -%%% codetable = "ISO/ASCII", -%%% keywords = "fontinst, TeX, PostScript, documentation", -%%% supported = "yes", -%%% abstract = "This is documentation for the fontinst -%%% font installation package.", -%%% package = "fontinst", -%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" -%%% } -%%% ==================================================================== - -% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey - -% Modified by Rowland McDonnell June 1998 -% Modified and revised by Ulrik Vieth June 1998 - -\documentclass[a4paper]{ltxguide} -\usepackage[OT1]{fontenc} -\usepackage{url,xspace} -\usepackage{graphicx} -%\renewcommand\rmdefault{ppl} -%\renewcommand\rmdefault{padx} -%\renewcommand\rmdefault{pmnx} - - -% Title page and running heads. - -\makeatletter -\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} -\newcommand{\version}[1]{\renewcommand{\@version}{#1}} -\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} - -\newcommand{\@subtitle}{} -\newcommand{\@version}{???} -\newcommand{\@illustration}{cover.eps} - -\pagestyle{myheadings} -\AtBeginDocument{\markright{\small\itshape - \@author\hfill\@title: \@subtitle\quad}} - - -\renewcommand{\maketitle}{{% - \thispagestyle{empty}% - \normalfont\centering - \null - {\fontsize{100}{100}\textit{\@title}}% - \par\bigskip - {\Large\textbf{\@subtitle}}% - \vfill - \includegraphics[width=\textwidth]{\@illustration}% - \vfill - {\Large\textbf{% - \@author\\[\smallskipamount] \@title~v\@version - \quad\textperiodcentered\quad \@date}}% - \clearpage -}} -\makeatother - - -% Set lists tighter (assuming non-zero \parskip). - -\makeatletter -\renewcommand{\@listI}{% - \leftmargin\leftmargini - \parsep\medskipamount - \itemsep\z@ % + parsep - \topsep\z@ % + parskip - \partopsep\z@ -} -\makeatother - -% Set spacing around captions. - -\setlength{\abovecaptionskip}{\medskipamount} -\setlength{\belowcaptionskip}{\medskipamount} - -% Markup for logos, file types, programs, etc. - -\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} - -\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} -\newcommand*{\OzMF}{O\kern-.03em zMF} -\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} - -\newcommand{\PS}{Post\-Script\xspace} -\newcommand{\TT}{True\-Type\xspace} - -\newcommand*{\setfilename}[1]{\texttt{#1}} -\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} -\newcommand*{\setpackagename}[1]{\textsc{#1}} - -\newcommand{\dvips} {\setpackagename{dvips}\xspace} -\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} -\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} -\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} - -% \show\fontname -\newcommand{\fontnamekb}{fontname\xspace} -\newcommand{\Fontnamekb}{Fontname\xspace} - -\newcommand{\mf} {\setfilename{mf}\xspace} -\newcommand{\Mf} {\setfilename{Mf}\xspace} -\newcommand{\vf} {\setfilename{vf}\xspace} -\newcommand{\Vf} {\setfilename{Vf}\xspace} -\newcommand{\pl} {\setfilename{pl}\xspace} -\newcommand{\Pl} {\setfilename{Pl}\xspace} -\newcommand{\fd} {\setfilename{fd}\xspace} -\newcommand{\Fd} {\setfilename{Fd}\xspace} -\newcommand{\pk} {\setfilename{pk}\xspace} -\newcommand{\Pk} {\setfilename{Pk}\xspace} -\newcommand{\afm}{\setfilename{afm}\xspace} -\newcommand{\Afm}{\setfilename{Afm}\xspace} -\newcommand{\vpl}{\setfilename{vpl}\xspace} -\newcommand{\Vpl}{\setfilename{Vpl}\xspace} -\newcommand{\tfm}{\setfilename{tfm}\xspace} -\newcommand{\Tfm}{\setfilename{Tfm}\xspace} -\newcommand{\mtx}{\setfilename{mtx}\xspace} -\newcommand{\Mtx}{\setfilename{Mtx}\xspace} -\newcommand{\etx}{\setfilename{etx}\xspace} -\newcommand{\Etx}{\setfilename{Etx}\xspace} -\newcommand{\pfa}{\setfilename{pfa}\xspace} -\newcommand{\Pfa}{\setfilename{Pfa}\xspace} -\newcommand{\pfb}{\setfilename{pfb}\xspace} -\newcommand{\Pfb}{\setfilename{Pfb}\xspace} -\newcommand{\dvi}{\setfilename{dvi}\xspace} -\newcommand{\Dvi}{\setfilename{Dvi}\xspace} -\newcommand{\ttf}{\setfilename{ttf}\xspace} -\newcommand{\Ttf}{\setfilename{Ttf}\xspace} - -\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} -\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} -\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} -\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} - - -% Stolen from Dr Knuth -\makeatletter % borrow the private macros of PLAIN (with care) -\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -% macros for font tables -\def\oddline#1{\cr - \noalign{\nointerlineskip} - \multispan{19}\hrulefill& - \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr - \noalign{\nointerlineskip}} -\def\evenline{\cr\noalign{\hrule}} -\def\chartstrut{\lower4.5pt\vbox to14pt{}} -\def\beginchart#1{$$\global\count@=0 #1 - \halign to\hsize\bgroup - \chartstrut##\tabskip0pt plus10pt& - &\hfil##\hfil&\vrule##\cr - \lower6.5pt\null - &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& - &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} -\def\*{\global\advance\count@ by1 } -\def\:{\setbox0=\hbox{\char\count@}% - \ifdim\ht0>7.5pt\reposition - \else\ifdim\dp0>2.5pt\reposition\fi\fi - \box0\global\advance\count@ by1 } -\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} -\def\smallchart{% -%\global\advance\count@ by16 - &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 - &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 - &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 - &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 - &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 - &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 - &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 - &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 - &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} - -\def\bigchart{% -%\global\advance\count@ by16 - &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 - &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 - &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 - &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 - &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 - &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 - &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 - &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 - &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8 - &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9 - &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A} - &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B} - &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C} - &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D} - &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E} - &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F} - &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} - -% \font\xrm = cmr10 at 10pt % change this line to test font -% \beginchart\xrm \normalchart \endchart - -\newcommand{\smallfontchart}[1]{% - \font\xrm = #1 \beginchart\xrm \smallchart \endchart} -\newcommand{\bigfontchart}[1]{% - \font\xrm = #1 \beginchart\xrm \bigchart \endchart} - -% \smallfontchart{cmr10 at 10pt} -% \bigfontchart{ecrm1000 at 10pt} -\makeatother -% End stolen from Dr Knuth - - - -\title{fontinst} -\subtitle{Font installation software for \TeX} -\author{Alan Jeffrey and Rowland McDonnell} -\illustration{roadmap.eps} -\version{1.8} -\date{30 June 1998} - -\begin{document} - -\maketitle - - -\begin{small} - This is the tutorial part of the 1998 \fontinst manual, chiefly - written by Rowland McDonnell and conveying his then-view on related - subjects. Although most of it is still correct, - the passing of time has rendered it somewhat antiquated, and the - average current (2004) user new to \fontinst would probably find - Philipp Lehman's \emph{The Font Installation Guide} - (\url{http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/}) - more relevant. -\end{small} - -\tableofcontents - - -\clearpage - -\section{Introduction} - -The \fontinst package is a set of \TeX\ macros written to create -virtual fonts for use with \TeX. Its main use is creating the -files needed so you can use PostScript Type 1 fonts with \LaTeX. - -\Fontinst needs information about the fonts it works with. This -information needs to be supplied in an Adobe Font Metric (\afm) or -\TeX\ Property List (\pl) file. \pl files can be created from -\tfm files using \tftopl, a program normally included with a \TeX\ -system. - -The job that \fontinst does is complicated, but it can be used for -many tasks by people who are not \TeX\ font wizards. Having said -that, you do need to understand at least the basics of \LaTeXe's -font selection mechanism, which is documented in -\texttt{fntguide.tex}, part of the standard \LaTeX\ distribution. -\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} -will fetch a copy if you don't have one to hand. - -To get the most benefit out of \fontinst, it's important to -understand and use Karl Berry's `\Fontnamekb' naming scheme. The -definitive version of this is available from your nearest CTAN -server. The following URL will fetch all the files needed -compressed into a single ZIP archive: -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname.zip}. I -suggest that you print out the \Fontnamekb documentation and have -it handy when you're learning about \fontinst. - -The \fontinst package: -\begin{itemize} -\item Is written in \TeX, for maximum portability (at the cost of - speed). -\item Supports the OT1 (Computer Modern) and T1 (Cork) encodings. -\item Allows fonts to be generated with arbitrary `fake' - characters; for example the `ij' character can be faked if - necessary by putting an `i' next to a `j'. -\item Allows caps and small caps fonts with letter spacing and - kerning. -\item Allows kerning to be shared between characters, for example - `ij' can be kerned on the left as if it were an `i' and on the - right as if it were a `j'. This is useful, since many - PostScript fonts only include kerning information for characters - without diacriticals. -\item Allows the generation of math fonts with \verb|nextlarger|, - \verb|varchar|, and arbitrary font dimensions. -\item Allows more than one PostScript font to contribute to a - \TeX\ font, for example the `ffi' ligatures for a font can be - taken from the Expert encoding, if you have it. -\item Can automatically generate a \fd file for use with \LaTeXe. -\item Can be customized by the user to deal with arbitrary font - encodings. -\end{itemize} -Fontinst has been a stable piece of software since mid-1994. All -further updates will be upwardly compatible with the interface -described in this document. - -\subsection{What does \fontinst do?} - -\Fontinst is a tool written in \TeX\ that can create the various -extra files needed so you can use \PS fonts with \LaTeX\ and \TeX. -It can read in \afm files, and produces the necessary \vpl, \pl, -and \fd files to use the fonts (the human-readable \vpl and \pl -files produced by \fontinst are turned into the machine-readable -\vf and \tfm forms by \vptovf and \pltotf). It does not help you -configure your DVI driver. - -There also exists a \texttt{perl} front-end to \fontinst, intended -specifically for use with a Unix \TeX\ system, which takes care of -routine tasks such as running \vptovf and \pltotf on the generated -files after \fontinst has finished it's job. It also generates a -font map file for use with \dvips. - -\Fontinst's main job is creating \vf files (virtual fonts). Not -all \TeX\ systems can use them. As far as I know, all current -(1998) free and shareware \TeX\ systems can; virtual fonts have -been in widespread use with \TeX\ since 1990. If you have a TeX -system that can't use virtual fonts, \fontinst is most likely -useless to you. - -There are some nice things about having a tool written in \TeX\ to -do this: it's completely portable and you can modify its behaviour -using \TeX\ commands. The only real problem is that it's -relatively slow: you can expect a typical \fontinst run to take -something like 10--20 minutes on, say, a 40~MHz 80486SX PC or a -25~MHz 68LC040 Macintosh. - -\Fontinst can do its work on any font for which you have a -corresponding \afm or \tfm metric file, so it's not limited to -working with \PS fonts; I have used it to produce the files I -needed to use \TT fonts with \LaTeX. Whether or not you can do -this depends on whether or not you have suitable metric files and -whether or not your \TeX\ system can use \TT fonts. In -particular, the pdf\TeX\ program supports \TT fonts and includes a -utility \texttt{ttf2afm} to generate \afm files from \ttf fonts. - -Some people have used \fontinst to produce `special effects' with -normal \TeX\ fonts. One example is the \setpackagename{eco} set -of fonts (available from CTAN: -\url{ftp://ftp.tex.ac.uk/tex-archive/fonts/eco/}). These fonts -are the same as the standard EC (European Modern) fonts, but with -normal numerals replaced with old style numerals -- -\oldstylenums{12345} rather than 12345 -- everywhere except in -maths mode. - -\subsection{Installation} - -To install \fontinst, put the contents of the \url{inputs/tex}, -\url{inputs/etx}, \url{inputs/mtx} and \url{examples} directories -into a directory read by \TeX, for example -\url{TEXMF/tex/generic/fontinst}. - -When you use \fontinst, you need to make sure that the \afm and -\pl files it will work on are in a directory searched by \TeX. - -If you are using \texttt{web2c} \TeX\ on a Unix system with the -\TeX\ directory structure (TDS), you might put all the \afm files -in subdirectories of \url{TEXMF/fonts/afm/*}. And then say: -\begin{verbatim} - setenv TEXINPUTS $TEXMF/fonts/afm//:: -\end{verbatim}%$ -Note that \pl files are not normally kept in \TeX\ installations, so -if you want to use MF fonts with \fontinst you have to generate the -corresponding \pl files from \tfm files and put them in your working -directory before running \fontinst. - -You could adopt a similar strategy with other \TeX\ systems: -create directories for the required files and then change the -relevant parameter (\url{input_folders} in the default -configuration file with \OzTeX, for example). - -The approach I use is this: I write a file containing commands for -\fontinst to process, and put the \afm and \pl files needed in the -same directory as that file. When \fontinst has finished working, -I delete the \afm and \pl files because they are not needed and -waste space on my hard disc drive. Some application programs on -some computers need \afm files, so it's not always a good idea to -remove them completely. - -\subsection{Why do we need \fontinst?} - -\TeX\ refers to characters by number when it's typesetting. When -you use a command like \verb|\i|, \TeX\ puts a number (16 if -you're using OT1, 25 if you're using T1) into the \dvi file. If -you're using a font designed for use with \TeX, this number will -correspond to the character `\i'. Assuming OT1 encoding for the -moment, when you come to print out your \dvi file, the DVI driver -will see the number 16 in the \dvi file, and select the character -that sits in position 16 of the corresponding printer font file (a -\pk file in the case of normal \TeX\ fonts). Unless something has -gone wrong, that will result in the character `\i' being placed on -the page. - -It's useful to think of these numbers and the actual characters -corresponding to each number as sets called `encodings'. A -particular set of characters are assigned particular numbers. An -example of an encoding is shown in table~\ref{OT1table}. - -\TeX\ began life using 7-bit fonts. This means the original \TeX\ -fonts used the numbers 0--127 to represent characters: -128~characters per font. \TeX\ can now use 8-bit fonts: -256~numbers from 0--255, but even so, most typesetting with \TeX\ -still uses the original 7-bit encoding, now called `OT1' (Old -\TeX~1 encoding). This has a correspondance between numbers and -characters shown in table~\ref{OT1table}. The numbers used in -that table are hexadecimal and octal because it makes for a neat -table and anyway I stole the code to generate it from Donald Knuth -and that's how he did it. - -\begin{table}[!t] -\smallfontchart{cmr10 at 10pt} -\caption{The OT1 font encoding}\label{OT1table} -\end{table} - -Returning to the example above, if you've a number 16 in your \dvi -file (expecting `\i', a dotless~i), but rather than printing -with an OT1 encoded font, you print using a non re-encoded \PS -font in Adobe standard encoding, you'll get a blank, because the -Adobe standard encoding has nothing in that character position. - -There are several ways round this problem; I'll consider two cases -here. If you are using \LaTeX\ you can tell it about a new -encoding and re-define the commands that produce characters like -`\i' that live in different positions in different encodings, or -you can use a tool to re-encode the font so that it has the -expected characters in the appropriate positions. - -Re-encoding is the approach \fontinst uses: it can produce files -to map the characters in the new font to one of \TeX's existing -encodings; this works with formats other than \LaTeX. - -The first approach is used to define the standard encodings that -\LaTeX\ uses. See, for example, the file \texttt{ot1enc.def} that -comes with the current \LaTeX\ distribution, which defines the a -few commands that refer to characters which aren't in the -positions \TeX\ would otherwise assume. This works only with -modern versions of \LaTeX. - -The second approach is used to allow you to use fonts in other -encodings with any dialect of \TeX. It has the some advantages -over the first method: it works with any \TeX\ format; and it -improves portability, because you can typeset a document using a -standard \TeX\ encoding, sure that the same document will print -correctly on a different kind of computer using a font with a -different encoding. For example, you might say: -\begin{verbatim} - \usepackage{times} -\end{verbatim} -in the preamble of your document. On my computer, that means my -DVI driver will use a Macintosh encoded \TT version of Times. On -your computer, it might mean the dvi driver will use a Unicode -encoded \PS version of Times-Roman. The results will be identical -in either case, without needing to modify the document. - -\subsection{How do you use \fontinst?} - -\Fontinst works on \afm files named (more-or-less) according to -Karl Berry's font naming scheme (see -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname} at CTAN). -Let's say you want to use the Adobe Times fonts. You can get the -metric files for this font from CTAN: -\begin{center} -\begin{small} -\begin{tabular}{ll} - \emph{Location of file at CTAN} & \emph{Rename to} \\ - \url{fonts/psfonts/adobeafm/base35/tib_____.afm} & - \texttt{ptmb8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tibi____.afm} & - \texttt{ptmbi8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tii_____.afm} & - \texttt{ptmri8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tir_____.afm} & - \texttt{ptmr8a.afm} -\end{tabular} -\end{small} -\end{center} -The new name is the name you should give the \tfm files so that -\fontinst understands what each file contains. The initial `|p|' -means `Adobe'; `|tm|' means `Times'; `|b|' bold, `|r|' roman, -`|i|' italic; and `|8a|' means `Adobe standard encoding'. - -The simplest use of \fontinst is to put the four \afm files in the -same directory as \texttt{fontinst.sty} and run \TeX\ on -\texttt{fontinst.sty}. At the \verb|*| prompt type: -\begin{verbatim} - *\latinfamily{ptm}{} \bye -\end{verbatim} - -Some time later (about 17 minutes on my rather old computer), -\fontinst will have finished, having created: -\begin{itemize} -\item Two \pl files for each \afm file -\item One \vpl file for each \TeX\ font -\item One \fd file for each family -\end{itemize} -The \pl files come in pairs: for example, \texttt{ptmb8a.pl} and -\texttt{ptmb8r.pl}. The |8a| version has the same encoding as the -original font; the |8r| version is re-encoded to |TeXBase1| (|8r|) -encoding, and is the font that is the base on which the T1 and OT1 -encoded versions are based on. The raw |8a| (Adobe standard) -encoded font is not normally used. - -These can be converted to \TeX\ fonts using \pltotf or \vptovf. -If you have \OzTeX, launch \OzMF, select \pltotf (or \vptovf) from -the Tools menu, and say `Do all files'. - -If you use the \texttt{bash} shell on a Unix system, you can -process all files using these one-liners at the \verb|$| prompt: -\begin{verbatim} - $ for f in in *.pl; do pltotf $f; done - $ for f in in *.vpl; do vptovf $f; done -\end{verbatim}%$ -(This assumes that \pltotf and \vptovf can deduce the file names -of the corresponding \tfm and \vf files automatically.) - -You should then: -\begin{itemize} -\item Move the \tfm files to your \TeX\ fonts directory\\ - (e.g.~\url{TEXMFLOCAL/fonts/tfm/*}). -\item Move the \vf files to your virtual fonts directory\\ - (e.g.~\url{TEXMFLOCAL/fonts/vf/*}). -\item Move the \fd files to your \TeX\ inputs directory\\ - (e.g.~\url{TEXMFLOCAL/tex/latex/psfonts/*}). -\end{itemize} -If your \TeX\ installation is organized using the \TeX\ directory -structure (TDS), it is customary to subdivide the \tfm and \vf -files into subdirectories by supplier and typeface name. - -The \pl, \vpl, and \mtx files are debris that can now be deleted. -\mtx files are font metric files \fontinst creates for its own use -from \afm and \pl files. They're just more convenient for \TeX\ -to read than other forms -- think of them as \fontinst readable -\afm and \pl files. - -By now, you have all the files in place to produce a \dvi file -using the new fonts. You can make Adobe Times the default roman -font in your document by putting this in your preamble: -\begin{verbatim} - \renewcommand{\rmdefault}{ptm} -\end{verbatim} - -\TeX\ will now happily produce a perfectly good \dvi file -including the new font, which your DVI driver will choke on -because you've not yet told it about the new fonts. Exactly how -you do this depends on the dvi driver, but they all need the same -information: the name of a \TeX\ font; the printer font name it -corresponds to; some information to handle an re-encoding needed; -and (in the case of a \PS driver) perhaps an instruction to -download the font to the printer. You don't need to download the -Times font to a \PS printer, because Times is built in to every -\PS printer. - -If you use \dvips, these lines added to your \texttt{psfonts.map} -file will do the job: -\begin{verbatim} - ptmr8r Times-Roman "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmri8r Times-Italic "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmb8r Times-Bold "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmbi8r Times-BoldItalic "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmro8r Times-Roman "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmbo8r Times-Bold "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc -\end{verbatim} -And now you can print a \dvi file containing the new fonts. If -you really do want to use the `raw' |8a| encoded fonts for some -reason, you need to add these lines to your \texttt{psfonts.map} -file: -\begin{verbatim} - ptmr8a Times-Roman - ptmri8a Times-Italic - ptmb8a Times-Bold - ptmbi8a Times-BoldItalic - ptmro8a Times-Roman "0.167 SlantFont" - ptmbo8a Times-Bold "0.167 SlantFont" -\end{verbatim} - -Assuming that you're using the \fd file that \fontinst has -produced, and that you've asked for the Adobe Times family (|ptm|) -in medium series (|m|) and upright shape (|n| for normal) using -the NFSS font selection commands: -\begin{verbatim} - \renewcommand{\rmdefault}{ptm} - \rmfamily \mdseries \upshape -\end{verbatim} -Assuming further that you are using the \fd file \texttt{t1ptm.fd} -produced by \fontinst, the \TeX\ font (\tfm file) \texttt{ptmr8t.tfm} -will be selected by the above commands, as you can see from the -relevant line in \texttt{t1ptm.fd}: -\begin{verbatim} - \DeclareFontShape{T1}{ptm}{m}{n}{<<->> ptmr8t}{} -\end{verbatim} - -This is what happens: -\begin{itemize} -\item \TeX\ typesets your document using the font metric file - \texttt{ptmr8t.tfm}; this is the font that is put in the \dvi - file. -\item \Dvips looks at the \dvi file, and sees a reference to the - font \texttt{ptmr8t}. -\item \Dvips searches for a \vf file corresponding to - \texttt{ptmr8t}; when it finds \texttt{ptmr8t.vf}, it knows it - has a virtual font on its hands. - %\footnote{This is a slight lie--why?} -\item \Dvips follows the instructions in the \vf file, which map - characters in \texttt{ptmr8t.tfm} to characters in the font - \texttt{ptmr8r.tfm}. That is, when it sees a number~25 in the - \dvi file (dotless~i -- `\i' -- in T1 encoding), it replaces it - with a number~17, which is a dotless~i in |8r| encoding. -\item Then \dvips looks up the name of each number according to - the scheme given in the file \texttt{8r.enc}, and replaces each - number with the name of the character, in this case, number~17 - is listed as `dotlessi'. -\item And finally, \dvips tells the printer to print the named - character. -\end{itemize} - -Not all DVI drivers can manage re-encoding as well as \dvips can. -For example, \OzTeX's built-in non-\PS \dvi driver can only work -with numbers, so if I'm using a \PS font, I can't print characters -(such as Eth) that don't have a number in Macintosh text encoding -unless I use \dvips and print on a \PS printer. \Dvips works with -character names, so it's not subject to this restriction. In the -example above, \OzTeX\ would replace the number~17 for `dotlessi' -in |8r| encoding with a number~245 for `dotlessi' in Macintosh -text encoding. - -The details of the \LaTeXe{} font selection scheme are described -in \emph{\LaTeXe{} font selection} (distributed with \LaTeXe\ as -the file \texttt{fntguide.tex}) and \emph{The \LaTeX\ Companion} -(Goossens, Mittelbach and Samarin, Addison-Wesley). -%You might also find useful the file \url{info/simple-nfss.tex} -%available at your nearest comprehensive \TeX\ archive network -%(CTAN) FTP server. - -The files you need to use Times, Helvetica, Courier, and the rest -of the `standard' \PS fonts are distributed as part of the -\setpackagename{PSNFSS} bundle available from CTAN, so there's no -need to create new files to use these fonts. - -A more involved example of \fontinst use can be seen in the file -\texttt{fontptcm.tex} which creates the files you need to use a -combination of Times, Symbol, Zapf Chancery and Computer Modern as -\TeX\ math fonts. - - -\section{Installing your own font family} - -The \fontinst package has a command \verb|\latinfamily| meant to -do most of the work to install a `normal' set (family) of roman -text fonts from Adobe. Assuming you have a set of \afm files to -match the fonts you wish to use, the first step is to rename the -\afm files according to the \Fontnamekb naming scheme. - -A `normal' set of text fonts usually includes the basic upright -roman version, bold, italic, and bold italic. Sometimes there -will also be small caps versions, perhaps some `expert' fonts, and -maybe some other weights such as light, medium, semi bold, black -or ultra bold. - -The most important point to note is this: no matter what sort of -computer you're using and no matter what font encoding it uses -normally, \afm files for text fonts are almost always in |8a| -encoding (Adobe standard encoding), so the \afm files when renamed -normally end in |8a|. - -A typical set of four \afm files re-named for use with \fontinst -is this: -\begin{verbatim} - ptmr8r.afm Times-Roman - ptmri8r.afm Times-Italic - ptmb8r.afm Times-Bold - ptmbi8r.afm Times-BoldItalic -\end{verbatim} -Not all \afm files use |8a| encoding. If you open an \afm file -using a text editor, you'll see a line looking like this somewhere -near the top: -\begin{verbatim} - EncodingScheme AdobeStandardEncoding -\end{verbatim} -and if you see exactly that, the \afm file should end with |8a|. -If you see something like this: -\begin{verbatim} - EncodingScheme FontSpecific -\end{verbatim} -have a look at the name of the font in the \afm file. If you see -something like this: -\begin{verbatim} - FontName AGaramondExp-Regular - FullName Adobe Garamond Regular Expert -\end{verbatim} -you have an `expert' encoded font on your hands, and the \afm file -should end with |8x| to indicate this to \fontinst. An |8x| -encoded font contains extra glyphs like old style numerals, small -capital letters, more ligatures, and so on. - -%% UV: taken out -- repeated below -%% -%If you have an expert font, you can tell \fontinst to use it when -%it's processing a \verb|\latinfamily| command by putting an `|x|' -%on the end of the family name: -%\begin{verbatim} -% \latinfamily{padx}{} -%\end{verbatim} -%If you want to tell \fontinst to use expert fonts to install fonts -%with old style numerals, you can do so by putting an `|j|' on the -%end of the family name: -%\begin{verbatim} -% \latinfamily{padj}{} -%\end{verbatim} - -The |\latinfamily| command is used like this: -\begin{decl} - |\latinfamily|\arg{family}\arg{commands} -\end{decl} -This installs a Latin family of fonts. - -For example, to install Adobe Times, you say: -\begin{verbatim} - \latinfamily{ptm}{} -\end{verbatim} -The \textit{commands} issued by \LaTeX\ each time a font from that -family is loaded. This is most often used with typewriter fonts, -to switch off hyphenation. For example, Adobe Courier can be -installed with: -\begin{verbatim} - \latinfamily{pcr}{\hyphenchar\font=-1} -\end{verbatim} -Once the installation is over (which may take some time) the fonts -can be used in \LaTeX\ by selecting an appropriate -\verb|\fontfamily|, for example Adobe Times can be selected with: -\begin{verbatim} - \fontfamily{ptm}\selectfont -\end{verbatim} -If the fourth letter of the family name is `|x|' then \fontinst -will use expert fonts in creating the fonts. If the fourth letter -is `|j|' (or for backward compatibility `|9|') then \fontinst will -use expert fonts to create fonts with old style digits. - -For example, to install Adobe Garamond using expert fonts, you say: -\begin{verbatim} - \latinfamily{padx}{} -\end{verbatim} -To install Adobe Garamond using expert fonts with oldstyle digits, -you say: -\begin{verbatim} - \latinfamily{padj}{} -\end{verbatim} - -When you have expert fonts, and you've told \fontinst to use -them, it will carry on as normal, but the resulting font family -will have the name `|padx|' or `|padj|', and it will use expert -glyphs whenever possible, so you'll have a real (rather than -faked) small caps font, real (rather than faked) `ffl' ligatures, -and so on. - -Before using these commands, you will need to make sure that you -have the Adobe Font Metric (\afm) files for the fonts, and that -they have appropriate names. The \fontinst package uses the -\LaTeX\ convention for naming fonts, and uses a \emph{font family} -name which consists of: -\begin{itemize} -\item a \emph{supplier} (or foundry), such as `|p|' for Adobe. -\item a \emph{typeface}, such as `|ad|' for Adobe Garamond. -\item up to two \emph{variants}, such as `|j|' or `|x|' for `old - style digits' or `expert'. -\end{itemize} -So the family name `|padj|' indicates Adobe Garamond with old -style digits. Note that the variants `|j|' or `|x|' are -interpreted by \fontinst itself and do not appear in external font -names, whereas other variants are passed through as part of the -font names. (This is needed for families which have a sans serif -or typewriter variant.) - -The \emph{supplier} must be one letter, and the \emph{typeface} -must be two (this is an attempt to fit all filenames into MS-DOS -format). Each variant is one letter. The full list of foundries, -typefaces, shapes and variants is given in Karl Berry's -`\emph{Filenames for fonts}' (available by anonymous FTP from -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname}), but the more -common ones are given in -Tables~\ref{Tab:foundry}--\ref{Tab:typeface}. - -\begin{table}[!t] -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |b| & Bitstream \\ - |f| & `free' (public domain) \\ - |h| & Bigelow \& Holmes \\ - |i| & ITC \\ - |l| & Linotype \\ - |m| & Monotype \\ - |p| & Adobe (|p| for \PS) \\ - |r| & `raw' (obsolete) \\ - |u| & URW \\ - |z| & bizarre - \end{tabular} - \caption{A partial list of foundries} - \label{Tab:foundry} - \begin{tabular}{ll} - |a| & alternate \\ - |d| & display, titling \\ - |f| & fraktur, handtooled \\ - |j| & oldstyle digits \\ - |n| & informal, casual \\ - |p| & ornaments \\ - |s| & sans serif \\ - |t| & typewriter \\ - |w| & script, handwriting, swash \\ - |x| & expert \\ - \end{tabular} - \caption{A partial list of variants} - \label{Tab:variant} - \begin{tabular}{ll} - |c| & small caps \\ - |i| & italic \\ - |o| & oblique (i.e.,~slanted) \\ - |u| & unslanted italic \\ - \end{tabular} - \caption{A partial list of shapes} - \label{Tab:shape} -\end{minipage} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |ac| & Adobe Caslon \\ - |ad| & Adobe Garamond \\ - |ag| & Avantgarde \\ - |bb| & Bembo \\ - |bd| & Bodoni \\ - |bk| & Bookman \\ - |bv| & Baskerville \\ - |ca| & Caslon \\ - |ch| & Charter \\ - |cr| & Courier \\ - |fr| & Frutiger \\ - |fu| & Futura \\ - |gl| & Galliard \\ - |gm| & Garamond \\ - |gs| & Gill Sans \\ - |hv| & Helvetica \\ - |mn| & Minion \\ - |lc| & Lucida \\ - |lh| & Lucida Bright \\ - |ls| & Lucida Sans \\ - |nb| & New Baskerville \\ - |nc| & New Century Schoolbook \\ - |op| & Optima \\ - |pl| & Palatino \\ - |sy| & Symbol \\ - |tm| & Times \\ - |ut| & Utopia \\ - |zc| & Zapf Chancery \\ - |zd| & Zapf Dingbats \\ - \end{tabular} - \caption{A partial list of faces} - \label{Tab:typeface} -\end{minipage} -\end{table} - -The \fontinst package uses Karl Berry's naming scheme for \afm -files. The full naming scheme is rather more flexible than the -subset used by \fontinst, which uses filenames consisting of: -\begin{itemize} -\item a \emph{supplier}, such as `|p|' for Adobe. -\item a \emph{typeface}, such as `|hv|' for Helvetica. -\item a \emph{weight}, such as `|r|' for regular. -\item up to two \emph{shapes} or \emph{variants}, such as `|o|' - for oblique. -\item an \emph{encoding}, such as `|7t|' for Knuth's 7-bit \TeX{} - encoding. -\item an optional \emph{width}, such as `|n|' for narrow. -\item a \emph{file extension}, such as `\texttt{.tfm}' - for \TeX{} Font Metric. -\end{itemize} -So the filename name `\texttt{phvro7tn.tfm}' indicates Adobe -Helvetica regular oblique narrow, in the 7-bit \TeX{} encoding. - -The full list of shapes, encodings and weights is given in Karl -Berry's `\emph{Filenames for fonts}', but the more common ones are -given in Tables~\ref{Tab:shape}--\ref{Tab:weight}. - -\begin{table} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |b| & bold \\ - |c| & black \\ - |d| & demibold \\ - |h| & heavy \\ - |k| & book \\ - |l| & light \\ - |m| & medium \\ - |r| & regular \\ - |s| & semibold \\ - |u| & ultra bold \\ - |x| & extra bold \\ - \end{tabular} - \caption{A partial list of weights} - \label{Tab:weight} - \begin{tabular}{ll} - |c| & condensed \\ - |n| & narrow \\ - |w| & wide \\ - |x| & extended \\ - \end{tabular} - \caption{A partial list of widths} - \label{Tab:width} -\end{minipage} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |8a| & Adobe Standard \\ - |8x| & Adobe Expert \\ - |8r| & \TeX{} 8-bit `raw' (\texttt{TeXBase1}) \\ - |8y| & \TeX{} 8-bit `raw' (\texttt{TeXnANSI}) \\ - |7t| & \TeX{} 7-bit text (\texttt{OT1}) \\ - |7m| & \TeX{} 7-bit math italic (\texttt{OML}) \\ - |7y| & \TeX{} 7-bit math symbol (\texttt{OMS}) \\ - |7v| & \TeX{} 7-bit math extension (\texttt{OMX}) \\ - |8t| & \TeX{} 8-bit text (\texttt{T1}) \\ - |8c| & \TeX{} 8-bit text symbols (\texttt{TS1}) \\ - |9t| & \TeX{} 7-bit text with expert glyphs \\ - |9o| & \TeX{} 7-bit text with expert glyphs \\ - & and old-style digits \\ - |9e| & \TeX{} 8-bit text with expert glyphs \\ - |9d| & \TeX{} 8-bit text with expert glyphs \\ - & and old-style digits \\ - |9c| & \TeX{} 8-bit symbols with expert glyphs \\ - & and old-style digits \\ - \end{tabular} - \caption{A partial list of encodings} -\end{minipage} -\end{table} - -For example, to install Adobe Garamond including the expert fonts, you -would need to rename the \afm files: -\begin{center} -\begin{small} -\begin{tabular}{lll} - \emph{Adobe name} & \emph{ATM name} & \emph{Fontinst name} \\ - |AGaramond-Bold.afm| & |gdb_____.afm| & |padb8a.afm| \\ - |AGaramond-BoldItalic.afm| & |gdbi____.afm| & |padbi8a.afm| \\ - |AGaramond-Italic.afm| & |gdi_____.afm| & |padri8a.afm| \\ - |AGaramond-Regular.afm| & |gdrg____.afm| & |padr8a.afm| \\ - |AGaramond-Semibold.afm| & |gdsb____.afm| & |pads8a.afm| \\ - |AGaramond-SemiboldItalic.afm| & |gdsbi___.afm| & |padsi8a.afm| \\ - |AGaramondExp-Bold.afm| & |geb_____.afm| & |padb8x.afm| \\ - |AGaramondExp-BoldItalic.afm| & |gebi____.afm| & |padbi8x.afm| \\ - |AGaramondExp-Italic.afm| & |gei_____.afm| & |padri8x.afm| \\ - |AGaramondExp-Regular.afm| & |gerg____.afm| & |padr8x.afm| \\ - |AGaramondExp-Semibold.afm| & |gesb____.afm| & |pads8x.afm| \\ - |AGaramondExp-SemiboldItalic.afm| & |gesbi___.afm| & |padsi8x.afm| \\ - |AGaramond-RegularSC.afm| & |gdsc____.afm| & |padrc8a.afm| \\ - |AGaramond-SemiboldSC.afm| & |gdsbs___.afm| & |padsc8a.afm| \\ -\end{tabular} -\end{small} -\end{center} -You can then run \TeX{} on the following document to install the -Adobe Garamond family: -\begin{verbatim} - \input fontinst.sty - \latinfamily{padx}{} - \latinfamily{padj}{} - \bye -\end{verbatim} -Not all font families can be installed using the \verb|\latinfamily| -command, nor does it always produce optimal results. The main -interfaces to \fontinst are at a slightly lower level, where all font -names appear explicitly in command arguments, and at that level it is -possible to fine tune the font generation. The \verb|\latinfamily| -command is mainly a clever collection of macros which expand to a -mostly fixed\footnote{Commands that would refer to files which are -not present are skipped, and in some cases there is a ``Plan B'' -when ``Plan A'' would have made use of such a nonexistent file, but -that is about it.} sequence of lower level \fontinst commands. - -\begin{bfseries} - Descriptions of the sub-\verb|\latinfamily| commands can be found - in the main \fontinst manual. -\end{bfseries} - - - -\section{More on the \cs{latinfamily} command} - -The \verb|\latinfamily| command is essentially a short-cut to save you -preparing a huge file with many different \fontinst commands in it. - -It takes \afm or \mtx files as the source of font metric data to work -with. Usually, you have a set of \afm files. They must be named -according to a subset of the \Fontnamekb naming scheme. To illustrate -the process, here is an edited part of the console log from a use of -\verb|\latinfamily|: -\begin{verbatim} - \latinfamily{pad}{} -\end{verbatim} -This log does not show \fontinst `in action'; it's just to illustrate -which fonts are looked for when you use the \verb|\latinfamily| -command. -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padr8r.mtx - INFO>> to make LaTeX font shape <> seek padrc8r.mtx - INFO>> to make LaTeX font shape <> seek padro8r.mtx - INFO>> to make LaTeX font shape <> seek padri8r.mtx - INFO>> to make LaTeX font shape <> seek padr8rn.mtx - INFO>> to make LaTeX font shape <> seek padrc8rn.mtx - INFO>> to make LaTeX font shape <> seek padro8rn.mtx - INFO>> to make LaTeX font shape <> seek padri8rn.mtx -\end{verbatim} - -The important point to notice is that \fontinst needs an |8r| encoded -\mtx file for each font when you are using the \verb|latinfamily| -command. If it can't find an |8r| encoded \mtx file, it'll look for -for an |8a| encoded \afm file. It will automatically turn the file it -finds into an |8r| encoded \mtx file. So when \fontinst says -`\verb|seek padr8r.mtx|', it is in fact looking for -\texttt{padr8r.mtx} and \texttt{padr8a.afm}. Whatever it finds, it -will end up with \verb|padr8r.mtx| to work on. - -The first line of the log shows that \fontinst is trying to create a -\vpl file for |pad/m/n|. That is, font family |pad| (Adobe Garamond), -font series |m| (normal `book' or `regular' weight), and font shape -|n| (normal upright). - -If it finds what it's looking for, it will create the files: -\begin{verbatim} - padr7t.vpl - padr8t.vpl - padr8c.vpl -\end{verbatim} -And add these lines to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{n}{<<->> padr7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{n}{<<->> padr8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{n}{<<->> padr8c}{} -\end{verbatim} -This means you will have three new fonts to use in \LaTeX: the OT1, T1 -and TS1 encoded versions of |pad/m/n|. You'll be able to select (say) -|T1/pad/m/n| by saying: -\begin{verbatim} - \fontencoding{T1}\fontfamily{pad}\fontseries{m}\fontshape{n}\selectfont -\end{verbatim} -This is the clumsiest way of selecting that particular font, but I've -done it to illustrate exactly what's happening. - -The next line: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padrc8r.mtx -\end{verbatim} -shows that \fontinst is trying to install a small caps font. If you -have a real small caps metric file named \texttt{padrc8r.mtx} (don't -forget it'll look for an |8a| encoded \afm file), \fontinst will go -ahead and create the \vpl file and \fd file entry as expected. - -But you don't normally have a real small caps font, so \fontinst will -quite happily produce a fake small caps font. To do this, it looks -for a suitable metric file by dropping the `|c|': -\begin{quote} - `Hmm\ldots\ I can't find \texttt{padrc8r}, so I'll look for - \texttt{padr8r}.' -\end{quote} -And you will eventually have: -\begin{verbatim} - padrc7t.vpl - padrc8t.vpl -\end{verbatim} -And add these lines to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sc}{<<->> padrc7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sc}{<<->> padrc8t}{} -\end{verbatim} -(Note that it won't install a TS1-encoded small caps font because -TS1 is a text symbol font, which would look the same in the upright -and small caps shape.) - -The next log line shows \fontinst trying to create a \vpl for the -oblique version of Adobe Garamond: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padro8r.mtx -\end{verbatim} -It's quite usual for an oblique version to be unavailable, but -\fontinst has a way round this: it can fake an oblique font from the -corresponding `straight' version: -\begin{quote} - `Oh dear: I can't find \texttt{padro8r}, so I'll look for - \texttt{padr8r} and use clever maths to fake a slanted version.' -\end{quote} -This is not as straightforward as the small caps case. \Fontinst -only works out what the metrics ought to be if the entire font is -slanted to the right. It's up to the DVI driver to actually print a -slanted font. \Dvips can do this. - -You will eventually have: -\begin{verbatim} - padro7t.vpl - padro8t.vpl - padro8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sl}{<<->> padro7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sl}{<<->> padro8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{sl}{<<->> padro8c}{} -\end{verbatim} - -The next line is straightforward: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padri8r.mtx -\end{verbatim} -If \fontinst can't find a suitable metrics file (\texttt{padri8r.mtx} -or \texttt{padri8a.afm}), it carries on without doing anything. If it -does find a suitable metrics file, it churns away until you will -eventually have: -\begin{verbatim} - padri7t.vpl - padri8t.vpl - padri8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{it}{<<->> padri7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{it}{<<->> padri8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{it}{<<->> padri8c}{} -\end{verbatim} - -The next line is a bit different. \Fontinst is now trying to create a -\vpl file for a \emph{condensed} font: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padr8rn.mtx -\end{verbatim} -If it finds a suitable metric file (Adobe Garamond, medium weight, -normal upright shape, condensed), it will eventually produce: -\begin{verbatim} - padr7tn.vpl - padr8tn.vpl - padr8cn.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{mc}{n}{<<->> padr7tn}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{mc}{n}{<<->> padr8tn}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{mc}{n}{<<->> padr8cn}{} -\end{verbatim} -There is no standard \LaTeX\ command like \verb|\bfseries| to select -the medium condensed (|mc|) series created here. If you want to use -this font, you must do something like: -\begin{verbatim} - \fontfamily{pad}\fontseries{mc}\selectfont -\end{verbatim} -If it doesn't find a suitable metric file for a narrow series, -\fontinst will just skip over and continue, unless you specifically -tell it to fake a narrow series. - -And so the process continues: \fontinst attempts to create \vpl files -for condensed versions of all the font shapes met so far, and then -goes on to: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padb8r.mtx -\end{verbatim} -And again, if it finds a suitable metric file (\texttt{padb8r.mtx} or -\texttt{padb8a.afm}), it'll potter off and create the files: -\begin{verbatim} - padb7t.vpl - padb8t.vpl - padb8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{b}{n}{<<->> padb7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{b}{n}{<<->> padb8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{b}{n}{<<->> padb8c}{} -\end{verbatim} -With this step done, fontinst will try to create \vpl files for the -small caps, slanted, and italic versions of |pad/b|; and then it'll -try to create condensed versions of all those: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek padb8r.mtx - INFO>> to make LaTeX font shape <> seek padbc8r.mtx - INFO>> to make LaTeX font shape <> seek padbo8r.mtx - INFO>> to make LaTeX font shape <> seek padbi8r.mtx - INFO>> to make LaTeX font shape <> seek padb8rn.mtx - INFO>> to make LaTeX font shape <> seek padbc8rn.mtx - INFO>> to make LaTeX font shape <> seek padbo8rn.mtx - INFO>> to make LaTeX font shape <> seek padbi8rn.mtx -\end{verbatim} -If it manages to find the files it needs to create the \vpl files to -use all those fonts with \LaTeX, you'll end up with the following -lines in the T1 \fd file (I've ignored the OT1 \fd file to save some -space): -\begin{verbatim} - \DeclareFontShape{T1} {pad}{b} {n} {<<->> padb8t}{} - \DeclareFontShape{T1} {pad}{b} {sc}{<<->> padbc8t}{} - \DeclareFontShape{T1} {pad}{b} {sl}{<<->> padbo8t}{} - \DeclareFontShape{T1} {pad}{b} {it}{<<->> padbi8t}{} - \DeclareFontShape{T1} {pad}{bc}{n} {<<->> padb8tn}{} - \DeclareFontShape{T1} {pad}{bc}{sc}{<<->> padbc8tn}{} - \DeclareFontShape{T1} {pad}{bc}{sl}{<<->> padbo8tn}{} - \DeclareFontShape{T1} {pad}{bc}{it}{<<->> pckbi8tn}{} -\end{verbatim} -To translate into English: Adobe Garamond bold in `normal', small -caps, slanted, and italic versions, as well as condensed versions of -all four. - -Again, because there's no convenient way of selecting the condensed -versions with existing \LaTeX\ commands, you need to say something -like: -\begin{verbatim} - \fontfamily{pad}\fontseries{bc}\selectfont -\end{verbatim} -to use the bold condensed (|bc|) versions of this font; you can of -course use \verb|\itshape|, \verb|\scshape|, \verb|\slshape|, and -\verb|upshape| to switch between the italic, small caps, slanted, and -`normal' versions of Adobe Garamond bold condensed once you've got -|pad/bc| selected. - -So far, you've seen \verb|\latinfamily| look at two different weights -and two different widths. For each weight, \verb|\latinfamily| will -try and install eight different fonts as you can see above. It will -try and install the same eight different fonts for each of the -following different weights: -\begin{center} -\begin{tabular}{lll} - \emph{\LaTeX} & \emph{Fontname} & \emph{description} \\ - |ul| & |a| & ultra light \\ - |el| & |i| & extra light \\ - |l| & |l| & light \\ - |m| & |k|, |r| & book, regular \\ - |mb| & |m| & medium \\ - |db| & |d| & demi bold \\ - |sb| & |s| & semi bold \\ - |b| & |b| & bold \\ - |eb| & |c|, |h|, |x| & black, heavy, extra bold \\ - |ub| & |u| & ultra bold -\end{tabular} -\end{center} -The \LaTeX\ column contains the label that will be used in the -\verb|\DeclareFontShape| command to specify the font series. The -\Fontnamekb column contains the width specifier used to name the font -metric file that \fontinst will look for in that case. - -In other words, at some stage \fontinst will look for: -\begin{verbatim} - INFO>> to make LaTeX font shape <> seek pads8r.mtx -\end{verbatim} -and if it finds a suitable metric file (\texttt{pads8r.mtx} or -\texttt{pads8a.afm}), it will create: -\begin{verbatim} - pads7t.vpl - pads8t.vpl - pads8c.vpl -\end{verbatim} -and \fd file entries like this: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{sb}{n}{<<->> pads7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{sb}{n}{<<->> pads8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{sb}{n}{<<->> pads8c}{} -\end{verbatim} -and since |sb| is not a normal \LaTeX\ font series, you'll need to use -something like: -\begin{verbatim} - \fontfamily{pad}\fontseries{sb}\selectfont -\end{verbatim} -to use this font. - -% For example, \verb|\latinfamily{ptm}{}| is -% syntactic sugar for: -% \begin{verbatim} -% \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} -% \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} -% \transformfont{ptmb8r}{\reencodefont{8r}{\fromafm{ptmb8a}}} -% \transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}} -% \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} -% \transformfont{ptmbo8r}{\slantfont{167}{\frommtx{ptmb8r}}} -% \installfonts -% \installfamily{T1}{ptm}{} -% \installfamily{OT1}{ptm}{} -% \installfont{ptmr8t}{ptmr8r,latin}{T1}{T1}{ptm}{m}{n}{} -% \installfont{ptmr7t}{ptmr8r,latin}{OT1}{OT1}{ptm}{m}{n}{} -% \installfont{ptmrc8t}{ptmr8r,latin}{T1c}{T1}{ptm}{m}{sc}{} -% \installfont{ptmrc7t}{ptmr8r,latin}{OT1c}{OT1}{ptm}{m}{sc}{} -% \installfont{ptmri8t}{ptmri8r,latin}{T1}{T1}{ptm}{m}{it}{} -% \installfont{ptmri7t}{ptmri8r,latin}{OT1i}{OT1}{ptm}{m}{it}{} -% \installfont{ptmro8t}{ptmro8r,latin}{T1}{T1}{ptm}{m}{sl}{} -% \installfont{ptmro7t}{ptmro8r,latin}{OT1}{OT1}{ptm}{m}{sl}{} -% \installfont{ptmb8t}{ptmb8r,latin}{T1}{T1}{ptm}{b}{n}{} -% \installfont{ptmb7t}{ptmb8r,latin}{OT1}{OT1}{ptm}{b}{n}{} -% \installfont{ptmbc8t}{ptmb8r,latin}{T1c}{T1}{ptm}{b}{sc}{} -% \installfont{ptmbc7t}{ptmb8r,latin}{OT1c}{OT1}{ptm}{b}{sc}{} -% \installfont{ptmbi8t}{ptmbi8r,latin}{T1}{T1}{ptm}{b}{it}{} -% \installfont{ptmbi7t}{ptmbi8r,latin}{OT1i}{OT1}{ptm}{b}{it}{} -% \installfont{ptmbo8t}{ptmbo8r,latin}{T1}{T1}{ptm}{b}{sl}{} -% \installfont{ptmbo7t}{ptmbo8r,latin}{OT1}{OT1}{ptm}{b}{sl}{} -% \endinstallfonts -% \end{verbatim} - - -The \texttt{basicex.tex} file in the \texttt{examples} directory of -the main \fontinst distribution is an annotated command file which -does roughly the same things as the \verb|\latinfamily| command for -the \texttt{pad} family of fonts. - - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps b/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps deleted file mode 100644 index 8ca14df79de..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps +++ /dev/null @@ -1,265 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: roadmap.fig -%%Creator: fig2dev Version 3.1 Patchlevel 1 -%%CreationDate: Sat Sep 16 18:24:06 1995 -%%For: alanje@rsuna.crn.cogs.susx.ac.uk (Alan Jeffrey, Research Fellow) -%%Orientation: Portrait -%%BoundingBox: 0 0 298 312 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize A4 -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {} def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --112.0 334.0 translate -1 -1 scale - -/clp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/l {lineto} bind def -/m {moveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -7.500 slw -% Arc -n 4813.51 1452.05 m 4800.00 1575.00 l 4754.06 1460.15 l gs col-1 s gr -n 4284.38 1645.31 520.40 -91.03 -7.77 arc -gs col-1 s gr - -% Arc -n 3045.94 1460.15 m 3000.00 1575.00 l 2986.49 1452.05 l gs col-1 s gr -n 3515.62 1645.31 520.40 -88.97 -172.23 arcn -gs col-1 s gr - -% Arc -n 2771.84 3251.35 m 2775.00 3375.00 l 2714.02 3267.38 l gs col-1 s gr -n 2279.17 3512.50 514.55 -84.89 -15.50 arc -gs col-1 s gr - -% Arc -n 3285.98 3267.38 m 3225.00 3375.00 l 3228.16 3251.35 l gs col-1 s gr -n 3720.83 3512.50 514.55 -95.11 -164.50 arcn -gs col-1 s gr - -% Arc -n 4247.24 2906.08 m 4125.00 2925.00 l 4223.95 2850.78 l gs col-1 s gr -n 3525.00 1500.00 1546.16 39.09 67.17 arc -gs col-1 s gr - -% Arc -n 3403.37 4702.50 m 3525.00 4725.00 l 3407.09 4762.39 l gs col-1 s gr -n 3493.27 4214.42 511.56 164.63 86.44 arcn -gs col-1 s gr - -% Arc -n 4394.64 4681.42 m 4275.00 4650.00 l 4395.35 4621.42 l gs col-1 s gr -n 4291.72 3239.01 1411.09 -3.62 90.68 arc -gs col-1 s gr - -% Arc -n 4398.18 4811.29 m 4275.00 4800.00 l 4389.00 4752.00 l gs col-1 s gr -n 3787.50 1650.00 3187.50 28.07 81.20 arc -gs col-1 s gr - -% Arc -n 4306.30 4511.76 m 4200.00 4575.00 l 4264.03 4469.17 l gs col-1 s gr -n 2769.64 3133.93 2030.42 0.45 45.21 arc -gs col-1 s gr - -% Ellipse -n 3900 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 562 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3000 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4800 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4800 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 5700 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 6600 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2100 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3000 4162 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 5362 225 187 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 3525 975 m 4275 975 l 4275 1275 l 3525 1275 l clp gs col-1 s gr -% Polyline -n 3525 2175 m 4275 2175 l 4275 2475 l 3525 2475 l clp gs col-1 s gr -% Polyline -n 4425 2175 m 5175 2175 l 5175 2475 l 4425 2475 l clp gs col-1 s gr -% Polyline -n 2625 3375 m 3375 3375 l 3375 3675 l 2625 3675 l clp gs col-1 s gr -% Polyline -n 3525 4575 m 4275 4575 l 4275 4875 l 3525 4875 l clp gs col-1 s gr -% Polyline -n 3900 750 m 3900 975 l gs col-1 s gr -n 3930.00 855.00 m 3900.00 975.00 l 3870.00 855.00 l gs col-1 s gr -% Polyline -n 3900 1275 m 3900 1575 l gs col-1 s gr -n 3930.00 1455.00 m 3900.00 1575.00 l 3870.00 1455.00 l gs col-1 s gr -% Polyline -n 3900 1950 m 3900 2175 l gs col-1 s gr -n 3930.00 2055.00 m 3900.00 2175.00 l 3870.00 2055.00 l gs col-1 s gr -% Polyline -n 3900 2475 m 3900 2775 l gs col-1 s gr -n 3930.00 2655.00 m 3900.00 2775.00 l 3870.00 2655.00 l gs col-1 s gr -% Polyline -n 4800 1950 m 4800 2175 l gs col-1 s gr -n 4830.00 2055.00 m 4800.00 2175.00 l 4770.00 2055.00 l gs col-1 s gr -% Polyline -n 4800 2475 m 4800 2775 l gs col-1 s gr -n 4830.00 2655.00 m 4800.00 2775.00 l 4770.00 2655.00 l gs col-1 s gr -% Polyline -n 3000 1950 m 3000 3375 l gs col-1 s gr -n 3030.00 3255.00 m 3000.00 3375.00 l 2970.00 3255.00 l gs col-1 s gr -% Polyline -n 3000 3675 m 3000 3975 l gs col-1 s gr -n 3030.00 3855.00 m 3000.00 3975.00 l 2970.00 3855.00 l gs col-1 s gr -% Polyline -n 3900 3150 m 3900 4575 l gs col-1 s gr -n 3930.00 4455.00 m 3900.00 4575.00 l 3870.00 4455.00 l gs col-1 s gr -% Polyline -n 3900 4875 m 3900 5175 l gs col-1 s gr -n 3930.00 5055.00 m 3900.00 5175.00 l 3870.00 5055.00 l gs col-1 s gr -/Helvetica findfont 180.00 scalefont setfont -3900 3000 m -gs 1 -1 sc (tfm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 600 m -gs 1 -1 sc (afm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 1800 m -gs 1 -1 sc (pl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -4800 1800 m -gs 1 -1 sc (vpl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3000 1800 m -gs 1 -1 sc (fd) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -4800 3000 m -gs 1 -1 sc (vf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -5700 3000 m -gs 1 -1 sc (pfa) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -6600 3000 m -gs 1 -1 sc (pfb) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -2100 3000 m -gs 1 -1 sc (tex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3000 4200 m -gs 1 -1 sc (dvi) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 5400 m -gs 1 -1 sc (ps) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 1175 m -gs 1 -1 sc (fontinst) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 2375 m -gs 1 -1 sc (pltotf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -4800 2375 m -gs 1 -1 sc (vptovf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3000 3575 m -gs 1 -1 sc (latex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 4775 m -gs 1 -1 sc (dvips) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -$F2psEnd -restore diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf deleted file mode 100644 index 8d6c2b593c7..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf deleted file mode 100644 index 4ae8a1eeb75..00000000000 Binary files a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty deleted file mode 100644 index 7864da89731..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty +++ /dev/null @@ -1,941 +0,0 @@ -% We start by making some default catcode assignments, in case we are -% using ini\TeX{}. -% \begin{macrocode} -%<*pkg> -\catcode`\{=1 -\catcode`\}=2 -\catcode`\#=6 -\catcode`\^=7 -% -% \end{macrocode} -% -% \package{fontinst} uses some unusual, but convenient, settings of -% |\catcode|. |@| and |_| are made letters, |~| is made a space, and -% space and newline are ignored. Before setting those however, we save -% the current values of the catcodes, so that they can be restored at -% the end of \texttt{fontinst.sty}. -% -% \begin{macrocode} -%<*pkg> -\edef\spacecatcode{\the\catcode`\ } -\edef\nlcatcode{\the\catcode`\^^M} -\edef\atcatcode{\the\catcode`\@} -\edef\underscorecatcode{\the\catcode`\_} -\edef\tildecatcode{\the\catcode`\~} -% \end{macrocode} -% -% \begin{macrocode} -\catcode`\ =9 -\catcode`\^^M=9 -\catcode`\@=11 -\catcode`\_=11 -\catcode`\~=10 -% -% \end{macrocode} -% - - -\newlinechar=`\^^J - -% \begin{macro}{\a_read} -% \begin{macro}{\b_read} -% \begin{macro}{\a_filelineno} -% \begin{macro}{\b_filelineno} -% These control sequences are used for keeping track of the ``physical'' -% side of the two input files. |\a_read| and |\b_read| are the stream -% numbers. |\a_filelineno| and |\b_filelineno| are the respective -% line numbers of the lines most recently read from these files. -% \begin{macrocode} -\newread\a_read -\newread\b_read -\newcount\a_filelineno -\newcount\b_filelineno -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{macro} -% -% \begin{macro}{\a_lineno} -% \begin{macro}{\b_lineno} -% \begin{macro}{\a_bufbase} -% \begin{macro}{\b_bufbase} -% \begin{macro}{\a_bufmid} -% \begin{macro}{\b_bufmid} -% \begin{macro}{\a_buftop} -% \begin{macro}{\b_buftop} -% These count registers are used for managing the buffert of lines -% that are read from the input files when a match between lines is -% being looked for. This buffert consists of lines which are saved in -% the macros -% \begin{quote} -% |\|\meta{letter}|_saved-|\meta{ofs} -% \end{quote} -% where \meta{letter} is |a| or |b| and \meta{ofs} is an integer, -% being the index into the buffert. |\a_bufbase| and |\b_bufbase| -% contain the \meta{ofs} of the first line currently in the buffert, -% whereas |\a_buftop| and |\b_buftop| contain the \meta{ofs} of the -% last such line. |\a_bufmid| and |\b_bufmid| hold the buffert -% positions of the lines which are currently considered the next by -% |\get_next_line|. If \(\mathtt{buftop}<\mathtt{bufmid}\) then the -% buffert is empty. |\a_lineno| and |\b_lineno| are the respective -% line numbers of the |\a_bufbase| and |\b_bufbase| lines. -% -% All these registers should be set globally. -% \begin{macrocode} -\newcount\a_lineno \newcount\b_lineno -\newcount\a_bufbase \newcount\b_bufbase -\newcount\a_bufmid \newcount\b_bufmid -\newcount\a_buftop \newcount\b_buftop -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} -% \end{macro}\end{macro} - - -% \begin{macro}{\get_next_line} -% The |\get_next_line| macro is called as -% \begin{quote} -% |\get_next_line|\marg{letter} -% \end{quote} -% where \meta{letter} is |a| or |b|. This sets the -% |\|\meta{letter}|_line| macro to the next line of that file and -% updates the value of |\|\meta{letter}|_lineno|. -% -% The ``next line'' is normally read from input stream -% |\|\meta{letter}|_read|, but if a line mismatch recently occured -% then it might happen that the next line has already been read from -% the file, and in that case it is taken from one of the -% |\|\meta{letter}|_saved-|\meta{ofs} macros. -% \begin{macrocode} -\def\get_next_line#1{ - \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname - \ifeof \csname#1_read\endcsname - \x_cs\let{#1_line}\end_of_file_line - \else - \read\csname#1_read\endcsname t\x_cs{o}{#1_line} - \global\advance \csname#1_filelineno\endcsname \@ne - \fi - \else - \expandafter\let \csname#1_line\expandafter\endcsname - \csname#1_saved-\the\csname#1_bufmid\endcsname\endcsname - \fi -} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\end_of_file_line} -% This macro expands to the text \verb*|(ENDOFFILE) | with the -% catcodes it would have if read from an input file. It is used as an -% end-of-file marker. -% \begin{macrocode} -\begingroup - \catcode`\(=13 - \catcode`\)=13 - \gdef\end_of_file_line{(ENDOFFILE)~} -\endgroup -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\the_line} -% The |\the_line| macro is called as -% \begin{quote} -% |\the_line|\marg{letter}\marg{ofs} -% \end{quote} -% where \meta{letter} is |a| or |b|, and \meta{ofs} is a \TeX\ number. -% It expands to the control sequence |\|\meta{letter}|_saved-|^^A -% \meta{ofs}. -% \begin{macrocode} -\def\the_line#1#2{\csname#1_saved-\number#2\endcsname} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\initialise_search} -% The |\initialise_search| macro sets everything up for a search for -% a match between lines. -% -% \begin{macrocode} -\def\initialise_search{ - \global\a_bufbase=\a_bufmid - \global\b_bufbase=\b_bufmid - \add_to_buffert{a} - \add_to_buffert{b} - \global\advance \a_bufmid \@ne - \global\advance \b_bufmid \@ne -} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\add_to_buffert} -% The |\add_to_buffert| macro is called as -% \begin{quote} -% |\add_to_buffert|\marg{letter} -% \end{quote} -% It adds the line returned by |\get_next_line| to the corresponding -% buffert (if it wasn't already there) and updates the counters for -% that buffert. After this, the line following the line being put into -% the buffert will be the line that |\get_next_line| returns. -% \begin{macrocode} -\def\add_to_buffert#1{ - \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname - \expandafter\let - \csname#1_saved-\the\csname#1_bufmid\endcsname - \expandafter\endcsname - \csname#1_line\endcsname - \global\advance \csname#1_buftop\endcsname \@ne - \fi -} -% \end{macrocode} -% \end{macro} - - - -\newcount\first_integer -\newcount\second_integer - -% \begin{macro}{\match_lines} -% The |\match_lines| macro tests if two lines can be considered the -% same (up to metrics changes, which need not be small). It is called as -% \begin{quote} -% |\match_lines|\marg{line a}\marg{line b} -% \end{quote} -% \meta{line a} and \meta{line b} may be any amount of text which -% eventually expands to the lines in question. |\match_lines| returns -% its answer by setting the |_a_| switch to |false| (if the lines -% match) or |true| (if the lines don't match). -% -% |\match_lines| also causes the |\first_dimen| and |\second_dimen| -% registers, as well as the |_histogram_dimen_| switch to be updated, -% so it can be immediately followed by a test of the metrics. -% \begin{macrocode} -\def\match_lines#1#2{ - \first_integer=\z@ - \second_integer=\z@ - \first_dimen=\z@ - \second_dimen=\z@ - \x_cs\let{string-+}\empty_command - \x_cs\let{string--}\empty_command -% \end{macrocode} -% \begin{macrocode} - \def\sign{+} - #1\line_stop - \def\sign{-} - #2\line_stop -% \end{macrocode} -% \begin{macrocode} - \_a_false - \expandafter\ifx \csname cmd-+ \expandafter\endcsname - \csname cmd--\endcsname - \else \_a_true \fi - \ifnum \first_integer=\z@ \else \_a_true \fi - \ifnum \second_integer=\z@ \else \_a_true \fi - \expandafter\ifx \csname string-+ \expandafter\endcsname - \csname string--\endcsname - \else \_a_true \fi -} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\try_matching} -% \begin{macro}{\a_bufP} -% \begin{macro}{\b_bufP} -% The |\try_matching| descends through the buffert until the |_a_| -% switch gets |false| or it has tried the bottommost lines in the -% buffert. Since |\body| is already defined by the |\loop| in -% |\process_lines|, |\try_matching| uses an explicit end recursion to -% make the loop. -% \begin{macrocode} -\newcount\a_bufP -\newcount\b_bufP -\def\try_matching{ - \global\advance \a_bufP \m@ne - \global\advance \b_bufP \m@ne -% % Begin debug -% \wlog{a_bufbase:~\the\a_bufbase\space\space\space -% b_bufbase:~\the\b_bufbase} -% \wlog{a_bufmid:~\the\a_bufmid\space\space\space -% b_bufmid:~\the\b_bufmid} -% \wlog{a_buftop:~\the\a_buftop\space\space\space -% b_buftop:~\the\b_buftop} -% \wlog{a_bufP:~\the\a_bufP\space\space\space -% b_bufP:~\the\b_bufP} -% \begingroup -% \def\do_left_paren{(}\def\do_right_paren{)} -% \wlog{a_line:~\a_line} -% \wlog{b_buf_line:~\the_line{b}{\b_bufP}} -% \wlog{b_line:~\b_line} -% \wlog{a_buf_line:~\the_line{a}{\a_bufP}^^J} -% \endgroup -% % End debug - \match_lines{\a_line}{\the_line{b}{\b_bufP}} - \if_a_ - \match_lines{\the_line{a}{\a_bufP}}{\b_line} - \if_a_ \else - \global\a_bufmid=\a_bufP - \fi - \else - \global\b_bufmid=\b_bufP - \fi - \ifnum \a_bufP>\a_bufbase \if_a_ - \expandafter\expandafter\expandafter\try_matching - \fi \fi -} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\report_mismatch} -% The |\report_mismatch| macro does precisely what it says. It also increases -% the \texttt{bufbase} and \texttt{lineno} registers to point at the -% matching lines. -% \begin{macrocode} -\def\report_mismatch{ - \begingroup - \def\do_left_paren{(} - \def\do_right_paren{)} - \wlog{Mismatch~in~first~file~(at~\the\a_lineno):} - \loop - \wlog{\the_line{a}{\a_bufbase}} - \ifnum \a_bufbase<\a_bufmid - \global\advance \a_bufbase \@ne - \global\advance \a_lineno \@ne - \repeat - \wlog{Match~found~at~line~\the\a_lineno.} - \wlog{Mismatch~in~second~file~(at~\the\b_lineno):} - \loop - \wlog{\the_line{b}{\b_bufbase}} - \ifnum \b_bufbase<\b_bufmid - \global\advance \b_bufbase \@ne - \global\advance \b_lineno \@ne - \repeat - \wlog{Match~found~at~line~\the\b_lineno.} - \endgroup - \glyphified_location - \ifnum 4>\compared_status - \global\chardef\compared_status=4 - \fi -} -% \end{macrocode} -% \end{macro} - -\def\glyphified_location{ - \ifx \encoding_name\empty_command - \ifnum \m@ne<\last_character - \wlog{This~is~related~to~slot~\the\last_character.^^J} - \else - \wlog{This~is~in~the~header.^^J} - \fi - \else - \if_undefined{name-\encoding_name-\the\last_character}\then - \ifnum \last_character=\m@ne - \wlog{This~is~in~the~header.^^J} - \else - \wlog{This~is~related~to~slot~\the\last_character\space - (unencoded).^^J} - \fi - \else - \wlog{This~is~related~to~the~glyph~ - \csname name-\encoding_name-\the\last_character\endcsname - .^^J} - \fi - \fi -} -% \begin{macro}{\compared_status} -% |\compared_status| is a \meta{chardef token} which stores the -% current status of the comparision, according to the following table -% \begin{enumerate} -% \item[0] The property lists are equal---there may be checksum -% differences, but nothing else. -% \item[1] The property lists are almost equal---there are -% differences in the metrics, but these are within the |\tolerance| -% level. -% \item[2] The property lists are essentially equal---there are -% differences in the metrics, but these are within the |\tolerance| -% level, with the exception of some \texttt{CHARHT}, -% \texttt{CHARDP}, and \texttt{CHARIC} values. -% \item[3] The property lists have metric differences---there are -% metric differences not with category 2. -% \item[4] The property lists are not completely matched. -% \end{enumerate} -% \end{macro} - -% \begin{macro}{\step_linenos} -% The |\step_linenos| macro increments the |_lineno| line numbers. If -% the current line was fetched from the buffert, then it also -% increments the |_bufmid| and |_bufbase| registers, and checks -% whether the buffert ended (in which case it is normalized to its -% starting position, to conserve hash table space). -% \begin{macrocode} -\def\step_linenos{ - \global\advance \a_lineno \@ne - \ifnum \a_bufmid=\a_buftop - \global\a_bufbase=\z@ - \global\a_bufmid=\z@ - \global\a_buftop=\m@ne - \else\ifnum \a_bufmid<\a_buftop - \global\advance \a_bufmid \@ne - \global\advance \a_bufbase \@ne - \fi\fi - \global\advance \b_lineno \@ne - \ifnum \b_bufmid=\b_buftop - \global\b_bufbase=\z@ - \global\b_bufmid=\z@ - \global\b_buftop=\m@ne - \else\ifnum \b_bufmid<\b_buftop - \global\advance \b_bufmid \@ne - \global\advance \b_bufbase \@ne - \fi\fi -} -% \end{macrocode} -% \end{macro} - - -\newdimen\first_dimen -\newdimen\second_dimen -\newcount\ht_hist_i -\newcount\ht_hist_ii -\newcount\ht_hist_iii -\newcount\ht_hist_iv -\newcount\dp_hist_i -\newcount\dp_hist_ii -\newcount\dp_hist_iii -\newcount\dp_hist_iv -\newcount\ic_hist_i -\newcount\ic_hist_ii -\newcount\ic_hist_iii -\newcount\ic_hist_iv - -% \begin{macro}{\clear_histograms} -% This macro clears all the histograms. -% \begin{macrocode} -\def\clear_histograms{ - \global\ht_hist_i=\z@ - \global\ht_hist_ii=\z@ - \global\ht_hist_iii=\z@ - \global\ht_hist_iv=\z@ - \global\dp_hist_i=\z@ - \global\dp_hist_ii=\z@ - \global\dp_hist_iii=\z@ - \global\dp_hist_iv=\z@ - \global\ic_hist_i=\z@ - \global\ic_hist_ii=\z@ - \global\ic_hist_iii=\z@ - \global\ic_hist_iv=\z@ -} -% \enc{macrocode} -% \end{macro} - -% \begin{macro}{\present_histograms} -% This macro writes the histogram data to the log file. -% \begin{macrocode} -\def\present_histograms{ - \wlog{\string\tolerance*~\space CHARHT~\space CHARDP~\space CHARIC} - \wlog{~\space\space 1--~\space\space 10\hist_to_eight{ht}{i} - \hist_to_eight{dp}{i}\hist_to_eight{ic}{i}} - \wlog{~\space 10--~\space 100\hist_to_eight{ht}{ii} - \hist_to_eight{dp}{ii}\hist_to_eight{ic}{ii}} - \wlog{~100--~1000\hist_to_eight{ht}{iii}\hist_to_eight{dp}{iii} - \hist_to_eight{ic}{iii}} - \wlog{1000--10000\hist_to_eight{ht}{iv}\hist_to_eight{dp}{iv} - \hist_to_eight{ic}{iv}} -} -\def\hist_to_eight#1#2{\x_cs\hist_to_eight_i{#1_hist_#2}} -\def\hist_to_eight_i#1{ - \ifnum #1<\@M - \four_spaces - \ifnum #1<\one_hundred - \space\space - \ifnum 10>#1 ~\fi - \else \ifnum #1<\one_thousand \space\fi \fi - \else - \ifnum 1000000>#1 - \space\space - \ifnum 100000>#1 ~\fi - \else \ifnum 1000000>#1 ~\fi \fi - \fi - \the#1 -} -% \end{macrocode} -% \end{macro} - - -% \begin{macro}{\metric_statistics} -% \begin{macro}{\metric_origin} -% The |\metric_statistics| macro takes care of comparing the metrics -% by inspecting the values of |\first_dimen| and |\second_dimen|. It -% has four classes of differences, which are represented by -% |\compared_status| values 0--3: no difference, tolerable (almost no) -% difference, histogrammed (essentially no) difference, and -% non-tolerable difference. If a non-tolerable difference is found, -% then the current lines are written to the log file. Histogrammed -% differences causes the corresponding -% |\|\meta{type}|_hist_|\meta{group} register to be incremented, and -% tolerable differences only affect the value of |\compared_status|. -% -% The |\metric_origin| macro contains the \meta{type} of the metric -% data. It is usually empty, but PL properties with metrics that have -% histograms set it so that the correct histogram is updated. -% -% \begin{macrocode} -\def\metric_statistics{ - \_a_false - % - \ifdim \first_dimen<\z@ \first_dimen=-\first_dimen \fi - \ifdim \first_dimen=\z@ - \else\ifdim \first_dimen<\tolerance - \ifnum 1>\compared_status - \global\chardef\compared_status=1 - \fi - \else\ifx \metric_origin\empty_command - \_a_true - \else - \a_count=\@ne - \def\a_macro{10} - \loop\ifdim \a_macro\tolerance<\first_dimen - \edef\a_macro{\a_macro 0} - \advance \a_count \@ne - \repeat - \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then - \_a_true - \else - \global\advance \csname \metric_origin _hist_ - \romannumeral\a_count \endcsname \@ne - \ifnum 2>\compared_status - \global\chardef\compared_status=2 - \fi - \fi - \fi\fi\fi - % - \ifdim \second_dimen<\z@ \second_dimen=-\second_dimen \fi - \ifdim \second_dimen=\z@ - \else\ifdim \second_dimen<\tolerance - \ifnum 1>\compared_status - \global\chardef\compared_status=1 - \fi - \else\ifx \metric_origin\empty_command - \_a_true - \else - \a_count=\@ne - \def\a_macro{10} - \loop\ifdim \a_macro\tolerance<\second_dimen - \edef\a_macro{\a_macro 0} - \advance \a_count \@ne - \repeat - \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then - \_a_true - \else - \global\advance \csname \metric_origin _hist_ - \romannumeral\a_count \endcsname \@ne - \ifnum 2>\compared_status - \global\chardef\compared_status=2 - \fi - \fi - \fi\fi\fi - % - \if_a_ - \ifnum 3>\compared_status - \global\chardef\compared_status=3 - \fi - \begingroup - \def\do_left_paren{(} - \def\do_right_paren{)} - \wlog{Metric~differences~at~lines~\the\a_lineno\space - and~\the\b_lineno\space respectively:} - \wlog{\a_line} - \wlog{\b_line} - \endgroup - \glyphified_location - \fi -} -% \end{macrocode} -% \end{macro}\end{macro} - - - - -\newif\if_b_ - -% \begin{macro}{\process_lines} -% The |\process_lines| macro is the cheif executive in the comparision. -% Its normal mode of operation is to retrive the next two lines from -% the input files, match them, and update the metric differences -% statistics. If the lines do not match, however, it starts building a -% buffert of lines in which it searches for two matching lines. When -% these two lines are found the mismatching portions of the files are -% written to the log file, and the metric difference statistics are -% updated for the two lines that matched. -% -% \begin{macrocode} -\def\process_lines{ - \get_next_line{a} - \get_next_line{b} - \match_lines{\a_line}{\b_line} - \if_a_ -% \end{macrocode} -% Now the process of trying to find a match begins. At each step of -% the search for a match, it tries all possible matches with the -% lines read so far that haven't been tried at an earlier step. -% \begin{macrocode} -% \tracingmacros=\@ne\tracingcommands=\tw@ % DEBUG - \initialise_search - \loop - \get_next_line{a} - \get_next_line{b} - \add_to_buffert{a} - \add_to_buffert{b} - \match_lines{\a_line}{\b_line} - \if_a_ - \global\a_bufP=\a_bufmid - \global\b_bufP=\b_bufmid - \try_matching - \fi - \if_a_ - \global\advance \a_bufmid \@ne - \global\advance \b_bufmid \@ne - \ifnum \a_bufmid>\sixt@@n - \errmessage{Big~buffert.~\the\a_lineno[\the\a_filelineno]: - \the\b_lineno[\the\b_filelineno]} - \fi % DEBUG - \repeat - \report_mismatch -% \tracingcommands=\z@\tracingmacros=\z@ % DEBUG -% \end{macrocode} -% \begin{macrocode} - \fi - \metric_statistics - \step_linenos - \par % DEBUG - \if \ifx \a_line\end_of_file_line - \ifx \b_line\end_of_file_line 1\else 0\fi\else 0\fi 0 - % then - \expandafter\process_lines - \fi -} -% \end{macrocode} -% \end{macro} - -\def\loadencoding#1{{ - \def\do_slot{\x_cs\xdef{name-#1-\the\slot_number}{\slot_name}} - \inputetx{#1} -}} - -% \begin{macro}{\comparePLs} -% The |\comparePLs| command compares two property lists files. It is -% geared against verifying that two different such files are as good -% as equal, and it might take a very long time before it gives up on -% trying to find any resemblance between them. It is furthermore only -% meant to be used on (V)PL files generated by \package{TFtoPL} or -% \package{VFtoVP}, because it assumes the property lists follow a -% stricter syntax than \package{PLtoTF} and \package{VPtoVF} requires -% them to. Finally it needs to be said that the comparision is rather -% stupid in many respects, as it is completely line-oriented and -% takes no notice of what kind of property list it is reading. This -% may in some cases cause it to find ``matches'' between lines which -% for syntactical reasons alone cannot match. -% -% |\comparePLs| is called as -% \begin{quote} -% |\comparePLs|\marg{first PL}\marg{second PL}\marg{encoding} -% \end{quote} -% where \meta{first PL} and \meta{second PL} are the complete names -% (including extensions) of the files to compare. \meta{encoding} is -% the name of the encoding to use when translating slots to glyph -% names; leave it empty if you don't want to specify one. (One could -% use the \texttt{CODINGSCHEME} property to determine the encoding in -% that case, but this is not currently done). The slot to glyph -% translation is only done to make it easier to locate the position of -% some mismatch; it has not effect on the actual comparision. -% \begin{macrocode} -\newcount\last_character -\def\comparePLs#1#2#3{{ - \def\encoding_name{#3} - \last_character=\m@ne - \openin\a_read=#1\x_relax - \openin\b_read=#2\x_relax - \immediate\write\sixt@@n{#1~and^^J #2} - \pl_catcodes - \let\do_left_paren=\do_property - \let\do_right_paren=\empty_command - \global\chardef\compared_status=\z@ - \clear_histograms - \global\a_filelineno=\@ne - \global\b_filelineno=\@ne - \global\a_lineno=\@ne - \global\b_lineno=\@ne - \global\a_bufbase=\z@ - \global\b_bufbase=\z@ - \global\a_bufmid=\z@ - \global\b_bufmid=\z@ - \global\a_buftop=\m@ne - \global\b_buftop=\m@ne - \process_lines - \closein\a_read - \closein\b_read - \ifcase \compared_status - \immediate\write\sixt@@n{are~equal.^^J} - \or - \immediate\write\sixt@@n{are~almost~equal.^^J} - \or - \immediate\write\sixt@@n{are~essentially~equal.} - \or - \immediate\write\sixt@@n{have~non-tolerated~metric~differences.} - \or - \immediate\write\sixt@@n{do~not~completely~match.} - \else - \immediate\write\sixt@@n{could~not~be~matched!} - \fi - \ifnum 1<\compared_status - \immediate\write\sixt@@n{See~log~file~for~specification.} - \present_histograms - \immediate\write\sixt@@n{} - \fi -}} -% \end{macrocode} -% \end{macro} - - -\begingroup - \catcode`\(=13 \catcode`\)=13 - \gdef\pl_catcodes{ - \catcode`\(=13 \def({\do_left_paren} - \catcode`\)=13 \def){\do_right_paren} - } -\endgroup - -\def\do_property#1~{ - \x_cs\edef{cmd-\sign}{#1} - \let\metric_origin=\empty_command - \x_cs\ifx{pl-#1}\x_relax - \expandafter\ignore_parens - \else - \csname pl-#1 \expandafter\endcsname - \fi -} -\def\pl_def_s#1(#2){\x_cs\def{pl-#1}#2~} -\begingroup - \catcode`\!=13\lccode`\!=`\) -\lowercase{\endgroup - \def\pl_def_p#1(#2){\x_cs\def{pl-#1}#2!} -} -\def\pl_let#1#2{ - \expandafter\let - \csname pl-#1 \expandafter\endcsname \csname pl-#2 \endcsname -} - - - -\newdimen\tolerance \tolerance=110sp - -% The following is for gobbling to the next unmatched right parenthesis. -% The |\catcode| trick used by the PL-to-MTX converter's -% |\ignore_parens| cannot be used since the characters are already -% tokenized, but one can do something similar with an |\edef| since one -% does not have to worry about the PL files containing material which -% expands in an undesirable way. -% -% The |\line_stop| is so that linebreaks in the parenthesis being -% gobbled will not cause total havok (although the parenthesis won't be -% gobbled completely). It inserts end-of-group tokens until the |\edef| -% is terminated, and then the |\afterassignment| token will close the -% group and restore the normal definition. - -\def\ignore_parens{ - \begingroup - \def\do_left_paren{{\iffalse}\fi} - \def\do_right_paren{\iffalse{\fi}} - \def\line_stop{\do_right_paren\line_stop} - \afterassignment\endgroup - \edef\a_macro{\iffalse}\fi -} -\def\line_stop{\x_relax} -% \end{macrocode} -% -\begingroup - \catcode`\(=1 - \catcode`\)=2 - \gdef\pl_string{ - \begingroup - \def\do_left_paren{(\iffalse)\fi} - \def\do_right_paren{\iffalse(\fi)} - \def\line_stop{\iffalse{\fi}\line_stop} - \afterassignment\pl_string_i - \edef\a_macro{\iffalse}\fi - } -\endgroup -\def\pl_string_i{ - \expandafter\endgroup \expandafter\def - \csname string-\sign \expandafter\endcsname - \expandafter{\a_macro} -} - -\def\pl_real#1{\sign#1\hundred_pt} -\newdimen\hundred_pt \hundred_pt=100pt - -% Convert a PL int to a \TeX{} int, assuming it's prefixed -% by |C|, |D|, |O|, or |H|. -% -% \begin{macrocode} -\def\pl_int#1#2{ - \sign \ifx#1C `#2 - \else\ifx#1D #2 - \else\ifx#1O '#2 - \else\ifx#1H "#2 - \else -1\errmessage{Unknown~PL~number~prefix~`#1'} - \fi\fi\fi\fi -} -% \end{macrocode} - - -% \begin{macrocode} -\pl_def_p{NEXTLARGER}(#1~#2){\advance \first_integer \pl_int{#1}{#2}} -\pl_let{BOUNDARYCHAR}{NEXTLARGER} -% \end{macrocode} -% -% -% \begin{macrocode} -\x_cs\let{pl-VTITLE}=\pl_string -\pl_let{FONTNAME}{VTITLE} -\pl_let{FONTAREA}{VTITLE} -% \pl_let{CHECKSUM}{VTITLE} -% % Not really a string, but unsigned numbers can become too large for TeX. -% \pl_let{FONTCHECKSUM}{CHECKSUM} -% Commented out since checksums vary too much. -\pl_def_p{FONTAT}(R~#1){\advance \first_dimen \pl_real{#1}} -\pl_let{FONTDSIZE}{FONTAT} -\pl_let{SELECTFONT}{NEXTLARGER} -\pl_let{SETCHAR}{NEXTLARGER} -\pl_def_p{SETRULE}(R~#1~R~#2){ - \advance \first_dimen \pl_real{#1} - \advance \second_dimen \pl_real{#2} -} -\x_cs\let{pl-POP}\empty_command -\pl_let{PUSH}{POP} -\pl_let{MOVERIGHT}{FONTAT} -\pl_let{MOVELEFT}{FONTAT} -\pl_let{MOVEUP}{FONTAT} -\pl_let{MOVEDOWN}{FONTAT} -\pl_let{SPECIAL}{VTITLE} -\pl_let{SPECIALHEX}{VTITLE} -% \end{macrocode} -% -% - -\pl_let{CODINGSCHEME}{VTITLE} -\pl_let{DESIGNSIZE}{FONTAT} - -\def\pl_parameter#1#2#3{ - \advance \first_integer \pl_int{#1}{#2} - \advance \first_dimen \pl_real{#3} -} - -\pl_def_p{PARAMETER}(#1~#2~R~#3){\pl_parameter{#1}{#2}{#3}} - -\pl_def_p{SLANT}(R~#1){\pl_parameter{D}{1}{#1}} -\pl_def_p{SPACE}(R~#1){\pl_parameter{D}{2}{#1}} -\pl_def_p{STRETCH}(R~#1){\pl_parameter{D}{3}{#1}} -\pl_def_p{SHRINK}(R~#1){\pl_parameter{D}{4}{#1}} -\pl_def_p{XHEIGHT}(R~#1){\pl_parameter{D}{5}{#1}} -\pl_def_p{QUAD}(R~#1){\pl_parameter{D}{6}{#1}} -\pl_def_p{EXTRASPACE}(R~#1){\pl_parameter{D}{7}{#1}} - -\pl_def_p{NUM1}(R~#1){\pl_parameter{D}{8}{#1}} -\pl_def_p{NUM2}(R~#1){\pl_parameter{D}{9}{#1}} -\pl_def_p{NUM3}(R~#1){\pl_parameter{D}{10}{#1}} -\pl_def_p{DENOM1}(R~#1){\pl_parameter{D}{11}{#1}} -\pl_def_p{DENOM2}(R~#1){\pl_parameter{D}{12}{#1}} -\pl_def_p{SUP1}(R~#1){\pl_parameter{D}{13}{#1}} -\pl_def_p{SUP2}(R~#1){\pl_parameter{D}{14}{#1}} -\pl_def_p{SUP3}(R~#1){\pl_parameter{D}{15}{#1}} -\pl_def_p{SUB1}(R~#1){\pl_parameter{D}{16}{#1}} -\pl_def_p{SUB2}(R~#1){\pl_parameter{D}{17}{#1}} -\pl_def_p{SUPDROP}(R~#1){\pl_parameter{D}{18}{#1}} -\pl_def_p{SUBDROP}(R~#1){\pl_parameter{D}{19}{#1}} -\pl_def_p{DELIM1}(R~#1){\pl_parameter{D}{20}{#1}} -\pl_def_p{DELIM2}(R~#1){\pl_parameter{D}{21}{#1}} -\pl_def_p{AXISHEIGHT}(R~#1){\pl_parameter{D}{22}{#1}} - -\pl_let{DEFAULTRULETHICKNESS}{NUM1} -\pl_let{BIGOPSPACING1}{NUM2} -\pl_let{BIGOPSPACING2}{NUM3} -\pl_let{BIGOPSPACING3}{DENOM1} -\pl_let{BIGOPSPACING4}{DENOM2} -\pl_let{BIGOPSPACING5}{SUP1} - -\def\boundarychar_name{BOUNDARYCHAR} -\pl_def_s{LABEL}(#1){ - \def\a_macro{#1} - \ifx \a_macro\boundarychar_name - \x_cs\let{string-\sign}\a_macro - \else - \def\a_macro{\csname pl-LABEL(i\endcsname #1~} - \expandafter\a_macro - \fi -} -\pl_def_p{LABEL(i}(#1~#2){ - \last_character=\first_integer - \advance \first_integer \pl_int{#1}{#2} -} -\pl_def_p{LIG}(#1~#2~#3~#4){ - \advance \first_integer \pl_int{#1}{#2} - \advance \second_integer \pl_int{#3}{#4} -} -\pl_let{/LIG}{LIG} -\pl_let{/LIG>}{LIG} -\pl_let{LIG/}{LIG} -\pl_let{LIG/>}{LIG} -\pl_let{/LIG/}{LIG} -\pl_let{/LIG/>}{LIG} -\pl_let{/LIG/>>}{LIG} - -\pl_let{HEADER}{LIG} - -% \def\pl_lig#1~#2~#3~#4~#5~{ -% \x_cs\def{string-\sign}{#1} -% \def\LIG#1~{ -% \if\ifx #1C 0 -% \else\ifx #1D 0 -% \else\ifx #1H 0 -% \else\ifx #1O 0 \else 1\fi\fi\fi\fi 0 -% % then -% \expandafter\both_of_two -% \else -% \expandafter\first_of_two -% \fi{\pl_lig LIG}{~}#1~ -% } -% \def\/{\pl_lig/} - -\pl_let{KRN}{PARAMETER} -\pl_let{SKIP}{NEXTLARGER} - -\pl_def_s{CHARACTER}(#1~#2){ - \last_character=\first_integer - \advance \first_integer \pl_int{#1}{#2} -} -\pl_let{CHARWD}{FONTAT} -\pl_def_p{CHARHT}(R~#1){ - \def\metric_origin{ht} - \advance \first_dimen \pl_real{#1} -} -\pl_def_p{CHARDP}(R~#1){ - \def\metric_origin{dp} - \advance \first_dimen \pl_real{#1} -} -\pl_def_p{CHARIC}(R~#1){ - \def\metric_origin{ic} - \advance \first_dimen \pl_real{#1} -} - -\pl_let{TOP}{NEXTLARGER} -\pl_let{MID}{NEXTLARGER} -\pl_let{BOT}{NEXTLARGER} -\pl_let{REP}{NEXTLARGER} - -\pl_let{FONTDIMEN}{POP} -\pl_let{LIGTABLE}{POP} -\pl_let{VARCHAR}{POP} -\pl_def_s{MAPFONT}(#1~#2){\advance \first_integer \pl_int{#1}{#2}} -\pl_let{MAP}{POP} - - -% \begin{macrocode} -\catcode`\@=\atcatcode -\catcode`\^^M=\nlcatcode -\catcode`\ =\spacecatcode -\catcode`\~=\tildecatcode -\catcode`\_=\underscorecatcode -% \end{macrocode} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex deleted file mode 100644 index a735a34ed79..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex +++ /dev/null @@ -1,73 +0,0 @@ -\input fontinst.sty -\input comparemetrics.sty - -% % \tracingmacros=1\tracingcommands=2 -% \comparePLs{cmr5.pl}{cmr5.pl} -% -% \bye - -\tracingstats=1 - -\def\oldf{::efficiency:saved:v1.912:} -\def\newf{::efficiency:saved:v1.913:} - -\loadencoding{t1} -\loadencoding{ot1} -\loadencoding{ts1} -\loadencoding{8r} - -\comparePLs{\oldf padb7t.vpl}{\newf padb7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padb8c.vpl}{\newf padb8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padb8t.vpl}{\newf padb8t.vpl}{t1} %OK 11sp -\comparePLs{\oldf padbc7t.vpl}{\newf padbc7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padbc8t.vpl}{\newf padbc8t.vpl}{t1} -\comparePLs{\oldf padbi7t.vpl}{\newf padbi7t.vpl}{ot1} -\comparePLs{\oldf padbi8c.vpl}{\newf padbi8c.vpl}{ts1} -\comparePLs{\oldf padbi8t.vpl}{\newf padbi8t.vpl}{t1} -\comparePLs{\oldf padbo7t.vpl}{\newf padbo7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padbo8c.vpl}{\newf padbo8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padbo8t.vpl}{\newf padbo8t.vpl}{t1} -\comparePLs{\oldf padr7t.vpl}{\newf padr7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padr8c.vpl}{\newf padr8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padr8t.vpl}{\newf padr8t.vpl}{t1} %OK 11sp -\comparePLs{\oldf padrc7t.vpl}{\newf padrc7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padrc8t.vpl}{\newf padrc8t.vpl}{t1} %OK 11sp -\comparePLs{\oldf padri7t.vpl}{\newf padri7t.vpl}{ot1} -\comparePLs{\oldf padri8c.vpl}{\newf padri8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padri8t.vpl}{\newf padri8t.vpl}{t1} -\comparePLs{\oldf padro7t.vpl}{\newf padro7t.vpl}{ot1} %OK 11sp -\comparePLs{\oldf padro8c.vpl}{\newf padro8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padro8t.vpl}{\newf padro8t.vpl}{t1} -\comparePLs{\oldf pads7t.vpl}{\newf pads7t.vpl}{ot1} -\comparePLs{\oldf pads8c.vpl}{\newf pads8c.vpl}{ts1} -\comparePLs{\oldf pads8t.vpl}{\newf pads8t.vpl}{t1} -\comparePLs{\oldf padsc7t.vpl}{\newf padsc7t.vpl}{ot1} -\comparePLs{\oldf padsc8t.vpl}{\newf padsc8t.vpl}{t1} %OK 11sp -\comparePLs{\oldf padsi7t.vpl}{\newf padsi7t.vpl}{ot1} -\comparePLs{\oldf padsi8c.vpl}{\newf padsi8c.vpl}{ts1} %OK 11sp -\comparePLs{\oldf padsi8t.vpl}{\newf padsi8t.vpl}{t1} -\comparePLs{\oldf padso7t.vpl}{\newf padso7t.vpl}{ot1} -\comparePLs{\oldf padso8c.vpl}{\newf padso8c.vpl}{ts1} -\comparePLs{\oldf padso8t.vpl}{\newf padso8t.vpl}{t1} - -\comparePLs{\oldf padb8a.pl}{\newf padb8a.pl}{} -\comparePLs{\oldf padb8r.pl}{\newf padb8r.pl}{8r} -\comparePLs{\oldf padbi8a.pl}{\newf padbi8a.pl}{} -\comparePLs{\oldf padbi8r.pl}{\newf padbi8r.pl}{8r} -\comparePLs{\oldf padbo8r.pl}{\newf padbo8r.pl}{8r} -\comparePLs{\oldf padr8a.pl}{\newf padr8a.pl}{} -\comparePLs{\oldf padr8r.pl}{\newf padr8r.pl}{8r} -\comparePLs{\oldf padrc8a.pl}{\newf padrc8a.pl}{} -\comparePLs{\oldf padrc8r.pl}{\newf padrc8r.pl}{8r} -\comparePLs{\oldf padri8a.pl}{\newf padri8a.pl}{} -\comparePLs{\oldf padri8r.pl}{\newf padri8r.pl}{8r} -\comparePLs{\oldf padro8r.pl}{\newf padro8r.pl}{8r} -\comparePLs{\oldf pads8a.pl}{\newf pads8a.pl}{} -\comparePLs{\oldf pads8r.pl}{\newf pads8r.pl}{8r} -\comparePLs{\oldf padsc8a.pl}{\newf padsc8a.pl}{} -\comparePLs{\oldf padsc8r.pl}{\newf padsc8r.pl}{8r} -\comparePLs{\oldf padsi8a.pl}{\newf padsi8a.pl}{} -\comparePLs{\oldf padsi8r.pl}{\newf padsi8r.pl}{8r} -\comparePLs{\oldf padso8r.pl}{\newf padso8r.pl}{8r} - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex deleted file mode 100644 index f5e9dd03a2d..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex +++ /dev/null @@ -1,8 +0,0 @@ -%&Plain -\input fontinst.sty - -\installfonts - \installfont{foo}{scaledtest scaled 300}{ot1}{OT1}{zzz}{m}{n}{} -\endinstallfonts - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex deleted file mode 100644 index a92823e7210..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex +++ /dev/null @@ -1,62 +0,0 @@ -\input fontinst.sty - -\edef\spacecatcode{\the\catcode`\ } -\edef\nlcatcode{\the\catcode`\^^M} -\edef\atcatcode{\the\catcode`\@} -\edef\underscorecatcode{\the\catcode`\_} -\edef\tildecatcode{\the\catcode`\~} -\catcode`\ =9 -\catcode`\^^M=9 -\catcode`\@=11 -\catcode`\_=11 -\catcode`\~=10 - -\def\Mtxtopl#1#2{{ - \open_out{#2.pl} - \top_of_pl_hook - \out_line{(COMMENT~raw~font~#2~created~by~fontinst~ - v\fontinstversion)} - \out_line{} - \out_line{(COMMENT~Filename:~#2.pl)} - \out_line{(COMMENT~Created~by:~tex~\jobname)} - \out_line{(COMMENT~Created~using:~\string\mtxtopl{#1}{#2})} - \out_line{} - \out_line{(COMMENT~This~file~can~be~turned~into~a~ligless~TeX~font~ - with)} - \out_line{(COMMENT~pltotfm~#2.pl~#2.tfm)} - \out_line{} - \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)} - \out_line{} - \out_line{(DESIGNSIZE~R~10.0)} - \out_line{} - \let\setglyph=\iffalse - \let\endsetglyph=\fi - \let\setkern=\gobble_three - \let\setrawglyph=\Pl_raw_glyph - \inputmtx{#1} - \out_line{} - \out_line{(COMMENT~END~OF~FILE~#2.pl)} - \close_out{Raw~font} -}} -\def\Pl_raw_glyph#1#2#3#4#5#6#7#8{ - \a_count=#4 - \out_line{(CHARACTER~\vpl_int\a_count\space(COMMENT~#1)} - \out_lline{(CHARWD~R~\make_factor{#5})} - \out_lline{(CHARHT~R~\make_factor{#6})} - \out_lline{(CHARDP~R~\make_factor{#7})} - \out_lline{(CHARIC~R~\make_factor{#8})} - \out_lline{)} -} - - -\catcode`\@=\atcatcode -\catcode`\^^M=\nlcatcode -\catcode`\ =\spacecatcode -\catcode`\~=\tildecatcode -\catcode`\_=\underscorecatcode - -\batchmode -\for(n){1}{500}{1}\Mtxtopl{cmr5}{cmr5.new}\endfor(n) - -\bye - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex deleted file mode 100644 index 544642aae45..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex +++ /dev/null @@ -1,208 +0,0 @@ -% A testbed for font evaluation (see The METAFONTbook, Appendix H) - -\tracinglostchars=0 -\tolerance=1000 -\raggedbottom -\nopagenumbers -\parindent=0pt -\newlinechar=`@ -\hyphenpenalty=200 -\doublehyphendemerits=30000 -\hyphenation{prom-i-nent} - -\newcount\m \newcount\n \newcount\p \newdimen\dim -\chardef\other=12 - -\def\today{\ifcase\month\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December\fi - \space\number\day, \number\year} -\def\hours{\n=\time \divide\n 60 - \m=-\n \multiply\m 60 \advance\m \time - \twodigits\n\twodigits\m} -\def\twodigits#1{\ifnum #1<10 0\fi \number#1} - -\def\init{\message{@Name of the font to test = } - \read-1 to\fontname \startfont - \message{Now type a test command (\string\help\space for help):}} -\def\startfont{\font\testfont=\fontname \spaceskip=0pt - \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours} - \medskip - \testfont \setbaselineskip - \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt - \else\rightskip=0pt plus 2em \fi - \spaceskip=\fontdimen2\testfont % space between words (\raggedright) - \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont} - -{\catcode`\|=0 \catcode`\\=\other -|gdef|help{|message{% -\init switches to another font;@% -\end or \bye finishes the run;@% -\table prints the font layout in tabular format;@% -\text prints a sample text, assuming TeX text font conventions;@% -\sample combines \table and \text;@% -\mixture mixes a background character with a series of others;@% -\alternation interleaves a background character with a series;@% -\alphabet prints all lowercase letters within a given background;@% -\ALPHABET prints all uppercase letters within a given background;@% -\series prints a series of letters within a given background;@% -\lowers prints a comprehensive test of lowercase;@% -\uppers prints a comprehensive test of uppercase;@% -\digits prints a comprehensive test of numerals;@% -\math prints a comprehensive test of TeX math italic;@% -\names prints a text that mixes upper and lower case;@% -\punct prints a punctuation test;@% -\bigtest combines many of the above routines;@% -\help repeats this message;@% -and you can use ordinary TeX commands (e.g., to \input a file).}}} - -\def\setbaselineskip{\setbox0=\hbox{\n=0 -\loop\char\n \ifnum \n<255 \advance\n 1 \repeat} -\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 } - -\def\setchar#1{{\escapechar-1\message{\string#1 character = }% - \def\do##1{\catcode`##1=\other}\dospecials - \read-1 to\next - \expandafter\finsetchar\next\next#1}} -\def\finsetchar#1#2\next#3{\global\chardef#3=`#1 - \ifnum #3=`\# \global\chardef#3=#2 \fi} -\def\promptthree{\setchar\background - \setchar\starting \setchar\ending} - -\def\mixture{\promptthree \domix\mixpattern} -\def\alternation{\promptthree \domix\altpattern} -\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1} -\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0} -\def\domix#1{\par\chardef\0=\background \n=\starting - \loop \chardef\1=\n #1\endgraf - \ifnum \n<\ending \advance\n 1 \repeat} - -\def\!{\discretionary{\background}{\background}{\background}} -\def\series{\promptthree \!\doseries\starting\ending\par} -\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat} -\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par} -\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par} -\def\compdigs{\!\doseries{`0}{`9}\par} -\def\alphabet{\setchar\background\complower} -\def\ALPHABET{\setchar\background\compupper} - -\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}} -\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}} -\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}} -\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2 - \loop{#1} \ifnum\background<#3\m=\background\advance\m 1 - \chardef\background=\m \repeat \chardef\background=#4 - \loop{#1} \ifnum\background<#5\m=\background\advance\m 1 - \chardef\background=\m \repeat} - -\def\names{ {\AA}ngel\aa\ Beatrice Claire - Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris - Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave - Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula - Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par} -\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid} - \dopunct{HIE}\dopunct{TIP}\dopunct{fluff} - \$1,234.56 + 7/8 = 9\% @ \#0\par} -\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par} - -\def\bigtest{\sample - hamburgefonstiv HAMBURGEFONSTIV\par - \names \punct \lowers \uppers \digits} - -\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial - \mathchardef\Gamma="100 \mathchardef\Delta="101 - \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104 - \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107 - \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A - \def\ii{i} \def\jj{j} - \def\\##1{|##1|+}\mathtrial - \def\\##1{##1_2+}\mathtrial - \def\\##1{##1^2+}\mathtrial - \def\\##1{##1/2+}\mathtrial - \def\\##1{2/##1+}\mathtrial - \def\\##1{##1,{}+}\mathtrial - \def\\##1{d##1+}\mathtrial - \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial} -\newcount\skewtrial \skewtrial='177 -\def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L \\M \\N \\O - \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z \\a \\b \\c \\d \\e \\f \\g - \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y - \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta - \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau - \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi - \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon - \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par} -\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests - \def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L - \\M \\N \\O \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z$\par} - \math\endgroup} - -\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal - \m=\n \divide\m by 64 \xdef\0{\the\m}% - \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} -\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% - \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% - \global\p=\lastpenalty}} % \p=1 if none of the characters exist -\def\oddline{\cr - \noalign{\nointerlineskip} - \multispan{19}\hrulefill& - \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr - \noalign{\nointerlineskip}} -\newif\ifskipping -\def\evenline{\loop\skippingfalse - \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m - \expandafter\setdigs\meaning\next \testrow - \ifnum\p=1 \skippingtrue \fi\fi - \ifskipping \global\advance\n 16 \repeat - \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi - \next} -\def\morechart{\cr\noalign{\hrule\penalty5000} - \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} - \chartline \evenline} -\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} -\def\chartstrut{\lower4.5pt\vbox to14pt{}} -\def\table{$$\global\n=0 - \halign to\hsize\bgroup - \chartstrut##\tabskip0pt plus10pt& - &\hfil##\hfil&\vrule##\cr - \lower6.5pt\null - &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -\def\endchart{\cr\noalign{\hrule} - \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& - &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} -\def\:{\setbox0=\hbox{\char\n}% - \ifdim\ht0>7.5pt\reposition - \else\ifdim\dp0>2.5pt\reposition\fi\fi - \box0\global\advance\n 1 } -\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0 - \advance\dim 2pt \dp0=\dim} -\def\centerlargechars{ - \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} - -\def\text{{\advance\baselineskip-4pt -\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz} -\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi -On November 14, 1885, Senator \& Mrs.~Leland Stanford called -together at their San Francisco mansion the 24~prominent men who had -been chosen as the first trustees of The Leland Stanford Junior University. -They handed to the board the Founding Grant of the University, which they -had executed three days before. This document---with various amendments, -legislative acts, and court decrees---remains as the University's charter. -In bold, sweeping language it stipulates that the objectives of the University -are ``to qualify students for personal success and direct usefulness in life; -and to promote the publick welfare by exercising an influence in behalf of -humanity and civilization, teaching the blessings of liberty regulated by -law, and inculcating love and reverence for the great principles of -government as derived from the inalienable rights of man to life, liberty, -and the pursuit of happiness.'' \moretext -(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}} -\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres -often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole -in fluffy souffl\'es? } -\def\omitaccents{\let\moretext=\relax} - -\def\sample{\table\text} - -\ifx\noinit!\else\init\fi diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex deleted file mode 100644 index c54452d45e1..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex +++ /dev/null @@ -1,41 +0,0 @@ -\input fontinst.sty - -\transformfont{padr8r} {\reencodefont{8r}{\fromafm{padr8a}}} -\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}} -\transformfont{pads8r} {\reencodefont{8r}{\fromafm{pads8a}}} -\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} -\fromafm{padr8x} -\fromafm{pads8x} - -\installfonts - -\installfamily{T1}{pad} {} -\installfamily{T1}{padx}{} -\installfamily{T1}{padj}{} - -\installfont{padrc8t}{padrc8r,latin} - {T1}{T1}{pad}{m}{sc}{} -\installfont{padrc9e} - {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon, - resetsc,latinsc} - {T1c}{T1}{padx}{m}{sc}{} -\installfont{padrc9d} - {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon, - resetosf,resetsc,latinsc} - {T1cj}{T1}{padj}{m}{sc}{} - -\installfont{padsc8t}{padsc8r,latin} - {T1}{T1}{pad}{m}{sc}{} -\installfont{padsc9e} - {kernoff,pads8r,pads8x,kernon,glyphoff,padsc8r,glyphon, - resetsc,latinsc} - {T1c}{T1}{padx}{sb}{sc}{} -\installfont{padsc9d} - {kernoff,pads8r,pads8x,kernon,glyphoff,padrc8r,glyphon, - resetosf,resetsc,latinsc} - {T1cj}{T1}{padj}{sb}{sc}{} - -\endinstallfonts -\bye - - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx deleted file mode 100644 index 624a39bf81d..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx +++ /dev/null @@ -1,22 +0,0 @@ -\relax - -% This is a test MTX file for the new implementation of -% the \transformfont stuff. - -\metrics - -\setint{italicslant}{0} -\setint{italicslant}{100} -\setint{xheight}{400} - -\setrawglyph{a}{v1901test}{10.95pt}{10} {500}{400}{0}{40} -\setrawglyph{g}{v1901test}{10.95pt}{10} {500}{400}{-300}{40} - -\setkern{a}{g}{100} - -\setglyph{ag} - \glyphpcc{a}{0}{500} - \glyphpcc{g}{500}{0} -\endsetglyph - -\endmetrics \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex deleted file mode 100644 index 81a6218f679..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex +++ /dev/null @@ -1,214 +0,0 @@ -% Test of fontinst v1.901. -% Started 1999/03/13. -\input fontinst.sty - -% Part one---test of pooled file allocation. -\catcode`\_=11 -\catcode`\@=11 - -\def\show_out_filenames{% - \immediate\write16{\string\count17=\the\count17}% - \for(i){-1}{16}{1}% - \immediate\write16{Stream \strint{i}: - \x_cs\meaning{out_filename-\strint{i}}% - }% - \endfor(i)% -} - -% %1 Standard usage -% \show_out_filenames -% \open_pout\tF{\jobname.out} -% \show_out_filenames -% \pout_line\tF{Hello world!} -% \close_pout\tF{Test output} -% \show_out_filenames -% % Seems to work fine. - -% %2 Allocating LOTS of files. -% \newcount\j_count -% \newcount\k_count -% \j_count=0 -% \k_count=1 -% \for(o){1}{48}{1} -% \x_cs\open_pout{F-\strint{o}}{\jobname.\strint{o}}% -% \ifodd \int{o} \else -% \x_cs\pout_line{F-\the\k_count}{% -% open=\strint{o} close=\the\j_count\space write=\the\k_count -% }% -% \multiply \k_count \thr@@ -% \advance \k_count \@ne -% \d_count=\k_count -% \divide \d_count \int{o}% -% \multiply \d_count \int{o}% -% \advance \k_count -\d_count -% \advance \k_count \@ne -% \advance \j_count \@ne -% \x_cs\close_pout{F-\the\j_count}{Test data}% -% \fi -% \d_count=\int{o}% -% \divide \d_count 8% -% \multiply \d_count 8% -% \advance \d_count -\int{o}% -% \ifnum 0=\d_count \show_out_filenames \fi -% \endfor(o) -% % Seems to work fine as well. - - -%% Part two---test of reimplemented \transformfont stuff -%% Part two B---test of \recordtransforms stuff - -\recordtransforms{mapfrags.tex} -\transformfont{v1901test1}{ - \xscalefont{2000}{\reencodefont{t1c}{\frommtx{v1901test}}} -} -\transformfont{v1901test2}{ - \yscalefont{500}{\xscalefont{2000}{\frommtx{v1901test}}} -} -\transformfont{v1901test3}{ - \reencodefont{t1}{\slantfont{100}{\frommtx{v1901test}}} -} -\endrecordtransforms - - -\bye - -%% Part three---test of reglyphing - -\reglyphfonts - \resetcommand\iftokeep#1\then{\ifnum 0<#1} - % This means that an AFM command will survive the conversion only if - % it refers to at least one renamed glyph and not refer to any killed - % glyph. - -% \offmtxcommand\setrawglyph -% \offmtxcommand\setglyph -% % This reglyphing file is inteded for extracting information from the -% % AFM file of a Caps, Small caps, and Oldstyle figures fonts--with the -% % intention to build a corresponding virtual font with glyphs that are -% % present in the Regular and Expert Regular variants instead. Hence -% % there is no need for \setrawglyph or \setglyph commands (the -% % dimensions of the characters are known from the Reg. and Exp.Reg. -% % AFM's), but the \setkern commands are most interesting (since 8x -% % fonts don't contain any upper case letters, and hence has no kerning -% % pairs between these and the small caps either). - - - \renameglyph{dollaroldstyle}{dollar} - \renameglyph{ampersandsmall}{ampersand} - - \renameglyph{zerooldstyle}{zero} - \renameglyph{oneoldstyle}{one} - \renameglyph{twooldstyle}{two} - \renameglyph{threeoldstyle}{three} - \renameglyph{fouroldstyle}{four} - \renameglyph{fiveoldstyle}{five} - \renameglyph{sixoldstyle}{six} - \renameglyph{sevenoldstyle}{seven} - \renameglyph{eigtholdstyle}{eight} - \renameglyph{nineoldstyle}{nine} - - \renameglyph{Asmall}{a} - \renameglyph{Bsmall}{b} - \renameglyph{Csmall}{c} - \renameglyph{Dsmall}{d} - \renameglyph{Esmall}{e} - \renameglyph{Fsmall}{f} - \renameglyph{Gsmall}{g} - \renameglyph{Hsmall}{h} - \renameglyph{Ismall}{i} - \renameglyph{Jsmall}{j} - \renameglyph{Ksmall}{k} - \renameglyph{Lsmall}{l} - \renameglyph{Msmall}{m} - \renameglyph{Nsmall}{n} - \renameglyph{Osmall}{o} - \renameglyph{Psmall}{p} - \renameglyph{Qsmall}{q} - \renameglyph{Rsmall}{r} - \renameglyph{Ssmall}{s} - \renameglyph{Tsmall}{t} - \renameglyph{Usmall}{u} - \renameglyph{Vsmall}{v} - \renameglyph{Wsmall}{w} - \renameglyph{Xsmall}{x} - \renameglyph{Ysmall}{y} - \renameglyph{Zsmall}{z} - - \renameglyph{centoldstyle}{cent} - - % \renameglyph{FIsmall}{fi} - % \renameglyph{FLsmall}{fl} - % These two aren't really necessary, since the ligature `fi' looks - % exactly as the letters `f'`i' next to each others. - \killglyph{fi} - \killglyph{fl} - - \renameglyph{Gravesmall}{grave} - \renameglyph{Acutesmall}{acute} - \renameglyph{Circumflexsmall}{circumflex} - \renameglyph{Tildesmall}{tilde} - \renameglyph{Macronsmall}{macron} - \renameglyph{Brevesmall}{breve} - \renameglyph{Dotaccentsmall}{dotaccent} - \renameglyph{Dieresissmall}{dieresis} - \renameglyph{Ringsmall}{ring} - \renameglyph{Cedillasmall}{cedilla} - \renameglyph{Ogoneksmall}{ogonek} - \renameglyph{Caronsmall}{caron} - - \renameglyph{AEsmall}{ae} - \renameglyph{dotlessIsmall}{dotlessi} - \renameglyph{Lslashsmall}{lslash} - \renameglyph{Oslashsmall}{oslash} - \renameglyph{OEsmall}{oe} - % \renameglyph{SSsmall}{germandbls} - % This isn't really needed in the AGaramond font family, since `SSsmall' - % looks exactly like `Ssmall'`Ssmall' - \killglyph{germandbls} - - \renameglyph{Oacutesmall}{oacute} - \renameglyph{Odieresissmall}{odieresis} - \renameglyph{Ucircumflexsmall}{ucircumflex} - - \renameglyph{Uacutesmall}{uacute} - \renameglyph{Eacutesmall}{eacute} - \renameglyph{Iacutesmall}{iacute} - \renameglyph{Icircumflexsmall}{icircumflex} - - \renameglyph{Thornsmall}{thorn} - \renameglyph{Yacutesmall}{yacute} - - \renameglyph{Ocircumflexsmall}{ocircumflex} - \renameglyph{Otildesmall}{otilde} - \renameglyph{Ntildesmall}{ntilde} - \renameglyph{Ydieresissmall}{ydieresis} - \renameglyph{Ethsmall}{eth} - \renameglyph{Acircumflexsmall}{acircumflex} - \renameglyph{Aringsmall}{aring} - \renameglyph{Ccedillasmall}{ccedilla} - - \renameglyph{Ugravesmall}{ugrave} - \renameglyph{Zcaronsmall}{zcaron} - \renameglyph{Idieresissmall}{idieresis} - \renameglyph{Agravesmall}{agrave} - - \renameglyph{Ogravesmall}{ograve} - - \renameglyph{Udieresissmall}{udieresis} - \renameglyph{Edieresissmall}{edieresis} - \renameglyph{Aacutesmall}{aacute} - \renameglyph{Igravesmall}{igrave} - \renameglyph{Idieresissmall}{idieresis} - \renameglyph{Adieresissmall}{adieresis} - - \renameglyph{Scaronsmall}{scaron} - \renameglyph{Egravesmall}{egrave} - \renameglyph{Atildesmall}{atilde} - \renameglyph{Ecircumflexsmall}{ecircumflex} - - \reglyphfont{K-padrc}{gdsc} - \reglyphfont{K-padsc}{padsc8a} -\endreglyphfonts - - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex deleted file mode 100644 index 7274fb76597..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex +++ /dev/null @@ -1,11 +0,0 @@ -\input fontinst.sty - -\generalpltomtx{cmr5}{cmr5;1}{pl}{OT1} -\generalpltomtx{padr9d}{padr9d;1}{vpl}{} -\generalpltomtx{padr9d}{padr9d;2}{vpl}{OT1} - -\transformfont{cmr5;2}{\fromplgivenetx{cmr5}{OT1}} -\transformfont{padr9d;3}{\fromvpl{padr9d}} -\transformfont{padr9d;4}{\fromvplgivenetx{padr9d}{OT1}} - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex deleted file mode 100644 index 47117acc5fb..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex +++ /dev/null @@ -1,22 +0,0 @@ -\input fontinst.sty -\catcode`\_=11\catcode`\ =9\catcode`\^^M=9 -\catcode`\~=10\catcode`\@=11 - -\fontinst_error{Hungarian}{ - I~will~not~buy~this~record,\message_break - it~is~scratched -}\error_help_a - -\fontinst_warning{Hungarian}{Your~hovercraft~is~full~of~eels} - -\fontinst_info{Hungarian}{That~will~be~six~pence,~please} - -\fontinst_warning_no_line{Hungarian}{ - Do~you~want~to~come~home~to~my~place\message_break - and~pantsy~pantsy? -} - - - - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx deleted file mode 100644 index 94306a07b32..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx +++ /dev/null @@ -1,64 +0,0 @@ -\relax -% v1906test.mtx -% -% A test of the nokerning commands and the \glyphbboxright IE. - - -\metrics - -\for(i){0}{20}{1} - \setglyph{c\strint{i}} - \glyphrule{20}{\mul{\add{\int{i}}{1}}{20}} - \movert{\mul{20}{\int{i}}} - \endsetglyph -\endfor(i) - - -\setglyph{d} - \for(i){5}{10}{1} - \glyphpcc{c\strint{i}}{\int{i}}{\int{i}} - \endfor(i) - \resetint{j}{\glyphbboxright} - \immediate\write16{\string\glyphbboxright=\strint{j}} - \glyph{c20}{1000} - \resetint{j}{\glyphbboxright} - \immediate\write16{\string\glyphbboxright=\strint{j}} -\endsetglyph - - -\for(i){0}{20}{1} - \for(j){0}{20}{1} - \setkern{c\strint{i}}{c\strint{j}}{\mul{\int{i}}{\int{j}}} - \endfor(j) -\endfor(i) - -\noleftkerning{c1,c3,c5,c7,c9,c11,c13,c15,c17,c19} -\immediate\write16{\expandafter\meaning\csname a_macro\endcsname} -\norightkerning{c1,c3,c5,c7,c9} - -% \resetint{i}{0} -% \loop -% \setkern{c\strint{i}}{c\strint{i}}{-50} -% \resetint{j}{\sub{20}{\int{i}}} -% \resetkern{c\strint{i}}{c\strint{j}}{-100} -% \ifnum 20>\int{i} -% \resetint{i}{\add{\int{i}}{1}} -% \repeat - - -% \resetint{i}{0} -% \loop -% \ifiskern{c3}{c\strint{i}}\then -% \resetint{T}{\kerning{c3}{c\strint{i}}} -% \message{c3:c\strint{i} has kern \strint{T} units^^J} -% \else -% \message{c3:c\strint{i} no kern^^J} -% \fi -% \ifnum 20>\int{i} -% \resetint{i}{\add{\int{i}}{1}} -% \repeat - - - -\endmetrics - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex deleted file mode 100644 index 92ed6281198..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex +++ /dev/null @@ -1,12 +0,0 @@ -%&Plain -% Test of fontinst v1.906. -% Begun 1999/08/01. -\input fontinst.sty - -\installfonts - \installfamily{U}{ztest1}{} - \installfont{v1906test}{v1906test}{v1906test}{U}{ztest1}{m}{n}{} -\endinstallfonts - -\bye - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex deleted file mode 100644 index b9382cdf898..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex +++ /dev/null @@ -1,21 +0,0 @@ -\input fontinst.sty - -\recordtransforms{v1913test.recs} - -\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} -\transformfont{padr8r-ys}{\yscalefont{\div{397000}{663}}{\frommtx{padr8r}}} -\reglyphfonts - \renameglyph{oneoldstyle}{one} - \reglyphfont{padr8r-ys2}{padr8r-ys} -\endreglyphfonts - -\installfonts - \installfamily{T1}{pad}{} - \installfamily{8r}{pad}{} - \installfont{padr9d}{padr8r,padr8r-ys2,padr8x,latin}{t1j}{T1}{pad}{m}{n}{} - \installrawfont{padr8r2}{padr8r-ys}{8r}{8r}{pad}{m}{n}{} -\endinstallfonts - -\endrecordtransforms - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex deleted file mode 100644 index 73b271b986c..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex +++ /dev/null @@ -1,50 +0,0 @@ -\input fontinst.sty - -%1 -\recordtransforms{v1914test.recs} - -\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} -\for(x){0}{2}{1} - \for(y){0}{2}{1} - \transformfont{p-ad-rr--8r--\strint{x}=\strint{y}}{ - \xscalefont{\add{\mul{\int{x}}{300}}{700}}{ - \yscalefont{\add{\mul{\int{y}}{300}}{700}}{ - \frommtx{padr8r}}}} - \endfor(y) -\endfor(x) - -\installfonts - \installfamily{T1}{padxy}{} - \installfamily{8r}{padxy}{} - \for(x){0}{2}{1} - \for(y){0}{2}{1} - \installfont{p-ad-rr--8t--\strint{x}=\strint{y}} - {p-ad-rr--8r--\strint{x}=\strint{y},latin} - {t1}{T1}{padxy}{m\strint{x}\strint{y}}{n}{} - \installrawfont{p-ad-rr--8r--\strint{x}=\strint{y}} - {p-ad-rr--8r--\strint{x}=\strint{y},8r} - {8r}{8r}{padxy}{m\strint{x}\strint{y}}{n}{} - \endfor(y) - \endfor(x) -\endinstallfonts - -\endrecordtransforms - -% % \tracingmacros=1\tracingcommands=2 -% %2 -% \installfonts -% \installrawfont{cmr5}{cmr5,\metrics -% \resetint{xheight}{\mul{\int{xheight}}{2}},kernoff}{ot1}{OT1} -% {cmr}{m}{n}{5} -% \installfont{padr18t}{padr8r scaled 856,% -% \metrics \message{% -% \ifisint{rawscale}\then\strint{rawscale}\else None\fi -% }% -% \expandafter\show \csname g-A\endcsname -% ,latin,% -% \metrics \message{% -% \ifisint{rawscale}\then\strint{rawscale}\else None\fi -% }}{t1}{T1}{pad}{m}{ns}{} -% \endinstallfonts - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex deleted file mode 100644 index 9b1921bbc8d..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex +++ /dev/null @@ -1,17 +0,0 @@ -\input finstmsc.sty - -\resetstr{PSfontsuffix}{.pfb} -\adddriver{dvipdfm}{v1914test.dvipdfm} -\adddriver{pltotf}{v1914test.sh} % v1.915 feature, actually -\input v1914test.recs -\donedrivers - -\AssumeLWFN -\adddriver{dvips}{v1914test.map} -\adddriver{debug}{v1914test.debug} -\debugvalue{PS_font_file} -\input v1914test.recs -\donedrivers - - -\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex deleted file mode 100644 index bd7a957b0a8..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex +++ /dev/null @@ -1,22 +0,0 @@ -\documentclass{article} - - -\newcommand\fontxy[2]{% - \usefont{T1}{padxy}{m#1#2}{n}% - Flygande b\"ackasiner s\"oka hwila p\r{a} mjuka tuvor% -} - - -\begin{document} - -$$ - \hss - \begin{tabular}{lll} - \fontxy00& \fontxy10& \fontxy20\\ - \fontxy01& \fontxy11& \fontxy21\\ - \fontxy02& \fontxy12& \fontxy22 - \end{tabular} - \hss -$$ -\end{document} - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex deleted file mode 100644 index b60946a402b..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex +++ /dev/null @@ -1,25 +0,0 @@ -\input fontinst.sty - -% %1: Catcodes -% \def\do#1{Catcode of `\string#1 = \the\catcode`#1 ^^J} -% \def\showcatcodes{\message{\do{\ }\do{\^^M}\do{\@}\do{\_}\do{\~}}} -% -% \showcatcodes -% \show\fontinstcc -% \fontinstcc -% \showcatcodes -% \show\normalcc -% \normalcc -% \showcatcodes - -%2: Aliased glyphs -\input Knuth:fontinst:New.fontinst:cyrfinst:etc:fnstcorr.tex -\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} -\def\renameglyph#1#2{\galias{#1}{#2}} -\input csc2x.tex -\transformfont{padscx8r}{\reencodefont{8r}{\fromafm{padsc8a}}} -% När glyfnamnen har tagits bort från de omkodade PL-filerna så är -% de i allt väsentligt lika. Sålunda tycks det fungera! - - -\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex deleted file mode 100644 index 7e83526cd40..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex +++ /dev/null @@ -1,9 +0,0 @@ -\input finstmsc.sty -\adddriver{pltotf}{v1915test.sh} -\input v1914test.recs -\donedrivers -\setstr{TFMfileprefix}{:a:b:c:} -\adddriver{pltotf}{v1915test.sh2} -\input v1913test.recs -\donedrivers -\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx deleted file mode 100644 index 1829c79d02d..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx +++ /dev/null @@ -1,23 +0,0 @@ -\relax - -\documentclass[twocolumn]{article} -\usepackage{fontdoc} - -\errorcontextlines=999 - -\begin{document} - -\metrics - -\foreach(glyph){a,b,c,d,tilde,\strint{a},db\str{a}ef,AB\str{glyph}CD} - \resetglyph{\str{glyph}} - \glyph{\str{glyph}}{1000} - \resetitalic{0} - \endresetglyph -\endfor(glyph) - - -\endmetrics - - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex deleted file mode 100644 index 56f26a51b0f..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex +++ /dev/null @@ -1,14 +0,0 @@ -% v1916test.tex - -\input fontinst.sty - -% \half and \otherhalf -\fontinstcc -\for(i){-5}{5}{1} - \eval_expr_to\b_count{\half{\int{i}}} - \eval_expr{\otherhalf{\int{i}}} - \immediate\write16{\strint{i}:~\the\b_count \space+~ \the\result} -\endfor(i) -\normalcc - -\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex deleted file mode 100644 index 8cc954f2615..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex +++ /dev/null @@ -1,27 +0,0 @@ -%&Plain -\input fontinst.sty - -% %1 \ifareglyphs -% -% \setrawglyph{f}{xfont}{10pt}{102}{375}{750}{375}{50} -% \setrawglyph{g}{xfont}{10pt}{102}{375}{750}{375}{50} -% \setrawglyph{h}{xfont}{10pt}{102}{375}{750}{375}{50} -% -% \ifareglyphs{}\then True \else False \fi -% \ifareglyphs{a}\then True \else False \fi -% \ifareglyphs{f}\then True \else False \fi -% \ifareglyphs{f,a}\then True \else False \fi -% \ifareglyphs{a,f}\then True \else False \fi -% \ifareglyphs{f,g}\then True \else False \fi -% \ifareglyphs{f,g,a}\then True \else False \fi - -%2 \setfontdimen -\generalpltomtx{ecrm1000}{ecrm1000}{pl}{t1draft} -\generalpltomtx{ecss1000}{ecss1000}{pl}{t1draft} -\transformfont{ecdh-shrunk}{% - \yscalefont{500}{\fromplgivenetx{ecdh1000}{t1draft}}% -} - -\bye - - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex deleted file mode 100644 index ede00d90444..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex +++ /dev/null @@ -1,47 +0,0 @@ -%&Plain - -\input fontinst.sty - -% %1 -% \transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} -% \transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}} -% -% \installfonts -% \installfamily{T1}{pad2}{} -% \installfont{zpad2i8t}{padri8r scaled 1009,% -% padr8r scaled 999 suffix -upright scaled 1009,\metrics -% % \expandafter\show \csname r-T-upright\endcsname -% \unsetglyph{parenleft} -% \setglyph{parenleft} -% \glyph{parenleft-upright}{1000} -% \endsetglyph -% \resetglyph{parenright} -% \glyph{parenright-upright}{1000} -% \endresetglyph,latin}{t1}{T1}{pad2}{m}{it}{} -% \endinstallfonts - -% %2 -% -% \installfonts -% \installfamily{U}{fad}{} -% \installfont{fadrr}{fadrr}{textfdim,fadrr mtxasetx}{U}{fad}{m}{n}{} -% \endinstallfonts - -% %3 -% \transformfont{pagk8r}{\reencodefont{8r}{\fromafm{pagk8a}}} -% \installfonts -% \installfont{pagk8t}{pagk8r,newlatin}{t1}{T1}{pag}{m}{n}{} -% \endinstallfonts - -%4 -\installfonts - \installfont{test}{rsfs10 encoding rsfs,cmsy10}{oms}{OMS}{xxx}{m}{n}{} -\endinstallfonts -% %4b -% \installfonts -% \installfont{test}{cmsy10,rsfs10 encoding rsfs}{oms}{OMS}{xxx}{m}{n}{} -% \endinstallfonts - - -\bye - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex deleted file mode 100644 index b21f16bf60e..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex +++ /dev/null @@ -1,18 +0,0 @@ -%&Plain - -\input finstmsc.sty - -% %1 -% \etxtoenc{ot1}{temp} - -%2 -\storemapdata{a}{\fromafm{a}{XX}}{} -\storemapdata{a}{\fromafm{a}{XX}}{} -\storemapdata{a}{\fromafm{a}{XY}}{} -\storemapdata{a}{\fromafm{a}{XX}}{} -\storemapdata{a}{\fromafm{a}{XX}}{\reencodefont{8r}} - - - -\bye - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex deleted file mode 100644 index 8242cc3438c..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex +++ /dev/null @@ -1,13 +0,0 @@ -%&Plain - -\input finstmsc.sty - -%1 -\etxtocmap{t1draft}{temp} -\etxtocmap{ot1draft}{ot1} -\etxtocmap{omsdraft}{oms} - - - -\bye - diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex deleted file mode 100644 index c9b099e643c..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex +++ /dev/null @@ -1,32 +0,0 @@ -\documentclass{article} - - - - -\def\FontWithCMap#1#2#3{% - \font#1=#2\relax - \immediate\pdfobj stream file {#3}% - \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% -} -\def\AddCMapToFont#1#2{% - \immediate\pdfobj stream file {#2}% - \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% -} - - -\begin{document} - - -\FontWithCMap\test{cmr12}{ot1.cmap} -\test abcdef ghijkl mnopqr stuvwx yz fi fl ffi ffl - - -\begin{math} - a - \AddCMapToFont{\textfont2}{oms.cmap} - \mathcal{A} - \mathcal{B} + \mathcal{C} * \mathcal{D} \cdot - \mathcal{E} \bullet \mathcal{F} \spadesuit -\end{math} - - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex new file mode 100644 index 00000000000..a23be98dd27 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex @@ -0,0 +1,1443 @@ +\documentclass[a4paper]{article} + +\usepackage{array} + +\makeatletter +\@ifundefined{l@nohyphenation}{\newlanguage\l@nohyphenation}{} +\DeclareRobustCommand\meta[1]{% + \ensuremath{\langle}% + \sbox{\z@}{% + \setlanguage\l@nohyphenation + \normalfont\itshape #1\/% + \setlanguage\language + }% + \unhbox\z@ + \ensuremath{\rangle}% +} +\makeatother +\DeclareRobustCommand\marg[1]{% + \texttt{\char`\{}\meta{#1}\texttt{\char`\}}% +} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\makeatletter +\DeclareTextFontCommand\textsmaller{% + \fontsize{\scaledsize{\f@size}}{\f@baselineskip}\selectfont +} +\newcommand\scaledsize[1]{% + \ifdim #1\p@>6\p@ + \ifdim #1\p@>7\p@ + \ifdim #1\p@>8\p@ + \ifdim #1\p@>9\p@ + \ifdim #1\p@>10\p@ + \ifdim #1\p@>11\p@ + \ifdim #1\p@>12\p@ + \ifdim #1\p@>14\p@ 14% + \else 12\fi + \else 11\fi + \else 10\fi + \else 9\fi + \else 8\fi + \else 7\fi + \else 6\fi + \else 5\fi +} +\makeatother +\DeclareRobustCommand\ETX{\textsmaller{ETX}} +\DeclareRobustCommand\PDF{\textsmaller{PDF}} + +% From tugboat.cls +\def\thinskip{\hskip 0.16667em\relax} +\def\endash{--} +\def\emdash{\endash-} +\makeatletter +\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} +\def\dash{\d@sh\nobreak\endash} +\def\Dash{\d@sh\nobreak\emdash} +\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} +\def\rdash{\d@sh\nobreak\endash} +\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} +\def\Rdash{\d@sh\nobreak\emdash} +\newcommand{\La}% + {L\kern-.36em + {\setbox0\hbox{T}% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }} +\IfFileExists{mflogo.sty}% + {\RequirePackage{mflogo}}% + {\TBWarning + {Package mflogo.sty not available --\MessageBreak + Proceeding to emulate mflogo.sty} + \DeclareRobustCommand\logofamily{% + \not@math@alphabet\logofamily\relax + \fontencoding{U}\fontfamily{logo}\selectfont} + \DeclareTextFontCommand{\textlogo}{\logofamily} + \def\MF{\textlogo{META}\-\textlogo{FONT}\@} + \def\MP{\textlogo{META}\-\textlogo{POST}\@} + \DeclareFontFamily{U}{logo}{} + \DeclareFontShape{U}{logo}{m}{n}{% + <8><9>gen*logo% + <10><10.95><12><14.4><17.28><20.74><24.88>logo10% + }{} + \DeclareFontShape{U}{logo}{m}{sl}{% + <8><9>gen*logosl% + <10><10.95><12><14.4><17.28><20.74><24.88>logosl10% + }{} + \DeclareFontShape{U}{logo}{m}{it}{% + <->ssub*logo/m/sl% + }{}% + } +\makeatother +\def\AllTeX{(\La\kern-.075em)\kern-.075em\TeX} + +\usepackage{shortvrb} +\MakeShortVerb{\|} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\newcommand{\TeXOmega}{Omega} +\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} +\DeclareRobustCommand\package[1]{\textsf{#1}} + +\providecommand*{\href}[2]{#2} +\newcommand*{\ctanref}[2]{\href{ftp://ftp.ctan.org/#1}{#2}} + +\title{Writing \ETX\ format font encoding specifications} +\author{Lars Hellstr\"om} +\date{2003/07/09} + +\begin{document} +\maketitle + +\begin{abstract} + This paper explains how one writes formal specifications of font + encodings for \LaTeX\ and suggests a ratification procedure for such + specifications. +\end{abstract} + + +\tableofcontents + +\vspace{0mm plus 35mm} +\pagebreak[2] + + +\section{Introduction} + +One of the many difficult problems any creator of a new typesetting +system encounters is that of \emph{font construction}\Dash to create +fonts that provide all information that the typesetting system needs +to do its job. From the early history of \TeX, we learn that this +problem is so significant that it motivated the creation of \TeX's +companion and equal \MF, whose implementation proved to be an even +greater scientific challenge than \TeX\ was. It is also a tell-tale +sign that the \texttt{fonts} subtree of the te\TeX\ distribution is +about three times as large as the \texttt{tex} subtree: fonts are +important, and not at all trivial to generate. + +The most respected and celebrated part of font construction is +\emph{font design}\Ldash the creation from practically nothing of new +letter (and symbol) shapes, in pursuit of an artistic +vision\Dash but it is also something very few people have the time +and skill to carry through. More common is the task of \emph{font +installation}, where one has to solve the very concrete problem of how +to set up an existing font so that it can be used with \AllTeX. The +subproblems in this domain ranges from the very technical\Ldash how +to make different pieces of software ``talk'' to each other, for +example making information in file format~$A$ available to +program~$B$\Dash to the almost artistic\Ldash finding values for +glyph metrics and kerns that will make them look good in text\Dash +but these extremes tend to be clearly defined even if solving them +can be hard, so they are not what will be considered here. Rather, +this paper is about a class of more subtle problems that have to do +with how a font is organised. + +The technical name for such a ``font organisation'' is a \emph{font +encoding}. In some contexts, font encodings are assumed to be mere +mappings from a set of ``slots'' to a set of glyph identifiers, but +in \TeX\ the concept entails much more; the various aspects are +detailed in subsequent sections. For the moment, it is sufficient to +observe that the role that a font encoding plays in a typesetting +system is that of a standard: it describes what an author can expect +from a font, so that a document or macro package can be written that +work with a large class of fonts rather than just for one font family. +The world of \AllTeX\ would be very different if papers published in +journal $X$ that is printed in commercial font $Y$ could not use +essentially the same sources as the author prepared for typesetting +in the free font $Z$. Fine-tuning of a document (overfull lines, bad +page breaks, etc.\@) depends on the exact font used, but it is a great +convenience that one can typeset a well-coded body of text under a +rather wide range of layout parameter (of which the main font family +is one) values and still expect the result to look decent, often even +good. Had font encodings not been standardised, the results might not +even have been readable. + +When font encodings are viewed as standards, the historical states of +most \AllTeX\ font encodings becomes rather embarrassing, as they +lack something as fundamental as proper specifications! The typical +origin of a font encoding has been that some\-one creates a font that +behaves noticably different from other fonts, macro packages are then +created to support this new font, and in time other people create other +fonts that work with the same macros. At the end of this story the new +encoding exists, but it is not clear who created it, and there is +probably no document that describes all aspects of the encoding. Later +contributors have typically had to rely on a combination of imitation +of previous works, folklore, and reverse engineering of existing +software when trying to figure out what they need to provide, but the +results are not always verifiable. Furthermore the errors in this area +are usually silent\Ldash the classical error being that a `\textdollar' +was substituted for a `\textsterling' (or vice versa)\Dash which means +they can only be discovered through careful proofreading, and then +only \emph{provided} there at all exists a document which exercises +all aspects of the font encoding. Since font encodings interact with +hyphenation, exhaustive font verification through proofreading is +probably beyond the capabilities of any living \TeX pert on purely +linguistic grounds. + +Proper specifications of font encodings makes the task of font +installation\Ldash and to some extent also the task of font design, +as it too is subject to the technicalities of font encodings\Dash +much simpler, as there is then a document that authoratively gives +all details of a font encoding. This paper even goes one step further, +and proposes (i)~a standard format for formal specifications of +\AllTeX\ font encodings and (ii)~a process through which such +specifications can be ratified as \emph{the} specification of a +particular encoding. My hope is that future \AllTeX\ font encodings +will have proper specifications from the start, as this will greatly +simplify making more fonts available in these encodings, and perhaps +also make font designers aware of the subtler points of \AllTeX\ font +design, as many details have been poorly documented. + +The proposed file format for encoding specifications is a development +of the \textsf{fontinst}~\cite{fontinst-pre} \ETX\ format. One reason +for this choice was that it is an established format; many of those +who are making fonts already use it, even if for a slightly +different purpose. Another major reason is that an \ETX\ file is both +a \LaTeX\ document and a processable data file; this is the same kind +of bilinguality that has made the \texttt{.dtx} format so useful. +Finally the \ETX\ format makes it easy to create experimental font +installations when a new encoding is being designed; \textsf{fontinst} +can directly read the file, but the file can also be automatically +converted to a PostScript encoding vector if that approach seems more +convenient. +On the other hand, there are some features\Ldash most notably the +prominent role of the glyph names\Dash of the \ETX\ format that would +probably had been done differently in a file format that was built +from scratch, but this is necessary for several of the advantages +listed above. + + +% \paragraph*{Why should one make formal specifications?} +% Because the informal specifications that we have today +% are incomplete and hard to use. E.g.\ the \LaTeX\ +% \meta{enc}\texttt{enc.def} files only say something about the +% characters that are accessed via commands, and even for those you +% really have to do reverse engineering to figure out what the +% encoding contains. To figure out what the remaining characters +% should do you have to compile what the various user manuals claim +% to work and then work backwards from that, but I don't think the +% general problem of which character tokens are allowed in input is +% thoroughly treated anywhere. On top of that, \LaTeX\ itself +% contributes some character tokens when the document is being +% typeset.\footnote{This is basically the ``a \texttt{T}$*$ encoding +% must contain the characters \ldots'' problem that was the reason +% that the \texttt{T2} encoding had to be split up.} +% +% On the other side of things there are the files which tell e.g. +% \textsf{fontinst} or \textsf{AFMtoTFM} what the target font +% encoding is. These are basically recipes which are known (?\@) to +% produce valid results, and they do usually provide more +% information about the encoding than the sources listed above, but +% they don't give much information about where the recipe can be +% modified. + +% \paragraph*{Why use the \ETX\ format?} + + +\section{Points to keep in mind} + +\subsection{Characters, glyphs, and slots} + +One fundamental difference one must understand is that between +characters and glyphs. A \emph{character} is a semantic entity---it +carries some meaning, even if you usually have to combine several +characters to make up even one word---whereas a \emph{glyph} simply +is a piece of graphics. In printed text, glyphs are used to represent +characters and the first step of reading is to determine which +character(s) a given glyph is representing.\footnote{Some \PDF\ viewers +also try to accomplish this, but in general they need extra +information to do it right. The generic solution provided is to embed +a \emph{ToUnicode CMap}\Ldash which is precisely a map from slots to +characters\Rdash in the \PDF\ font object.} + +In the output, \TeX\ neither deals with characters nor glyphs, really +(although many of its messages speak of characters), but with +\emph{slots}, which essentially are numbered positions in a font. To +\TeX, a slot is simply something which can have certain metric +properties (width, height, depth, etc.\@) but to the driver which +actually does the printing the slot also specifies a glyph. The same +slot in two different fonts can correspond to two quite different +characters. + +For completeness it should also be mentioned that the \emph{input} of +\TeX\ is a stream of semantic entities and thus \TeX\ is dealing with +characters on that side, but the input is not the subject of this +paper. + + +\subsection{Ligatures} + +In typography, a \emph{ligature} is a glyph which has been formed by +joining glyphs that represent two or more characters; this joining can +involve quite a lot of deformation of the original shapes. Examples +of ligatures are the `fi' ligature (from `f' and `i'), the `\AE' +ligature (from `A' and `E'), and the `\textit{\&}' character (from `E' +and `t'), the latter two of which has evolved to become characters of +their own. For those ligatures (such as `fi') that have not evolved to +characters, \TeX\ has a mechanism for forming the ligature out of the +characters it is composed from, under the guidance of ligature\slash +kerning programs found in the font. + +More technically, what happens is really that if the |\char| (or +equivalent) for one slot is immediately followed by the |\char| (or +equivalent) for another (or the same) slot and there is a ligaturing +instruction in the \texttt{\small LIGKERN} table of the current font +which applies to this slot pair then this ligaturing instruction is +executed. This usually replaces the two slots in the pair with a +single new slot specified by the ligaturing instruction (it could +also keep one or both of the original slots, but that is less common). +\TeX\ has no idea about whether these replacements change the meaning +of anything, but \TeX\ assumes that it doesn't, and it is up to the +font designer to ensure that this is the case. + +Apart from forming ligatures in text, the ligaturing mechanism of +\TeX\ is traditionally also employed for another task which is much +more problematic. Ligatures are also used to produce certain +characters which are not part of visible ASCII---the most common are +the endash (typed as |--|) and the emdash (typed as |---|). This is a +problem because it violates \TeX's assumption that the meaning is +unchanged; the classical problem with this appears in the \texttt{OT2} +encoding, where the Unicode character \texttt{U+0446} +(\textsc{cyrillic small letter tse}) could be typed as |ts|, whilst +the |t| and |s| by themselves produced Unicode characters +\texttt{U+0442} (\textsc{cyrillic small letter te}) and \texttt{U+0441} +(\textsc{cyrillic small letter es}) respectively. \TeX's hyphenation +mechanism can however decompose ligatures, so it sometimes happened +that the \textsc{tse} was hyphenated as \textsc{te}-\textsc{es}, +which is quite different from what was intended. Since this is such +an obvious disadvantage, the use of ligatures for forming non-English +letters quickly disappeared after 8-bit input encodings became +available. The practice still remains in use for punctuation, however, +and the font designer must be aware of this. For many font encodings +there is a set of ligatures which must be present and replace two or +more characters by a single, different character. These ligatures are +called \emph{mandatory ligatures} in this paper. + +The use of mandatory ligatures in new font encodings is strongly +discouraged, for a number of reasons. The main problem is that they +create unhealthy dependencies between input and output encoding, +whereas these should ideally be totally independent. Using ligatures +in this way complicates the internal representation of text, and it +also makes it much harder to typeset text where those ligatures are not +wanted (such as verbatim text). Furthermore it creates problems with +kerning, since the ``ligature'' has not yet been formed when a kern +to the left of it is inserted. Finally, a much better solution (when +it is available) is to use an \TeXOmega\ translation process +(see~\cite[Sec.~8--11]{Omega-doc}), since that \emph{is} independent +of the font, different translations can be combined, and they can +easily handle even ``abbreviations'' much more complicated than those +ligatures can deal with. + + +\subsection{Output stages} + +On its way out of \LaTeX\ towards the printed text, a character passes +through a number of stages. The following five seem to cover what is +relevant for the present discussion: +\begin{enumerate} + \item \emph{\LaTeX\ Internal Character Representation} (LICR); + see~\cite{LaTeXCompanion}, Section~7.11 for a full description. + At this point the character is a character token (e.g.~|a|), + a text command (e.g.~|\ss|), or a combination (e.g.~|\H{o}|). + \item \emph{Horizontal material;} this is what the character is + en route from \TeX's mouth to its stomach. For most characters + this is equivalent to a single |\char| command (e.g.\ |a| is + equivalent to |\char|\,|97|), but some require more than one, some + are combined using the |\accent| and |\char| commands, some + involve rules and\slash or kerns, and some are built using boxes + that arbitrarily combine the above elements. + \item \emph{DVI commands;} this is the DVI file commands that + produce the printed representation of the character. + \item \emph{Printed text;} this is the graphical representation of + the character, e.g. as ink on paper or as a pattern on a computer + screen. Here the text consists of glyphs. + \item \emph{Interpreted text;} this is essentially printed text + modulo equivalence of interpretation, hence the text doesn't really + reach this stage until someone reads it. Here the text consists of + characters. +\end{enumerate} + +In theory there is a universal mapping from LICR to interpreted text, +but various technical restrictions make it impossible to simultaneously +support the entire mapping. A \LaTeX\ encoding selects a restriction +of this mapping to a limited set which will be ``well supported'' +(meaning kerning and such between characters in the set works), whereas +elements outside this set at best can be supported through temporary +encoding changes. The encoding also specifies a decomposition of the +mapping into one part which maps LICR to horizontal material and one +part which maps horizontal material to interpreted text. The first +part is realized by the text command definitions usually found in the +\meta{enc}\texttt{enc.def} file for the encoding. The second part is +the font encoding, the specification of which is the topic of this +paper. It is also worth noticing that an actual font is a mapping of +horizontal material to printed text. + +An alternative decomposition of the mapping from LICR to interpreted +text would be at the DVI command level, but even though this +decomposition is realized in most \TeX\ implementations, it has very +little relevance for the discussion of encodings. The main reason for +this is that it depends not only on the encoding of a font, but +also on its metrics. Furthermore it is worth noticing that in e.g.\ +pdf\TeX\ there need not be a DVI command level. + + +\subsection{Hyphenation} + +There are strong connections between font encoding and hyphenation because +\TeX's hyphenation mechanism operates on horizontal material; more +precisely the hyphenation mechanism only works on pieces of horizontal +material that are equivalent to sequences of |\char| commands. This +implies that hyphenation patterns, as selected via the |\language| +parameter, are not only for a specific language, they are also for a +specific font encoding. + +The hyphenation mechanism uses the |\lccode| values to distinguish +between three types of slots: lower case letters (|\lccode|\(\,n = +n\)), upper case letters (|\lccode|\(\,n \notin \{0,n\}\)), and +non-letters (|\lccode|\(\,n = 0\)); only the first two types can be +part of a hyphenatable word and only lower case letters are needed +in the hyphenation patters. This does however place severe +restrictions on how letters can be placed in a text font because +\TeX\ uses the same |\lccode| values for all text in a paragraph and +therefore these values cannot be changed whenever the encoding changes. +In \LaTeX\ the |\lccode| table is not allowed to change at all and +consequently all text font encodings must work using the standard set +of |\lccode| values. + +In \eTeX\ each set of hyphenation patterns has its own set of +|\lccode| values for hyphenation, so the problem isn't as severe +there. The hyphenation mechanism of \TeXOmega\ should become +completely independent of the font encoding, although the last time I +checked it was still operating on material encoded according to +a font encoding. + + +\subsection{Production and specification \ETX\ files} + +Finally, it is worth pointing out the difference between an \ETX\ file +created for the specification of a font encoding and one created for +being used in actually producing fonts with this encoding. They are +usually not the same. Specification \ETX s certainly may be of direct +use in the production of fonts---especially experimental fonts +produced as part of the work on a new encoding---but they are usually +not ideal for the purpose. In particular there is often a need to +switch between alternative names for a glyph to accommodate what is +actually in the fonts, but such trickeries are undesirable +complications in a specification. On the other hand a production +\ETX\ file has little need for verbose comments, whereas they are rather +an advantage in a specification \ETX\ file. + +Therefore one shouldn't be surprised if there are two \ETX\ files for a +specific encoding: one which is a specification version and one which +is a production version. If both might need to be in the same +directory then one should, as a rule of thumb, include a +`\texttt{spec}' in the name of the specification version. + + +\section{Font encoding specifications} +\label{Sec:FontEncSpec} + +\subsection{Basic principles} + +Most features of the font encoding are categorized as either +\emph{mandatory} or \emph{ordinary}. The mandatory features are what +macros may rely on, whereas the ordinary simply are something which +fonts with this encoding normally provide. Font designers may choose +to provide other features than the ordinary, but are recommended to +provide the ordinary features to the extent that the available +resources permit. + +Many internal references in the specification are in the form of +\emph{glyph names} and the choice of these is a slightly tricky +matter. From the point of formal specification, the choices can be +completely arbitrary, but from the point of practical usefulness they +most likely are not. One of the main advantages of the \ETX\ format +for specifications is that such specifications can also be used to +make experimental implementations, but this requires that the glyph +names in the specification are the same as those used in the fonts +from which the experimental implementation should be built. Yet +another aspect is that the glyph names are best chosen to be the ones +one can expect to find in actual fonts, as that will make things +easier for other people that want to make non-experimental +implementations later. For this last purpose, a good reference is +Adobe's technical note on Unicode and glyph names~\cite{unicodesign}. +For most common glyphs, \cite{unicodesign} ends up recommending that +one should follow the Adobe glyph list~\cite{AGL}, which however has +the peculiar trait of recommending names on the form +\texttt{afii}\textit{ddddd} (rather than the Unicode-based alternative +\texttt{uni}\textit{xxxx}) for most non-latin glyphs. This is somewhat +put in perspective by~\cite{ATN5013}. + + +\subsection{Slot assignments} + +The purpose of the slot assignments is to specify for each slot which +character or characters it is mapped to. That one slot is mapped to +many characters is an unfortunate, but not very uncommon, reality in +many encodings, as limitations in font size have often encouraged +identifications of two characters which are almost the same. It should +be avoided in new encodings. + +Slot assignmets are done using the |\nextslot| command and a +|\setslot| \dots\ |\endsetslot| construction as follows: +\begin{quote} + |\nextslot|\marg{slot number}\\* + |\setslot|\marg{glyph name}\\* + \mbox{\quad}\meta{slot commands}\\* + |\endsetslot| +\end{quote} +A typical example of this is +\begin{quote}\begin{verbatim} +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} +\endsetslot +\end{verbatim}\end{quote} +which gets typeset as +\begin{quote} + \textbf{Slot 65 `\texttt{A}'}\\* + Unicode character \texttt{U+0041}, \textsc{latin capital letter a}. +\end{quote} + +The |\nextslot| command does not typeset anything; it simply stores +the slot number in a counter, for later use by |\setslot|. The +|\endsetslot| command increments this counter by one. Hence the +|\nextslot| command is unnecessary between |\setslot|s for consecutive +slots. Besides |\nextslot|, there is also a command |\skipslots| which +increments the slot number counter by a specified amount. The +argument of both |\nextslot| and |\skipslots| can be arbitrary +\package{fontinst} integer expressions (see~\cite{fontinst-man}). All +\TeX\ \meta{number}s that survive full expansion are valid +\package{fontinst} integer expressions, but for example |`\~| isn't, +as |\~| is a macro which will break before the expression is typeset. +These cases can however be fixed by preceding the \TeX\ \meta{number} +by |\number|, as |\number`\~| survives full expansion by expanding to +|126|. + +The main duty of the \meta{slot commands} is to specify the target +character (or characters) for this slot. The simplest way of doing +this is to use the |\Unicode| command, which has the syntax +\begin{quote} + |\Unicode|\marg{code point}\marg{name} +\end{quote} +The \meta{code point} is the number of the character (in hexadecimal +notation, usually a four-digit number) and the \meta{name} is the name. +Case is insignificant in these arguments. If a slot corresponds to a +string of characters rather than to a single character, then one uses +the |\charseq| command, which has the syntax +\begin{quote} + |\charseq|\marg{\cs{Unicode} commands} +\end{quote} +e.g. +\begin{quote}\begin{verbatim} +\nextslot{30} +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } +\endsetslot +\end{verbatim}\end{quote} +Several |\Unicode| commands not in the argument of a |\charseq| +instead mean that each of the listed characters is a valid +interpretation of the slot. + +If a character cannot be specified in terms of Unicode code points then +the specification should simply be a description in text which +identifies the character. Such descriptions are written using the +|\comment| command +\begin{quote} + |\comment|\marg{text} +\end{quote} +It is worth noticing that the \meta{text} is technically only an +argument of |\comment| when the program processing the \ETX\ file is +ignoring |\comment| commands. This means |\verb| and similar +catcode-changing commands \emph{can} be used in the \meta{text}. The +|\par| command is on the other hand not allowed in the \meta{text}. + +The |\comment| command should also be used for any further piece of +explanation of or commentary to the character used for the slot, if the +exposition seems to need it. There can be any number of |\comment| +commands in the \meta{slot commands}. + + +\subsection{Ligatures} + +There are three classes of ligatures in the font encoding +specifications: mandatory, ordinary, and odd. Mandatory ligatures must +be present in any font which complies with the encoding, whereas +ordinary and odd ligatures need not be. No clear distinction can be +made between ordinary and odd ligatures, but a non-mandatory ligature +should be categorized as ordinary if it makes sense for the majority +of users, and as odd otherwise. Hence the `fi' ligature is +categorized as ordinary in the \texttt{T1} encoding (although it +makes no sense in Turkish), whereas the `ij' ligature is odd. + +In the \ETX\ format, a ligature is specified using one of the slot +commands +\begin{quote} + |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new} +\end{quote} +|\Ligature| is used for mandatory ligatures, |\ligature| is used for +ordinary ligatures, and |\oddligature| is used for odd ligatures. The +\meta{right} and \meta{new} arguments are names of the glyphs being +assigned to the slots involved in this ligature. The \meta{right} +specifies the right part in the slot pair being affected by the +ligature, whereas the left part is the one of the |\setslot| \dots\ +|\endsetslot| construction in which the ligaturing command is placed. +The \meta{new} specifies a new slot which will be inserted by the +ligaturing instruction. The \meta{ligtype} is the actual ligaturing +instruction that will be used; it must be |LIG|, |/LIG|, |/LIG>|, +|LIG/|, |LIG/>|, |/LIG/|, |/LIG/>|, or |/LIG/>>|. The slashes specify +retention of the left or right original character; the |>| signs +specify passing over that many slots in the result without further +ligature processing. \meta{note}, finally, is a piece of text which +explains when the odd ligature may be appropriate. It is typeset as a +footnote. + +As an example of ligatures we find the following in the specification +of the \texttt{T1} encoding: +\begin{quote} + |\nextslot{33}|\\ + |\setslot{exclam}|\\ + | \Unicode{0021}{EXCLAMATION MARK}|\\ + | \Ligature{LIG}{quoteleft}{exclamdown}|\\ + |\endsetslot| +\end{quote} +It is typeset as +\begin{quote} + \textbf{Slot 33 `\texttt{exclam}'}\\* + Unicode character \texttt{U+0021}, \textsc{exclamation mark}.\\* + \textbf{Mandatory ligature} + \texttt{exclam}${}*{}$\texttt{quoteleft}${}\rightarrow + {}$\texttt{exclamdown} +\end{quote} +With other \meta{ligtype}s there may be more names listed on the +right hand side and possibly a `$\lfloor$' symbol showing the +position at which ligature processing will start afterwards. + + +\subsection{Math font specialities} + +There are numerous technicalities which are special to math fonts, but +only a few of them are exhibited in \ETX\ files.\footnote{For an +overview of the subject, see for example Vieth~\cite{Vieth2001}.} Most +of these have to do with the \TeX\ mechanisms that find sufficiently +large characters for commands like |\left|, |\sqrt|, and |\widetilde|. + +The first mechanism for this is that a character in a font can sort of +say ``If I'm too small, then then try character \dots\ instead''. This +is expressed in an \ETX\ file using the |\nextlarger| command, which +has the syntax +\begin{quote} + |\nextlarger|\marg{glyph name} +\end{quote} +The second mechanism constructs a sufficiently large character from +smaller pieces; this is known as a `varchar' or `extensible character'. +This is expressed in an \ETX\ file using an ``extensible recipe'', the +syntax for which is +\begin{quote} + |\varchar| \meta{varchar commands} |\endvarchar| +\end{quote} +where each \meta{varchar command} is one of +\begin{quote} + |\varrep|\marg{glyph name}\\ + |\vartop|\marg{glyph name}\\ + |\varmid|\marg{glyph name}\\ + |\varbot|\marg{glyph name} +\end{quote} +There can be at most one of each and their order is irrelevant. The +most important is the |\varrep| command, as that is the part which is +repeated until the character is sufficiently large. The |\vartop|, +|\varmid|, and |\varbot| commands are used to specify some other part +which should be put at the top, middle, and bottom of the extensible +character respectively. Not all extensible recipes use all of these, +however. + +As an example, here is how a very large left brace is constructed: +\begin{center} + \begin{tabular}{>{% + \fontencoding{OMX}\fontfamily{cmex}\selectfont + $\vcenter\bgroup\hbox\bgroup + }l<{\egroup\egroup$} l} + \char"38& For |\vartop{bracelefttp}|\\ + \char"3E& For |\varrep{braceex}|\\ + \char"3C& For |\varmid{braceleftmid}|\\ + \char"3E& Again for |\varrep{braceex}|\\ + \char"3A& For |\varbot{braceleftbt}| + \end{tabular} +\end{center} + +Both |\nextlarger| and |\varchar| commands are like |\ligature| in +that they describe ordinary features for the encoding; they appear in +a specification \ETX\ file mainly to explain the purpose of some +ordinary character. There is no such thing as a mandatory |\nextlarger| +or |\varchar|, but varchars are occationally used to a similar effect. +In these cases, the character generated by the extensible recipe is +something quite different from what a |\char| for that slot would +produce. Thus for the slot to produce the expected result it must be +referenced using a |\delimiter| or |\radical| primitive, since those +are the only ones which make use of the extensible recipe. The effect +is that the slot has a \emph{semimandatory} assignment; the result of +|\char| is unspecified (as for a slot with an ordinary assignment), but +the result for a large delimiter or radical is not (as for a slot with +a mandatory assignment). + +Thus some math fonts have an extra section ``Semimandatory characters'' +between the mandatory and ordinary character sections. In that section +for the \texttt{OMX} encoding we find for example +\begin{quote}\begin{verbatim} +\nextslot{60} +\setslot{braceleftmid} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is the large size of the |\Arrowvert| + delimiter, a glyphic variation on |\Vert|. + The \texttt{braceleftmid} glyph ordinarily + placed in this slot must not be too tall, + or else the extensible recipe actually producing + the character might sometimes not be used.} + \varchar + \varrep{arrowvertex} + \endvarchar +\endsetslot +\end{verbatim}\end{quote} +which is typeset as +\begin{quote} + \textbf{Slot 60 `\texttt{braceleftmid}'}\\* + Unicode character \texttt{U+2016}, \textsc{double vertical line}.\\ + This is the large size of the |\Arrowvert| + delimiter, a glyphic variation on |\Vert|. + The \texttt{braceleftmid} glyph ordinarily + placed in this slot must not be too tall, + or else the extensible recipe actually producing + the character might sometimes not be used.\\ + \textbf{Extensible glyph:}\\* + \textbf{Repeated} \texttt{arrowvertex} +\end{quote} + + + + +\subsection{Fontdimens} + +Each \TeX\ font contains a list of fontdimens, numbered from $1$ and +up, which are accessible via the |\fontdimen| \TeX\ primitive. Quite a +few are also used implicitly by \TeX\ and therefore cannot be left out +even if they are totally irrelevant, but as one can always include +some extra fontdimens in a font---the only bounds on how many +fontdimens there may be are the general bound on the size of a TFM +file and the amount of font memory \TeX\ has available---this is +usually not a problem. + +The reason fontdimens are part of font encoding specifications is +that the meaning of e.g.\ |\fontdimen|\,|8| varies between different +fonts depending on their encoding; thus the encoding specification +must define the quantity stored in each |\fontdimen| parameter. This +is done using the |\setfontdimen| command, which has the syntax +\begin{quote} + |\setfontdimen|\marg{number}\marg{name} +\end{quote} +The \meta{number} is the fontdimen number (as a sequence of decimal +digits where the first digit isn't zero) and the \meta{name} is a +symbolic name for the quantity. + +The standard list of symbolic names for fontdimen quantities appears +below; the listed quantities should always be described using the names +in this list. Encoding specifications that employ other quantities as +fontdimens should include definitions of these quantities. Those +quantities that are defined as ``Formula parameter \dots'' have to +do with how mathematical formulae are rendered and are usually much +too complicated to explain here. For exact definitions of these +parameters, the reader is referred to Appendix~G of \textit{The +\TeX book}~\cite{TeXbook}. +\begin{list}{}{% + \setlength\labelwidth{0pt}% + \setlength\itemindent{-\leftmargin}% + \def\makelabel#1{\hspace{\labelsep}\normalfont\itshape #1}% + \setlength\itemsep{0.5\itemsep}% + \setlength\parsep{0.5\parsep}% +} +\item[acccapheight] + The height of accented full capitals. +\item[ascender] + The height of lower case letters with ascenders. +\item[axisheight] Formula parameter $\sigma_{22}$. +\item[baselineskip] + The font designer's recommendation for natural length of the + \TeX\ parameter |\baselineskip|. +\item[bigopspacing1] Formula parameter $\xi_{9}$. +\item[bigopspacing2] Formula parameter $\xi_{10}$. +\item[bigopspacing3] Formula parameter $\xi_{11}$. +\item[bigopspacing4] Formula parameter $\xi_{12}$. +\item[bigopspacing5] Formula parameter $\xi_{13}$. +\item[capheight] + The height of full capitals. +\item[defaultrulethickness] Formula parameter $\xi_{8}$. +\item[delim1] Formula parameter $\sigma_{20}$. +\item[delim2] Formula parameter $\sigma_{21}$. +\item[denom1] Formula parameter $\sigma_{11}$. +\item[denom2] Formula parameter $\sigma_{12}$. +\item[descender] + The depth of lower case letters with descenders. +\item[digitwidth] + The median width of the digits in the font. +\item[extraspace] + The natural width of extra interword glue at the end of a sentence. + \TeX\ implicitly uses this parameter if |\spacefactor| is $2000$ or + more and |\xspaceskip| is zero. +\item[interword] + The natural width of interword glue (spaces). \TeX\ implicitly uses + this parameter unless |\spaceskip| is nonzero. +\item[italicslant] + The slant per point of the font. Unlike all other fontdimens, it is + not proportional to the font size. +\item[maxdepth] + The maximal depth over all slots in the font. +\item[maxheight] + The maximal height over all slots in the font. +\item[num1] Formula parameter $\sigma_{8}$. +\item[num2] Formula parameter $\sigma_{9}$. +\item[num3] Formula parameter $\sigma_{10}$. +\item[quad] + The quad width of the font, normally approximately equal to the + font size and\slash or the width of an `M'. Also implicitly available + as the length unit |em| and used for determining the size of the + length unit |mu|. +\item[shrinkword] + The (finite) shrink component of interword glue (spaces). \TeX\ + implicitly uses this parameter unless |\spaceskip| is nonzero. +\item[stretchword] + The (finite) stretch component of interword glue (spaces). \TeX\ + implicitly uses this parameter unless |\spaceskip| is nonzero. +\item[sub1] Formula parameter $\sigma_{16}$. +\item[sub2] Formula parameter $\sigma_{17}$. +\item[subdrop] Formula parameter $\sigma_{19}$. +\item[sup1] Formula parameter $\sigma_{13}$. +\item[sup2] Formula parameter $\sigma_{14}$. +\item[sup3] Formula parameter $\sigma_{15}$. +\item[supdrop] Formula parameter $\sigma_{18}$. +\item[verticalstem] + The dominant width of vertical stems. This quantity is meant to be used + as a measure of how ``dark'' the font is. +\item[xheight] + The x-height (height of lower case letters without ascenders). Also + implicitly available as the length unit |ex|. +\end{list} + + +\subsection{The codingscheme} + +The final encoding-dependent piece of information in a \TeX\ font is +the codingscheme, which is essentially a string declaring what +encoding the font has. This information is currently only used by +programs that convert the information in a \TeX\ font to some other +format and these use it to identify the glyphs in the font. Therefore +this string should be chosen so that the contents of the slots in the +font can be positively identified. Observe that the encoding +specification by itself does not provide enough information for this, +since there are usually a couple of slots that do not contain +mandatory characters. On the other hand, it is not a problem in this +context if the font leaves some of the slots (even mandatory ones) +empty as that is anyway easily detected. The only problem is with +fonts where the slots are assigned to other characters than the ones +specified in the encoding. + +For that reason, it is appropriate to assign two codingscheme strings +to each encoding. The main codingscheme is for fonts were all slots +(mandatory and ordinary alike) have been assigned according to the +specification or have been left empty. The variant codingscheme is for +fonts where some ordinary slots have been assigned other characters +than the ones listed in the specification, but where the mandatory +slots are still assigned according to the specification or are left +empty. The font encoding specification should give the main +codingscheme name, whereas the variant codingscheme name could be +formed by adding \verb*| VARIANT| to the main codingscheme name. + +Technically the codingscheme is specified by setting the +\texttt{codingscheme} string variable. This has the syntax +\begin{quote} + |\setstr{codingscheme}|\marg{codingscheme name} +\end{quote} +e.g. +\begin{quote} + |\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN}| +\end{quote} +which is typeset as +\begin{quote} + \textbf{Default} s(\texttt{codingscheme}) = + \verb*|EXTENDED TEX FONT ENCODING - LATIN| +\end{quote} +A codingscheme name may be at most 40 characters long and may not +contain parentheses. If the entire \verb*| VARIANT| cannot be suffixed +to a main name because the result becomes to long (as in the above +example) then use the first 40 characters of the result. + + +\subsection{Overall document structure} +\label{Ssec:Structure} + +The overall structure of a font encoding specification should be +roughly the following +\begin{quote} + |\relax|\\ + |\documentclass[twocolumn]{article}|\\ + |\usepackage[specification]{fontdoc}|\\ + \meta{preamble}\\ + |\begin{document}|\\ + \meta{title}\\ + \meta{manifest}\\ + |\encoding|\\ + \meta{body}\\ + |\endencoding|\\ + \meta{discussion}\\ + \meta{change history}\\ + \meta{bibliography}\\ + |\end{document}| +\end{quote} +The commands described in the preceding subsections must all go in +the \meta{body} part of the document, as that is the only part of the +file which actually gets processed as a data file. The part before +|\encoding| is skipped and the part after |\endencoding| is never +even input, so whatever appears there is only part of the \LaTeX\ +document. For the purposes of processing as a data file, the +important markers in the file are the |\relax|, the |\endcoding|, and +the |\endencoding| commands. + +The \meta{title} is the usual |\maketitle| (and the like) stuff. The +person or persons who appear as author(s) are elsewhere in this paper +described as the \emph{encoding proposers}. The \meta{title} should +also give the date when the specification was last changed. + +The \meta{manifest} is an important, although usually pretty short, +part of the specification. It is a piece of text which explains the +purpose of the encoding (in particular what it can be used for) and +the basic ideas (if any) which have been used in its construction. It +is often best marked up as an abstract. + +The \meta{discussion} is the place for any longer comments on the +encoding, such as analyses of different implementations, comparisons +with other encodings, etc. This is also the place to explain any more +general structures in the encoding, such as the arrow kit in the +proposed \texttt{MS2} encoding~\cite{ClasenVieth}. In cases where the +specification is mainly a formulation of what is already an +established standard the \meta{discussion} is often rather short as +the relevant discussion has already been published elsewhere, but +it is anyway a service to the reader to include this information. +References to the original documents should always be given. + +It might be convenient to include an FAQ section at the end of the +discussion. This is particularly suited for explaining things where +one has to look for a while and consult the references to find the +relevant information. + +The \meta{change history} documents how the specification has changed +over time. It is preferably detailed, as each detail in an encoding +is important, but one should not be surprised if it is anyway rather +short due to that there haven't been that many changes. + +The \meta{bibliography} is an important part of the specification. It +should at the very least include all the sources which have been used +in compiling the encoding specification, regardless of whether they +are printed, available on the net, merely ``personal communication'', +or something else. It is also a service to the reader to include in +the bibliography some more general references for related matters. + +The \meta{preamble} is just a normal \LaTeX\ preamble and there are no +restrictions on defining new commands in it, although use of such +commands in the \meta{body} part is subject to the same restrictions +as use of any general \LaTeX\ command. The preamble should however +\emph{not} load any packages not part of the required suite of +\LaTeX\ packages, as that may prevent users who do not have these +packages from typesetting the specification. Likewise, the +specification should \emph{not} require that some special font is +available. Glyph examples for characters are usually better +referenced via Unicode character charts than via special fonts. + +An exception to this rule about packages is that the specification +must load the \package{fontdoc} package, as shown in the outline +above, since that defines the |\setslot| etc.\ commands that should +appear in the \meta{body}. This should not be a problem, as the +\package{fontdoc} package can preferably be kept in the same directory +as the collection of encoding specifications (see below). The +\texttt{specification} option should be passed to the package to let it know +that the file being processed is an encoding specification---otherwise +|\Ligature| and |\ligature| will get the same formatting, for one. It +is not necessary to use the \package{article} document class, and +neither must it be passed the \texttt{twocolumn} option, but it is +customary to do so. In principle any other document class within +required \LaTeX\ will do just as well. + +If you absolutely think that using some non-required package +significantly improves the specification, then try writing the code so +that is loads the package only if it is available and provide some +kind of fallback definition for sites where it is not. E.g.\ the +\package{url} package could be loaded as +\begin{verbatim} +\IfFileExists{url.sty}{\usepackage{url}}{} +\providecommand\url{\verb} +\end{verbatim} +The |\url| command defined by this is not equivalent to the command +defined by the \package{url} package, but it can serve fairly well +(with a couple of extra overfull lines as only ill effect) if its +use is somewhat restricted. + +Finally, a technical restriction on the \meta{preamble}, \meta{title}, +and \meta{manifest} is that they must not contain any mismatched +|\if|s (of any type) or |\fi|s, as \TeX\ conditionals will be used for +skipping those parts of the file when it is processed as a data file. +If the definition of some macro includes mismatched |\if|s or |\fi|s +(this will probably occur only rarely) then include some extra code +so that they do match. + + +% All technical parts of the encoding specification (slot assignments, +% fontdimens, etc.\@) have to be in the \meta{encoding commands} part. +% The other parts are suitably used for longer commentry, such as the +% mainfest (see below), revision history, and bibliography. +% +% When the file is being typeset as a \LaTeX\ document there is nothing +% special going on. The |\encoding| and |\endencoding| commands may set +% some internal variables, but otherwise they do very little. When the +% file is being read by \package{fontinst}, things are quite different. +% Everything between the initial |\relax| and |\encoding| is skipped, +% and the file is not read further than to the |\endencoding|. Hence +% the \meta{preamble}, \meta{\LaTeX\ text 1}, and \meta{\LaTeX\ text 2} +% can contain pretty much anything (with a few exceptions) which is +% legal in a \LaTeX\ document. + + +\subsection{Encoding specification body syntax} + +The \meta{body} part of an encoding specification must comply to a +much stricter syntax than the rest of the file. The \meta{body} is +a sequence of \meta{encoding command}s, each of which should be one +of the following: +\begin{quote} + |\setslot|\marg{glyph name} \meta{slots commands} |\endsetslot|\\ + |\nextslot|\marg{number}\\ + |\skipslots|\marg{number}\\ + |\setfontdimen|\marg{number}\marg{name}\\ + |\setstr{codingscheme}|\marg{codingscheme name}\\ + |\needsfontinstversion|\marg{version number} +\end{quote} +The |\needsfontinstversion| command is usually placed immediately +after the |\encoding| command. The \meta{version number} must be at +least |1.918| for many of the features described in this file to be +available, and at least |1.928| if the |\charseq| command is used. + +The \meta{slot commands} are likewise a sequence of \meta{slot +command}s, each of which should be one of the following: +\begin{quote} + |\Unicode|\marg{code point}\marg{name}\\ + |\charseq|\marg{\cs{Unicode} commands}\\ + |\comment|\marg{text}\\ + |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new}\\ + |\nextlarger|\marg{glyph name}\\ + |\varchar| \meta{varchar commands} |\endvarchar| +\end{quote} +where \meta{varchar commands} similarly is a sequence of \meta{varchar +command}s, each of which should be one of the following: +\begin{quote} + |\varrep|\marg{glyph name}\\ + |\vartop|\marg{glyph name}\\ + |\varmid|\marg{glyph name}\\ + |\varbot|\marg{glyph name} +\end{quote} +Finally, one can include any number of \meta{comment command}s between +any two encoding, slot, or varchar commands. The comment commands are +\begin{quote} + |\begincomment| \meta{\LaTeX\ text} |\endcomment|\\ + |\label|\marg{reference label} +\end{quote} +The \meta{\LaTeX\ text} can be pretty much any \LaTeX\ code that can +appear in conditional text. (|\begincomment| is either |\iffalse| or +|\iftrue| depending on whether the encoding specification is +processed as a data file or typeset as a \LaTeX\ document respectively. +|\endcomment| is always |\fi|.) The |\label| command is just +the normal \LaTeX\ |\label| command; when it is used in a \meta{slot +commands} it references that particular slot (by number and glyph +name). + +The full syntax of the \ETX\ format can be found in the +\package{fontinst} manual~\cite{fontinst-man}, but font encoding +specifications only need a subset of that. + + +\subsection{Additional \package{fontdoc} features} + +There is an ``in comment paragraph'' form |\textunicode| of the +|\Unicode| command. Both commands have the same syntax, but +|\textunicode| is only allowed in ``comment'' contexts. A typical use +of |\textunicode| is +\begin{quote} + |\comment{An |\dots\\ + \quad\dots| this is \textunicode{2012}{FIGURE DASH}; in |\dots\\ + |}| +\end{quote} +which is typeset as +\begin{quote} + An \dots\ this is \texttt{U+2012} (\textsc{figure dash}); in \dots +\end{quote} + +The \package{fontdoc} package inputs a configuration file +\texttt{fontdoc.cfg} if that exists. This can be used to pass +additional options to the package. The only currently available +options that this could be of interest for are the \texttt{hypertex} +and \texttt{pdftex} options, which hyperlinks each \texttt{U+}\dots\ +generated by |\Unicode| or |\textunicode| (using Hyper\TeX\ or +pdf\TeX\ conventions\footnote{One could just as well do the same +thing using some other convention if a suitable definition of +\cs{FD@codepoint} is included in \texttt{fontdoc.cfg}. See the +\package{fontinst} sources~\cite{fontinst-pre} for more details.} +respectively) to a corresponding glyph image on the Unicode consortium +website. To use this feature one should put the line +\begin{quote} + |\ExecuteOptions{hypertex}| +\end{quote} +or +\begin{quote} + |\ExecuteOptions{pdftex}| +\end{quote} +in the \texttt{fontdoc.cfg} file. \emph{Please} do not include this +option in the |\usepackage|\nolinebreak[1]|{fontdoc}| of an encoding +specification file as that can be a severe annoyance for people whose +\TeX\ program or DVI viewers do not support the necessary extensions. +% Hyper\TeX\ |\special|s. + + +\section{Font encoding ratification} + +This section describes a suggested ratification process for font +encoding specifications. As there are fewer technical matters that +impose restrictions on what it may look like, it is probably more +subjective than the other parts of this paper. + +\medskip + +A specification in the process of being ratified can be in one of +three different stages: \emph{draft}, \emph{beta}, or \emph{final}. +Initially the specification is in the draft stage, during which it +will be scrutinized and can be subject to major changes. A +specification which is in the beta stage has got a formal approval +but the encoding in question may still be subject to some minor +changes if weighty arguments present themselves. Once the +specification has reached the final stage, the encoding may not +change at all. + + +\subsection{Getting to the draft stage} + +The process of taking an encoding to the draft stage can be +summarized in the following steps. Being in the draft stage doesn't +really say anything about whether the encoding is in any way correct +or useful, except in that some people (the encoding proposers) +believe it is and are willing to spend some time on ratifying it. + +\paragraph{Write an encoding specification} The first step is to +write a specification for the font encoding in question. This +document must not only technically describe the encoding but also +explain what the encoding is for and why it was created. See +Subsection~\ref{Ssec:Structure} for details on how the document is +preferably organised. + +\paragraph{Request an encoding name} The second step is to write to +the \LaTeX3 project and request a \LaTeX\ encoding name for the +encoding. This mail should be in the form of a \LaTeX\ bug report, it +must be sent to +\begin{quote} + \href{mailto:latex-bugs@latex-project.org}% + {\texttt{latex-bugs@latex-project.org}}, +\end{quote} +and it must include the encoding specification file. Suggestions for +an encoding name are appreciated, but not necessarily accepted. +The purpose of this mail is \emph{not} to get an approval of the +encoding, but only to have a reasonable name assigned to it. + +\paragraph{Upload the specification to CTAN} The third step is make +the encoding specification publicly available by uploading it to +CTAN. Encoding specifications are collected in the +\begin{quote} + \ctanref{info/encodings}{\texttt{info/encodings}} +\end{quote} +directory (which should also contain the most recent version of this +paper). The name of the uploaded file should be +\meta{encoding name}\texttt{draft.etx}. The reason for this naming is +that it must be clear that the specification has not yet been ratified. + +\paragraph{Announce the encoding} When the upload has been confirmed, +it is time to announce the encoding by posting a message about it to +the relevant forums. Most important is the \texttt{tex-fonts} mailing +list, since that is where new encodings should be debated. Messages +should also be posted to the \texttt{comp.text.tex} newsgroup and any +forums related to the intended use of the encoding: an encoding for +Sanskrit should be announced on Indian \TeX\ users forums, an +encoding for printing chess positions should be announced on some +chess-with-\TeX\ user forum, etc.; in the extent that such forums exist. + +The full address of the \texttt{tex-fonts} mailing list is +\begin{quote} + \texttt{tex-fonts@math.utah.edu} +\end{quote} +This list rejects postings from non-members, so you need to subscribe +to it before you can post your announcement. This is done by sending +a `subscribe me' mail to +\begin{quote} + \href{mailto:tex-fonts-request@math.utah.edu} + {\texttt{tex-fonts-request@math.utah.edu}} +\end{quote} +The list archives can be found at +\begin{quote} + \href{http://www.math.utah.edu/mailman/listinfo/tex-fonts} + {\textsc{http:}/\slash \texttt{www.math.utah.edu}\slash + \texttt{mailman}\slash \texttt{listinfo}\slash + \texttt{tex-fonts}} +\end{quote} +A tip is to read through the messages from a couple of months +before you write up your announcement, as that should help you get +acquainted with the normal style on the list. Please do not send +messages encoded in markup languages (notably, \textsmaller{HTML}, +\textsmaller{XML}, and word processor formats) to the list. + +\paragraph{Experimental encodings} There is a point in going through +the above procedure even for experimental encodings, i.e., encodings +whose names start with an \texttt{E}. Of course there is no idea in +ratifying a specification of an experimental encoding, as it is very +likely to frequently change, but having a proper name assigned to the +encoding and uploading its specification to CTAN makes it much simpler +for other people to learn about and make references to the encoding. + + +\subsection{From draft to beta stage} + +The main difference between a draft and beta stage specification +respectively is that beta stage specifications have been scrutinized +by other people and found to be free of errors. The practical +implementation of this is that a debate is held (in the normal +anarchical manner of mailing list debates) on the \texttt{tex-fonts} +mailing list. In particular the following aspects of the +specification should be checked: +\begin{enumerate} + \item \emph{Is the encoding technically correct?} + There are many factors which affect what \TeX\ does and it is + easy to overlook some. (The \cs{lccode}s seem to be particularly + troublesome, in this respect.) Sometimes fonts simply cannot work + as an encoding specifies they should and it is important that + such defects in the encoding are discovered on an early stage. + \item \emph{Are there any errors in the specification?} + A font encoding specification is largely a table and typos are + easy to make. Proof-reading may be boring, but it is very, very + important. + \item \emph{Is the specification sufficiently precise?} + Are there any omissions, ambiguities, inaccuracies, or completely + irrelevant material in the specification? There shouldn't be. +\end{enumerate} +During the debate, the encoding proposers should hear what other +people have to say about the encoding draft, revise it accordingly +when some flaw is pointed out, and upload the revised version. This +cycle may well have to be repeated several times before everyone's +content. It is worth pointing out that in practice the debate should +turn out to be more of a collective authoring of the specification +than a defense of its validity. There is no point in going into it +expecting the worst. + +Unfortunately, it might happen that there never is a complete agreement +on an encoding specification---depending on what side on takes, either +the encoding proposers refuse to correct obvious flaws in it, or someone +on the list insists that there is a flaw although there is obviously +not---but hopefully that will never happen. If it anyway does happen +then the person objecting should send a mail whose subject contains the +phrase "formal protest against XXX encoding" (with XXX replaced by +whatever the encoding is called) to the list. Then it will be up to +the powers that be to decide on the fate of the encoding (see below). + +\paragraph{Summarize the debate} When the debate on the encoding is +over---e.g.\ a month after anyone last posted anything new on the +subject---then the encoding proposers should summarize the debate on +the encoding specification draft and post this summary as a follow-up +on the original mail to \texttt{latex-bugs}. This summary should list +the changes that have been made to the encoding, what suggestions there +were for changes which have not been included, and whether there were +any formal protests against the encoding. The summary should also explain +what the proposers want to have be done with the encoding. In the +usual case this is having it advanced to beta stage, but the proposers +might alternatively at this point have reached the conclusion that the +encoding wasn't such a good idea to start with and therefore withdraw +it, possibly to come again later with a different proposal. + +In response to this summary, the \LaTeX-project people may do one of +three things: +\begin{itemize} + \item + If the proposers wants the encoding specification advanced and + there are no formal protests against this, then the encoding + should be advanced to the beta stage. The \LaTeX-project + people do this by adding the encoding to the list of approved + (beta or final stage) encodings that they [presumably] maintain. + \item + If the proposers want to withdraw the encoding specification + then the name assigned to it should once again be made available + for use for other encodings. + \item + If the proposers want the encoding specification advanced but + there is some formal protest against this, then the entire matter + should be handed over to some suitable authority, as a suggestion + some technical TUG committee, for resolution. +\end{itemize} + + +\paragraph{Update the specification on CTAN} When the specification +has reached the beta stage, its file on CTAN should be updated to say +so. In particular the file name should be changed from \meta{encoding +name}\texttt{draft.etx} to \meta{encoding name}\texttt{spec.etx}. + + +\paragraph{Modifying beta stage encodings} If a beta stage encoding is +modified then the revised specification should go through the above +procedure of ratification again before it can replace the previous +\meta{encoding name}\texttt{spec.etx} file on CTAN. The revised +version should thus initially be uploaded as \meta{encoding +name}\texttt{draft.etx}, reannounced, and redebated. It can however +be expected that such debates will not be as extensive as the +original debates. + + +\subsection{From beta stage to final stage} + +The requirements for going from beta stage to final stage are more +about showing that the encoding has reached a certain maturity than +about demonstrating any technical merits of it. The main difference in +usefulness between a beta stage encoding and a final stage encoding is +that the latter can be considered safe for archival purposes, whereas +one should have certain reservations against such use of beta stage +encodings. + +It seems reasonable that the following conditions should have to be +fulfilled before a beta stage encoding can be made a final stage +encoding: +\begin{itemize} + \item At least one year must have passed since the last change was + made to the specification. + \item At least two people other than the proposer must have + succeeded in implemented the encoding in a font. +\end{itemize} +It is quite possible that some condition should be added or some of +the above conditions reformulated. + + +% References updated 2004/08/07. +\begin{thebibliography}{???} +\bibitem{ATN5013} + Adobe Systems Incorporated: + \textit{Adobe Standard Cyrillic Font Specification}, + Adobe Technical Note \#5013, 1998; + \href{http://partners.adobe.com/asn/developer/pdfs/tn/% + 5013.Cyrillic_Font_Spec.pdf}{\textsc{http}:/\slash + \texttt{partners.adobe.com}\slash \texttt{asn}\slash + \texttt{developer}\slash \texttt{pdfs}\slash \texttt{tn}\slash + \texttt{5013.Cyrillic\_Font\_Spec.pdf}}. +\bibitem{AGL} + Adobe Systems Incorporated: \textit{Adobe Glyph List}, + text file, 1998, + \href{http://partners.adobe.com/asn/developer/type/glyphlist.txt} + {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{glyphlist.txt}}. +\bibitem{unicodesign} + Adobe Systems Incorporated: + \textit{Adobe Solutions Network: Unicode and Glyph Names}, + web page, 1998, + \href{http://partners.adobe.com/asn/developer/type/unicodegn.html} + {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{unicodegn.html}}. +\bibitem{ClasenVieth} + Matthias Clasen and Ulrik Vieth: + \textit{Towards a new Math Font Encoding for (La)TeX}, + March 1998, presented at EuroTeX'98; + \href{http://tug.org/twg/mfg/papers/current/mfg-euro-all.ps.gz} + {\textsc{http}:/\slash \texttt{tug.org}\slash \texttt{twg}\slash + \texttt{mfg}\slash \texttt{papers}\slash \texttt{current}\slash + \texttt{mfg-euro-all.ps.gz}}. +\bibitem{fontinst-man} + Alan Jeffrey, Rowland McDonnell, Ulrik Vieth, and Lars Hellstr\"om: + \textit{\package{fontinst}---font installation software for \TeX} + (manual), 2004, + \ctanref{fonts/utilities/fontinst/doc/fontinst.tex}{% + \textsc{ctan}:\discretionary{}{}{\thinspace}% + \texttt{fonts}\slash \texttt{utilities}\slash + \texttt{fontinst}\slash \texttt{doc}\slash \texttt{fontinst.tex}}. +% \bibitem{fontinst} +% Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: +% \textit{The \package{fontinst} utility}, documented source code, +% v\,1.801, +% \ctanref{fonts/utilities/fontinst/source}{% +% \textsc{ctan}:\discretionary{}{}{\thinspace}% +% \texttt{fonts}\slash \texttt{utilities}\slash +% \texttt{fontinst}\slash \texttt{source}/}. +\bibitem{fontinst-pre} + Alan Jeffrey, Sebastian Rahtz, Ulrik Vieth, and Lars Hellstr\"om: + \textit{The \package{fontinst} utility}, documented source code, + v\,1.9xx, + \ctanref{fonts/utilities/fontinst/source}{% + \textsc{ctan}:\discretionary{}{}{\thinspace}% + \texttt{fonts}\slash \texttt{utilities}\slash + \texttt{fontinst}\slash \texttt{source}/}. +\bibitem{TeXbook} + Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \TeX book}, + Ad\-di\-son--Wes\-ley, 1991; + volume A of \textit{Computers and typesetting}. +\bibitem{LaTeXCompanion} + Frank Mittelbach and Michel Goossens, with Johannes Braams, + David Carlisle, and Chris Rowley: + \textit{The \LaTeX\ Companion} (second edition), + Ad\-di\-son--Wes\-ley, 2004; ISBN~0-201-36299-6. +\bibitem{Omega-doc} + John Plaice and Yannis Haralambous: + \textit{Draft documentation for the Omega system}, + version~1.12, 1999; + \href{http://omega.cse.unsw.edu.au:8080/doc-1.12.ps}{% + \textsc{http:}/\slash \texttt{omega.cse.unsw.edu.au:8080}\slash + \texttt{doc-1.12.ps}}. +% \textsc{ctan}:\discretionary{}{}{\thinspace}% +% \texttt{systems}\slash \texttt{omega}\slash +% \texttt{omega-doc-1.8.tar.gz}. +\bibitem{Vieth2001} + Ulrik Vieth: + \textit{Math typesetting in \TeX: The~good, the~bad, the~ugly}, + to appear in the proceedings of Euro\TeX\ 2001; + \href{http://www.ntg.nl/eurotex/vieth.pdf}{% + \textsc{http}:/\slash \texttt{www.ntg.nl}\slash + \texttt{eurotex}\slash \texttt{vieth.pdf}}. +\end{thebibliography} + + +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx new file mode 100644 index 00000000000..efccabde857 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx @@ -0,0 +1,985 @@ +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2001/06/01] + +% \usepackage[T1]{fontenc} +\DeclareTextCommandDefault{\textvisiblespace}{% + \mbox{\kern.06em\vrule height.3ex}% + \vbox{\hrule width.3em}% + \hbox{\vrule height.3ex\kern.06em}} + +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\showbranches + +\begin{document} + +\title{\texttt{OMX} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2001/10/20} +\maketitle + +\begin{abstract} + The \TeX\ math extensions (\texttt{OMX}) encoding is a container for + most of the ``growing'' characters in the standard math set-up, but + that is pretty much the extent of it. Some of the characters occur + in ``normal size'' in other encodings; in these cases it is usually + a single math command that usually make use of characters in both + encodings. +\end{abstract} + + +\encoding + +\begincomment +\section{Mandatory characters} + +\subsection{Delimiters} +\endcomment + +\nextslot{0} +\setslot{parenleftbig} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftBig} +\endsetslot + +\setslot{parenrightbig} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightBig} +\endsetslot + +\setslot{bracketleftbig} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftBig} +\endsetslot + +\setslot{bracketrightbig} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightBig} +\endsetslot + +\setslot{floorleftbig} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftBig} +\endsetslot + +\setslot{floorrightbig} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightBig} +\endsetslot + +\setslot{ceilingleftbig} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftBig} +\endsetslot + +\setslot{ceilingrightbig} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightBig} +\endsetslot + +\setslot{braceleftbig} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftBig} +\endsetslot + +\setslot{bracerightbig} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightBig} +\endsetslot + +\setslot{angleleftbig} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftBig} +\endsetslot + +\setslot{anglerightbig} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightBig} +\endsetslot + +\setslot{barex} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{vert} command. When not accessed + as a delimiter, this character may be much shorter than one + would expect.} + \varchar + \varrep{barex} + \endvarchar +\endsetslot + +\setslot{bardblex} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is used by the \cs{Vert} command. When not accessed + as a delimiter, this character may be much shorter than one + would expect.} + \varchar + \varrep{bardblex} + \endvarchar +\endsetslot + +\setslot{slashbig} + \Unicode{2215}{DIVISION SLASH} + \comment{Although this character is normally accessed via \TeX's + growing delimiter mechanism, it is not used as such in formulae, + but as a large division slash. Since the use is unambigously for + division and the like, it would be inaccurate to identify this + character with \textunicode{002F}{SOLIDUS}.} + \nextlarger{slashBig} +\endsetslot + +\setslot{backslashbig} + \Unicode{005C}{REVERSE SOLIDUS} + \comment{This is \TeX's \cs{backslash} (use for ``double coset''), + not \cs{setminus}, and hence it is not + \textunicode{2216}{SET MINUS}.} + \nextlarger{backslashBig} +\endsetslot + +\nextslot{62} +\setslot{braceex} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{bracevert} command.} + \label{braceex} + \varchar + \varrep{braceex} + \endvarchar + \comment{This slot contains the repeatable part of a extensible + brace delimiter. In the standard set-up, the extensible recipes of + slots~\ref{bracelefttp}, \ref{bracerighttp}, \ref{braceleftbt}, + \ref{bracerightbt}, \ref{parenleftbt}, and \ref{parenrightbt} all + make use of this slot.} +\endsetslot + +\nextslot{"42} +\setslot{parenleftex} + \Unicode{007C}{VERTICAL LINE} + \comment{As astonishing as it may seem, there is no command which + accesses this slot. The glyph is similar to that in + slot~\ref{braceex}, but shifted to the left.} + \varchar + \varrep{parenleftex} + \endvarchar +\endsetslot + +\setslot{parenrightex} + \Unicode{007C}{VERTICAL LINE} + \comment{As astonishing as it may seem, there is no command which + accesses this slot. The glyph is similar to that in + slot~\ref{braceex}, but shifted to the right.} + \varchar + \varrep{parenrightex} + \endvarchar +\endsetslot + +\nextslot{"7A} +\setslot{bracehtipdownleft} + \comment{This is \cs{braceld}, a tip (pointing left, bending down) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipdownright} + \comment{This is \cs{bracerd}, a tip (pointing right, bending down) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipupleft} + \comment{This is \cs{bracelu}, a tip (pointing left, bending up) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipupright} + \comment{This is \cs{braceru}, a tip (pointing right, bending up) + used to build over- and underbraces.} +\endsetslot + + + +\begincomment +\subsection{Text style operators} + +With the exception of the integrals, all the following characters +should be \textsc{n-ary \dots}, but some cases there are no such +variants defined in Unicode. +\endcomment + +\nextslot{"46} +\setslot{unionsqtext} + \Unicode{2294}{SQUARE CUP} + \nextlarger{unionsqdisplay} +\endsetslot + +\skipslots{1} +\setslot{contintegraltext} + \Unicode{222E}{CONTOUR INTEGRAL} + \nextlarger{contintegraldisplay} +\endsetslot + +\skipslots{1} +\setslot{circledottext} + \Unicode{2299}{CIRCLED DOT OPERATOR} + \nextlarger{circledotdisplay} +\endsetslot + +\skipslots{1} +\setslot{circleplustext} + \Unicode{2295}{CIRCLED PLUS} + \nextlarger{circleplusdisplay} +\endsetslot + +\skipslots{1} +\setslot{circlemultiplytext} + \Unicode{2297}{CIRCLED TIMES} + \nextlarger{circlemultiplydisplay} +\endsetslot + +\skipslots{1} +\setslot{summationtext} + \Unicode{2211}{N-ARY SUMMATION} + \nextlarger{summationdisplay} +\endsetslot + +\setslot{producttext} + \Unicode{220F}{N-ARY PRODUCT} + \nextlarger{productdisplay} +\endsetslot + +\setslot{integraltext} + \Unicode{222B}{INTEGRAL} + \nextlarger{integraldisplay} +\endsetslot + +\setslot{uniontext} + \Unicode{22C3}{N-ARY UNION} + \nextlarger{uniondisplay} +\endsetslot + +\setslot{intersectiontext} + \Unicode{22C2}{N-ARY INTERSECTION} + \nextlarger{intersectiondisplay} +\endsetslot + +\setslot{unionmultitext} + \Unicode{228E}{MULTISET UNION} + \nextlarger{unionmultidisplay} +\endsetslot + +\setslot{logicalandtext} + \Unicode{22C0}{N-ARY LOGICAL AND} + \nextlarger{logicalanddisplay} +\endsetslot + +\setslot{logicalortext} + \Unicode{22C1}{N-ARY LOGICAL OR} + \nextlarger{logicalordisplay} +\endsetslot + +\skipslots{8} +\setslot{coproducttext} + \Unicode{2210}{N-ARY COPRODUCT} + \nextlarger{coproductdisplay} +\endsetslot + + + +\begincomment +\subsection{Accents, arrows, and the radical} +\endcomment + +\nextslot{"62} +\setslot{hatwide} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \nextlarger{hatwider} +\endsetslot + +\skipslots{2} + +\setslot{tildewide} + \Unicode{0303}{COMBINING TILDE} + \nextlarger{tildewider} +\endsetslot + +\nextslot{"70} +\setslot{radicalbig} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalBig} +\endsetslot + +\nextslot{"78} +\setslot{arrowtp} + \Unicode{2191}{UPWARDS ARROW} + \varchar + \vartop{arrowtp} + \varrep{arrowvertex} + \endvarchar +\endsetslot + +\setslot{arrowbt} + \Unicode{2193}{DOWNWARDS ARROW} + \varchar + \varrep{arrowvertex} + \varbot{arrowbt} + \endvarchar +\endsetslot + +\nextslot{"7E} +\setslot{arrowdbltp} + \Unicode{21D1}{UPWARDS DOUBLE ARROW} + \varchar + \vartop{arrowdbltp} + \varrep{arrowdblvertex} + \endvarchar +\endsetslot + +\setslot{arrowdblbt} + \Unicode{21D3}{DOWNWARDS DOUBLE ARROW} + \varchar + \varrep{arrowdblvertex} + \varbot{arrowdblbt} + \endvarchar +\endsetslot + + + + + + +\begincomment +\section{Semimandatory characters} +\endcomment + +\nextslot{"3A} +\setslot{braceleftbt} + \comment{This is the \cs{lgroup} delimiter, which looks like a + \textunicode{007B}{LEFT CURLY BRACKET} with flat middle section. + There does not seem to be such a character in Unicode, but a + close approximation would be a narrowed + \textunicode{3014}{LEFT TORTOISE SHELL BRACKET}.} + \label{braceleftbt} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varbot{braceleftbt} + \endvarchar + \comment{The slot contains the curved bottom of a + \textunicode{007B}{LEFT CURLY BRACKET}.} +\endsetslot + +\setslot{bracerightbt} + \comment{This is the \cs{rgroup} delimiter, which looks like a + \textunicode{007D}{RIGHT CURLY BRACKET} with flat middle section. + There does not seem to be such a character in Unicode, but a + close approximation would be a narrowed + \textunicode{3015}{RIGHT TORTOISE SHELL BRACKET}.} + \label{bracerightbt} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varbot{bracerightbt} + \endvarchar + \comment{The slot contains the curved bottom of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} +\endsetslot + +\setslot{braceleftmid} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{arrowvert} command.} + \varchar + \varrep{arrowvertex} + \endvarchar + \comment{The slot contains the middle part of a + \textunicode{007B}{LEFT CURLY BRACKET}.} +\endsetslot + +\setslot{bracerightmid} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is used by the \cs{Arrowvert} command.} + \varchar + \varrep{arrowdblvertex} + \endvarchar + \comment{The slot contains the middle part of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} +\endsetslot + +\skipslots{1} + +\setslot{arrowvertex} + \Unicode{2195}{UP DOWN ARROW} + \varchar + \vartop{arrowtp} + \varrep{arrowvertex} + \varbot{arrowbt} + \endvarchar + \comment{This slot contains the repeatable middle part of a vertical + arrow.} +\endsetslot + +\setslot{parenleftbt} + \label{parenleftbt} + \comment{This is the \cs{lmoustache} delimiter, whose top half is + like \cs{lgroup} and whose bottom half is like \cs{rgroup}.} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varbot{bracerightbt} + \endvarchar + \comment{This slot contains the curved bottom of a + \textunicode{0028}{LEFT PARENTHESIS}.} +\endsetslot + +\setslot{parenrightbt} + \label{parenrightbt} + \comment{This is the \cs{rmoustache} delimiter, whose top half is + like \cs{rgroup} and whose bottom half is like \cs{lgroup}.} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varbot{braceleftbt} + \endvarchar + \comment{This slot contains the curved bottom of a + \textunicode{0029}{RIGHT PARENTHESIS}.} +\endsetslot + +\nextslot{"77} +\setslot{arrowdblvertex} + \Unicode{21D5}{UP DOWN DOUBLE ARROW} + \varchar + \vartop{arrowdbltp} + \varbot{arrowdblbt} + \varrep{arrowdblvertex} + \endvarchar + \comment{This slot contains the repeatable middle part of a vertical + double arrow.} +\endsetslot + + + + + +\begincomment +\section{Ordinary characters} +\endcomment + + +\begincomment +\subsection{\texttt{Big} size delimiters} +\endcomment + +\nextslot{16} +\setslot{parenleftBig} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftbigg} +\endsetslot + +\setslot{parenrightBig} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightbigg} +\endsetslot + +\nextslot{46} +\setslot{slashBig} + \Unicode{2215}{DIVISION SLASH} + \nextlarger{slashbigg} +\endsetslot + +\setslot{backslashBig} + \Unicode{005C}{REVERSE SOLIDUS} + \nextlarger{backslashbigg} +\endsetslot + +\nextslot{"44} +\setslot{angleleftBig} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftbigg} +\endsetslot + +\setslot{anglerightBig} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightbigg} +\endsetslot + +\nextslot{"68} +\setslot{bracketleftBig} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftbigg} +\endsetslot + +\setslot{bracketrightBig} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightbigg} +\endsetslot + +\setslot{floorleftBig} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftbigg} +\endsetslot + +\setslot{floorrightBig} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightbigg} +\endsetslot + +\setslot{ceilingleftBig} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftbigg} +\endsetslot + +\setslot{ceilingrightBig} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightbigg} +\endsetslot + +\setslot{braceleftBig} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftbigg} +\endsetslot + +\setslot{bracerightBig} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightbigg} +\endsetslot + + + + + +\begincomment +\subsection{\texttt{bigg} size delimiters} +\endcomment + +\nextslot{18} +\setslot{parenleftbigg} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftBigg} +\endsetslot + +\setslot{parenrightbigg} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightBigg} +\endsetslot + +\setslot{bracketleftbigg} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftBigg} +\endsetslot + +\setslot{bracketrightbigg} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightBigg} +\endsetslot + +\setslot{floorleftbigg} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftBigg} +\endsetslot + +\setslot{floorrightbigg} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightBigg} +\endsetslot + +\setslot{ceilingleftbigg} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftBigg} +\endsetslot + +\setslot{ceilingrightbigg} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightBigg} +\endsetslot + +\setslot{braceleftbigg} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftBigg} +\endsetslot + +\setslot{bracerightbigg} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightBigg} +\endsetslot + +\setslot{angleleftbigg} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftBigg} +\endsetslot + +\setslot{anglerightbigg} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightBigg} +\endsetslot + +\setslot{slashbigg} + \Unicode{2215}{DIVISION SLASH} + \nextlarger{slashBigg} +\endsetslot + +\setslot{backslashbigg} + \Unicode{005C}{REVERSE SOLIDUS} + \nextlarger{backslashBigg} +\endsetslot + + + +\begincomment +\subsection{\texttt{Bigg} size delimiters} +\endcomment + +\nextslot{32} +\setslot{parenleftBigg} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenlefttp} +\endsetslot + +\setslot{parenrightBigg} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrighttp} +\endsetslot + +\setslot{bracketleftBigg} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketlefttp} +\endsetslot + +\setslot{bracketrightBigg} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrighttp} +\endsetslot + +\setslot{floorleftBigg} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{bracketleftbt} +\endsetslot + +\setslot{floorrightBigg} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{bracketrightbt} +\endsetslot + +\setslot{ceilingleftBigg} + \Unicode{2308}{LEFT CEILING} + \nextlarger{bracketleftex} +\endsetslot + +\setslot{ceilingrightBigg} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{bracketrightex} +\endsetslot + +\setslot{braceleftBigg} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{bracelefttp} +\endsetslot + +\setslot{bracerightBigg} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerighttp} +\endsetslot + +\setslot{angleleftBigg} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} +\endsetslot + +\setslot{anglerightBigg} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} +\endsetslot + +\setslot{slashBigg} + \Unicode{2215}{DIVISION SLASH} +\endsetslot + +\setslot{backslashBigg} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + + + +\begincomment +\subsection{Extensible delimiters} +\endcomment + +\nextslot{48} +\setslot{parenlefttp} + \comment{This slot contains the curved top of a + \textunicode{0028}{LEFT PARENTHESIS}.} + \varchar + \vartop{parenlefttp} + \varrep{parenleftex} + \varbot{parenleftbt} + \endvarchar +\endsetslot + +\setslot{parenrighttp} + \comment{This slot contains the curved top of a + \textunicode{0029}{RIGHT PARENTHESIS}.} + \varchar + \vartop{parenrighttp} + \varrep{parenrightex} + \varbot{parenrightbt} + \endvarchar +\endsetslot + +\setslot{bracketlefttp} + \comment{This slot contains the corner top of a + \textunicode{005B}{LEFT SQUARE BRACKET}.} + \varchar + \vartop{bracketlefttp} + \varrep{bracketleftex} + \varbot{bracketleftbt} + \endvarchar +\endsetslot + +\setslot{bracketrighttp} + \comment{This slot contains the corner top of a + \textunicode{005D}{RIGHT SQUARE BRACKET}.} + \varchar + \vartop{bracketrighttp} + \varrep{bracketrightex} + \varbot{bracketrightbt} + \endvarchar +\endsetslot + +\setslot{bracketleftbt} + \comment{This slot contains the corner bottom of a + \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{230A}{LEFT FLOOR}.} + \varchar + \varrep{bracketleftex} + \varbot{bracketleftbt} + \endvarchar +\endsetslot + +\setslot{bracketrightbt} + \comment{This slot contains the corner bottom of a + \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{230B}{RIGHT FLOOR}.} + \varchar + \varrep{bracketrightex} + \varbot{bracketrightbt} + \endvarchar +\endsetslot + +\setslot{bracketleftex} + \comment{This slot contains the repeatable middle part of a + \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{2308}{LEFT CEILING}.} + \varchar + \vartop{bracketlefttp} + \varrep{bracketleftex} + \endvarchar +\endsetslot + +\setslot{bracketrightex} + \comment{This slot contains the repeatable middle part of a + \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{2309}{RIGHT CEILING}.} + \varchar + \vartop{bracketrighttp} + \varrep{bracketrightex} + \endvarchar +\endsetslot + +\setslot{bracelefttp} + \comment{This slot contains the curved top of a + \textunicode{007B}{LEFT CURLY BRACKET}.} + \label{bracelefttp} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varmid{braceleftmid} + \varbot{braceleftbt} + \endvarchar +\endsetslot + +\setslot{bracerighttp} + \comment{This slot contains the curved top of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} + \label{bracerighttp} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varmid{bracerightmid} + \varbot{bracerightbt} + \endvarchar +\endsetslot + + + + + +\begincomment +\subsection{Display style operators} +\endcomment + +\nextslot{"47} +\setslot{unionsqdisplay} + \Unicode{2294}{SQUARE CUP} +\endsetslot + +\skipslots{1} +\setslot{contintegraldisplay} + \Unicode{222E}{CONTOUR INTEGRAL} +\endsetslot + +\skipslots{1} +\setslot{circledotdisplay} + \Unicode{2299}{CIRCLED DOT OPERATOR} +\endsetslot + +\skipslots{1} +\setslot{circleplusdisplay} + \Unicode{2295}{CIRCLED PLUS} +\endsetslot + +\skipslots{1} +\setslot{circlemultiplydisplay} + \Unicode{2297}{CIRCLED TIMES} +\endsetslot + +\skipslots{8} +\setslot{summationdisplay} + \Unicode{2211}{N-ARY SUMMATION} +\endsetslot + +\setslot{productdisplay} + \Unicode{220F}{N-ARY PRODUCT} +\endsetslot + +\setslot{integraldisplay} + \Unicode{222B}{INTEGRAL} +\endsetslot + +\setslot{uniondisplay} + \Unicode{22C3}{N-ARY UNION} +\endsetslot + +\setslot{intersectiondisplay} + \Unicode{22C2}{N-ARY INTERSECTION} +\endsetslot + +\setslot{unionmultidisplay} + \Unicode{228E}{MULTISET UNION} +\endsetslot + +\setslot{logicalanddisplay} + \Unicode{22C0}{N-ARY LOGICAL AND} +\endsetslot + +\setslot{logicalordisplay} + \Unicode{22C1}{N-ARY LOGICAL OR} +\endsetslot + +\skipslots{1} +\setslot{coproductdisplay} + \Unicode{2210}{N-ARY COPRODUCT} +\endsetslot + + + +\begincomment +\subsection{Accents} +\endcomment + +\nextslot{"63} +\setslot{hatwider} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \nextlarger{hatwiderr} +\endsetslot + +\setslot{hatwiderr} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} +\endsetslot + +\skipslots{1} + +\setslot{tildewider} + \Unicode{0303}{COMBINING TILDE} + \nextlarger{tildewiderr} +\endsetslot + +\setslot{tildewiderr} + \Unicode{0303}{COMBINING TILDE} +\endsetslot + + +\begincomment +\subsection{Radicals} +\endcomment + +\nextslot{"71} +\setslot{radicalBig} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalbigg} +\endsetslot + +\setslot{radicalbigg} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalBigg} +\endsetslot + +\setslot{radicalBigg} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalbt} +\endsetslot + +\setslot{radicalbt} + \Unicode{221A}{SQUARE ROOT} + \varchar + \varbot{radicalbt} + \vartop{radicaltp} + \varrep{radicalvertex} + \endvarchar +\endsetslot + +\setslot{radicalvertex} + \comment{This is the repeatable, vertically middle part of an + extensible \textunicode{221A}{SQUARE ROOT}.} +\endsetslot + +\setslot{radicaltp} + \comment{This is the top corner part of an extensible + \textunicode{221A}{SQUARE ROOT}.} +\endsetslot + + + + + +\begincomment +\section{Fontdimens and codingscheme} + +\texttt{OMX} fonts have the necessary fontdimens to serve as a math +group 3 font. +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . + +\setfontdimen{8}{defaultrulethickness} % default rule thickness +\setfontdimen{9}{bigopspacing1} % bigopspacing 1 +\setfontdimen{10}{bigopspacing2} % bigopspacing 2 +\setfontdimen{11}{bigopspacing3} % bigopspacing 3 +\setfontdimen{12}{bigopspacing4} % bigopspacing 4 +\setfontdimen{13}{bigopspacing5} % bigopspacing 5 + +\setstr{codingscheme}{TEX MATH EXTENSION} + + + + + +\endencoding + + +\section{Discussion} + + + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx new file mode 100644 index 00000000000..6f07bbd6f4a --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx @@ -0,0 +1,1027 @@ +\relax +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2004/11/28] + +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\showbranches + +\begin{document} + +\title{\texttt{OT1} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2004/12/16} +\maketitle + +\begin{abstract} + The \texttt{OT1} encoding is an attempt to describe the encoding of + the text fonts in Donald~E.~Knuth's \emph{Computer Modern} family + of fonts~\cite{ComputerModern}. This is an impossibile goal, since + these fonts present no less than five different encodings, but they + are nontheless largely treated by \LaTeX\ as having identical + encodings. Due to the ambiguities this creates, and in view of that + the \texttt{T1} encoding supersedes \texttt{OT1} as text font + encoding, there is little point in using the text commands for + distiguishing mandatory features of \texttt{OT1} from the ordinary. + + \texttt{OT1} is however also used as a math font encoding (to go + with \texttt{OML}, \texttt{OMS}, and \texttt{OMX}), and that use is + today the by far most important since there is no obvious alternative + to the standard math font set-up. Therefore this specification + considers a feature of the encoding to be mandatory if it is + (i)~necessary for the standard math set-up or (ii)~is a text feature + which works for all encoding variants. +\end{abstract} + +\encoding +\needsfontinstversion{1.928} + + + +\begincomment +\section{Encoding variants} + +This document aims to record all the encoding variations that are +present within the set of fonts classified by \LaTeX\ as having the +\texttt{OT1} encoding. It turns out that they can all be described +using only two parameters. One of these might be called +`\textit{ligaturing}' as one factor it affects is how many ligatures +there will be in the font. The other parameter is best called +`\textit{italicizing}' as it is different between italic and +non-italic fonts. Most of the Computer Modern fonts have +\(\mathit{ligaturing} = 2\) and \(\mathit{italicizing} = 0\). + +\endcomment +\setint{ligaturing}{2} +\setint{italicizing}{0} + + +\begincomment + + +\section{Mandatory characters} + +\subsection{Latin letters} +\endcomment + +\nextslot{16} +\setslot{dotlessi} + \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} + \comment{A dotless i `\i', used to produce accented letters such as + `\=\i'. It is not used for math.} +\endsetslot + +\setslot{dotlessj} + \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} + \comment{A dotless j `\j', used to produce accented letters such as + `\=\j'. It is not used for math. The Unicode standard does not + define this character, but Adobe has assigned code point + \texttt{U+F6BE} (which is in the private use subarea assigned by + Adobe) to it.} +\endsetslot + +\nextslot{25} +\setslot{germandbls} + \Unicode{00DF}{LATIN SMALL LETTER SHARP S} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{ae} + \Unicode{00E6}{LATIN SMALL LETTER AE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{oe} + \Unicode{0153}{LATIN SMALL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `oe'. + It is not used in math.} +\endsetslot + +\setslot{oslash} + \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{AE} + \Unicode{00C6}{LATIN CAPITAL LETTER AE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{OE} + \Unicode{0152}{LATIN CAPITAL LIGATURE OE} + \comment{This is a single letter, and should not be faked with + `OE'. It is not used in math.} +\endsetslot + +\setslot{Oslash} + \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} + \comment{This slot is not used in math.} +\endsetslot + + +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} + \label{A} +\endsetslot + +\setslot{B} + \Unicode{0042}{LATIN CAPITAL LETTER B} +\endsetslot + +\setslot{C} + \Unicode{0043}{LATIN CAPITAL LETTER C} +\endsetslot + +\setslot{D} + \Unicode{0044}{LATIN CAPITAL LETTER D} +\endsetslot + +\setslot{E} + \Unicode{0045}{LATIN CAPITAL LETTER E} +\endsetslot + +\setslot{F} + \Unicode{0046}{LATIN CAPITAL LETTER F} +\endsetslot + +\setslot{G} + \Unicode{0047}{LATIN CAPITAL LETTER G} +\endsetslot + +\setslot{H} + \Unicode{0048}{LATIN CAPITAL LETTER H} +\endsetslot + +\setslot{I} + \Unicode{0049}{LATIN CAPITAL LETTER I} +\endsetslot + +\setslot{J} + \Unicode{004A}{LATIN CAPITAL LETTER J} +\endsetslot + +\setslot{K} + \Unicode{004B}{LATIN CAPITAL LETTER K} +\endsetslot + +\setslot{L} + \Unicode{004C}{LATIN CAPITAL LETTER L} +\endsetslot + +\setslot{M} + \Unicode{004D}{LATIN CAPITAL LETTER M} +\endsetslot + +\setslot{N} + \Unicode{004E}{LATIN CAPITAL LETTER N} +\endsetslot + +\setslot{O} + \Unicode{004F}{LATIN CAPITAL LETTER O} +\endsetslot + +\setslot{P} + \Unicode{0050}{LATIN CAPITAL LETTER P} +\endsetslot + +\setslot{Q} + \Unicode{0051}{LATIN CAPITAL LETTER Q} +\endsetslot + +\setslot{R} + \Unicode{0052}{LATIN CAPITAL LETTER R} +\endsetslot + +\setslot{S} + \Unicode{0053}{LATIN CAPITAL LETTER S} +\endsetslot + +\setslot{T} + \Unicode{0054}{LATIN CAPITAL LETTER T} +\endsetslot + +\setslot{U} + \Unicode{0055}{LATIN CAPITAL LETTER U} +\endsetslot + +\setslot{V} + \Unicode{0056}{LATIN CAPITAL LETTER V} +\endsetslot + +\setslot{W} + \Unicode{0057}{LATIN CAPITAL LETTER W} +\endsetslot + +\setslot{X} + \Unicode{0058}{LATIN CAPITAL LETTER X} +\endsetslot + +\setslot{Y} + \Unicode{0059}{LATIN CAPITAL LETTER Y} + \label{Y} +\endsetslot + +\setslot{Z} + \Unicode{005A}{LATIN CAPITAL LETTER Z} +\endsetslot + + +\nextslot{97} +\setslot{a} + \Unicode{0061}{LATIN SMALL LETTER A} +\endsetslot + +\setslot{b} + \Unicode{0062}{LATIN SMALL LETTER B} +\endsetslot + +\setslot{c} + \Unicode{0063}{LATIN SMALL LETTER C} +\endsetslot + +\setslot{d} + \Unicode{0064}{LATIN SMALL LETTER D} +\endsetslot + +\setslot{e} + \Unicode{0065}{LATIN SMALL LETTER E} +\endsetslot + +\setslot{f} + \Unicode{0066}{LATIN SMALL LETTER F} + \ifnumber{\int{ligaturing}}={2}\then + \ligature{LIG}{f}{ff} + \ligature{LIG}{i}{fi} + \ligature{LIG}{l}{fl} + \Fi +\endsetslot + +\setslot{g} + \Unicode{0067}{LATIN SMALL LETTER G} +\endsetslot + +\setslot{h} + \Unicode{0068}{LATIN SMALL LETTER H} +\endsetslot + +\setslot{i} + \Unicode{0069}{LATIN SMALL LETTER I} +\endsetslot + +\setslot{j} + \Unicode{006A}{LATIN SMALL LETTER J} +\endsetslot + +\setslot{k} + \Unicode{006B}{LATIN SMALL LETTER K} +\endsetslot + +\setslot{l} + \Unicode{006C}{LATIN SMALL LETTER L} +\endsetslot + +\setslot{m} + \Unicode{006D}{LATIN SMALL LETTER M} +\endsetslot + +\setslot{n} + \Unicode{006E}{LATIN SMALL LETTER N} +\endsetslot + +\setslot{o} + \Unicode{006F}{LATIN SMALL LETTER O} +\endsetslot + +\setslot{p} + \Unicode{0070}{LATIN SMALL LETTER P} +\endsetslot + +\setslot{q} + \Unicode{0071}{LATIN SMALL LETTER Q} +\endsetslot + +\setslot{r} + \Unicode{0072}{LATIN SMALL LETTER R} +\endsetslot + +\setslot{s} + \Unicode{0073}{LATIN SMALL LETTER S} +\endsetslot + +\setslot{t} + \Unicode{0074}{LATIN SMALL LETTER T} +\endsetslot + +\setslot{u} + \Unicode{0075}{LATIN SMALL LETTER U} +\endsetslot + +\setslot{v} + \Unicode{0076}{LATIN SMALL LETTER V} +\endsetslot + +\setslot{w} + \Unicode{0077}{LATIN SMALL LETTER W} +\endsetslot + +\setslot{x} + \Unicode{0078}{LATIN SMALL LETTER X} +\endsetslot + +\setslot{y} + \Unicode{0079}{LATIN SMALL LETTER Y} +\endsetslot + +\setslot{z} + \Unicode{007A}{LATIN SMALL LETTER Z} +\endsetslot + + +\begincomment +\subsection{Greek letters} +\endcomment + +\nextslot{0} +\setslot{Gamma} + \Unicode{0393}{GREEK CAPITAL LETTER GAMMA} +\endsetslot + +\setslot{Delta} + \Unicode{0394}{GREEK CAPITAL LETTER DELTA} +\endsetslot + +\setslot{Theta} + \Unicode{0398}{GREEK CAPITAL LETTER THETA} +\endsetslot + +\setslot{Lambda} + \Unicode{039B}{GREEK CAPITAL LETTER LAMBDA} + % Unicode's preferred name for this character seems to be + % GREEK CAPITAL LETTER LAMDA, i.e., without the `B'. Why? + % GREEK CAPITAL LETTER LAMBDA is listed as an alternative name. +\endsetslot + +\setslot{Xi} + \Unicode{039E}{GREEK CAPITAL LETTER XI} +\endsetslot + +\setslot{Pi} + \Unicode{03A0}{GREEK CAPITAL LETTER PI} +\endsetslot + +\setslot{Sigma} + \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA} +\endsetslot + +\setslot{Upsilon1} + \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL} + \comment{This is primarily a math character and it is should + be visually distinct from the character in slot~\ref{Y}. This is + not generally the case for the normal Upsilon + \textunicode{03A5}{GREEK CAPITAL LETTER UPSILON}, which is by + the way what usually has the glyph name \texttt{Upsilon}. + An argument for the latter is however that all the purely + mathematical Upsilons that exist in the Unicode standard are + described as variants of the non-hook character.} +\endsetslot + +\setslot{Phi} + \Unicode{03A6}{GREEK CAPITAL LETTER PHI} +\endsetslot + +\setslot{Psi} + \Unicode{03A8}{GREEK CAPITAL LETTER PSI} +\endsetslot + +\setslot{Omega} + \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA} +\endsetslot + + +\begincomment +\subsection{Digits} +\endcomment + +\nextslot{48} +\setslot{zero} + \Unicode{0030}{DIGIT ZERO} +\endsetslot + +\setslot{one} + \Unicode{0031}{DIGIT ONE} +\endsetslot + +\setslot{two} + \Unicode{0032}{DIGIT TWO} +\endsetslot + +\setslot{three} + \Unicode{0033}{DIGIT THREE} +\endsetslot + +\setslot{four} + \Unicode{0034}{DIGIT FOUR} +\endsetslot + +\setslot{five} + \Unicode{0035}{DIGIT FIVE} +\endsetslot + +\setslot{six} + \Unicode{0036}{DIGIT SIX} +\endsetslot + +\setslot{seven} + \Unicode{0037}{DIGIT SEVEN} +\endsetslot + +\setslot{eight} + \Unicode{0038}{DIGIT EIGHT} +\endsetslot + +\setslot{nine} + \Unicode{0039}{DIGIT NINE} +\endsetslot + + +\begincomment +\subsection{Accents} +\endcomment + +\nextslot{18} +\setslot{grave} + \Unicode{0300}{COMBINING GRAVE ACCENT} +\endsetslot + +\setslot{acute} + \Unicode{0301}{COMBINING ACUTE ACCENT} +\endsetslot + +\setslot{caron} + \Unicode{030C}{COMBINING CARON} + \comment{The caron or h\'a\v cek accent `\v{}'.} +\endsetslot + +\setslot{breve} + \Unicode{0306}{COMBINING BREVE} +\endsetslot + +\setslot{macron} + \Unicode{0304}{COMBINING MACRON} +\endsetslot + +\setslot{ring} + \Unicode{030A}{COMBINING RING ABOVE} + \comment{The text definition of `\verb|\r{A}|' assumes that this + glyph has the same width as that in slot~\ref{A}.} +\endsetslot + +\setslot{cedilla} + \Unicode{0327}{COMBINING CEDILLA} + \comment{This slot is not required for math, but is used by + the \cs{c} \LaTeX\ command.} +\endsetslot + + +\nextslot{94} +\setslot{circumflex} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \Unicode{005E}{CIRCUMFLEX ACCENT} +\endsetslot + +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{dotaccent} + \Unicode{0307}{COMBINING DOT ABOVE} + \label{dotaccent} +\endsetslot + +\begincomment +\par\medskip +Note that the \(\mathit{ligaturing} = 0\) assignment to +slot~\ref{underscore} is ordinary, not mandatory. +\endcomment + +\Fi + + +\nextslot{126} +\setslot{tilde} + \Unicode{0303}{COMBINING TILDE} + \Unicode{007E}{TILDE} +\endsetslot + +\setslot{dieresis} + \Unicode{0308}{COMBINING DIAERESIS} +\endsetslot + + +\begincomment +\subsection{Symbols} +\endcomment + +\nextslot{33} +\setslot{exclam} + \Unicode{0021}{EXCLAMATION MARK} + \Ligature{LIG}{quoteleft}{exclamdown} +\endsetslot + +\skipslots{1} + +\setslot{numbersign} + \Unicode{0023}{NUMBER SIGN} + \comment{This slot is not used for math.} +\endsetslot + +\ifnumber{\int{italicizing}}={0}\then + +\setslot{dollar} + \Unicode{0024}{DOLLAR SIGN} +\endsetslot + +\Else + +\setslot{sterling} + \Unicode{00A3}{POUND SIGN} +\endsetslot + +\Fi + +\setslot{percent} + \Unicode{0025}{PERCENT SIGN} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{ampersand} + \Unicode{0026}{AMPERSAND} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{quoteright} + \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{quoteright}{quotedblright} + \Fi +\endsetslot + +\setslot{parenleft} + \Unicode{0028}{LEFT PARENTHESIS} +\endsetslot + +\setslot{parenright} + \Unicode{0029}{RIGHT PARENTHESIS} +\endsetslot + +\setslot{asterisk} + \Unicode{002A}{ASTERISK} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{plus} + \Unicode{002B}{PLUS SIGN} +\endsetslot + +\setslot{comma} + \Unicode{002C}{COMMA} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{hyphen} + \Unicode{002D}{HYPHEN-MINUS} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{hyphen}{endash} + \Fi +\endsetslot + +\setslot{period} + \Unicode{002E}{FULL STOP} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{slash} + \Unicode{002F}{SOLIDUS} +\endsetslot + +\nextslot{58} +\setslot{colon} + \Unicode{003A}{COLON} +\endsetslot + +\setslot{semicolon} + \Unicode{003B}{SEMICOLON} +\endsetslot + +\skipslots{1} + +\setslot{equal} + \Unicode{003D}{EQUALS SIGN} +\endsetslot + +\skipslots{1} + +\setslot{question} + \Unicode{003F}{QUESTION MARK} + \Ligature{LIG}{quoteleft}{questiondown} +\endsetslot + +\setslot{at} + \Unicode{0040}{COMMERCIAL AT} + \comment{This slot is not used for math.} +\endsetslot + +\nextslot{91} +\setslot{bracketleft} + \Unicode{005B}{LEFT SQUARE BRACKET} +\endsetslot + +\skipslots{1} + +\setslot{bracketright} + \Unicode{005D}{RIGHT SQUARE BRACKET} +\endsetslot + +\nextslot{96} +\setslot{quoteleft} + \Unicode{2018}{LEFT SINGLE QUOTATION MARK} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{quoteleft}{quotedblleft} + \Fi +\endsetslot + + + +\begincomment +\section{Ordinary characters} + +\subsection{Letters} +\endcomment + +\ifnumber{\int{ligaturing}}={2}\then + +\nextslot{11} +\setslot{ff} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + } + \comment{This glyph should be two characters wide in a monowidth + font.} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} +\endsetslot + +\setslot{fi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{fl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\Fi + +\nextslot{"8A} +\setslot{Lslash} + \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} + \comment{The letter `\L'.} +\endsetslot + +\nextslot{"AA} +\setslot{lslash} + \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} + \comment{The letter `\l'.} +\endsetslot + + +\begincomment +\subsection{Accents} +\endcomment + +\ifnumber{\int{ligaturing}}>{0}\then + +\nextslot{125} +\setslot{hungarumlaut} + \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} + \comment{The long Hungarian umlaut `\H{}'.} +\endsetslot + +\Fi + +\begincomment +\subsection{Symbols} +\endcomment + +\ifnumber{\int{ligaturing}}<{2}\then + +\nextslot{11} +\setslot{arrowup} + \Unicode{2191}{UPWARDS ARROW} +\endsetslot + +\setslot{arrowdown} + \Unicode{2193}{DOWNWARDS ARROW} +\endsetslot + +\setslot{quotesingle} + \Unicode{0027}{APOSTROPHE} +\endsetslot + +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\Fi + +\nextslot{32} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{lslashslash} + \comment{When this character is followed by + \textunicode{004C}{LATIN CAPITAL LETTER L} then the combined + result is \textunicode{0141}{LATIN CAPITAL LETTER L WITH STROKE}; + this is used by the \cs{L} command. When this character is + followed by \textunicode{006C}{LATIN SMALL LETTER L} then the + combined result is \textunicode{0142}{LATIN SMALL LETTER L WITH + STROKE}; this is used by the \cs{l} command. There are no further + semantics for this character.} + \ligature{LIG}{L}{Lslash} + \ligature{LIG}{l}{lslash} + \comment{These ligatures, and the characters they point to, were + added by Alan Jeffrey early in \textsf{fontinst} development in + order to allow the character in this slot to exhibit the correct + behaviour even in fonts where there is no corresponding glyph.} +\endsetslot + +\Else + +\setslot{visiblespace} + \Unicode{2423}{OPEN BOX} + \comment{A visible space glyph `\textvisiblespace'.} +\endsetslot + +\Fi + + +\nextslot{34} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{quotedblright} + \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} +\endsetslot + +\Else + +\setslot{quotedbl} + \Unicode{0022}{QUOTATION MARK} +\endsetslot + +\Fi + +\nextslot{60} +\ifnumber{\int{ligaturing}}={2}\then + +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\skipslots{1} + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\Else + +\setslot{less} + \Unicode{003C}{LESS-THAN SIGN} +\endsetslot + +\skipslots{1} + +\setslot{greater} + \Unicode{003E}{GREATER-THAN SIGN} +\endsetslot + +\Fi + +\nextslot{92} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{quotedblleft} + \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} +\endsetslot + +\Else + +\setslot{backslash} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + +\nextslot{95} +\setslot{underscore} + \Unicode{005F}{LOW LINE} + \label{underscore} +\endsetslot + +\begincomment +\par\medskip +Note that the \(\mathit{ligaturing} > 0\) assignment to +slot~\ref{dotaccent} is mandatory, not ordinary. +\endcomment + +\Fi + + +\nextslot{123} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{endash} + \Unicode{2013}{EN DASH} + \Ligature{LIG}{hyphen}{emdash} +\endsetslot + +\setslot{emdash} + \Unicode{2014}{EM DASH} + \comment{In a monowidth font this character is preferably given the + width of two normal characters.} +\endsetslot + +\Else + +\setslot{braceleft} + \Unicode{007B}{LEFT CURLY BRACKET} +\endsetslot + +\setslot{bar} + \Unicode{007C}{VERTICAL LINE} +\endsetslot + +\setslot{braceright} + \Unicode{007D}{RIGHT CURLY BRACKET} +\endsetslot + +\Fi + + +\begincomment +\section{Fontdimens} +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . + + +\begincomment +\section{Coding scheme} +\endcomment + +\ifnumber{\int{ligaturing}}={2}\then + +\setstr{codingscheme}{TEX TEXT} + +\Else\ifnumber{\int{ligaturing}}={1}\then + +\setstr{codingscheme}{TEX TEXT WITHOUT F-LIGATURES} + +\Else + +\setstr{codingscheme}{TEX TYPEWRITER TEXT} + +\Fi\Fi + + +\endencoding + + +\section{Discussion} + + +\subsection{\texttt{OT1} as math font encoding} + +As source for the math requirements on the \texttt{OT1} encoding +was used the standard \LaTeX\ math set-up~\cite{fontdef}. Those +definitions that make use of \texttt{OT1} fonts either use the +\texttt{operators} symbol font\slash font family~0 or have math +class~7 (\cs{mathalpha}). + +There are two slots used for math that have different assignments +in different encoding variants. Slot 36 (\texttt{dollar}\slash +\texttt{sterling}) depends on the $\mathit{italicizing}$, and is used +by the commands \cs{mathdollar} (called by \verb|\$|) and +\cs{mathsterling} (called by \cs{pounds}). This works because these +commands explicitly take the character from a font with the correct +$\mathit{italicizing}$. + +Slot~95 (\texttt{dotaccent}\slash \texttt{underline}) depends on the +$\mathit{ligaturing}$ and is used by the \cs{dot} command. This +command does \emph{not} work for fonts with \(\mathit{ligaturing}=0\), +and hence e.g.\ the formula \verb|$\mathtt{\dot{x}}$| does not produce +a typewriter dotted `x', but rather an `x' and underscore printed on +top of each other. This is thus an error, but due to that it is +unlikely that the error will be missed by the author who encounters +it, the error is probably harmless. + + +\subsection{\texttt{OT1} as text font encoding} + +The sources used to determine the text requirements on the +\texttt{OT1} encoding were~\cite{ltoutenc}. + +It turns out that there are LICR commands which rely on non-mandatory +features of the font. It is mostly for the \(\mathit{ligaturing} = 0\) +fonts that commands produce incorrect results. The following commands +work with all \texttt{OT1} fonts which have \(\mathit{ligaturing} > 0\) +but fail with the others: \cs{L}, \cs{l}, \cs{.}, \cs{H}, +\cs{textemdash}, \cs{textendash}, and \cs{textquotedblleft}. +In addition, the command \cs{textquotedblright} produces a +reasonable, but not exactly correct, result. + +Traditionally the \cs{textexclamdown} and \cs{textquestiondown} have +only worked for fonts which have \(\mathit{ligaturing} = 2\), but +that can be fixed; see~\cite{latex/3368}. + + +\section{Changes} + +The changes made to this specification since the original 2001/09/09 +version are as follows. + +2004/12/16: Changed the f-ligatures to character sequences, which +makes more sense for \texttt{CMap}s. Incremented needed versions +accordingly. /LH + + +\begin{thebibliography}{9} +\bibitem{ltoutenc} + Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach, + Chris Rowley, and Rainer Sch\"opf: + \textit{ltoutenc.dtx}, v\,1.91 (2000); + the file \texttt{ltoutenc.dtx} in the \LaTeX\ base distribution. +\bibitem{latex/3368} + Lars Hellstr\"om: + \textit{\texttt{OT1} def.\ of \cs{textexclamdown} and + \cs{textquestiondown}}, \LaTeX\ bugs database entry + \textbf{latex/3368}, 2001. +% ; \textsc{http:}/\slash \texttt{www.latex-project.org}\slash +% \texttt{cgi-bin}\slash \texttt{ltxbugs2html\discretionary{?}{}{?}% +% pr=latex/3368}. +\bibitem{ComputerModern} + Donald E. Knuth: + \textit{Computer Modern Typefaces}, + volume E of \textit{Computers \& Typesetting}, + Ad\-di\-son--Wes\-ley, 1986, xvi+588\,pp.; + ISBN~0-201-13446-2. +\bibitem{fontdef} + Frank Mittelbach and Rainer Sch\"opf: + \textit{The \texttt{fontdef.dtx} file}, v\,2.2x (1999); + the file \texttt{fontdef.dtx} in the \LaTeX\ base distribution. +\end{thebibliography} + + +\end{document} + + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx new file mode 100644 index 00000000000..d82c9e53ed0 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx @@ -0,0 +1,1484 @@ +\relax +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2004/11/28] +\usepackage{shortvrb} + +\MakeShortVerb{\|} + +\begin{document} +\title{\texttt{T1} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2002/07/05} +\maketitle + +\begin{abstract} + The \texttt{T1} encoding covers most\footnote{But not quite all.} + letters in the latin script that are used in European languages. + Code points 32--126 coincide with ASCII\footnote{As defined in + Appendix C of \emph{The \TeX book}~\cite{TeXbook}, not as defined + by the ANSI.} and code points 192--255 are mainly the same as in + the latin-1 encoding~\cite{ISO8859-1,latin-page}, but there are + exceptions. +\end{abstract} + +\encoding + +\needsfontinstversion{1.928} + +\begincomment +\section{Mandatory characters} +\endcomment + +\begincomment +\subsection{Letters} +More than two thirds of the characters in the encoding are letters. +This is a deliberate choice: \TeX's hyphenation algorithm requires +that all characters in a word are taken from the same font, hence it +is advantageous\footnote{Probably less so than what was thought when +the encoding was designed, but still advantageous.} to keep as many +letters as possible in the same font. Taking symbols from other fonts +is less of a disadvantage. + +\subsubsection{``Unaccented'' letters in slots 0--127} +\endcomment + +\nextslot{25} +\setslot{dotlessi} + \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} + \comment{A dotless i `\i', used to produce accented letters such as + `\=\i'.} +\endsetslot + +\setslot{dotlessj} + \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} + \comment{A dotless j `\j', used to produce accented letters such as + `\=\j'. The Unicode standard does not define this character, but + Adobe has assigned code point \texttt{U+F6BE} (which lies + in the private use subarea assigned by Adobe) to it.} +\endsetslot + + +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} +\endsetslot + +\setslot{B} + \Unicode{0042}{LATIN CAPITAL LETTER B} +\endsetslot + +\setslot{C} + \Unicode{0043}{LATIN CAPITAL LETTER C} +\endsetslot + +\setslot{D} + \Unicode{0044}{LATIN CAPITAL LETTER D} +\endsetslot + +\setslot{E} + \Unicode{0045}{LATIN CAPITAL LETTER E} +\endsetslot + +\setslot{F} + \Unicode{0046}{LATIN CAPITAL LETTER F} +\endsetslot + +\setslot{G} + \Unicode{0047}{LATIN CAPITAL LETTER G} +\endsetslot + +\setslot{H} + \Unicode{0048}{LATIN CAPITAL LETTER H} +\endsetslot + +\setslot{I} + \Unicode{0049}{LATIN CAPITAL LETTER I} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{J}{IJ} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{j}{IJ} +\endsetslot + +\setslot{J} + \Unicode{004A}{LATIN CAPITAL LETTER J} +\endsetslot + +\setslot{K} + \Unicode{004B}{LATIN CAPITAL LETTER K} +\endsetslot + +\setslot{L} + \Unicode{004C}{LATIN CAPITAL LETTER L} +\endsetslot + +\setslot{M} + \Unicode{004D}{LATIN CAPITAL LETTER M} +\endsetslot + +\setslot{N} + \Unicode{004E}{LATIN CAPITAL LETTER N} +\endsetslot + +\setslot{O} + \Unicode{004F}{LATIN CAPITAL LETTER O} +\endsetslot + +\setslot{P} + \Unicode{0050}{LATIN CAPITAL LETTER P} +\endsetslot + +\setslot{Q} + \Unicode{0051}{LATIN CAPITAL LETTER Q} +\endsetslot + +\setslot{R} + \Unicode{0052}{LATIN CAPITAL LETTER R} +\endsetslot + +\setslot{S} + \Unicode{0053}{LATIN CAPITAL LETTER S} +\endsetslot + +\setslot{T} + \Unicode{0054}{LATIN CAPITAL LETTER T} +\endsetslot + +\setslot{U} + \Unicode{0055}{LATIN CAPITAL LETTER U} +\endsetslot + +\setslot{V} + \Unicode{0056}{LATIN CAPITAL LETTER V} +\endsetslot + +\setslot{W} + \Unicode{0057}{LATIN CAPITAL LETTER W} +\endsetslot + +\setslot{X} + \Unicode{0058}{LATIN CAPITAL LETTER X} +\endsetslot + +\setslot{Y} + \Unicode{0059}{LATIN CAPITAL LETTER Y} +\endsetslot + +\setslot{Z} + \Unicode{005A}{LATIN CAPITAL LETTER Z} +\endsetslot + + +\nextslot{97} +\setslot{a} + \Unicode{0061}{LATIN SMALL LETTER A} +\endsetslot + +\setslot{b} + \Unicode{0062}{LATIN SMALL LETTER B} +\endsetslot + +\setslot{c} + \Unicode{0063}{LATIN SMALL LETTER C} +\endsetslot + +\setslot{d} + \Unicode{0064}{LATIN SMALL LETTER D} +\endsetslot + +\setslot{e} + \Unicode{0065}{LATIN SMALL LETTER E} +\endsetslot + +\setslot{f} + \Unicode{0066}{LATIN SMALL LETTER F} + \ligature{LIG}{f}{ff} + \ligature{LIG}{i}{fi} + \ligature{LIG}{l}{fl} +\endsetslot + +\setslot{g} + \Unicode{0067}{LATIN SMALL LETTER G} +\endsetslot + +\setslot{h} + \Unicode{0068}{LATIN SMALL LETTER H} +\endsetslot + +\setslot{i} + \Unicode{0069}{LATIN SMALL LETTER I} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{j}{ij} +\endsetslot + +\setslot{j} + \Unicode{006A}{LATIN SMALL LETTER J} +\endsetslot + +\setslot{k} + \Unicode{006B}{LATIN SMALL LETTER K} +\endsetslot + +\setslot{l} + \Unicode{006C}{LATIN SMALL LETTER L} +\endsetslot + +\setslot{m} + \Unicode{006D}{LATIN SMALL LETTER M} +\endsetslot + +\setslot{n} + \Unicode{006E}{LATIN SMALL LETTER N} +\endsetslot + +\setslot{o} + \Unicode{006F}{LATIN SMALL LETTER O} +\endsetslot + +\setslot{p} + \Unicode{0070}{LATIN SMALL LETTER P} +\endsetslot + +\setslot{q} + \Unicode{0071}{LATIN SMALL LETTER Q} +\endsetslot + +\setslot{r} + \Unicode{0072}{LATIN SMALL LETTER R} +\endsetslot + +\setslot{s} + \Unicode{0073}{LATIN SMALL LETTER S} +\endsetslot + +\setslot{t} + \Unicode{0074}{LATIN SMALL LETTER T} +\endsetslot + +\setslot{u} + \Unicode{0075}{LATIN SMALL LETTER U} +\endsetslot + +\setslot{v} + \Unicode{0076}{LATIN SMALL LETTER V} +\endsetslot + +\setslot{w} + \Unicode{0077}{LATIN SMALL LETTER W} +\endsetslot + +\setslot{x} + \Unicode{0078}{LATIN SMALL LETTER X} +\endsetslot + +\setslot{y} + \Unicode{0079}{LATIN SMALL LETTER Y} +\endsetslot + +\setslot{z} + \Unicode{007A}{LATIN SMALL LETTER Z} +\endsetslot + + +\begincomment +\subsubsection{Mainly East-European accented letters + in slots 128--191} +\endcomment + +\nextslot{128} +\setslot{Abreve} + \Unicode{0102}{LATIN CAPITAL LETTER A WITH BREVE} +\endsetslot + +\setslot{Aogonek} + \Unicode{0104}{LATIN CAPITAL LETTER A WITH OGONEK} +\endsetslot + +\setslot{Cacute} + \Unicode{0106}{LATIN CAPITAL LETTER C WITH ACUTE} +\endsetslot + +\setslot{Ccaron} + \Unicode{010C}{LATIN CAPITAL LETTER C WITH CARON} +\endsetslot + +\setslot{Dcaron} + \Unicode{010E}{LATIN CAPITAL LETTER D WITH CARON} +\endsetslot + +\setslot{Ecaron} + \Unicode{011A}{LATIN CAPITAL LETTER E WITH CARON} +\endsetslot + +\setslot{Eogonek} + \Unicode{0118}{LATIN CAPITAL LETTER E WITH OGONEK} +\endsetslot + +\setslot{Gbreve} + \Unicode{011E}{LATIN CAPITAL LETTER G WITH BREVE} +\endsetslot + +\setslot{Lacute} + \Unicode{0139}{LATIN CAPITAL LETTER L WITH ACUTE} +\endsetslot + +\setslot{Lcaron} + \Unicode{013D}{LATIN CAPITAL LETTER L WITH CARON} + \comment{The normal glyph for this character consists of a capital + L and a right single quote, but the underlying accent is a caron. + The glyph name \texttt{Lquoteright} is not uncommon, but + \cite{AGL} uses \texttt{Lcaron}.} +\endsetslot + +\setslot{Lslash} + \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} + \comment{The letter `\L'.} +\endsetslot + +\setslot{Nacute} + \Unicode{0143}{LATIN CAPITAL LETTER N WITH ACUTE} +\endsetslot + +\setslot{Ncaron} + \Unicode{0147}{LATIN CAPITAL LETTER N WITH CARON} +\endsetslot + +\setslot{Eng} + \Unicode{014A}{LATIN CAPITAL LETTER ENG} +\endsetslot + +\setslot{Ohungarumlaut} + \Unicode{0150}{LATIN CAPITAL LETTER O WITH DOUBLE ACUTE} + \comment{The letter `\H{O}'.} +\endsetslot + +\setslot{Racute} + \Unicode{0154}{LATIN CAPITAL LETTER R WITH ACUTE} +\endsetslot + +\setslot{Rcaron} + \Unicode{0158}{LATIN CAPITAL LETTER R WITH CARON} +\endsetslot + +\setslot{Sacute} + \Unicode{015A}{LATIN CAPITAL LETTER S WITH ACUTE} +\endsetslot + +\setslot{Scaron} + \Unicode{0160}{LATIN CAPITAL LETTER S WITH CARON} +\endsetslot + +\setslot{Scedilla} + \Unicode{015E}{LATIN CAPITAL LETTER S WITH CEDILLA} + \comment{In Romanian, character \textunicode{0218}{latin + capital letter s with comma below} is preferred, but that + wasn't known when this encoding was designed.} +\endsetslot + +\setslot{Tcaron} + \Unicode{0164}{LATIN CAPITAL LETTER T WITH CARON} +\endsetslot + +\setslot{Tcommaaccent} + \Unicode{021A}{LATIN CAPITAL LETTER T WITH COMMA BELOW} +\endsetslot + +\setslot{Uhungarumlaut} + \Unicode{0170}{LATIN CAPITAL LETTER U WITH DOUBLE ACUTE} + \comment{The letter `\H{U}'.} +\endsetslot + +\setslot{Uring} + \Unicode{016E}{LATIN CAPITAL LETTER U WITH RING ABOVE} +\endsetslot + +\setslot{Ydieresis} + \Unicode{0178}{LATIN CAPITAL LETTER Y WITH DIAERESIS} +\endsetslot + +\setslot{Zacute} + \Unicode{0179}{LATIN CAPITAL LETTER Z WITH ACUTE} +\endsetslot + +\setslot{Zcaron} + \Unicode{017D}{LATIN CAPITAL LETTER Z WITH CARON} +\endsetslot + +\setslot{Zdotaccent} + \Unicode{017B}{LATIN CAPITAL LETTER Z WITH DOT ABOVE} +\endsetslot + +\skipslots{1} +\setslot{Idotaccent} + \Unicode{0130}{LATIN CAPITAL LETTER I WITH DOT ABOVE} + \comment{This character's |\lccode| value points to slot 105 + (\texttt{i}), as does that of slot 73 (\texttt{I}).} +\endsetslot + +\setslot{dcroat} + \Unicode{0111}{LATIN SMALL LETTER D WITH STROKE} +\endsetslot + + +\nextslot{160} +\setslot{abreve} + \Unicode{0103}{LATIN SMALL LETTER A WITH BREVE} +\endsetslot + +\setslot{aogonek} + \Unicode{0105}{LATIN SMALL LETTER A WITH OGONEK} +\endsetslot + +\setslot{cacute} + \Unicode{0107}{LATIN SMALL LETTER C WITH ACUTE} +\endsetslot + +\setslot{ccaron} + \Unicode{010D}{LATIN SMALL LETTER C WITH CARON} +\endsetslot + +\setslot{dcaron} + \Unicode{010F}{LATIN SMALL LETTER D WITH CARON} + \comment{The normal glyph for this character consists of a + lower case d and a right single quote, but the underlying + accent is a caron.} +\endsetslot + +\setslot{ecaron} + \Unicode{011B}{LATIN SMALL LETTER E WITH CARON} +\endsetslot + +\setslot{eogonek} + \Unicode{0119}{LATIN SMALL LETTER E WITH OGONEK} +\endsetslot + +\setslot{gbreve} + \Unicode{011F}{LATIN SMALL LETTER G WITH BREVE} +\endsetslot + +\setslot{lacute} + \Unicode{013A}{LATIN SMALL LETTER L WITH ACUTE} +\endsetslot + +\setslot{lcaron} + \Unicode{013E}{LATIN SMALL LETTER L WITH CARON} + \comment{The normal glyph for this character consists of a + lower case l and a right single quote, but the underlying + accent is a caron. The glyph name \texttt{lquoteright} is + not uncommon, but \cite{AGL} uses \texttt{lcaron}.} +\endsetslot + +\setslot{lslash} + \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} +\endsetslot + +\setslot{nacute} + \Unicode{0144}{LATIN SMALL LETTER N WITH ACUTE} +\endsetslot + +\setslot{ncaron} + \Unicode{0148}{LATIN SMALL LETTER N WITH CARON} +\endsetslot + +\setslot{eng} + \Unicode{014B}{LATIN SMALL LETTER ENG} +\endsetslot + +\setslot{ohungarumlaut} + \Unicode{0151}{LATIN SMALL LETTER O WITH DOUBLE ACUTE} + \comment{The letter `\H{o}'.} +\endsetslot + +\setslot{racute} + \Unicode{0155}{LATIN SMALL LETTER R WITH ACUTE} +\endsetslot + +\setslot{rcaron} + \Unicode{0159}{LATIN SMALL LETTER R WITH CARON} +\endsetslot + +\setslot{sacute} + \Unicode{015B}{LATIN SMALL LETTER S WITH ACUTE} +\endsetslot + +\setslot{scaron} + \Unicode{0161}{LATIN SMALL LETTER S WITH CARON} +\endsetslot + +\setslot{scedilla} + \Unicode{015F}{LATIN SMALL LETTER S WITH CEDILLA} + \comment{In Romanian, character \textunicode{0219}{latin + small letter s with comma below} is preferred, but that + wasn't known when this encoding was designed.} +\endsetslot + +\setslot{tcaron} + \Unicode{0165}{LATIN SMALL LETTER T WITH CARON} + \comment{The normal glyph for this character consists of a + lower case t and a right single quote, but the underlying + accent is a caron.} +\endsetslot + +\setslot{tcommaaccent} + \Unicode{021B}{LATIN SMALL LETTER T WITH COMMA BELOW} +\endsetslot + +\setslot{uhungarumlaut} + \Unicode{0171}{LATIN SMALL LETTER U WITH DOUBLE ACUTE} +\endsetslot + +\setslot{uring} + \Unicode{016F}{LATIN SMALL LETTER U WITH RING ABOVE} +\endsetslot + +\setslot{ydieresis} + \Unicode{00FF}{LATIN SMALL LETTER Y WITH DIAERESIS} +\endsetslot + +\setslot{zacute} + \Unicode{017A}{LATIN SMALL LETTER Z WITH ACUTE} +\endsetslot + +\setslot{zcaron} + \Unicode{017E}{LATIN SMALL LETTER Z WITH CARON} +\endsetslot + +\setslot{zdotaccent} + \Unicode{017C}{LATIN SMALL LETTER Z WITH DOT ABOVE} +\endsetslot + + +\begincomment +\subsubsection{Mainly West-European accented letters in slots 192--255} +\endcomment + +\nextslot{192} +\setslot{Agrave} + \Unicode{00C0}{LATIN CAPITAL LETTER A WITH GRAVE} +\endsetslot + +\setslot{Aacute} + \Unicode{00C1}{LATIN CAPITAL LETTER A WITH ACUTE} +\endsetslot + +\setslot{Acircumflex} + \Unicode{00C2}{LATIN CAPITAL LETTER A WITH CIRCUMFLEX} +\endsetslot + +\setslot{Atilde} + \Unicode{00C3}{LATIN CAPITAL LETTER A WITH TILDE} +\endsetslot + +\setslot{Adieresis} + \Unicode{00C4}{LATIN CAPITAL LETTER A WITH DIAERESIS} +\endsetslot + +\setslot{Aring} + \Unicode{00C5}{LATIN CAPITAL LETTER A WITH RING ABOVE} +\endsetslot + +\setslot{AE} + \Unicode{00C6}{LATIN CAPITAL LETTER AE} +\endsetslot + +\setslot{Ccedilla} + \Unicode{00C7}{LATIN CAPITAL LETTER C WITH CEDILLA} +\endsetslot + +\setslot{Egrave} + \Unicode{00C8}{LATIN CAPITAL LETTER E WITH GRAVE} +\endsetslot + +\setslot{Eacute} + \Unicode{00C9}{LATIN CAPITAL LETTER E WITH ACUTE} +\endsetslot + +\setslot{Ecircumflex} + \Unicode{00CA}{LATIN CAPITAL LETTER E WITH CIRCUMFLEX} +\endsetslot + +\setslot{Edieresis} + \Unicode{00CB}{LATIN CAPITAL LETTER E WITH DIAERESIS} +\endsetslot + +\setslot{Igrave} + \Unicode{00CC}{LATIN CAPITAL LETTER I WITH GRAVE} +\endsetslot + +\setslot{Iacute} + \Unicode{00CD}{LATIN CAPITAL LETTER I WITH ACUTE} +\endsetslot + +\setslot{Icircumflex} + \Unicode{00CE}{LATIN CAPITAL LETTER I WITH CIRCUMFLEX} +\endsetslot + +\setslot{Idieresis} + \Unicode{00CF}{LATIN CAPITAL LETTER I WITH DIAERESIS} +\endsetslot + +\setslot{Eth} + \Unicode{00D0}{LATIN CAPITAL LETTER ETH} + \Unicode{0110}{LATIN CAPITAL LETTER D WITH STROKE} + \comment{This slot is being used to represent two different + letters whose capital forms are identical. The |\lccode| value + points to slot \ref{eth}.} +\endsetslot + +\setslot{Ntilde} + \Unicode{00D1}{LATIN CAPITAL LETTER N WITH TILDE} +\endsetslot + +\setslot{Ograve} + \Unicode{00D2}{LATIN CAPITAL LETTER O WITH GRAVE} +\endsetslot + +\setslot{Oacute} + \Unicode{00D3}{LATIN CAPITAL LETTER O WITH ACUTE} +\endsetslot + +\setslot{Ocircumflex} + \Unicode{00D4}{LATIN CAPITAL LETTER O WITH CIRCUMFLEX} +\endsetslot + +\setslot{Otilde} + \Unicode{00D5}{LATIN CAPITAL LETTER O WITH TILDE} +\endsetslot + +\setslot{Odieresis} + \Unicode{00D6}{LATIN CAPITAL LETTER O WITH DIAERESIS} +\endsetslot + +\setslot{OE} + \Unicode{0152}{LATIN CAPITAL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `OE'.} +\endsetslot + +\setslot{Oslash} + \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} +\endsetslot + +\setslot{Ugrave} + \Unicode{00D9}{LATIN CAPITAL LETTER U WITH GRAVE} +\endsetslot + +\setslot{Uacute} + \Unicode{00DA}{LATIN CAPITAL LETTER U WITH ACUTE} +\endsetslot + +\setslot{Ucircumflex} + \Unicode{00DB}{LATIN CAPITAL LETTER U WITH CIRCUMFLEX} +\endsetslot + +\setslot{Udieresis} + \Unicode{00DC}{LATIN CAPITAL LETTER U WITH DIAERESIS} +\endsetslot + +\setslot{Yacute} + \Unicode{00DD}{LATIN CAPITAL LETTER Y WITH ACUTE} +\endsetslot + +\setslot{Thorn} + \Unicode{00DE}{LATIN CAPITAL LETTER THORN} +\endsetslot + +\setslot{SS} + \comment{This is an ``uppercased'' sharp s (`\ss') which always + looks exactly like two S's next to each other. In a monowidth + font it should be two letters wide. There are other characters + which could have made better use of this slot; the only function + of this slot which could not have been handled using macros is + that |\SS| and |SS| can have different hyphenation.} + \label{SS} + \charseq{ + \Unicode{0053}{LATIN CAPITAL LETTER S} + \Unicode{0053}{LATIN CAPITAL LETTER S} + } +\endsetslot + +\setslot{agrave} + \Unicode{00E0}{LATIN SMALL LETTER A WITH GRAVE} +\endsetslot + +\setslot{aacute} + \Unicode{00E1}{LATIN SMALL LETTER A WITH ACUTE} +\endsetslot + +\setslot{acircumflex} + \Unicode{00E2}{LATIN SMALL LETTER A WITH CIRCUMFLEX} +\endsetslot + +\setslot{atilde} + \Unicode{00E3}{LATIN SMALL LETTER A WITH TILDE} +\endsetslot + +\setslot{adieresis} + \Unicode{00E4}{LATIN SMALL LETTER A WITH DIAERESIS} +\endsetslot + +\setslot{aring} + \Unicode{00E5}{LATIN SMALL LETTER A WITH RING ABOVE} +\endsetslot + +\setslot{ae} + \Unicode{00E6}{LATIN SMALL LETTER AE} +\endsetslot + +\setslot{ccedilla} + \Unicode{00E7}{LATIN SMALL LETTER C WITH CEDILLA} +\endsetslot + +\setslot{egrave} + \Unicode{00E8}{LATIN SMALL LETTER E WITH GRAVE} +\endsetslot + +\setslot{eacute} + \Unicode{00E9}{LATIN SMALL LETTER E WITH ACUTE} +\endsetslot + +\setslot{ecircumflex} + \Unicode{00EA}{LATIN SMALL LETTER E WITH CIRCUMFLEX} +\endsetslot + +\setslot{edieresis} + \Unicode{00EB}{LATIN SMALL LETTER E WITH DIAERESIS} +\endsetslot + +\setslot{igrave} + \Unicode{00EC}{LATIN SMALL LETTER I WITH GRAVE} +\endsetslot + +\setslot{iacute} + \Unicode{00ED}{LATIN SMALL LETTER I WITH ACUTE} +\endsetslot + +\setslot{icircumflex} + \Unicode{00EE}{LATIN SMALL LETTER I WITH CIRCUMFLEX} +\endsetslot + +\setslot{idieresis} + \Unicode{00EF}{LATIN SMALL LETTER I WITH DIAERESIS} +\endsetslot + +\setslot{eth} + \Unicode{00F0}{LATIN SMALL LETTER ETH} + \label{eth} +\endsetslot + +\setslot{ntilde} + \Unicode{00F1}{LATIN SMALL LETTER N WITH TILDE} +\endsetslot + +\setslot{ograve} + \Unicode{00F2}{LATIN SMALL LETTER O WITH GRAVE} +\endsetslot + +\setslot{oacute} + \Unicode{00F3}{LATIN SMALL LETTER O WITH ACUTE} +\endsetslot + +\setslot{ocircumflex} + \Unicode{00F4}{LATIN SMALL LETTER O WITH CIRCUMFLEX} +\endsetslot + +\setslot{otilde} + \Unicode{00F5}{LATIN SMALL LETTER O WITH TILDE} +\endsetslot + +\setslot{odieresis} + \Unicode{00F6}{LATIN SMALL LETTER O WITH DIAERESIS} +\endsetslot + +\setslot{oe} + \Unicode{0153}{LATIN SMALL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `oe'.} +\endsetslot + +\setslot{oslash} + \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} +\endsetslot + +\setslot{ugrave} + \Unicode{00F9}{LATIN SMALL LETTER U WITH GRAVE} +\endsetslot + +\setslot{uacute} + \Unicode{00FA}{LATIN SMALL LETTER U WITH ACUTE} +\endsetslot + +\setslot{ucircumflex} + \Unicode{00FB}{LATIN SMALL LETTER U WITH CIRCUMFLEX} +\endsetslot + +\setslot{udieresis} + \Unicode{00FC}{LATIN SMALL LETTER U WITH DIAERESIS} +\endsetslot + +\setslot{yacute} + \Unicode{00FD}{LATIN SMALL LETTER Y WITH ACUTE} +\endsetslot + +\setslot{thorn} + \Unicode{00FE}{LATIN SMALL LETTER THORN} +\endsetslot + +\setslot{germandbls} + \Unicode{00DF}{LATIN SMALL LETTER SHARP S} +\endsetslot + + +\begincomment +\subsection{Accents} +The Unicode equivalents of the accents are taken to be the combining +forms of the accents found in code point \texttt{U+0300} and upwards. +The reasons for this are (i) that they are primarily used with the +|\accent| primitive, i.e., as combining characters, (ii) that some +of them (e.g. \texttt{tilde}) have non-combining counterparts +elsewhere in the encoding, and (iii) that they are not primarily +phonetic marks. +\endcomment + +\nextslot{0} +\setslot{grave} + \Unicode{0300}{COMBINING GRAVE ACCENT} +\endsetslot + +\setslot{acute} + \Unicode{0301}{COMBINING ACUTE ACCENT} +\endsetslot + +\setslot{circumflex} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} +\endsetslot + +\setslot{tilde} + \Unicode{0303}{COMBINING TILDE} +\endsetslot + +\setslot{dieresis} + \Unicode{0308}{COMBINING DIAERESIS} +\endsetslot + +\setslot{hungarumlaut} + \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} + \comment{The long Hungarian umlaut `\H{}'.} +\endsetslot + +\setslot{ring} + \Unicode{030A}{COMBINING RING ABOVE} +\endsetslot + +\setslot{caron} + \Unicode{030C}{COMBINING CARON} + \comment{The caron or h\'a\v cek accent `\v{}'.} +\endsetslot + +\setslot{breve} + \Unicode{0306}{COMBINING BREVE} +\endsetslot + +\setslot{macron} + \Unicode{0304}{COMBINING MACRON} +\endsetslot + +\setslot{dotaccent} + \Unicode{0307}{COMBINING DOT ABOVE} +\endsetslot + +\setslot{cedilla} + \Unicode{0327}{COMBINING CEDILLA} +\endsetslot + +\setslot{ogonek} + \Unicode{0328}{COMBINING OGONEK} +\endsetslot + + +\begincomment +\subsection{Digits} +\endcomment + +\nextslot{48} +\setslot{zero} + \Unicode{0030}{DIGIT ZERO} +\endsetslot + +\setslot{one} + \Unicode{0031}{DIGIT ONE} +\endsetslot + +\setslot{two} + \Unicode{0032}{DIGIT TWO} +\endsetslot + +\setslot{three} + \Unicode{0033}{DIGIT THREE} +\endsetslot + +\setslot{four} + \Unicode{0034}{DIGIT FOUR} +\endsetslot + +\setslot{five} + \Unicode{0035}{DIGIT FIVE} +\endsetslot + +\setslot{six} + \Unicode{0036}{DIGIT SIX} +\endsetslot + +\setslot{seven} + \Unicode{0037}{DIGIT SEVEN} +\endsetslot + +\setslot{eight} + \Unicode{0038}{DIGIT EIGHT} +\endsetslot + +\setslot{nine} + \Unicode{0039}{DIGIT NINE} +\endsetslot + + +\begincomment +\subsection{Symbols and punctuation} +\endcomment + +\nextslot{13} +\setslot{quotesinglbase} + \Unicode{201A}{SINGLE LOW-9 QUOTATION MARK} +\endsetslot + +\setslot{guilsinglleft} + \Unicode{2039}{SINGLE LEFT-POINTING ANGLE QUOTATION MARK} + \comment{In French typography this is an opening quotation mark, + but in German typography it is a closing quotation mark. The + character should kern well in both cases.} +\endsetslot + +\setslot{guilsinglright} + \Unicode{203A}{SINGLE RIGHT-POINTING ANGLE QUOTATION MARK} + \comment{In French typography this is a closing quotation mark, + but in German typography it is an opening quotation mark. The + character should kern well in both cases.} +\endsetslot + +\setslot{quotedblleft} + \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} +\endsetslot + +\setslot{quotedblright} + \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} + \comment{In English typography this quotation mark is always + closing, but in Swedish typography it is also an opening + quotation mark. The character should kern well in both cases.} +\endsetslot + +\setslot{quotedblbase} + \Unicode{201E}{DOUBLE LOW-9 QUOTATION MARK} +\endsetslot + +\setslot{guillemotleft} + \Unicode{00AB}{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK} + \comment{In French typography this is an opening quotation mark, + but in German typography it is a closing quotation mark. The + character should kern well in both cases. The glyph name is + misspelt (it should be \texttt{guillemetleft}), but this + incorrect name is \emph{de facto} the glyph name used.} +\endsetslot + +\setslot{guillemotright} + \Unicode{00BB}{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK} + \comment{In French typography this is a closing quotation mark, + but in German typography it is an opening quotation mark. The + character should kern well in both cases. The glyph name is + misspelt (it should be \texttt{guillemetright}), but this + incorrect name is \emph{de facto} the glyph name used.} +\endsetslot + +\setslot{endash} + \Unicode{2013}{EN DASH} + \label{endash} + \Ligature{LIG}{hyphen}{emdash} +\endsetslot + +\setslot{emdash} + \Unicode{2014}{EM DASH} + \comment{In a monowidth font this character is preferably given the + width of two normal characters.} +\endsetslot + +\nextslot{32} +\setslot{visiblespace} + \Unicode{2423}{OPEN BOX} + \comment{A visible space glyph `\textvisiblespace'.} +\endsetslot + +\setslot{exclam} + \Unicode{0021}{EXCLAMATION MARK} + \Ligature{LIG}{quoteleft}{exclamdown} +\endsetslot + +\setslot{quotedbl} + \Unicode{0022}{QUOTATION MARK} + \comment{The `neutral' double quotation mark, included for use in + monowidth fonts, or for setting computer programs.} +\endsetslot + +\setslot{numbersign} + \Unicode{0023}{NUMBER SIGN} +\endsetslot + +\setslot{dollar} + \Unicode{0024}{DOLLAR SIGN} +\endsetslot + +\setslot{percent} + \Unicode{0025}{PERCENT SIGN} +\endsetslot + +\setslot{ampersand} + \Unicode{0026}{AMPERSAND} +\endsetslot + +\setslot{quoteright} + \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} + \Ligature{LIG}{quoteright}{quotedblright} +\endsetslot + +\setslot{parenleft} + \Unicode{0028}{LEFT PARENTHESIS} +\endsetslot + +\setslot{parenright} + \Unicode{0029}{RIGHT PARENTHESIS} +\endsetslot + +\setslot{asterisk} + \Unicode{002A}{ASTERISK} +\endsetslot + +\setslot{plus} + \Unicode{002B}{PLUS SIGN} +\endsetslot + +\setslot{comma} + \Unicode{002C}{COMMA} + \Ligature{LIG}{comma}{quotedblbase} +\endsetslot + +\setslot{hyphen} + \Unicode{002D}{HYPHEN-MINUS} + \Ligature{LIG}{hyphen}{endash} + \Ligature{LIG}{hyphenchar}{hyphenchar} + \comment{See also slot \ref{hyphenchar}.} + \label{hyphen} +\endsetslot + +\setslot{period} + \Unicode{002E}{FULL STOP} +\endsetslot + +\setslot{slash} + \Unicode{002F}{SOLIDUS} +\endsetslot + +\skipslots{10} +\setslot{colon} + \Unicode{003A}{COLON} +\endsetslot + +\setslot{semicolon} + \Unicode{003B}{SEMICOLON} +\endsetslot + +\setslot{less} + \Unicode{003C}{LESS-THAN SIGN} + \Ligature{LIG}{less}{guillemotleft} +\endsetslot + +\setslot{equal} + \Unicode{003D}{EQUALS SIGN} +\endsetslot + +\setslot{greater} + \Unicode{003E}{GREATER-THAN SIGN} + \Ligature{LIG}{greater}{guillemotright} +\endsetslot + +\setslot{question} + \Unicode{003F}{QUESTION MARK} + \Ligature{LIG}{quoteleft}{questiondown} +\endsetslot + +\setslot{at} + \Unicode{0040}{COMMERCIAL AT} +\endsetslot + +\nextslot{91} +\setslot{bracketleft} + \Unicode{005B}{LEFT SQUARE BRACKET} +\endsetslot + +\setslot{backslash} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + +\setslot{bracketright} + \Unicode{005D}{RIGHT SQUARE BRACKET} +\endsetslot + +\setslot{asciicircum} + \Unicode{005E}{CIRCUMFLEX ACCENT} + \comment{The ASCII upward-pointing arrow head `\textasciicircum'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\setslot{underscore} + \Unicode{005F}{LOW LINE} + \comment{The ASCII underline character `\textunderscore', usually + set on the baseline. This is included for compatibility with + typewriter fonts used for computer listings.} +\endsetslot + +\setslot{quoteleft} + \Unicode{2018}{LEFT SINGLE QUOTATION MARK} + \Ligature{LIG}{quoteleft}{quotedblleft} +\endsetslot + +\nextslot{123} +\setslot{braceleft} + \Unicode{007B}{LEFT CURLY BRACKET} +\endsetslot + +\setslot{bar} + \Unicode{007C}{VERTICAL LINE} + \comment{The ASCII vertical bar `\textbar'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\setslot{braceright} + \Unicode{007D}{RIGHT CURLY BRACKET} +\endsetslot + +\setslot{asciitilde} + \Unicode{007E}{TILDE} + \comment{The ASCII tilde `\textasciitilde'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\nextslot{159} +\setslot{section} + \Unicode{00A7}{SECTION SIGN} +\endsetslot + +\nextslot{189} +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\setslot{sterling} + \Unicode{00A3}{POUND SIGN} +\endsetslot + + + +\begincomment +\subsection{Miscellanea} +\endcomment + +\nextslot{23} +\setslot{compwordmark} + \Unicode{200C}{ZERO WIDTH NON-JOINER} + \comment{An invisible glyph, with zero width and depth, but the + height of lower case letters without ascenders. + It is used to stop ligaturing in words like `shelf{}ful'. + It is possible that this character should be considered a + letter (and that hyphenation patterns should be designed to + include it), but since its |\lccode| is 0, \TeX's hyphenation + mechanism considers it to be a nonletter which ends the + hyphenatable part of a word.} +\endsetslot + +\setslot{perthousandzero} + \comment{A glyph which is placed after `\%' to produce a + `per-thousand', or twice to produce `per-ten-thousand'. + Your guess is as good as mine as to what this glyph should look + like in a monowidth font. Since most fonts don't include this + glyph anyway, its use is discouraged.} +\endsetslot + +\nextslot{127} +\setslot{hyphenchar} + \label{hyphenchar} + \comment{This character is provided as a discretionary hyphen + symbol and may only appear at the end of a line, since it is often + hanging out of the character box, but apart from that it is almost + always the same as the \texttt{hyphen} character. Since \LaTeX\ + sets the |\hyphenchar| of \texttt{T1} fonts to slot \ref{hyphen} + rather than this slot, this feature is usually not used.} +\endsetslot + + + +\begincomment +\section{Usual characters} +The following characters are only accessed through ligatures and can +therefore be replaced by others or completely left out if the +ligature programs are modified accordingly. +\endcomment + + +\nextslot{27} +\setslot{ff} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + } + \comment{This glyph should be two characters wide in a monowidth + font.} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} +\endsetslot + +\setslot{fi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{fl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\nextslot{156} +\setslot{IJ} + \Unicode{0132}{LATIN CAPITAL LIGATURE IJ} + \comment{This is a single letter, and in a monowidth font should + ideally be one letter wide.} +\endsetslot + +\nextslot{188} +\setslot{ij} + \Unicode{0133}{LATIN SMALL LIGATURE IJ} + \comment{This is a single letter, and in a monowidth font should + ideally be one letter wide.} +\endsetslot + + +\begincomment +\section{Fontdimens} +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . +\setfontdimen{8}{capheight} % cap height +\setfontdimen{9}{ascender} % ascender +\setfontdimen{10}{acccapheight} % accented cap height +\setfontdimen{11}{descender} % descender's depth +\setfontdimen{12}{maxheight} % max height +\setfontdimen{13}{maxdepth} % max depth +\setfontdimen{14}{digitwidth} % digit width +\setfontdimen{15}{verticalstem} % dominant width of verical stems +\setfontdimen{16}{baselineskip} % baselineskip + + +\begincomment +\section{Coding scheme} +\endcomment + +\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN} + + +\endencoding + + +\section{Discussion} + +As the \texttt{T1} encoding is an established standard, the discussion +of it has already been published elsewhere. [Unfortunately, I do not +know where as it all happened long before I started using \TeX. This +part of the document definitely needs to be improved. To begin with, I +would like to know if the TUGboat articles whose bibliography entries +appear in Figure~\ref{Bib-entries} are relevant for the matter. +\begin{figure*} +\small +\begin{verbatim} +@Article{Beebe:TB11-2-171, + author = "Nelson Beebe", + title = "{Character set encoding}", + journal = j-TUGboat, + volume = "11", + number = "2", + pages = "171--175", + month = jun, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +@Article{Bien:TB11-2-175, + author = "Janusz S. Bie{\'n}", + title = "{On standards for computer modern font extensions}", + journal = j-TUGboat, + volume = "11", + number = "2", + pages = "175--183", + month = jun, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +@Article{Ferguson:TB11-4-514, + author = "Michael Ferguson", + title = "{Report on multilingual activities}", + journal = j-TUGboat, + volume = "11", + number = "4", + pages = "514--516", + month = nov, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +\end{verbatim} +\normalsize + +\caption{Entries in \texttt{tugboat.bib} which may describe papers +that contain (at least part of) the discussion regarding the +\texttt{T1} encoding} +\label{Bib-entries} +\end{figure*} +Actually reading them would be nice too, as would of course getting +the references for whatever other papers there might be that +constituted the discussion of the \texttt{T1} encoding. The file +\texttt{cork.enc} in the \textit{Fontname} standard makes a cryptic +reference to ``TTN 1(4), December 1992'', whatever that might be.] + +I can however answer questions on the more immediate matter of how the +interpretation of the established standard that this file expresses was +constructed. It is mainly the result of a comparison between the +file \texttt{t1.etx}~\cite{t1.etx}, the Unicode +standard~\cite{Unicode}, and the Adobe glyph list~\cite{AGL}. + +(Some concerns have been expressed about the fact that the glyph name +listed for slot~0 is `\texttt{grave}', although that glyph name in +\cite{AGL} corresponds to \textunicode{0060}{GRAVE ACCENT}, whereas +\textunicode{0300}{COMBINING GRAVE ACCENT} is listed as corresponding +to `\texttt{gravecomb}'. This is however formally irrelevant, since +the glyph names are formally only internal labels in the encoding +specification. `\texttt{gravecomb}' would furthermore be a more +impractical label, since most font contains a `\texttt{grave}' glyph +that is used as a combining accent but no `\texttt{gravecomb}' +glyph.) + + +\section{Changes} + +The changes made to this specification since the original 2001/06/19 +version are as follows. + +2001/09/01: Corrected some typos (reported by Vladimir Volovich). /LH + +2001/09/16: Added \cite{latin-page} to the bibliography. /LH + +2001/09/21: Removed comment on \textunicode{2012}{FIGURE DASH} from +slot~\ref{endash}. \cite[Sec.~6.1]{Unicode} makes quite clear that +it's not to be used for ranges. /LH + +2002/07/05: Added the Ferguson:TB11-4-514 and ``TTN~1(4)'' references +to the discussion section. Also added remark on \texttt{grave} versus +\texttt{gravecomb}. /LH + +2004/11/28: Changed the f-ligatures to character sequences, which +makes more sense for \texttt{CMap}s. Added equivalent for +slot~\ref{SS}. /LH + + +\begin{thebibliography}{9} +\bibitem{AGL} + Adobe Systems Incorporated: \textit{Adobe Glyph List}, 1998; + \textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{glyphlist.txt} +\bibitem{latin-page} + Roman Czyborra: \textit{The ISO 8859 Alphabet Soup}, web page at + \textsc{http:}/\slash \texttt{czyborra.com}\slash + \texttt{charsets}\slash \texttt{iso8859.html}, 1998. +\bibitem{ISO8859-1} + International Organization for Standardization: + \textit{ISO/IEC standard 8859-1} (Information technology -- + 8-bit single-byte coded graphic character sets -- + Part 1: Latin alphabet No. 1). + See also~\cite{latin-page}. +\bibitem{t1.etx} + Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: + \textit{The \TeX\ extended text encoding vector}, + version~1.801, 1998, + \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{fonts}\slash + \texttt{utilities}\slash \texttt{fontinst}\slash + \texttt{inputs}\slash \texttt{etx}\slash \texttt{t1.etx}. +\bibitem{TeXbook} + Donald E.\ Knuth, Duane Bibby (illustrations): + \textit{The \TeX book}, Ad\-di\-son--Wes\-ley, 1986; + ISBN~0-201-13447-0. +\bibitem{Unicode} + The Unicode Consortium (editor), \emph{et al.}: + \textit{The Unicode Standard, Version 3.0}, + Addison Wesley Longman Publisher, 2000; ISBN~0-201-61633-5. + Most of the information in this book is also available online at + the Unicode consortium website, at \textsc{http}:/\slash + \texttt{www.unicode.org}\slash \texttt{unicode}\slash + \texttt{uni2book}\slash \texttt{u2.html}. +\end{thebibliography} + + + +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex new file mode 100644 index 00000000000..fe7f6f69935 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex @@ -0,0 +1,431 @@ +% basicex.tex +% +% This file contains some basic examples of commands for +% installing the AGaramond family of fonts with fontinst v1.9. +% It is pretty similar to what the \latinfamily command +% does for these fonts, but the details are not identical. +% +% In case you want to run this file yourself, the metrics for +% the AGaramond font family can be downloaded from +% +% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/051-100/100/ +% and +% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/101-150/101/ +% +% The AFM files found in these directories should then be renamed +% as indicated in the Fontname adobe.map file. Also note that +% the line endings are Windows-style (CRLF), so you probably need +% to download as binary and do some conversion before you can use +% these files comfortably. + +\input fontinst.sty + +% This tells fontinst to collect information about font +% transformations in the file basicex.recs. That file is +% then used by basicex2.tex. +\recordtransforms{basicex.recs} + +% These commands perform transformations on the metrics of +% some of the fonts, thereby creating new metrics files for +% the transformed fonts. +\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} +\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}} +\transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}} +\transformfont{padro8r}{\slantfont{250}{\frommtx{padr8r}}} +\transformfont{padro8x}{\slantfont{250}{\fromafm{padr8x}}} + +% The first three lines of each group reencode fonts +% so that TeX can access all glyphs in them. +\transformfont{pads8r}{\reencodefont{8r}{\fromafm{pads8a}}} +\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} +\transformfont{padsi8r}{\reencodefont{8r}{\fromafm{padsi8a}}} +% The last two lines artifically create slanted variants +% of fonts by skewing them. 250 is the natural slant of +% the italics in this family. +\transformfont{padso8r}{\slantfont{250}{\frommtx{pads8r}}} +\transformfont{padso8x}{\slantfont{250}{\fromafm{pads8x}}} + +\transformfont{padb8r}{\reencodefont{8r}{\fromafm{padb8a}}} +% There is no padbc8a, hence nothing to make a padbc8r from. +\transformfont{padbi8r}{\reencodefont{8r}{\fromafm{padbi8a}}} +\transformfont{padbo8r}{\slantfont{250}{\frommtx{padb8r}}} +\transformfont{padbo8x}{\slantfont{250}{\fromafm{padb8x}}} +% The DVI driver must be told to make the same transformations +% to the actual fonts when a document using them is to be viewed +% or printed. The information collected in basicex.recs can +% help with this. The job of basicex2.tex is to translate this +% information to a format understood by DVI drivers. + + +% The \transformfont commands above generate metric files in MTX +% format (for use by the \installfont commands below) and PL +% format (for transformation to TFMs that are needed by the DVI +% driver when interpreting VFs based on these fonts). These PL +% files are minimal and not suitable for direct use in typesetting +% since there is no kerning information, ligaturing instructions, +% or fontdimens, but they are perfectly adequate to serve as +% base fonts for VFs. +% +% The next bunch of commands generate a new set of PL files for +% these fonts (overwriting the previous), and these new files +% do contain kerning information, ligaturing instructions, and +% fontdimens. (As a side-effect, these files are also larger than +% the previous ones.) Since 8r-encoded fonts are not in practice +% used for typesetting (not much, anyway), it is perfectly +% possible to skip this step. +\installfonts + \installrawfont {padr8r}{padr8r,8r}{8r} {8r}{pad}{m}{n}{} + \installrawfont {padrc8r}{padrc8r,8r}{8r} {8r}{pad}{m}{sc}{} + \installrawfont {padri8r}{padri8r,8r}{8r} {8r}{pad}{m}{it}{} + \installrawfont {padro8r}{padro8r,8r}{8r} {8r}{pad}{m}{sl}{} + + \installrawfont {pads8r}{pads8r,8r}{8r} {8r}{pad}{sb}{n}{} + \installrawfont {padsc8r}{padsc8r,8r}{8r} {8r}{pad}{sb}{sc}{} + \installrawfont {padsi8r}{padsi8r,8r}{8r} {8r}{pad}{sb}{it}{} + \installrawfont {padso8r}{padso8r,8r}{8r} {8r}{pad}{sb}{sl}{} + + \installrawfont {padb8r}{padb8r,8r}{8r} {8r}{pad}{b}{n}{} + \installrawfont {padbi8r}{padbi8r,8r}{8r} {8r}{pad}{b}{it}{} + \installrawfont {padbo8r}{padbo8r,8r}{8r} {8r}{pad}{b}{sl}{} +\endinstallfonts + + +% In the above commands, the commands have been lined up to +% visually separate those arguments that have to do with how +% a font is declared to LaTeX (rightmost) from those arguments +% that specify how the font is made and what it should be called. + + +% The following commands make a very basic installation of "pad" +% families in the OT1, T1, and TS1 encodings; there is not attempt +% to make use of the -Exp (expert) or -SC (smallcaps) fonts in +% the AGaramond family. (One reason for making this distinction +% is that Adobe sell these other fonts separately, so some people +% may have the basic set used below and nothing more. Another +% reason is that for many typefaces, there are no expert or -SC +% fonts at all. Adapting an example using such fonts to a typeface +% which do not have them is much too confusing for a beginner.) +\installfonts + \installfamily{OT1}{pad}{} + \installfamily{T1}{pad}{} + \installfamily{TS1}{pad}{} + + \installfont {padr8t}{padr8r,newlatin}{t1} {T1}{pad}{m}{n}{} + \installfont {padr7t}{padr8r,newlatin}{ot1} {OT1}{pad}{m}{n}{} + \installfont {padrc8t}{padr8r,newlatin}{t1c} {T1}{pad}{m}{sc}{} + \installfont {padrc7t}{padr8r,newlatin}{ot1c} {OT1}{pad}{m}{sc}{} + \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{} + % There is no difference between the n and the sc shapes + % of TS1 encoded fonts, hence the same TeX font can be + % used for both. LaTeX does however need the declarations + % to be explicit, hence this \installfontas command. + \installfontas{padr8i} {TS1}{pad}{m}{sc}{} + % The "option nosc" below is a speed optimization. + % newlatin.mtx normally makes sure that a smallcaps + % alphabet is defined (faking it if necessary), + % regardless of whether that alphabet is at all + % going to be used. By passing it the "nosc" option, + % one can tell newlatin.mtx to completely skip those + % commands that have to do with smallcaps. + \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{} + \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{} + \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{} + \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{} + \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{} + \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{} + + % The reason newlatin is not passed the nosc option when + % making the "n" shape fonts here is another (more tricky) + % speed optimization. If the metric argument of two + % subsequent \installfont commands are identical then the + % respective glyph bases will be identical too, and in these + % cases fontinst saves work by not rebuilding the glyph base + % at the second command, but instead using the cached + % definitions from the first. + \installfont {pads8t}{pads8r,newlatin}{t1} {T1}{pad}{sb}{n}{} + \installfont {pads7t}{pads8r,newlatin}{ot1} {OT1}{pad}{sb}{n}{} + \installfont {padsc8t}{pads8r,newlatin}{t1c} {T1}{pad}{sb}{sc}{} + \installfont {padsc7t}{pads8r,newlatin}{ot1c} {OT1}{pad}{sb}{sc}{} + % Thus the last four commands cause four fonts to be + % generated, but the pads8r.mtx and newlatin.mtx files + % are only read once. + \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{} + \installfontas{pads8i} {TS1}{pad}{sb}{sc}{} + \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{} + \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{} + \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{} + \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{} + \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{} + \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{} + + \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{} + \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{} + \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{} + \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{} + \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{} + \installfontas{padb8i} {TS1}{pad}{b}{sc}{} + \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{} + \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{} + \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{} + \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{} + \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{} + \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{} +\endinstallfonts + + +% The set of commands above will "fake" an sc shape for the typeface +% by making dual use of the capitals in the n shape (Regular): both +% as normal (for the upper case in the sc shape) and shrunk to 80% of +% their normal size (for the lower case in the sc shape). This works +% (anyone who looks at it will understand what was intended), but it +% does not look good, and therefore it is always better to make use +% of proper smallcaps when it is available. +% +% The next set of commands is another take at creating the "pad" +% families, this time making use of the proper smallcaps in padrc8r +% and padsc8r. The files created by this set of commands will +% completely overwrite the files created by the previous set of +% commands; in practice one would only include one set of commands, +% but both are provided here for comparison. +\installfonts + \installfamily{OT1}{pad}{} + \installfamily{T1}{pad}{} + \installfamily{TS1}{pad}{} + + % Since the glyph bases used for the n and sc shapes in this + % case are different, there is no point in doing the smallcaps + % processing when making the n shape fonts. + \installfont {padr8t}{padr8r,newlatin option nosc}{t1} {T1}{pad}{m}{n}{} + \installfont {padr7t}{padr8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{n}{} + % There is actually no point in doing that processing for + % the sc shape fonts either! This is because the glyph names + % used in padrc8r are the same as those used in padr8r (and + % padri8r), and thus the smallcaps glyphs will already have + % been delt with by the code for lower case glyphs. Another + % consequence is that the same ETX files as are used for + % the other shapes should be used for the sc shape. + \installfont {padrc8t}{padrc8r,newlatin option nosc}{t1} {T1}{pad}{m}{sc}{} + \installfont {padrc7t}{padrc8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sc}{} + \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{} + \installfontas{padr8i} {TS1}{pad}{m}{sc}{} + \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{} + \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{} + \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{} + \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{} + \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{} + \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{} + + \installfont {pads8t}{pads8r,newlatin option nosc}{t1} {T1}{pad}{sb}{n}{} + \installfont {pads7t}{pads8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{n}{} + \installfont {padsc8t}{padsc8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sc}{} + \installfont {padsc7t}{padsc8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sc}{} + \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{} + \installfontas{pads8i} {TS1}{pad}{sb}{sc}{} + \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{} + \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{} + \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{} + \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{} + \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{} + \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{} + + % There is however no padbc8r font; hence the sc shape of + % the b series must still be faked, just as above. + \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{} + \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{} + \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{} + \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{} + \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{} + \installfontas{padb8i} {TS1}{pad}{b}{sc}{} + \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{} + \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{} + \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{} + \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{} + \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{} + \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{} +\endinstallfonts + + +% The "pad" family installed above is however still far from perfect. +% The `ff', `ffi', and `ffl' ligatures are fakes, since those aren't +% available in the fonts used. There are however such glyphs in the +% expert (8x) companions of the fonts used above, and hence the +% results will be better if these resources can be combined. +% +% One of the great advantages with TeX, virtual fonts, and fontinst +% is the ease with which one can combine glyphs from (what the foundry +% has packaged as) several different fonts into a single font; +% if \installfont is given the metrics of two fonts, and some glyph +% is available in one font but not the other, then fontinst will +% automatically take it from the font where it was available. +% Hence one can fill in (at least some of) the blanks of one font +% by also listing a second font in the metrics argument of +% \installfont. It will do the right thing automatically. +\installfonts + \installfamily{OT1}{padx}{} + \installfamily{T1}{padx}{} + \installfamily{TS1}{padx}{} + % The "padx" family name used here is mainly motivated by + % tradition. It has been considered useful to simultaneously + % on a single system have both a family of virtual fonts which + % do not make use of the expert set of base fonts, and a family + % of virtual fonts which do make use of the expert set of base + % fonts. For this to work, the different fonts must have + % different names. In the Fontname scheme, this is accomplished + % by including an "x" variant letter in the names to signify that + % the font is "expertized". In LaTeX there is no proper standard + % for this, but the custom is to similarly append an "x" to the + % basic three letter family name, thus yielding "padx" instead + % of "pad". + + % The Fontname scheme is in this case further complicated by + % a desire to avoid names of more than eight characters + % (a limit which is important in many old file systems). + % Therefore many of the two-character variants starting with + % 9 is a combination of an encoding variant with one or two + % other variants (most commonly the "x" variant). The commands + % below utilize these abbreviations (but there is no software + % involved which would require them to). + \installfont {padr9e}{padr8r,padr8x,newlatin}{t1} {T1}{padx}{m}{n}{} + \installfont {padr9t}{padr8r,padr8x,newlatin}{ot1} {OT1}{padx}{m}{n}{} + % Besides the extra ligatures, the upright 8x fonts also contain + % a proper smallcaps alphabet. This makes it possible to make do + % without the -c8r fonts. The commands below will make a font + % using the upper case from padr8r and (as lower case) the + % small caps from padr8x. + \installfont {padrc9e}{padr8r,padr8x,newlatin}{t1c} {T1}{padx}{m}{sc}{} + \installfont {padrc9t}{padr8r,padr8x,newlatin}{ot1c} {OT1}{padx}{m}{sc}{} + \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padx}{m}{n}{} + \installfontas{padr9i} {TS1}{padx}{m}{sc}{} + \installfont {padri9e}{padri8r,padri8x,newlatin option nosc}{t1} {T1}{padx}{m}{it}{} + \installfont {padri9t}{padri8r,padri8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{it}{} + \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padx}{m}{it}{} + \installfont {padro9e}{padro8r,padro8x,newlatin option nosc}{t1} {T1}{padx}{m}{sl}{} + \installfont {padro9t}{padro8r,padro8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{sl}{} + \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padx}{m}{sl}{} + + \installfont {pads9e}{pads8r,pads8x,newlatin}{t1} {T1}{padx}{sb}{n}{} + \installfont {pads9t}{pads8r,pads8x,newlatin}{ot1} {OT1}{padx}{sb}{n}{} + \installfont {padsc9e}{pads8r,pads8x,newlatin}{t1c} {T1}{padx}{sb}{sc}{} + \installfont {padsc9t}{pads8r,pads8x,newlatin}{ot1c} {OT1}{padx}{sb}{sc}{} + \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padx}{sb}{n}{} + \installfontas{pads9i} {TS1}{padx}{sb}{sc}{} + \installfont {padsi9e}{padsi8r,padsi8x,newlatin option nosc}{t1} {T1}{padx}{sb}{it}{} + \installfont {padsi9t}{padsi8r,padsi8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{it}{} + \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padx}{sb}{it}{} + \installfont {padso9e}{padso8r,padso8x,newlatin option nosc}{t1} {T1}{padx}{sb}{sl}{} + \installfont {padso9t}{padso8r,padso8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{sl}{} + \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padx}{sb}{sl}{} + + \installfont {padb9e}{padb8r,padb8x,newlatin}{t1} {T1}{padx}{b}{n}{} + \installfont {padb9t}{padb8r,padb8x,newlatin}{ot1} {OT1}{padx}{b}{n}{} + % The padb8x font does not contain a smallcaps alphabet -- + % hence in this case the newlatin.mtx file reverts to faking + % such an alphabet by shrinking the upper case. The commands + % can however be the same as above! + \installfont {padbc9e}{padb8r,padb8x,newlatin}{t1c} {T1}{padx}{b}{sc}{} + \installfont {padbc9t}{padb8r,padb8x,newlatin}{ot1c} {OT1}{padx}{b}{sc}{} + \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padx}{b}{n}{} + \installfontas{padb9i} {TS1}{padx}{b}{sc}{} + \installfont {padbi9e}{padbi8r,padbi8x,newlatin option nosc}{t1} {T1}{padx}{b}{it}{} + \installfont {padbi9t}{padbi8r,padbi8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{it}{} + \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padx}{b}{it}{} + \installfont {padbo9e}{padbo8r,padbo8x,newlatin option nosc}{t1} {T1}{padx}{b}{sl}{} + \installfont {padbo9t}{padbo8r,padbo8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{sl}{} + \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padx}{b}{sl}{} +\endinstallfonts + + +% Finally we get to my personal favourite -- the families with hanging +% (a.k.a. oldstyle) figures. From a historical point of view, this is +% really the most correct appearence of these fonts, because in the 16th +% century (when Claude Garamond designed the metal types after which the +% AGaramond fonts where modelled) there was no such thing as lining +% figures; all figures were hanging. +% +% The 8x fonts all contain a suitable set of hanging figures. This makes +% it very straightforward to make use of these instead of the lining +% digits of the base fonts. One simply has to make use of ETX files +% which selects these glyphs hanging figure glyphs instead of the +% lining figure glyphs. +\installfonts + \installfamily{OT1}{padj}{} + \installfamily{T1}{padj}{} + \installfamily{TS1}{padj}{} + % Another custom: a "j" (the Fontname hanging figure variant letter) + % is appended to the LaTeX family name to distinguish between + % lining and hanging figure families. + + \installfont {padr9d}{padr8r,padr8x,newlatin}{t1j} {T1}{padj}{m}{n}{} + \installfont {padr9o}{padr8r,padr8x,newlatin}{ot1j} {OT1}{padj}{m}{n}{} + \installfont {padrc9d}{padr8r,padr8x,newlatin}{t1cj} {T1}{padj}{m}{sc}{} + \installfont {padrc9o}{padr8r,padr8x,newlatin}{ot1cj} {OT1}{padj}{m}{sc}{} + \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padj}{m}{n}{} + \installfontas{padr9i} {TS1}{padj}{m}{sc}{} + \installfont {padri9d}{padri8r,padri8x,newlatin option nosc}{t1j} {T1}{padj}{m}{it}{} + \installfont {padri9o}{padri8r,padri8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{it}{} + \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padj}{m}{it}{} + \installfont {padro9d}{padro8r,padro8x,newlatin option nosc}{t1j} {T1}{padj}{m}{sl}{} + \installfont {padro9o}{padro8r,padro8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{sl}{} + \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padj}{m}{sl}{} + + \installfont {pads9d}{pads8r,pads8x,newlatin}{t1j} {T1}{padj}{sb}{n}{} + \installfont {pads9o}{pads8r,pads8x,newlatin}{ot1j} {OT1}{padj}{sb}{n}{} + \installfont {padsc9d}{pads8r,pads8x,newlatin}{t1cj} {T1}{padj}{sb}{sc}{} + \installfont {padsc9o}{pads8r,pads8x,newlatin}{ot1cj} {OT1}{padj}{sb}{sc}{} + \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padj}{sb}{n}{} + \installfontas{pads9i} {TS1}{padj}{sb}{sc}{} + \installfont {padsi9d}{padsi8r,padsi8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{it}{} + \installfont {padsi9o}{padsi8r,padsi8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{it}{} + \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padj}{sb}{it}{} + \installfont {padso9d}{padso8r,padso8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{sl}{} + \installfont {padso9o}{padso8r,padso8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{sl}{} + \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padj}{sb}{sl}{} + + \installfont {padb9d}{padb8r,padb8x,newlatin}{t1j} {T1}{padj}{b}{n}{} + \installfont {padb9o}{padb8r,padb8x,newlatin}{ot1j} {OT1}{padj}{b}{n}{} + \installfont {padbc9d}{padb8r,padb8x,newlatin}{t1cj} {T1}{padj}{b}{sc}{} + \installfont {padbc9o}{padb8r,padb8x,newlatin}{ot1cj} {OT1}{padj}{b}{sc}{} + \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padj}{b}{n}{} + \installfontas{padb9i} {TS1}{padj}{b}{sc}{} + \installfont {padbi9d}{padbi8r,padbi8x,newlatin option nosc}{t1j} {T1}{padj}{b}{it}{} + \installfont {padbi9o}{padbi8r,padbi8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{it}{} + \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padj}{b}{it}{} + \installfont {padbo9d}{padbo8r,padbo8x,newlatin option nosc}{t1j} {T1}{padj}{b}{sl}{} + \installfont {padbo9o}{padbo8r,padbo8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{sl}{} + \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padj}{b}{sl}{} +\endinstallfonts + +% This closes the file opened by \recordtransforms above. +\endrecordtransforms + +\bye + +% The installations made by the above commands are certainly not +% optimal. Some things which can be improved are: +% +% - Although the padrc9e, padrc9t, padsc9e, padsc9t, padrc9d, +% padrc9o, padsc9d, and padsc9o fonts contain proper smallcaps +% glyphs, there are no kerns between the smallcaps and +% the upper case in these fonts, because there were no such +% kerns in any of the fonts they are based on. There are +% however such kerning pairs in padrc8r and padsc8r, and it is +% quite easy to extract this information using the \reglyphfont +% command with the settings in the csckrn2x.tex file. +% +% - The padrc8t, padrc7t, padsc8t, and padsc7t fonts that are +% based on padrc8r and padsc8r respectively have hanging figures, +% whereas the other fonts in the same family have lining figures. +% This is only because that is how the foundry packaged the +% glyphs into fonts, and the careful font installer might want +% to straighten out this situation. One way to do that is +% to make use of the unsetnum.mtx file, another is to make +% use of the `suffix' mechanism (new in v1.923). +% +% - One glyph which is missing from all the fonts made above is +% the Euro glyph (and that is kind of awkward these days, although +% as of v1.926 textcomp.mtx fakes this using a C and two rules). +% One way to supply a Euro glyph is to provide yet another font +% (besides the -8r's and -8x's) as base font, if that extra +% font contains the missing Euro glyph. The same trick can be used +% to get greek capitals for the OT1-encoded fonts. + diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex new file mode 100644 index 00000000000..74fe2a4df5a --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex @@ -0,0 +1,50 @@ +% +% basicex2.tex +% +% fontinst command file for writing map file fragments for +% the raw fonts used by the fonts made in basicex.tex. +% + +\input finstmsc.sty + +% At this point, you might want to change some settings +% to make the map file fragments written better adjusted +% to your particular system. Some common examples are: +% +% \resetstr{PSfontsuffix}{.pfb} +% +% which is useful if the actual fonts are in PFB format. +% +% \AssumeLWFN +% +% This is useful if the font files are named according to +% the old Mac OS Classic convention for PostScript fonts +% (names like AGarBolIta). + +\adddriver{dvips}{dvips.map} +% This causes a .map file for dvips to be written. +% It is probably better to choose a name that has to +% do with the fonts than to use `dvips.map'. +% In some systems, there is a program updmap which combines +% several small .map files such as this one into a large +% psfonts.map file. +\adddriver{dvipdfm}{dvipdfm.map} +% Similar file for dvipdfm. +\adddriver{pltotf}{pltotf-script.sh} +% A shell script that runs pltotf on those .pl files +% which you need to turn into .tfm files. +\adddriver{debug}{mapdump.txt} +% This file contains the available data in a human-readable +% format. This is useful if your dvi driver uses some other +% kind of map file. + +\input basicex.recs +% This is where all the work is done. + +\donedrivers +% This closes the files and does some cleanup. + +\bye + + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/Makefile b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/Makefile new file mode 100644 index 00000000000..ec07888a1a4 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/Makefile @@ -0,0 +1,45 @@ +## Makefile to build TS1-encoded text companion fonts +## for Times, Helvetica and Symbol using the Adobe Euro Fonts + +all: afms tex vfs + +afms: + cp _3______.afm zpeur.afm + cp _3i_____.afm zpeuri.afm + cp _3b_____.afm zpeub.afm + cp _3bi____.afm zpeubi.afm + cp _1______.afm zpeurs.afm + cp _1i_____.afm zpeuris.afm + cp _1b_____.afm zpeubs.afm + cp _1bi____.afm zpeubis.afm + cp _2______.afm zpeurt.afm + cp _2i_____.afm zpeurit.afm + cp _2b_____.afm zpeubt.afm + cp _2bi____.afm zpeubit.afm + +tex: + tex eurofont.tex + +vfs: + vptovf ptmr8c.vpl ptmr8c.vf ptmr8c.tfm + vptovf ptmro8c.vpl ptmro8c.vf ptmro8c.tfm + vptovf ptmri8c.vpl ptmri8c.vf ptmri8c.tfm + vptovf ptmb8c.vpl ptmb8c.vf ptmb8c.tfm + vptovf ptmbo8c.vpl ptmbo8c.vf ptmbo8c.tfm + vptovf ptmbi8c.vpl ptmbi8c.vf ptmbi8c.tfm + + vptovf phvr8c.vpl phvr8c.vf phvr8c.tfm + vptovf phvro8c.vpl phvro8c.vf phvro8c.tfm + vptovf phvb8c.vpl phvb8c.vf phvb8c.tfm + vptovf phvbo8c.vpl phvbo8c.vf phvbo8c.tfm + + vptovf pcrr8c.vpl pcrr8c.vf pcrr8c.tfm + vptovf pcrro8c.vpl pcrro8c.vf pcrro8c.tfm + vptovf pcrb8c.vpl pcrb8c.vf pcrb8c.tfm + vptovf pcrbo8c.vpl pcrbo8c.vf pcrbo8c.tfm + +clean: + -rm *.mtx *.pl *.vpl *.log + +realclean: clean + -rm p*.tfm *.vf *.fd diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.map b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.map new file mode 100644 index 00000000000..373ffd2d167 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.map @@ -0,0 +1,12 @@ +zpeur EuroSerif-Regular <_3______.pfb +zpeuri EuroSerif-Italic <_3i_____.pfb +zpeub EuroSerif-Bold <_3b_____.pfb +zpeubi EuroSerif-BoldItalic <_3bi____.pfb +zpeurs EuroSans-Regular <_1______.pfb +zpeuris EuroSans-Italic <_1i_____.pfb +zpeubs EuroSans-Bold <_1b_____.pfb +zpeubis EuroSans-BoldItalic <_1bi____.pfb +zpeurt EuroMono-Regular <_2______.pfb +zpeurit EuroMono-Italic <_2i_____.pfb +zpeubt EuroMono-Bold <_2b_____.pfb +zpeubit EuroMono-BoldItalic <_2bi____.pfb diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.tex new file mode 100644 index 00000000000..b97cfeb84a6 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.tex @@ -0,0 +1,43 @@ +\input fontinst.sty + +\transformfont{ptmr8r} {\reencodefont{8r}{\fromafm{ptmr8a}}} +\transformfont{ptmro8r}{\slantfont{167} {\frommtx{ptmr8r}}} +\transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} +\transformfont{ptmb8r} {\reencodefont{8r}{\fromafm{ptmb8a}}} +\transformfont{ptmbo8r}{\slantfont{167} {\frommtx{ptmb8r}}} +\transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}} + +\transformfont{phvr8r} {\reencodefont{8r}{\fromafm{phvr8a}}} +\transformfont{phvro8r}{\reencodefont{8r}{\fromafm{phvro8a}}} +\transformfont{phvb8r} {\reencodefont{8r}{\fromafm{phvb8a}}} +\transformfont{phvbo8r}{\reencodefont{8r}{\fromafm{phvbo8a}}} + +\transformfont{pcrr8r} {\reencodefont{8r}{\fromafm{pcrr8a}}} +\transformfont{pcrro8r}{\reencodefont{8r}{\fromafm{pcrro8a}}} +\transformfont{pcrb8r} {\reencodefont{8r}{\fromafm{pcrb8a}}} +\transformfont{pcrbo8r}{\reencodefont{8r}{\fromafm{pcrbo8a}}} + +\installfonts + +\installfamily{TS1}{ptm}{} +\installfont{ptmr8c} {ptmr8r,zpeur,textcomp} {TS1}{TS1}{ptm}{m}{n}{} +\installfont{ptmro8c}{ptmro8r,zpeuri,textcomp}{TS1}{TS1}{ptm}{m}{sl}{} +\installfont{ptmri8c}{ptmri8r,zpeuri,textcomp}{TS1}{TS1}{ptm}{m}{it}{} +\installfont{ptmb8c} {ptmb8r,zpeub,textcomp} {TS1}{TS1}{ptm}{b}{n}{} +\installfont{ptmbo8c}{ptmbo8r,zpeubi,textcomp}{TS1}{TS1}{ptm}{b}{sl}{} +\installfont{ptmbi8c}{ptmbi8r,zpeubi,textcomp}{TS1}{TS1}{ptm}{b}{it}{} + +\installfamily{TS1}{phv}{} +\installfont{phvr8c} {phvr8r,zpeurs,textcomp} {TS1}{TS1}{phv}{m}{n}{} +\installfont{phvro8c}{phvro8r,zpeuris,textcomp}{TS1}{TS1}{phv}{m}{sl}{} +\installfont{phvb8c} {phvb8r,zpeubs,textcomp} {TS1}{TS1}{phv}{b}{n}{} +\installfont{phvbo8c}{phvbo8r,zpeubis,textcomp}{TS1}{TS1}{phv}{b}{sl}{} + +\installfamily{TS1}{pcr}{} +\installfont{pcrr8c} {pcrr8r,zpeurt,textcomp} {TS1}{TS1}{pcr}{m}{n}{} +\installfont{pcrro8c}{pcrro8r,zpeurit,textcomp}{TS1}{TS1}{pcr}{m}{sl}{} +\installfont{pcrb8c} {pcrb8r,zpeubt,textcomp} {TS1}{TS1}{pcr}{b}{n}{} +\installfont{pcrbo8c}{pcrbo8r,zpeubit,textcomp}{TS1}{TS1}{pcr}{b}{sl}{} + +\endinstallfonts +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/Makefile b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/Makefile new file mode 100644 index 00000000000..8f2b4df0659 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/Makefile @@ -0,0 +1,24 @@ +ZAP= cmex10.mtx cmex9.mtx cmr10.mtx cmmi10.mtx cmsy10.mtx \ + psyr.mtx psyr.pl \ + ptmr8a.mtx ptmr8a.pl ptmr8r.mtx ptmr8r.pl \ + ptmri8a.mtx ptmri8a.pl ptmri8r.mtx ptmri8r.pl \ + pzcmi8a.mtx pzcmi8a.pl pzcmi8r.mtx pzcmi8r.pl \ + zpsycmrv.vpl zptmcmr.vpl zptmcmrm.vpl zpzccmry.vpl \ + fontptcm.log + +all: tex vfs + +tex: + tex fontptcm + +vfs: + vptovf zpsycmrv.vpl zpsycmrv.vf zpsycmrv.tfm + vptovf zptmcmr.vpl zptmcmr.vf zptmcmr.tfm + vptovf zptmcmrm.vpl zptmcmrm.vf zptmcmrm.tfm + vptovf zpzccmry.vpl zpzccmry.vf zpzccmry.tfm + +clean: + -rm $(ZAP) *.log + +realclean: clean + -rm p*tfm z*.tfm *.vf *.fd diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/fontptcm.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/fontptcm.tex new file mode 100644 index 00000000000..12f9200f1a4 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/fontptcm.tex @@ -0,0 +1,75 @@ +%%% ==================================================================== +%%% @TeX-file{ +%%% author = "Alan Jeffrey and Sebastian Rathz and +%%% Ulrik Vieth", +%%% version = "1.801", +%%% date = "30 June 1998", +%%% time = "00:24:26 CEST", +%%% filename = "fontptcm.tex", +%%% email = "vieth@thphy.uni-duesseldorf.de", +%%% URL = "http://www.thphy.uni-duesseldorf.de/~vieth/", +%%% checksum = "55484 75 248 2976", +%%% codetable = "ISO/ASCII", +%%% keywords = "font installation example", +%%% supported = "yes", +%%% abstract = "This is an example program which uses +%%% Adobe Times, Adobe Symbol and Computer +%%% Modern fonts to build Times math fonts.", +%%% package = "fontinst", +%%% dependencies = "fontinst.sty, ptmr8a.afm, ptmri8a.afm, +%%% pzcmi8a.afm, psyr.afm, cmr10.pl, +%%% cmmi10.pl, cmsy10.pl, cmex10.pl, cmex9.pl, +%%% mathit.mtx, mathsy.mtx, mathex.mtx, +%%% zrhax.mtx, zrmhax.mtx, zrvhax.mtx, +%%% zrmkern.mtx, unsethum.mtx, unsetalf.mtx, +%%% resetsy.mtx, kernoff.mtx, kernon.mtx", +%%% } +%%% ==================================================================== + +% Math fonts built from Times, Symbol, Zapf Chancery and CM math. + +\input fontinst.sty + +\needsfontinstversion{1.800} + +\installfonts + \transformfont{ptmr8r} {\reencodefont{8r}{\fromafm{ptmr8a}}} + \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} + \transformfont{pzcmi8r}{\reencodefont{8r}{\fromafm{pzcmi8a}}} + \fromafm{psyr} + + % OT1: Latin and digits from Times-Roman, Greek from Symbol, + % accents and punctuation from Times, delimiters from cmr10 + \installfamily{OT1}{ptmcm}{} + \installfont{zptmcmr} + {ptmr8r,psyr,resetsy,latin,% + zrhax,kernoff,cmr10,kernon} + {OT1}{OT1}{ptmcm}{m}{n}{} + + % OML: Latin from Times-Italic, Greek from Adobe Symbol, + % operators, delimiters and punctuation from cmmi10 + \installfamily{OML}{ptmcm}{\skewchar\font=127} + \installfont{zptmcmrm} + {ptmri8r,psyr,resetsy,% + zrmhax,kernoff,cmmi10,kernon,% + zrmkern,mathit} + {OML}{OML}{ptmcm}{m}{it}{} + + % OMS: Humanist symbols from Times-Roman and Symbol, + % Calligraphic alphabet from Zapf Chancery, + % operators, delimiters and arrows from cmsy10 + \installfamily{OMS}{pzccm}{} + \installfont{zpzccmry} + {cmsy10,zryhax,psyr,ptmr8r,% + unsetalf,pzcmi8r scaled 1124,mathsy} + {OMS}{OMS}{pzccm}{m}{n}{} + + % OMX: summation and product from psyr, bigops from cmex9, + % delimiters, radicals and arrows from cmex10 + \installfamily{OMX}{psycm}{} + \installfont{zpsycmrv} + {cmex10,psyr,zrvhax,cmex9 scaled 900} + {OMX}{OMX}{psycm}{m}{n}{} + +\endinstallfonts +\end diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/mathtest.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/mathtest.tex new file mode 100644 index 00000000000..f0504baf5c1 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/mathtest.tex @@ -0,0 +1,643 @@ +\documentclass[fleqn]{article} +\usepackage{mathptm} + +\DeclareMathSymbol{\Gamma} {\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta} {\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta} {\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda} {\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi} {\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi} {\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma} {\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi} {\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi} {\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega} {\mathalpha}{letters}{"0A} + +\DeclareMathSymbol{\alpha} {\mathalpha}{letters}{"0B} +\DeclareMathSymbol{\beta} {\mathalpha}{letters}{"0C} +\DeclareMathSymbol{\gamma} {\mathalpha}{letters}{"0D} +\DeclareMathSymbol{\delta} {\mathalpha}{letters}{"0E} +\DeclareMathSymbol{\epsilon}{\mathalpha}{letters}{"0F} +\DeclareMathSymbol{\zeta} {\mathalpha}{letters}{"10} +\DeclareMathSymbol{\eta} {\mathalpha}{letters}{"11} +\DeclareMathSymbol{\theta} {\mathalpha}{letters}{"12} +\DeclareMathSymbol{\iota} {\mathalpha}{letters}{"13} +\DeclareMathSymbol{\kappa} {\mathalpha}{letters}{"14} +\DeclareMathSymbol{\lambda} {\mathalpha}{letters}{"15} +\DeclareMathSymbol{\mu} {\mathalpha}{letters}{"16} +\DeclareMathSymbol{\nu} {\mathalpha}{letters}{"17} +\DeclareMathSymbol{\xi} {\mathalpha}{letters}{"18} +\DeclareMathSymbol{\pi} {\mathalpha}{letters}{"19} +\DeclareMathSymbol{\rho} {\mathalpha}{letters}{"1A} +\DeclareMathSymbol{\sigma} {\mathalpha}{letters}{"1B} +\DeclareMathSymbol{\tau} {\mathalpha}{letters}{"1C} +\DeclareMathSymbol{\upsilon}{\mathalpha}{letters}{"1D} +\DeclareMathSymbol{\phi} {\mathalpha}{letters}{"1E} +\DeclareMathSymbol{\chi} {\mathalpha}{letters}{"1F} +\DeclareMathSymbol{\psi} {\mathalpha}{letters}{"20} +\DeclareMathSymbol{\omega} {\mathalpha}{letters}{"21} +\DeclareMathSymbol{\varepsilon} {\mathalpha}{letters}{"22} +\DeclareMathSymbol{\vartheta} {\mathalpha}{letters}{"23} +\DeclareMathSymbol{\varpi} {\mathalpha}{letters}{"24} +\DeclareMathSymbol{\varrho} {\mathalpha}{letters}{"25} +\DeclareMathSymbol{\varsigma} {\mathalpha}{letters}{"26} +\DeclareMathSymbol{\varphi} {\mathalpha}{letters}{"27} + +\DeclareMathSymbol{\dit}{\mathord}{letters}{`d} +\DeclareMathSymbol{\dup}{\mathord}{operators}{`d} + +\nofiles + +\parindent 0pt +\mathindent 1em + +\def\test#1{#1} + +\def\testnums{% + \test 0 \test 1 \test 2 \test 3 \test 4 \test 5 \test 6 \test 7 + \test 8 \test 9 } +\def\testupperi{% + \test A \test B \test C \test D \test E \test F \test G \test H + \test I \test J \test K \test L \test M } +\def\testupperii{% + \test N \test O \test P \test Q \test R \test S \test T \test U + \test V \test W \test X \test Y \test Z } +\def\testupper{% + \testupperi\testupperii} + +\def\testloweri{% + \test a \test b \test c \test d \test e \test f \test g \test h + \test i \test j \test k \test l \test m } +\def\testlowerii{% + \test n \test o \test p \test q \test r \test s \test t \test u + \test v \test w \test x \test y \test z + \test\imath \test\jmath } +\def\testlower{% + \testloweri\testlowerii} + +\def\testupgreeki{% + \test A \test B \test\Gamma \test\Delta \test E \test Z \test H + \test\Theta \test I \test K \test\Lambda \test M } +\def\testupgreekii{% + \test N \test\Xi \test O \test\Pi \test P \test\Sigma \test T + \test\Upsilon \test\Phi \test X \test\Psi \test\Omega + \test\nabla } +\def\testupgreek{% + \testupgreeki\testupgreekii} + +\def\testlowgreeki{% + \test\alpha \test\beta \test\gamma \test\delta \test\epsilon + \test\zeta \test\eta \test\theta \test\iota \test\kappa \test\lambda + \test\mu } +\def\testlowgreekii{% + \test\nu \test\xi \test o \test\pi \test\rho \test\sigma \test\tau + \test\upsilon \test\phi \test\chi \test\psi \test\omega } +\def\testlowgreekiii{% + \test\varepsilon \test\vartheta \test\varpi \test\varrho + \test\varsigma \test\varphi} +\def\testlowgreek{% + \testlowgreeki\testlowgreekii\testlowgreekiii} + + +\begin{document} + +\section{Math Alphabets} + +Math Italic (\texttt{\string\mathnormal}) +\def\test#1{\mathnormal{#1},} +\begin{eqnarray*} + && {\testnums}\\ + && {\testupper}\\ + && {\testlower}\\ + && {\testupgreek}\\ + && {\testlowgreek} +\end{eqnarray*}% + +Math Roman (\texttt{\string\mathrm}) +\def\test#1{\mathrm{#1},} +\begin{eqnarray*} + && {\testnums}\\ + && {\testupper}\\ + && {\testlower}\\ + && {\testupgreek} +\end{eqnarray*}% + +%Math Italic Bold +%\def\test#1{\mathbm{#1},} +%\begin{eqnarray*} +% && {\testnums}\\ +% && {\testupper}\\ +% && {\testlower}\\ +% && {\testupgreek}\\ +% && {\testlowgreek} +%\end{eqnarray*}% + +%Math Bold (\texttt{\string\mathbf}) +%\def\test#1{\mathbf{#1},} +%\begin{eqnarray*} +% && {\testnums}\\ +% && {\testupper}\\ +% && {\testlower}\\ +% && {\testupgreek} +%\end{eqnarray*}% + +Caligraphic (\texttt{\string\mathcal}) +\def\test#1{\mathcal{#1},} +\begin{eqnarray*} + && {\testupper} +\end{eqnarray*}% + +%Script (\texttt{\string\mathscr}) +%\def\test#1{\mathscr{#1},} +%\begin{eqnarray*} +% && {\testupper} +%\end{eqnarray*}% + +%Fraktur (\texttt{\string\mathfrak}) +%\def\test#1{\mathfrak{#1},} +%\begin{eqnarray*} +% && {\testupper}\\ +% && {\testlower} +%\end{eqnarray*}% + +%Blackboard Bold (\texttt{\string\mathbb}) +%\def\test#1{\mathbb{#1},} +%\begin{eqnarray*} +% && {\testupper} +%\end{eqnarray*}% + + +\clearpage +\section{Character Sidebearings} + +\def\test#1{|#1|+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{|\mathrm{#1}|+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{|\mathbm{#1}|+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +%% +%\def\test#1{|\mathbf{#1}|+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*}% +% +\def\test#1{|\mathcal{#1}|+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Superscript positioning} + +\def\test#1{#1^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\mathrm{#1}^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\mathbm{#1}^{2}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +% +%\def\test#1{\mathbf{#1}^{2}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*} +% +\def\test#1{\mathcal{#1}^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Subscript positioning} + +\def\test#1{\mathnormal{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\mathrm{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\mathbm{#1}_{i}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*} +%% +%\def\test#1{\mathbf{#1}_{i}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*}% +% +\def\test#1{\mathcal{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Accent positioning} + +\def\test#1{\hat{#1}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\hat{\mathrm{#1}}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\hat{\mathbm{#1}}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +%% +%\def\test#1{\hat{\mathbf{#1}}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*} +% +\def\test#1{\hat{\mathcal{#1}}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Differentials} + +\begin{eqnarray*} +\gdef\test#1{\dit #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\dit \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +\begin{eqnarray*} +\gdef\test#1{\dup #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\dup \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +\begin{eqnarray*} +\gdef\test#1{\partial #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\partial \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% + + +\clearpage +\section{Slash kerning} + +\def\test#1{1/#1+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*} + +\def\test#1{#1/2+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*} + + +\clearpage +\section{Big operators} + +\def\testop#1{#1_{i=1}^{n} x^{n} \quad} +\begin{displaymath} + \testop\sum + \testop\prod + \testop\coprod + \testop\int + \testop\oint +\end{displaymath} +\begin{displaymath} + \testop\bigotimes + \testop\bigoplus + \testop\bigodot + \testop\bigwedge + \testop\bigvee + \testop\biguplus + \testop\bigcup + \testop\bigcap + \testop\bigsqcup +% \testop\bigsqcap +\end{displaymath} + + +\section{Radicals} + +\begin{displaymath} + \sqrt{x+y} \qquad \sqrt{x^{2}+y^{2}} \qquad + \sqrt{x_{i}^{2}+y_{j}^{2}} \qquad + \sqrt{\left(\frac{\cos x}{2}\right)} \qquad + \sqrt{\left(\frac{\sin x}{2}\right)} +\end{displaymath} + +\begingroup +\delimitershortfall-1pt +\begin{displaymath} + \sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{x+y}}}}}}} +\end{displaymath} +\endgroup % \delimitershortfall + + +\section{Over- and underbraces} + +\begin{displaymath} + \overbrace{x} \quad + \overbrace{x+y} \quad + \overbrace{x^{2}+y^{2}} \quad + \overbrace{x_{i}^{2}+y_{j}^{2}} \quad + \underbrace{x} \quad + \underbrace{x+y} \quad + \underbrace{x_{i}+y_{j}} \quad + \underbrace{x_{i}^{2}+y_{j}^{2}} \quad +\end{displaymath} + + +\section{Normal and wide accents} + +\begin{displaymath} + \dot{x} \quad + \ddot{x} \quad + \vec{x} \quad + \bar{x} \quad + \overline{x} \quad + \overline{xx} \quad + \tilde{x} \quad + \widetilde{x} \quad + \widetilde{xx} \quad + \widetilde{xxx} \quad + \hat{x} \quad + \widehat{x} \quad + \widehat{xx} \quad + \widehat{xxx} \quad +\end{displaymath} + + +\section{Long arrows} + +\begin{displaymath} + \leftarrow \mathrel{-} \rightarrow \quad + \leftrightarrow \quad + \longleftarrow \quad + \longrightarrow \quad + \longleftrightarrow \quad + \Leftarrow = \Rightarrow \quad + \Leftrightarrow \quad + \Longleftarrow \quad + \Longrightarrow \quad + \Longleftrightarrow \quad +\end{displaymath} + + +\section{Left and right delimters} + +\def\testdelim#1#2{ - #1 f #2 - } +\begin{displaymath} + \testdelim() + \testdelim[] + \testdelim\lfloor\rfloor + \testdelim\lceil\rceil + \testdelim\langle\rangle + \testdelim\{\} +\end{displaymath} + +\def\testdelim#1#2{ - \left#1 f \right#2 - } +\begin{displaymath} + \testdelim() + \testdelim[] + \testdelim\lfloor\rfloor + \testdelim\lceil\rceil + \testdelim\langle\rangle + \testdelim\{\} +% \testdelim\lgroup\rgroup +% \testdelim\lmoustache\rmoustache +\end{displaymath} +\begin{displaymath} + \testdelim)( + \testdelim][ + \testdelim// + \testdelim\backslash\backslash + \testdelim/\backslash + \testdelim\backslash/ +\end{displaymath} + + +\clearpage +\section{Big-g-g delimters} + +\def\testdelim#1#2{% + - \left#1\left#1\left#1\left#1\left#1\left#1\left#1\left#1 - + \right#2\right#2\right#2\right#2\right#2\right#2\right#2\right#2 -} + +\begingroup +\delimitershortfall-1pt +\begin{displaymath} + \testdelim\lfloor\rfloor + \qquad + \testdelim() +\end{displaymath} +\begin{displaymath} + \testdelim\lceil\rceil + \qquad + \testdelim\{\} +\end{displaymath} +\begin{displaymath} + \testdelim[] + \qquad + \testdelim\lgroup\rgroup +\end{displaymath} +\begin{displaymath} + \testdelim\langle\rangle + \qquad + \testdelim\lmoustache\rmoustache +\end{displaymath} +\begin{displaymath} + \testdelim\uparrow\downarrow \quad + \testdelim\Uparrow\Downarrow \quad +\end{displaymath} +\endgroup % \delimitershortfall + + + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/resetsy.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/resetsy.mtx new file mode 100644 index 00000000000..27da54c0461 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/resetsy.mtx @@ -0,0 +1,30 @@ +\relax + +\metrics + +\unsetglyph{Upsilon} +\setglyph{Upsilon} + \glyph{Upsilon1}{1000} +\endsetglyph + +\setglyph{pi1} + \glyph{omega1}{1000} +\endsetglyph + +\setglyph{epsilon1} + \glyph{epsilon}{1000} +\endsetglyph + +\setglyph{rho1} + \glyph{rho}{1000} +\endsetglyph + +\setglyph{dotlessj} + \moveup{\neg{\depth{j}}} + \glyphrule{\width{j}}{\add{\depth{j}}{\height{dotlessi}}} + \resetitalic{\italic{dotlessi}} + \moveup{\depth{j}} + \glyphwarning{missing glyph `dotlessj'} +\endsetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/unsetmu.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/unsetmu.mtx new file mode 100644 index 00000000000..63b222ed9f0 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/unsetmu.mtx @@ -0,0 +1,7 @@ +\relax + +\metrics + +\unsetglyph{mu} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrhax.mtx new file mode 100644 index 00000000000..ce1bc5a2810 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrhax.mtx @@ -0,0 +1,15 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the Times-Roman +% glyphs. We unset those glyphs that should be taken from cmr. + +\unsetglyph{plus} +\unsetglyph{equal} +\unsetglyph{parenleft} +\unsetglyph{parenright} +\unsetglyph{bracketleft} +\unsetglyph{bracketright} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmhax.mtx new file mode 100644 index 00000000000..141899c6dc2 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmhax.mtx @@ -0,0 +1,14 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the Times-Italic +% glyphs. We unset those glyphs that should be taken from cmmi. + +\unsetglyph{period} +\unsetglyph{comma} +\unsetglyph{less} +\unsetglyph{slash} +\unsetglyph{greater} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmkern.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmkern.mtx new file mode 100644 index 00000000000..62ccd50a846 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmkern.mtx @@ -0,0 +1,158 @@ +\relax + +% The following adjustments (as originally derived by Alan Jeffrey) +% are tuned for Times-Italic and non-oblique Adobe Symbol. + +\metrics + +\needsfontinstversion{1.800} + +% \shiftglyph takes four parameters: +% +% #1 the name of the glyph +% #2 the amount of extra space at the left +% #3 the amount of extra space at the right +% #4 the amount of extra space for subscripts + +\setcommand\shiftglyph#1#2#3#4{ + \resetglyph{#1} + \movert{#2} + \glyph{#1}{1000} + \movert{#4} + \resetitalic{\add{\italic{#1}}{\sub{#3}{#4}}} + \endresetglyph +} + +% \skewkern sets a skewchar kern, assuming that `tie' +% is the skewchar. +% +% #1 the name of the glyph +% #2 the amount of skewchar kerning + +\setcommand\skewkern#1#2{\setkern{#1}{tie}{#2}} + + +% A +% B +\shiftglyph{C}{-50}{0}{-25} +% D +\shiftglyph{E}{0}{50}{0} +\shiftglyph{F}{0}{50}{-100} +% G +\shiftglyph{H}{0}{25}{-25} +\shiftglyph{I}{0}{0}{-25} +\shiftglyph{J}{0}{0}{-25} +\shiftglyph{K}{0}{0}{-25} +% L +% M +\shiftglyph{N}{0}{0}{-25} +% O +\shiftglyph{P}{0}{0}{-100} +% Q +% R +% S +\shiftglyph{T}{0}{50}{-75} +\shiftglyph{U}{-50}{50}{-25} +\shiftglyph{V}{-50}{50}{-50} +\shiftglyph{W}{-50}{50}{-50} +\shiftglyph{X}{0}{50}{-25} +\shiftglyph{Y}{-50}{50}{-50} +% Z + +% a +\shiftglyph{b}{0}{-25}{0} +% c +\shiftglyph{d}{0}{25}{0} +% e +\shiftglyph{f}{150}{0}{25} +\shiftglyph{g}{0}{-50}{0} +% h +% i +\shiftglyph{j}{150}{25}{0} +% k +\shiftglyph{l}{0}{50}{0} +% m +% n +\shiftglyph{o}{0}{-50}{0} +\shiftglyph{p}{75}{-25}{0} +% q +% r +% s +\shiftglyph{t}{-25}{50}{0} +% u +% v +% w +% x +% y +% z + +\shiftglyph{Upsilon}{0}{0}{-150} % was: -50 -100, adds up to -150 +\shiftglyph{weierstrass}{-100}{-200}{-150} + +\skewkern{A}{75} +\skewkern{B}{100} +\skewkern{C}{100} +\skewkern{D}{50} +\skewkern{E}{75} +\skewkern{F}{75} +\skewkern{G}{100} +\skewkern{H}{50} +\skewkern{I}{100} +\skewkern{J}{200} +\skewkern{K}{75} +% L +\skewkern{M}{100} +\skewkern{N}{25} +\skewkern{O}{100} +\skewkern{P}{100} +\skewkern{Q}{100} +\skewkern{R}{100} +\skewkern{S}{100} +\skewkern{T}{50} +\skewkern{U}{50} +\skewkern{X}{50} +\skewkern{Z}{50} + +\skewkern{a}{75} +% b +\skewkern{c}{75} +\skewkern{d}{200} +\skewkern{e}{75} +\skewkern{f}{150} +\skewkern{g}{75} +% h +\skewkern{i}{75} +\skewkern{j}{150} +% k +\skewkern{l}{100} +\skewkern{m}{50} +\skewkern{n}{50} +\skewkern{o}{75} +\skewkern{p}{100} +\skewkern{q}{75} +\skewkern{r}{50} +\skewkern{s}{100} +\skewkern{t}{50} +\skewkern{u}{75} +\skewkern{v}{75} +\skewkern{w}{75} +\skewkern{x}{75} +\skewkern{y}{75} +\skewkern{z}{50} + +\skewkern{dotlessi}{50} +\skewkern{dotlessj}{50} + +\skewkern{upsilon}{25} +\skewkern{iota}{-50} +\skewkern{lambda}{-75} +\skewkern{weierstrass}{175} +\skewkern{lscript}{125} + +\resetglyph{vector} + \movert{-100} + \glyph{vector}{1000} + \movert{100} +\endresetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrvhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrvhax.mtx new file mode 100644 index 00000000000..6270feb6158 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrvhax.mtx @@ -0,0 +1,73 @@ +\relax + +% This metrics file is loaded after having read the cmex glyps. +% We unset the big operators that should be taken from Symbol +% or from a scaled-down version of cmex. + +\metrics + +\setint{psy-textscale}{1000} +\setint{psy-displayscale}{1440} + +\unsetglyph{circledotdisplay} +\unsetglyph{circledottext} +\unsetglyph{circlemultiplydisplay} +\unsetglyph{circlemultiplytext} +\unsetglyph{circleplusdisplay} +\unsetglyph{circleplustext} +\unsetglyph{contintegraldisplay} +\unsetglyph{contintegraltext} +\unsetglyph{integraldisplay} +\unsetglyph{integraltext} +\unsetglyph{intersectiondisplay} +\unsetglyph{intersectiontext} +\unsetglyph{logicalanddisplay} +\unsetglyph{logicalandtext} +\unsetglyph{logicalordisplay} +\unsetglyph{logicalortext} +\unsetglyph{uniondisplay} +\unsetglyph{unionmultidisplay} +\unsetglyph{unionmultitext} +\unsetglyph{unionsqdisplay} +\unsetglyph{unionsqtext} +\unsetglyph{uniontext} + +\resetglyph{summationtext} + \glyph{summation}{\int{psy-textscale}} +\endresetglyph + +\resetglyph{summationdisplay} + \glyph{summation}{\int{psy-displayscale}} +\endresetglyph + +\resetglyph{producttext} + \glyph{product}{\int{psy-textscale}} +\endresetglyph + +\resetglyph{productdisplay} + \glyph{product}{\int{psy-displayscale}} +\endresetglyph + +\resetglyph{coproducttext} + \moveup{\neg{\depth{producttext}}} + \glyphrule{ + \width{producttext} + }{ + \add{\height{producttext}}{\depth{producttext}} + } + \moveup{\depth{producttext}} + \glyphwarning{missing glyph `coproducttext'} +\endresetglyph + +\resetglyph{coproductdisplay} + \moveup{\neg{\depth{productdisplay}}} + \glyphrule{ + \width{productdisplay} + }{ + \add{\height{productdisplay}}{\depth{productdisplay}} + } + \moveup{\depth{productdisplay}} + \glyphwarning{missing glyph `coproductdisplay'} +\endresetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zryhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zryhax.mtx new file mode 100644 index 00000000000..19addd6ad82 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zryhax.mtx @@ -0,0 +1,26 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the cmsy glyphs. +% We unset those glyphs that should be taken from Times or Symbol. + +\unsetglyph{infinity} +\unsetglyph{proportional} + +\unsetglyph{emptysetstress} + +\unsetglyph{Rfraktur} +\unsetglyph{Ifraktur} + +\unsetglyph{aleph} + +\unsetglyph{coproduct} +\unsetglyph{gradient} + +\unsetglyph{section} +\unsetglyph{dagger} +\unsetglyph{daggerdbl} +\unsetglyph{paragraph} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/Makefile b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/Makefile new file mode 100644 index 00000000000..37a660e0cb3 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/Makefile @@ -0,0 +1,23 @@ +ZAP= cmex10.mtx cmr10.mtx cmmi10.mtx cmsy10.mtx \ + rsfs10.mtx psyr.mtx psyr.pl psyro.mtx psyro.pl \ + ptmr8a.mtx ptmr8a.pl ptmr8r.mtx ptmr8r.pl \ + ptmri8a.mtx ptmri8a.pl ptmri8r.mtx ptmri8r.pl \ + zptmcm7t.vpl zptmcm7m.vpl zptmcm7y.vpl zptmcm7v.vpl \ + fontptcmx.log + +all: tex vfs + +tex: + tex fontptcmx + +vfs: + vptovf zptmcm7t.vpl zptmcm7t.vf zptmcm7t.tfm + vptovf zptmcm7m.vpl zptmcm7m.vf zptmcm7m.tfm + vptovf zptmcm7y.vpl zptmcm7y.vf zptmcm7y.tfm + vptovf zptmcm7v.vpl zptmcm7v.vf zptmcm7v.tfm + +clean: + -rm $(ZAP) *.log + +realclean: clean + -rm p*tfm z*.tfm *.vf *.fd diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/fontptcmx.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/fontptcmx.tex new file mode 100644 index 00000000000..0f876ce3450 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/fontptcmx.tex @@ -0,0 +1,76 @@ +%%% ==================================================================== +%%% @TeX-file{ +%%% author = "Alan Jeffrey and Sebastian Rathz and +%%% Ulrik Vieth", +%%% version = "1.802", +%%% date = "01 July 1998", +%%% time = "10:57:48 MET DST", +%%% filename = "fontzcmtmx.tex", +%%% email = "vieth@thphy.uni-duesseldorf.de", +%%% URL = "http://www.thphy.uni-duesseldorf.de/~vieth/", +%%% checksum = "49508 76 251 3044", +%%% codetable = "ISO/ASCII", +%%% keywords = "font installation example", +%%% supported = "yes", +%%% abstract = "This is an example program which uses +%%% Adobe Times, Adobe Symbol and Computer +%%% Modern fonts to build Times math fonts.", +%%% package = "fontinst", +%%% dependencies = "fontinst.sty, ptmr8a.afm, ptmri8a.afm, +%%% pzcmi8a.afm, psyr.afm, cmr10.pl, +%%% cmmi10.pl, cmsy10.pl, cmex10.pl, +%%% mathit.mtx, mathsy.mtx, mathex.mtx, +%%% zrhax.mtx, zrmhax.mtx, zrvhax.mtx, +%%% zrmkern.mtx, unsethum.mtx, unsetalf.mtx, +%%% resetsy.mtx, kernoff.mtx, kernon.mtx", +%%% } +%%% ==================================================================== + +% Math fonts built from Times, Symbol, RSFS and CM math. + +\input fontinst.sty + +\needsfontinstversion{1.800} + +\declareencoding{RAS SCRIPT}{rsfs} + +\installfonts + \transformfont{ptmr8r} {\reencodefont{8r}{\fromafm{ptmr8a}}} + \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} + \transformfont{psyro} {\slantfont{167}{\fromafm{psyr}}} + + % OT1: Latin and digits from Times-Roman, Greek from Symbol, + % accents and punctuation from Times, delimiters from cmr10 + \installfamily{OT1}{ztmcm}{} + \installfont{zptmcm7t} + {ptmr8r,psyr,resetsy,latin,% + zrhax,kernoff,cmr10,kernon} + {OT1}{OT1}{ztmcm}{m}{n}{} + + % OML: Latin from Times-Italic, Greek from Symbol (oblique), + % operators, delimiters and puctuation from cmmi10 + \installfamily{OML}{ztmcm}{\skewchar\font=127} + \installfont{zptmcm7m} + {ptmri8r,unsetmu,psyro,resetsy,% + zrmhax,kernoff,cmmi10,kernon,% + mathit,zrmkernx} + {OML}{OML}{ztmcm}{m}{it}{} + + % OMS: Humanist symbols from Times-Roman and Symbol, + % Script alphabet from Ralph Smith's Formal Script, + % operators, delimiters and arrows from cmsy10 + \installfamily{OMS}{ztmcm}{\skewchar\font=48} + \installfont{zptmcm7y} + {kernoff,cmsy10,kernon,zryhax,ptmr8r,psyr,% + unsetalf,rsfs10,zrykernx,mathsy} + {OMS}{OMS}{ztmcm}{m}{n}{} + + % OMX: summation and product from psyr, bigops from scaled cmex10, + % delimiters, radicals and arrows from cmex10 + \installfamily{OMX}{ztmcm}{} + \installfont{zptmcm7v} + {cmex10,psyr,zrvhax,cmex10 scaled 900} + {OMX}{OMX}{ztmcm}{m}{n}{} + +\endinstallfonts +\end diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathptmx.sty b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathptmx.sty new file mode 100644 index 00000000000..068bddd65c4 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathptmx.sty @@ -0,0 +1,42 @@ +\def\filedate{1998/06/30} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mathptmx}[\filedate\space + Times + math package from fontinst] +\def\rmdefault{ptm} +\DeclareSymbolFont{operators} {OT1}{ztmcm}{m}{n} +\DeclareSymbolFont{letters} {OML}{ztmcm}{m}{it} +\DeclareSymbolFont{symbols} {OMS}{ztmcm}{m}{n} +\DeclareSymbolFont{largesymbols}{OMX}{ztmcm}{m}{n} +\DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n} +\DeclareSymbolFont{italic} {OT1}{ptm}{m}{it} +\@ifundefined{mathbf}{}{\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n}} +\@ifundefined{mathit}{}{\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it}} +\DeclareMathSymbol{\omicron}{0}{operators}{`\o} +\thinmuskip=2mu +\medmuskip=2.5mu plus 1mu minus 1mu +\thickmuskip=4mu plus 1.5mu minus 1mu + \let\@tempa\version@elt + \def\version@elt#1{% + \ifx\mv@bold#1\else\noexpand\version@elt\noexpand#1\fi} + \edef\version@list{\version@list} + \let\version@elt\@tempa + \let\mv@bold\@undefined +\def\boldmath{% + \PackageWarning{there is no bold Symbol font}% + \global\let\boldmath=\relax +} +\DeclareMathSizes{5}{5}{5}{5} +\DeclareMathSizes{6}{6}{5}{5} +\DeclareMathSizes{7}{7}{5}{5} +\DeclareMathSizes{8}{8}{6}{5} +\DeclareMathSizes{9}{9}{7}{5} +\DeclareMathSizes{10}{10}{7.4}{6} +\DeclareMathSizes{10.95}{10.95}{8}{6} +\DeclareMathSizes{12}{12}{9}{7} +\DeclareMathSizes{14.4}{14.4}{10.95}{8} +\DeclareMathSizes{17.28}{17.28}{12}{10} +\DeclareMathSizes{20.74}{20.74}{14.4}{12} +\DeclareMathSizes{24.88}{24.88}{17.28}{14.4} +\endinput +%% +%% End of file `mathptmx.sty'. diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathtestx.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathtestx.tex new file mode 100644 index 00000000000..8f3342ea7ce --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathtestx.tex @@ -0,0 +1,643 @@ +\documentclass[fleqn]{article} +\usepackage{mathptmx} + +\DeclareMathSymbol{\Gamma} {\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta} {\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta} {\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda} {\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi} {\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi} {\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma} {\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi} {\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi} {\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega} {\mathalpha}{letters}{"0A} + +\DeclareMathSymbol{\alpha} {\mathalpha}{letters}{"0B} +\DeclareMathSymbol{\beta} {\mathalpha}{letters}{"0C} +\DeclareMathSymbol{\gamma} {\mathalpha}{letters}{"0D} +\DeclareMathSymbol{\delta} {\mathalpha}{letters}{"0E} +\DeclareMathSymbol{\epsilon}{\mathalpha}{letters}{"0F} +\DeclareMathSymbol{\zeta} {\mathalpha}{letters}{"10} +\DeclareMathSymbol{\eta} {\mathalpha}{letters}{"11} +\DeclareMathSymbol{\theta} {\mathalpha}{letters}{"12} +\DeclareMathSymbol{\iota} {\mathalpha}{letters}{"13} +\DeclareMathSymbol{\kappa} {\mathalpha}{letters}{"14} +\DeclareMathSymbol{\lambda} {\mathalpha}{letters}{"15} +\DeclareMathSymbol{\mu} {\mathalpha}{letters}{"16} +\DeclareMathSymbol{\nu} {\mathalpha}{letters}{"17} +\DeclareMathSymbol{\xi} {\mathalpha}{letters}{"18} +\DeclareMathSymbol{\pi} {\mathalpha}{letters}{"19} +\DeclareMathSymbol{\rho} {\mathalpha}{letters}{"1A} +\DeclareMathSymbol{\sigma} {\mathalpha}{letters}{"1B} +\DeclareMathSymbol{\tau} {\mathalpha}{letters}{"1C} +\DeclareMathSymbol{\upsilon}{\mathalpha}{letters}{"1D} +\DeclareMathSymbol{\phi} {\mathalpha}{letters}{"1E} +\DeclareMathSymbol{\chi} {\mathalpha}{letters}{"1F} +\DeclareMathSymbol{\psi} {\mathalpha}{letters}{"20} +\DeclareMathSymbol{\omega} {\mathalpha}{letters}{"21} +\DeclareMathSymbol{\varepsilon} {\mathalpha}{letters}{"22} +\DeclareMathSymbol{\vartheta} {\mathalpha}{letters}{"23} +\DeclareMathSymbol{\varpi} {\mathalpha}{letters}{"24} +\DeclareMathSymbol{\varrho} {\mathalpha}{letters}{"25} +\DeclareMathSymbol{\varsigma} {\mathalpha}{letters}{"26} +\DeclareMathSymbol{\varphi} {\mathalpha}{letters}{"27} + +\DeclareMathSymbol{\dit}{\mathord}{letters}{`d} +\DeclareMathSymbol{\dup}{\mathord}{operators}{`d} + +\nofiles + +\parindent 0pt +\mathindent 1em + +\def\test#1{#1} + +\def\testnums{% + \test 0 \test 1 \test 2 \test 3 \test 4 \test 5 \test 6 \test 7 + \test 8 \test 9 } +\def\testupperi{% + \test A \test B \test C \test D \test E \test F \test G \test H + \test I \test J \test K \test L \test M } +\def\testupperii{% + \test N \test O \test P \test Q \test R \test S \test T \test U + \test V \test W \test X \test Y \test Z } +\def\testupper{% + \testupperi\testupperii} + +\def\testloweri{% + \test a \test b \test c \test d \test e \test f \test g \test h + \test i \test j \test k \test l \test m } +\def\testlowerii{% + \test n \test o \test p \test q \test r \test s \test t \test u + \test v \test w \test x \test y \test z + \test\imath \test\jmath } +\def\testlower{% + \testloweri\testlowerii} + +\def\testupgreeki{% + \test A \test B \test\Gamma \test\Delta \test E \test Z \test H + \test\Theta \test I \test K \test\Lambda \test M } +\def\testupgreekii{% + \test N \test\Xi \test O \test\Pi \test P \test\Sigma \test T + \test\Upsilon \test\Phi \test X \test\Psi \test\Omega + \test\nabla } +\def\testupgreek{% + \testupgreeki\testupgreekii} + +\def\testlowgreeki{% + \test\alpha \test\beta \test\gamma \test\delta \test\epsilon + \test\zeta \test\eta \test\theta \test\iota \test\kappa \test\lambda + \test\mu } +\def\testlowgreekii{% + \test\nu \test\xi \test o \test\pi \test\rho \test\sigma \test\tau + \test\upsilon \test\phi \test\chi \test\psi \test\omega } +\def\testlowgreekiii{% + \test\varepsilon \test\vartheta \test\varpi \test\varrho + \test\varsigma \test\varphi} +\def\testlowgreek{% + \testlowgreeki\testlowgreekii\testlowgreekiii} + + +\begin{document} + +\section{Math Alphabets} + +Math Italic (\texttt{\string\mathnormal}) +\def\test#1{\mathnormal{#1},} +\begin{eqnarray*} + && {\testnums}\\ + && {\testupper}\\ + && {\testlower}\\ + && {\testupgreek}\\ + && {\testlowgreek} +\end{eqnarray*}% + +Math Roman (\texttt{\string\mathrm}) +\def\test#1{\mathrm{#1},} +\begin{eqnarray*} + && {\testnums}\\ + && {\testupper}\\ + && {\testlower}\\ + && {\testupgreek} +\end{eqnarray*}% + +%Math Italic Bold +%\def\test#1{\mathbm{#1},} +%\begin{eqnarray*} +% && {\testnums}\\ +% && {\testupper}\\ +% && {\testlower}\\ +% && {\testupgreek}\\ +% && {\testlowgreek} +%\end{eqnarray*}% + +%Math Bold (\texttt{\string\mathbf}) +%\def\test#1{\mathbf{#1},} +%\begin{eqnarray*} +% && {\testnums}\\ +% && {\testupper}\\ +% && {\testlower}\\ +% && {\testupgreek} +%\end{eqnarray*}% + +Caligraphic (\texttt{\string\mathcal}) +\def\test#1{\mathcal{#1},} +\begin{eqnarray*} + && {\testupper} +\end{eqnarray*}% + +%Script (\texttt{\string\mathscr}) +%\def\test#1{\mathscr{#1},} +%\begin{eqnarray*} +% && {\testupper} +%\end{eqnarray*}% + +%Fraktur (\texttt{\string\mathfrak}) +%\def\test#1{\mathfrak{#1},} +%\begin{eqnarray*} +% && {\testupper}\\ +% && {\testlower} +%\end{eqnarray*}% + +%Blackboard Bold (\texttt{\string\mathbb}) +%\def\test#1{\mathbb{#1},} +%\begin{eqnarray*} +% && {\testupper} +%\end{eqnarray*}% + + +\clearpage +\section{Character Sidebearings} + +\def\test#1{|#1|+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{|\mathrm{#1}|+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{|\mathbm{#1}|+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +%% +%\def\test#1{|\mathbf{#1}|+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*}% +% +\def\test#1{|\mathcal{#1}|+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Superscript positioning} + +\def\test#1{#1^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\mathrm{#1}^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\mathbm{#1}^{2}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +% +%\def\test#1{\mathbf{#1}^{2}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*} +% +\def\test#1{\mathcal{#1}^{2}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Subscript positioning} + +\def\test#1{\mathnormal{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\mathrm{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\mathbm{#1}_{i}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*} +%% +%\def\test#1{\mathbf{#1}_{i}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*}% +% +\def\test#1{\mathcal{#1}_{i}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Accent positioning} + +\def\test#1{\hat{#1}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*}% +% +\def\test#1{\hat{\mathrm{#1}}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +%\def\test#1{\hat{\mathbm{#1}}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii}\\ +% && {\testlowgreeki}\\ +% && {\testlowgreekii}\\ +% && {\testlowgreekiii} +%\end{eqnarray*}% +%% +%\def\test#1{\hat{\mathbf{#1}}+}% +%\begin{eqnarray*} +% && {\testupperi}\\ +% && {\testupperii}\\ +% && {\testloweri}\\ +% && {\testlowerii}\\ +% && {\testupgreeki}\\ +% && {\testupgreekii} +%\end{eqnarray*} +% +\def\test#1{\hat{\mathcal{#1}}+}% +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii} +\end{eqnarray*}% + + +\clearpage +\section{Differentials} + +\begin{eqnarray*} +\gdef\test#1{\dit #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\dit \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +\begin{eqnarray*} +\gdef\test#1{\dup #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\dup \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% +% +\begin{eqnarray*} +\gdef\test#1{\partial #1+}% + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii}\\ +\gdef\test#1{\partial \mathrm{#1}+}% + && {\testupgreeki}\\ + && {\testupgreekii} +\end{eqnarray*}% + + +\clearpage +\section{Slash kerning} + +\def\test#1{1/#1+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*} + +\def\test#1{#1/2+} +\begin{eqnarray*} + && {\testupperi}\\ + && {\testupperii}\\ + && {\testloweri}\\ + && {\testlowerii}\\ + && {\testupgreeki}\\ + && {\testupgreekii}\\ + && {\testlowgreeki}\\ + && {\testlowgreekii}\\ + && {\testlowgreekiii} +\end{eqnarray*} + + +\clearpage +\section{Big operators} + +\def\testop#1{#1_{i=1}^{n} x^{n} \quad} +\begin{displaymath} + \testop\sum + \testop\prod + \testop\coprod + \testop\int + \testop\oint +\end{displaymath} +\begin{displaymath} + \testop\bigotimes + \testop\bigoplus + \testop\bigodot + \testop\bigwedge + \testop\bigvee + \testop\biguplus + \testop\bigcup + \testop\bigcap + \testop\bigsqcup +% \testop\bigsqcap +\end{displaymath} + + +\section{Radicals} + +\begin{displaymath} + \sqrt{x+y} \qquad \sqrt{x^{2}+y^{2}} \qquad + \sqrt{x_{i}^{2}+y_{j}^{2}} \qquad + \sqrt{\left(\frac{\cos x}{2}\right)} \qquad + \sqrt{\left(\frac{\sin x}{2}\right)} +\end{displaymath} + +\begingroup +\delimitershortfall-1pt +\begin{displaymath} + \sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{x+y}}}}}}} +\end{displaymath} +\endgroup % \delimitershortfall + + +\section{Over- and underbraces} + +\begin{displaymath} + \overbrace{x} \quad + \overbrace{x+y} \quad + \overbrace{x^{2}+y^{2}} \quad + \overbrace{x_{i}^{2}+y_{j}^{2}} \quad + \underbrace{x} \quad + \underbrace{x+y} \quad + \underbrace{x_{i}+y_{j}} \quad + \underbrace{x_{i}^{2}+y_{j}^{2}} \quad +\end{displaymath} + + +\section{Normal and wide accents} + +\begin{displaymath} + \dot{x} \quad + \ddot{x} \quad + \vec{x} \quad + \bar{x} \quad + \overline{x} \quad + \overline{xx} \quad + \tilde{x} \quad + \widetilde{x} \quad + \widetilde{xx} \quad + \widetilde{xxx} \quad + \hat{x} \quad + \widehat{x} \quad + \widehat{xx} \quad + \widehat{xxx} \quad +\end{displaymath} + + +\section{Long arrows} + +\begin{displaymath} + \leftarrow \mathrel{-} \rightarrow \quad + \leftrightarrow \quad + \longleftarrow \quad + \longrightarrow \quad + \longleftrightarrow \quad + \Leftarrow = \Rightarrow \quad + \Leftrightarrow \quad + \Longleftarrow \quad + \Longrightarrow \quad + \Longleftrightarrow \quad +\end{displaymath} + + +\section{Left and right delimters} + +\def\testdelim#1#2{ - #1 f #2 - } +\begin{displaymath} + \testdelim() + \testdelim[] + \testdelim\lfloor\rfloor + \testdelim\lceil\rceil + \testdelim\langle\rangle + \testdelim\{\} +\end{displaymath} + +\def\testdelim#1#2{ - \left#1 f \right#2 - } +\begin{displaymath} + \testdelim() + \testdelim[] + \testdelim\lfloor\rfloor + \testdelim\lceil\rceil + \testdelim\langle\rangle + \testdelim\{\} +% \testdelim\lgroup\rgroup +% \testdelim\lmoustache\rmoustache +\end{displaymath} +\begin{displaymath} + \testdelim)( + \testdelim][ + \testdelim// + \testdelim\backslash\backslash + \testdelim/\backslash + \testdelim\backslash/ +\end{displaymath} + + +\clearpage +\section{Big-g-g delimters} + +\def\testdelim#1#2{% + - \left#1\left#1\left#1\left#1\left#1\left#1\left#1\left#1 - + \right#2\right#2\right#2\right#2\right#2\right#2\right#2\right#2 -} + +\begingroup +\delimitershortfall-1pt +\begin{displaymath} + \testdelim\lfloor\rfloor + \qquad + \testdelim() +\end{displaymath} +\begin{displaymath} + \testdelim\lceil\rceil + \qquad + \testdelim\{\} +\end{displaymath} +\begin{displaymath} + \testdelim[] + \qquad + \testdelim\lgroup\rgroup +\end{displaymath} +\begin{displaymath} + \testdelim\langle\rangle + \qquad + \testdelim\lmoustache\rmoustache +\end{displaymath} +\begin{displaymath} + \testdelim\uparrow\downarrow \quad + \testdelim\Uparrow\Downarrow \quad +\end{displaymath} +\endgroup % \delimitershortfall + + + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/resetsy.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/resetsy.mtx new file mode 100644 index 00000000000..27da54c0461 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/resetsy.mtx @@ -0,0 +1,30 @@ +\relax + +\metrics + +\unsetglyph{Upsilon} +\setglyph{Upsilon} + \glyph{Upsilon1}{1000} +\endsetglyph + +\setglyph{pi1} + \glyph{omega1}{1000} +\endsetglyph + +\setglyph{epsilon1} + \glyph{epsilon}{1000} +\endsetglyph + +\setglyph{rho1} + \glyph{rho}{1000} +\endsetglyph + +\setglyph{dotlessj} + \moveup{\neg{\depth{j}}} + \glyphrule{\width{j}}{\add{\depth{j}}{\height{dotlessi}}} + \resetitalic{\italic{dotlessi}} + \moveup{\depth{j}} + \glyphwarning{missing glyph `dotlessj'} +\endsetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/unsetmu.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/unsetmu.mtx new file mode 100644 index 00000000000..63b222ed9f0 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/unsetmu.mtx @@ -0,0 +1,7 @@ +\relax + +\metrics + +\unsetglyph{mu} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrhax.mtx new file mode 100644 index 00000000000..ce1bc5a2810 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrhax.mtx @@ -0,0 +1,15 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the Times-Roman +% glyphs. We unset those glyphs that should be taken from cmr. + +\unsetglyph{plus} +\unsetglyph{equal} +\unsetglyph{parenleft} +\unsetglyph{parenright} +\unsetglyph{bracketleft} +\unsetglyph{bracketright} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmhax.mtx new file mode 100644 index 00000000000..141899c6dc2 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmhax.mtx @@ -0,0 +1,14 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the Times-Italic +% glyphs. We unset those glyphs that should be taken from cmmi. + +\unsetglyph{period} +\unsetglyph{comma} +\unsetglyph{less} +\unsetglyph{slash} +\unsetglyph{greater} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmkernx.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmkernx.mtx new file mode 100644 index 00000000000..f05a2f6867b --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmkernx.mtx @@ -0,0 +1,239 @@ +\relax + +% The following adjustments (as proposed by Ulrik Vieth) +% are tuned for Times-Italic and oblique Adobe Symbol. + +\metrics + +\needsfontinstversion{1.800} + +% \shiftglyph takes four parameters: +% +% #1 the name of the glyph +% #2 the amount of extra space at the left +% #3 the amount of extra space at the right +% #4 the amount of extra space for subscripts + +\setcommand\shiftglyph#1#2#3#4{ + \resetglyph{#1} + \movert{#2} + \glyph{#1}{1000} + \movert{#4} + \resetitalic{\add{\italic{#1}}{\sub{#3}{#4}}} + \endresetglyph +} + +% \skewkern sets a skewchar kern, assuming that `tie' +% is the skewchar. +% +% #1 the name of the glyph +% #2 the amount of skewchar kerning + +\setcommand\skewkern#1#2{\setkern{#1}{tie}{#2}} + + +%\shiftglyph{A}{}{}{} +%\shiftglyph{B}{}{}{} +\shiftglyph{C}{-50}{0}{-25} +%\shiftglyph{D}{}{}{} +\shiftglyph{E}{0}{50}{0} +\shiftglyph{F}{0}{50}{-100} +%\shiftglyph{G}{}{}{} +\shiftglyph{H}{0}{25}{-25} +\shiftglyph{I}{0}{0}{-25} +\shiftglyph{J}{0}{0}{-25} +\shiftglyph{K}{0}{0}{-25} +%\shiftglyph{L}{}{}{} +\shiftglyph{M}{0}{0}{-25} +\shiftglyph{N}{0}{0}{-25} +%\shiftglyph{O}{}{}{} +\shiftglyph{P}{0}{0}{-125} +%\shiftglyph{Q}{}{}{} +%\shiftglyph{R}{}{}{} +%\shiftglyph{S}{}{}{} +\shiftglyph{T}{0}{50}{-75} +\shiftglyph{U}{-50}{50}{-25} +\shiftglyph{V}{-50}{50}{-50} +\shiftglyph{W}{-50}{50}{-50} +\shiftglyph{X}{0}{50}{-25} +\shiftglyph{Y}{-50}{50}{-50} +%\shiftglyph{Z}{}{}{} + +%\shiftglyph{a}{}{}{} +\shiftglyph{b}{0}{-25}{0} +%\shiftglyph{c}{}{}{} +\shiftglyph{d}{0}{25}{0} +%\shiftglyph{e}{}{}{} +\shiftglyph{f}{150}{0}{25} +\shiftglyph{g}{0}{-50}{0} +%\shiftglyph{h}{}{}{} +%\shiftglyph{i}{}{}{} +\shiftglyph{j}{150}{25}{0} +%\shiftglyph{k}{}{}{} +\shiftglyph{l}{0}{50}{0} +%\shiftglyph{m}{}{}{} +%\shiftglyph{n}{}{}{} +\shiftglyph{o}{0}{-50}{0} +\shiftglyph{p}{75}{-25}{0} +%\shiftglyph{q}{}{}{} +%\shiftglyph{r}{}{}{} +%\shiftglyph{s}{}{}{} +\shiftglyph{t}{-25}{50}{0} +%\shiftglyph{u}{}{}{} +%\shiftglyph{v}{}{}{} +%\shiftglyph{w}{}{}{} +%\shiftglyph{x}{}{}{} +%\shiftglyph{y}{}{}{} +%\shiftglyph{z}{}{}{} + +\shiftglyph{Gamma}{-25}{50}{-125} +\shiftglyph{Delta}{0}{0}{25} +\shiftglyph{Theta}{-50}{0}{0} +\shiftglyph{Lambda}{-25}{0}{0} +\shiftglyph{Xi}{0}{0}{25} +%\shiftglyph{Pi}{}{}{} +\shiftglyph{Sigma}{0}{0}{25} +\shiftglyph{Upsilon}{-75}{25}{-100} +\shiftglyph{Phi}{0}{-25}{0} +\shiftglyph{Psi}{-75}{0}{-100} +\shiftglyph{Omega}{0}{0}{25} + +%\shiftglyph{alpha}{}{}{} +%\shiftglyph{beta}{}{}{} +%\shiftglyph{gamma}{}{}{} +%\shiftglyph{delta}{}{}{} +%\shiftglyph{epsilon1}{}{}{} +%\shiftglyph{zeta}{}{}{} +%\shiftglyph{theta}{}{}{} +%\shiftglyph{iota}{}{}{} +%\shiftglyph{kappa}{}{}{} +%\shiftglyph{lambda}{}{}{} +\shiftglyph{mu}{25}{0}{0} +%\shiftglyph{nu}{}{}{} +%\shiftglyph{xi}{}{}{} +%\shiftglyph{omikron}{}{}{} +%\shiftglyph{pi}{}{}{} +%\shiftglyph{rho}{}{}{} +\shiftglyph{sigma}{0}{25}{0} +%\shiftglyph{tau}{}{}{} +%\shiftglyph{upsilon}{}{}{} +\shiftglyph{chi}{25}{0}{0} +%\shiftglyph{phi}{}{}{} +%\shiftglyph{psi}{}{}{} +%\shiftglyph{omega}{}{}{} +%\shiftglyph{epsilon}{}{}{} +%\shiftglyph{theta1}{}{}{} +%\shiftglyph{pi1}{}{}{} +%\shiftglyph{rho1}{}{}{} +\shiftglyph{sigma1}{0}{25}{0} +%\shiftglyph{phi1}{}{}{} + +\shiftglyph{weierstrass}{-100}{-200}{-150} + +\skewkern{A}{75} +\skewkern{B}{100} +\skewkern{C}{100} +\skewkern{D}{50} +\skewkern{E}{75} +\skewkern{F}{75} +\skewkern{G}{100} +\skewkern{H}{75} +\skewkern{I}{100} +\skewkern{J}{200} +\skewkern{K}{75} +%\skewkern{L}{} +\skewkern{M}{100} +\skewkern{N}{25} +\skewkern{O}{100} +\skewkern{P}{100} +\skewkern{Q}{100} +\skewkern{R}{100} +\skewkern{S}{100} +\skewkern{T}{50} +\skewkern{U}{50} +%\skewkern{V}{} +%\skewkern{W}{} +\skewkern{X}{50} +%\skewkern{Y}{} +\skewkern{Z}{50} + +\skewkern{a}{75} +%\skewkern{b}{} +\skewkern{c}{75} +\skewkern{d}{200} +\skewkern{e}{75} +\skewkern{f}{150} +\skewkern{g}{75} +%\skewkern{h}{} +\skewkern{i}{75} +\skewkern{j}{150} +%\skewkern{k}{} +\skewkern{l}{100} +\skewkern{m}{50} +\skewkern{n}{50} +\skewkern{o}{75} +\skewkern{p}{100} +\skewkern{q}{75} +\skewkern{r}{50} +\skewkern{s}{100} +\skewkern{t}{50} +\skewkern{u}{75} +\skewkern{v}{75} +\skewkern{w}{75} +\skewkern{x}{75} +\skewkern{y}{75} +\skewkern{z}{50} +\skewkern{dotlessi}{50} +\skewkern{dotlessj}{50} + +\skewkern{Gamma}{75} +\skewkern{Delta}{75} +\skewkern{Theta}{50} +\skewkern{Lambda}{50} +\skewkern{Xi}{50} +\skewkern{Pi}{75} +\skewkern{Sigma}{50} +\skewkern{Upsilon}{25} +\skewkern{Phi}{75} +\skewkern{Psi}{50} +\skewkern{Omega}{50} + +%\skewkern{alpha}{} +\skewkern{beta}{50} +\skewkern{gamma}{75} +\skewkern{delta}{50} +%\skewkern{epsilon1}{} +\skewkern{zeta}{50} +\skewkern{theta}{50} +%\skewkern{iota}{} +\skewkern{kappa}{25} +\skewkern{lambda}{-75} +%\skewkern{mu}{} +%\skewkern{nu}{} +\skewkern{xi}{50} +\skewkern{pi}{50} +\skewkern{rho}{25} +\skewkern{sigma}{25} +\skewkern{tau}{50} +\skewkern{upsilon}{50} +\skewkern{chi}{25} +\skewkern{phi}{75} +\skewkern{psi}{50} +\skewkern{omega}{50} +%\skewkern{epsilon}{} +\skewkern{theta1}{75} +\skewkern{pi1}{50} +\skewkern{rho1}{25} +\skewkern{sigma1}{50} +\skewkern{phi1}{50} + +\skewkern{weierstrass}{175} +\skewkern{lscript}{125} + +\resetglyph{vector} + \movert{-100} + \glyph{vector}{1000} + \movert{100} +\endresetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrvhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrvhax.mtx new file mode 100644 index 00000000000..6270feb6158 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrvhax.mtx @@ -0,0 +1,73 @@ +\relax + +% This metrics file is loaded after having read the cmex glyps. +% We unset the big operators that should be taken from Symbol +% or from a scaled-down version of cmex. + +\metrics + +\setint{psy-textscale}{1000} +\setint{psy-displayscale}{1440} + +\unsetglyph{circledotdisplay} +\unsetglyph{circledottext} +\unsetglyph{circlemultiplydisplay} +\unsetglyph{circlemultiplytext} +\unsetglyph{circleplusdisplay} +\unsetglyph{circleplustext} +\unsetglyph{contintegraldisplay} +\unsetglyph{contintegraltext} +\unsetglyph{integraldisplay} +\unsetglyph{integraltext} +\unsetglyph{intersectiondisplay} +\unsetglyph{intersectiontext} +\unsetglyph{logicalanddisplay} +\unsetglyph{logicalandtext} +\unsetglyph{logicalordisplay} +\unsetglyph{logicalortext} +\unsetglyph{uniondisplay} +\unsetglyph{unionmultidisplay} +\unsetglyph{unionmultitext} +\unsetglyph{unionsqdisplay} +\unsetglyph{unionsqtext} +\unsetglyph{uniontext} + +\resetglyph{summationtext} + \glyph{summation}{\int{psy-textscale}} +\endresetglyph + +\resetglyph{summationdisplay} + \glyph{summation}{\int{psy-displayscale}} +\endresetglyph + +\resetglyph{producttext} + \glyph{product}{\int{psy-textscale}} +\endresetglyph + +\resetglyph{productdisplay} + \glyph{product}{\int{psy-displayscale}} +\endresetglyph + +\resetglyph{coproducttext} + \moveup{\neg{\depth{producttext}}} + \glyphrule{ + \width{producttext} + }{ + \add{\height{producttext}}{\depth{producttext}} + } + \moveup{\depth{producttext}} + \glyphwarning{missing glyph `coproducttext'} +\endresetglyph + +\resetglyph{coproductdisplay} + \moveup{\neg{\depth{productdisplay}}} + \glyphrule{ + \width{productdisplay} + }{ + \add{\height{productdisplay}}{\depth{productdisplay}} + } + \moveup{\depth{productdisplay}} + \glyphwarning{missing glyph `coproductdisplay'} +\endresetglyph + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zryhax.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zryhax.mtx new file mode 100644 index 00000000000..19addd6ad82 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zryhax.mtx @@ -0,0 +1,26 @@ +\relax + +\metrics + +% This metrics file is loaded after having read the cmsy glyphs. +% We unset those glyphs that should be taken from Times or Symbol. + +\unsetglyph{infinity} +\unsetglyph{proportional} + +\unsetglyph{emptysetstress} + +\unsetglyph{Rfraktur} +\unsetglyph{Ifraktur} + +\unsetglyph{aleph} + +\unsetglyph{coproduct} +\unsetglyph{gradient} + +\unsetglyph{section} +\unsetglyph{dagger} +\unsetglyph{daggerdbl} +\unsetglyph{paragraph} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrykernx.mtx b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrykernx.mtx new file mode 100644 index 00000000000..249700156e1 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrykernx.mtx @@ -0,0 +1,35 @@ +\relax + +% We reset the skewchar kerning for OMS (assuming skewchar=`prime') +% using the original kern pairs for OML (assuming skewchar=`tie'). + +\metrics + +\setkern{A}{prime}{\kerning{A}{tie}} +\setkern{B}{prime}{\kerning{B}{tie}} +\setkern{C}{prime}{\kerning{C}{tie}} +\setkern{D}{prime}{\kerning{D}{tie}} +\setkern{E}{prime}{\kerning{E}{tie}} +\setkern{F}{prime}{\kerning{F}{tie}} +\setkern{G}{prime}{\kerning{G}{tie}} +\setkern{H}{prime}{\kerning{H}{tie}} +\setkern{I}{prime}{\kerning{I}{tie}} +\setkern{J}{prime}{\kerning{J}{tie}} +\setkern{K}{prime}{\kerning{K}{tie}} +\setkern{L}{prime}{\kerning{L}{tie}} +\setkern{M}{prime}{\kerning{M}{tie}} +\setkern{N}{prime}{\kerning{N}{tie}} +\setkern{O}{prime}{\kerning{O}{tie}} +\setkern{P}{prime}{\kerning{P}{tie}} +\setkern{Q}{prime}{\kerning{Q}{tie}} +\setkern{R}{prime}{\kerning{R}{tie}} +\setkern{S}{prime}{\kerning{S}{tie}} +\setkern{T}{prime}{\kerning{T}{tie}} +\setkern{U}{prime}{\kerning{U}{tie}} +\setkern{V}{prime}{\kerning{V}{tie}} +\setkern{W}{prime}{\kerning{W}{tie}} +\setkern{X}{prime}{\kerning{X}{tie}} +\setkern{Y}{prime}{\kerning{Y}{tie}} +\setkern{Z}{prime}{\kerning{Z}{tie}} + +\endmetrics diff --git a/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdf b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdf new file mode 100644 index 00000000000..d05b42d3200 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdf differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex new file mode 100644 index 00000000000..a66b89054c5 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex @@ -0,0 +1,4680 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% author = "Alan Jeffrey and Rowland McDonnell and +%%% Ulrik Vieth and Lars Hellstr{\"o}m", +%%% version = "1.928", +%%% date = "2007-09-06", +%%% time = "11:22:41 +02:00", +%%% filename = "fontinst.tex", +%%% email = "fontinst@tug.org", +%%% checksum = "", +%%% codetable = "ISO/ASCII", +%%% keywords = "fontinst, TeX, PostScript, documentation", +%%% supported = "yes", +%%% abstract = "This is the documentation for the fontinst +%%% font installation package.", +%%% package = "fontinst", +%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" +%%% } +%%% ==================================================================== + +% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey + +% Modified by Rowland McDonnell June 1998 +% Modified and revised by Ulrik Vieth June 1998 +% Modified by Lars Hellstr\"om July 2004 and later + + + +\documentclass[a4paper]{ltxguide} +\usepackage[OT1]{fontenc} +\usepackage{url,xspace} +\usepackage{graphicx} + +\IfFileExists{palatino.flag}{ + \renewcommand\rmdefault{ppl} +} +%\renewcommand\rmdefault{padx} +%\renewcommand\rmdefault{pmnx} + +% \MakeShortVerb{\|} + + +% Title page and running heads. + +\makeatletter +\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} +\newcommand{\version}[1]{\renewcommand{\@version}{#1}} +\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} + +\newcommand{\@subtitle}{} +\newcommand{\@version}{???} +\newcommand{\@illustration}{cover.eps} + +% \pagestyle{myheadings} +% \AtBeginDocument{\markright{\small\itshape +% \@author\hfill\@title: \@subtitle\quad}} + + +\renewcommand{\maketitle}{{% + \thispagestyle{empty}% + \normalfont\centering + \null + {\fontsize{100}{100}\textit{\@title}}% + \par\bigskip + {\Large\textbf{\@subtitle}}% + \vfill + \includegraphics[width=\textwidth]{\@illustration}% + \vfill + {\Large\textbf{% + \def\and{\egroup\qquad\hbox\bgroup} + \leavevmode \hbox{\@author}\\[\smallskipamount] + \@title~v\@version + \quad\textperiodcentered\quad \@date}}% + \clearpage +}} +\makeatother + + +% Set lists tighter (assuming non-zero \parskip). + +\makeatletter +\renewcommand{\@listI}{% + \leftmargin\leftmargini + \parsep\medskipamount + \itemsep\z@ % + parsep + \topsep\z@ % + parskip + \partopsep\z@ +} +\newenvironment{isyntax}{% + \let\\\@centercr + \list{}{% + \itemsep \z@ + \itemindent -1.5em% + \listparindent \itemindent + \advance \leftmargin 1.5em% + }% + \advance \rightskip \z@\@plus0.7\linewidth \relax + \linepenalty=100\relax + \item\relax +}{\endlist} +\makeatother + +\newenvironment{smalldes}{% + \list{}{% + \setlength\labelwidth{0pt}% + \setlength\itemindent{-\leftmargin}% + \setlength\listparindent{1em}% + \setlength\parsep{0pt}% + \setlength\itemsep{0pt plus 1pt}% + \setlength\topsep{\itemsep}% + \let\makelabel\descriptionlabel + }% +}{\endlist} + +\newenvironment{hackernote}{% + \list{}{ + \setlength{\leftmargin}{0pt}% + \setlength\labelwidth{0pt}% + \setlength{\listparindent}{1.4em}% + \setlength{\parsep}{0pt plus 1pt}% + \setlength{\itemsep}{\medskipamount}% + }\item[]% + \small + \textit{Note for hackers.}\hspace{0.5em}% +}{\endlist} + +% % I don't use the <...> feature for verbatim, +% % so I undo that ltxguide feature. +% \makeatletter +% \renewcommand{\verbatim@font}{% +% \normalfont \ttfamily +% % \catcode`\<=\active +% % \catcode`\>=\active +% } +% \makeatother + + +% ltxguide.cls decl environment, but with equal space above and +% below. +\DeleteShortVerb{\|} +\makeatletter +\newenvironment{decl*}[1][]{% + \par + \small + \addvspace{2.3ex}% + \vskip -\parskip + \ifx\relax#1\relax + \def\@decl@date{}% + \else + \def\@decl@date{\NEWfeature{#1}}% + \fi + \noindent\hspace{-\leftmargini}% + \begin{tabular}{|l|}% + \hline\ignorespaces +}{% + \\\hline + \end{tabular}% + \nobreak\@decl@date\par\nobreak + \vspace{2.3ex}\vskip -\parskip +} +\makeatother +\MakeShortVerb{\|} + + +% Set spacing around captions. + +\setlength{\abovecaptionskip}{\medskipamount} +\setlength{\belowcaptionskip}{\medskipamount} + +% Markup for logos, file types, programs, etc. + +\newcommand*{\meta}{\m} +\newcommand*{\marg}{\arg} +\newcommand*{\parg}[1]{\texttt{(}\m{#1}\texttt{)}} + +\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} + +\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} +\newcommand*{\OzMF}{O\kern-.03em zMF} +\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} + +\makeatletter +\newcommand{\La}{% + L\kern-.36em + {% + \setbox0\hbox{T}% + \vbox to\ht0{\hbox{% + $\m@th$\csname S@\f@size\endcsname + \fontsize\sf@size\z@\math@fontsfalse\selectfont + A% + }\vss}% + }% +} +\makeatother +\DeclareRobustCommand\AllTeX{(\La\kern-.075em)\kern-.075em\TeX} + +\newcommand{\PS}{Post\-Script\xspace} +\newcommand{\TT}{True\-Type\xspace} + +\newcommand*{\setfilename}[1]{\texttt{#1}} +\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} +\newcommand*{\setpackagename}[1]{\textsf{#1}} + +\newcommand{\dvips} {\setpackagename{dvips}\xspace} +\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} +\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} +\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} +\newcommand{\fontdoc}{\setpackagename{font\-doc}\xspace} +\newcommand{\Fontdoc}{\setpackagename{Font\-doc}\xspace} + +% \show\fontname +\newcommand{\fontnamekb}{fontname\xspace} +\newcommand{\Fontnamekb}{Fontname\xspace} + +\newcommand{\mf} {\setfilename{mf}\xspace} +\newcommand{\Mf} {\setfilename{Mf}\xspace} +\newcommand{\vf} {\setfilename{vf}\xspace} +\newcommand{\Vf} {\setfilename{Vf}\xspace} +\newcommand{\pl} {\setfilename{pl}\xspace} +\newcommand{\Pl} {\setfilename{Pl}\xspace} +\newcommand{\fd} {\setfilename{fd}\xspace} +\newcommand{\Fd} {\setfilename{Fd}\xspace} +\newcommand{\pk} {\setfilename{pk}\xspace} +\newcommand{\Pk} {\setfilename{Pk}\xspace} +\newcommand{\afm}{\setfilename{afm}\xspace} +\newcommand{\Afm}{\setfilename{Afm}\xspace} +\newcommand{\vpl}{\setfilename{vpl}\xspace} +\newcommand{\Vpl}{\setfilename{Vpl}\xspace} +\newcommand{\cvpl}{(\setfilename{v})\setfilename{pl}\xspace} +\newcommand{\tfm}{\setfilename{tfm}\xspace} +\newcommand{\Tfm}{\setfilename{Tfm}\xspace} +\newcommand{\mtx}{\setfilename{mtx}\xspace} +\newcommand{\Mtx}{\setfilename{Mtx}\xspace} +\newcommand{\etx}{\setfilename{etx}\xspace} +\newcommand{\Etx}{\setfilename{Etx}\xspace} +\newcommand{\enc}{\setfilename{enc}\xspace} +\newcommand{\Enc}{\setfilename{Enc}\xspace} +\newcommand{\pfa}{\setfilename{pfa}\xspace} +\newcommand{\Pfa}{\setfilename{Pfa}\xspace} +\newcommand{\pfb}{\setfilename{pfb}\xspace} +\newcommand{\Pfb}{\setfilename{Pfb}\xspace} +\newcommand{\dvi}{\setfilename{dvi}\xspace} +\newcommand{\Dvi}{\setfilename{Dvi}\xspace} +\newcommand{\pdf}{\setfilename{pdf}\xspace} +\newcommand{\Pdf}{\setfilename{Pdf}\xspace} +\newcommand{\ttf}{\setfilename{ttf}\xspace} +\newcommand{\Ttf}{\setfilename{Ttf}\xspace} +\newcommand{\map}{\setfilename{map}\xspace} +\newcommand{\Map}{\setfilename{Map}\xspace} + + +\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} +\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} +\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} +\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} + +\newcommand{\BibTeX}{Bib\TeX} + + + + +\title{fontinst} +\subtitle{Font installation software for \TeX} +\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om} +\illustration{roadmap.eps} +\version{1.9} +\date{August 2009} + +\begin{document} + +\maketitle + + +% \begin{itshape} +% This manual is currently being rewritten, and may therefore be a +% bit disorganised. For authoritative information on command syntaxes +% and the like, see the Literate Programming sources for +% \fontinst. The main file there is \textsl{\texttt{fisource.tex}}. +% \end{itshape} +% +% \bigskip + +\begin{footnotesize} + This manual describes the \texttt{fontinst} software for converting + fonts from Adobe Font Metric format to forms readable by \TeX. This + manual should be distributed with the \texttt{fontinst} software, + which is available by anonymous FTP from + \url{ftp://ftp.tex.ac.uk/tex-archive/fonts/utilities/fontinst}, and + on the various CD-ROMs containing material from the CTAN archives. + Please do not contact the author directly for copies. + + If you would like to report a bug with \texttt{fontinst}, please + mail \url{fontinst@tug.org}. The mail will be sent to the + \texttt{fontinst} mailing list. If you would like to be on the + \texttt{fontinst} mailing list, see + \url{http://tug.org/mailman/listinfo/fontinst}. +\end{footnotesize} + +\tableofcontents + +% \vfill + +\clearpage + + +\section{Introduction} + +The purpose of \fontinst is to make digital fonts, as they may +be bought from a foundry or other supplier, usable with \AllTeX; +in general, they are not directly so. An obvious problem can be +that the font information is not available in a format that \TeX\ +understands. A more subtle problem is that the fonts are often +organised in a way that is unsuitable for automatic typesetting. +It is furthermore necessary to inform \AllTeX\ and related software +about the existence of the new font, and the pieces of code needed +to do this are somewhat exotic. + +Regarding the first problem, \fontinst can bridge the gap between +non-\TeX\ and \TeX-specific file formats, but may need some help from +other tools (\setfilename{pltotf}, \setfilename{vptovf}, +\setfilename{ttf2afm}, etc.) with conversions between text and binary +file formats. Regarding the last problem, \fontinst can generate the +necessary code, although you may in some cases need to paste it into +the right configuration file yourself. It is however with respect to +the second problem that \fontinst shines, as the many minutiae of +providing fonts for \AllTeX\ are automated to a very high degree, +while still providing you as user with the power to fine-tune every +detail of the output. In addition, \fontinst is available for every +platform that has \TeX. + +The reason \fontinst is so portable is simply that it is written in +\TeX, exploiting those features of the language which does other +things than typesetting. A drawback of this is the inability to work +directly with binary file formats, but an advantage is that users +do not need to learn a separate command language before they can +configure the tool; \fontinst only introduces a set of new \TeX\ +commands, not a new set of syntax rules. Moreover, many encoding and +metric files used with \fontinst can also be typeset as \LaTeX\ +documents, yielding a rendering of their contents which might be more +pleasing to the eye than the raw code. + +The main thing \fontinst does is creating virtual fonts (\vf's). For +this, it takes the approach that the world is full of glyphs, and a +subset of these are to be picked, perhaps tweaked, and finally wrapped +up as a new font for \TeX\ to use. In the basic case where one merely +wants to make a specific foundry-supplied font available to \TeX, what +one does is to present only that font as glyphbase for \fontinst, since +this means all glyphs in the resulting virtual font will come from that +base font, only reorganised to meet the requirements of \AllTeX. It is +however not uncommon to use several base fonts for forming a single +glyphbase, maybe because the foundry has arbitrarily decided to divide +the basic font up into separate ``base'', ``expert'', and ``alternate'' +varieties that don't match the needs of \TeX, or maybe because the +foundry did not provide all the glyphs of standard \TeX\ fonts and glyphs +from some other font family are used to fill in the gaps. Either way, +since it's you that's doing the packaging, it is you that gets to say +what goes into the package. + +In the process of creating some virtual fonts, many minor pieces of +data are encounted that would be needed when informing \AllTeX\ and +related software about these new fonts. +\Fontinst records this information and provides for writing finished +files in the most common formats, notably \LaTeX\ \fd files and +\dvips \map files. One can even ask \fontinst to have certain +transformations performed on the base fonts, to extend or tweak the +repertoire of glyph shapes that are available. + + +\subsection{Overview of the process} + +If you're using \fontinst, the usual steps you need to take to use +an ordinary \PS latin text font with \LaTeX\ are these: +\marginpar{Related commands:} +\begin{enumerate} +\item \label{WhatToDoList:1} + Gather \afm files for the base fonts you want to make use of, and + (optionally) give the \afm files appropriate names. +\item \label{WhatToDoList:2} + Use \fontinst\marginpar{\cs{transformfont}} to produce \texttt{8r} + encoded \pl files from these \afm files. +\item \label{WhatToDoList:3} + Use \fontinst\marginpar{\cs{installfont}} to create T1 and OT1 + encoded \pl and \vpl files from the |8r| encoded \pl files (this + procedure will also create suitable \fd files). +\item \label{WhatToDoList:4} + Use \fontinst (its \setfilename{finstmsc.sty}\marginpar{ + \cs{adddriver}} variety) to generate the mapfile entries needed + for the above. +\item + Use \pltotf to turn each \pl file into a \tfm file. +\item + Use \vptovf to turn each \vpl file into a pair of \vf and + \tfm files. +\item + Move the \tfm, \vf, and \fd files into the appropriate + directories so \LaTeX\ can see them. +\item + Tell your \dvi driver about the new font (typically involves + editing some configuration file or files, possibly also running + some helper command to update cached configuration information). +\item + Test it. (The \LaTeX\ command \cs{usefont} lets you select a font + by encoding, family, series, and shape. The Plain\TeX\ file + \setfilename{testfont.tex} provides an easy way of producing font + tables.) +\item + Perhaps write a package file to make selecting the new font + a little easier. +\end{enumerate} + +The \setfilename{examples\slash basic\slash basicex.tex} file +contains examples of doing \ref{WhatToDoList:2} +and~\ref{WhatToDoList:3}; in many cases, it is possible to use the +|\latinfamily| command to do all of this. +The \setfilename{examples\slash basic\slash basicex2.tex} file +contains examples of doing \ref{WhatToDoList:4}. + + +\section{Defining terms} + +The process of making fonts usable involves some rather technical +issues, so in order to understand a discussion of what is going on, +it is necessary to first get the terminology straight. Feel free to +skip parts of this if you think you already know the material covered +or for the moment want to concentrate on other aspects of what +\fontinst does, but bear in mind that you may then have reason to return +to this section at a later time. + +% This is rather a large and perhaps tedious section. You might be +% tempted to skip it so you can get to some more direct information on +% how to use \fontinst. That's fine if you understand everything about +% how \TeX\ handles fonts. If not, we suggest you at least skim though +% this section. + +\subsection{What's a font?} + +Once upon a time, this question was easily answered: a font is a +set of type in one size, style, etc. There used to be no +ambiguity, because a font was a collection of chunks of type metal +kept in a drawer, one drawer for each font. + +These days, with digital typesetting, things are more complicated. +What a font `is' isn't easy to pin down. A typical use of a \PS +font with \LaTeX\ might use these elements: +\begin{itemize} +\item Type 1 printer font file +\item Bitmap screen font file +\item Adobe font metric file (\afm file) +\item \TeX\ font metric file (\tfm file) +\item Virtual font file (\vf file) +\item font definition file (\fd file) +\end{itemize} +Looked at from a particular point of view, each of these files +`is' the font. So what's going on? + + +\subsubsection{Type 1 printer font files} + +These files contain the information needed by your printer to draw +the shapes of all the characters in a font. They're typically +files with a \pfa or \pfb extension; on Macs they're usually in +files of type `LWFN' and have icons that look like a +laser printer. The information in all these formats is basically +the same: the only difference is in its representation. \pfa +stands for `printer font ASCII', while \pfb stands for `printer +font binary'. \pfa files are pure \PS code (though in parts highly +convoluted) and can typically be pasted into or copied from \PS +documents using a text editor if one feels like hacking. Since \pfa +files contain a large chunk of hex-encoded binary data, they are +however about twice the size of the equivalent \pfb, where text and +binary data reside in separate sections of an overall binary file +format. + +% That is, \pfa files contain plain text information, +% while \pfb files contain the same information encoded as +% machine-readable binary data. + +% If you have Adobe Type Manager (ATM) installed on your computer, +% ATM will use these files to draw an accurate representation of the +% letters on the screen of your computer when you are previewing a +% \TeX\ document. + +Printer font files are not used directly by \TeX\ at all -- \TeX\ +just prepares a \dvi file that refers to the fonts by name and the +characters by number: \TeX\ knows nothing about the shapes +involved. The \dvi driver uses the printer font files when you ask +it to print the \dvi file. This means that you can produce a \dvi +file which uses, say, Palatino, even if you do not have the +Type~1 printer font file for this font on your computer. You will +need to find a computer that does have Palatino before you can +print it or preview it, though. +(Pdf\TeX\ is different from \TeX\ in this respect; since pdf\TeX\ +integrates most of the functionality of a \dvi driver, it may be unable +to generate working \pdf output if the some Type~1 printer font file +is not available.) + +\Dvi drivers generating \pdf often require Type~1 fonts to be in \pfb +format, as that is very close to how the data is stored in a \pdf +file. + + +\subsubsection{Bitmap screen font files} + +These files contain a low-resolution bitmap for drawing a +representation of the font on the screen of your computer if ATM +is not installed. In the \TeX\ world, these files are only used +for screen previews by \dvi drivers that use the windowing system +for rendering text. +% They are kept in font suitcase files on Macintoshes. +%\marginnote{And where on other computers?} + +Technically, \pk files are also bitmap font files, for use on screen +or with a printer, but \TeX\ systems tend to be set up so that \pk +files are generated automatically when needed. (Of course, this +requires that the font is first available in some other format, +usually \mf or \pfb.) + + +\subsubsection{Adobe font metric files (\afm files)} + +These files are text files which contain information about the +size of each character in a font, kerning and ligature +information, and so on. They can't be used by \TeX\ directly, but +the information they contain is essential if you want to use a +font with \TeX. \Fontinst can from an \afm file create the +necessary \tfm and \vf files (well, really \pl and \vpl files, but +see below) so you can use a font with \TeX. +Once you have created all the files you need to use a font with +\TeX, you can remove the corresponding \afm files from your +computer unless you have other software that needs them. + +The job of turning an \afm file into a set of \tfm and \vf files +is one of the main uses for \fontinst. Most of this document is +concerned with this process, so don't worry if it seems a bit +vague at the moment. + + +\subsubsection{\TT and OpenType font files} + +The \TT format was created as an Apple--Microsoft collaboration to +avoid being dependent on Adobe's font technologies. Later Adobe and +Microsoft went on to define the OpenType format, which is a +development of \TT. However, the three don't always agree on the +fine details of the format. + +A \TT font file is a collection of rather disparate tables, and can +therefore contain scalable outline fonts (like \PS~type~1), bitmap +screen fonts, and font metrics all in one file; for software with +direct support for \TT this tends to simplify font installation, but +for \TeX\ it rather adds a level of complication. An advantage for +\TeX\ use is that the suppliers provide font metrics in a +cross-platform format (as opposed to rather obscure platform-specific +formats, which could previously be the norm), but they still have to +undergo conversion before we can use them. \TT is furthermore a +``there is more than one way to do it'' format, so it sometimes +happens that information which is present in the font is ignored by +some programs because that information happened to be in an unusal +format\dots + +Classical \TT fonts have outlines defined in terms of quadratic +Bezier curves. The main addition in the OpenType specification was a +second outline format (CFF\slash type~2) which uses cubic Bezier +curves. Both outline formats are directly supported in \pdf and can +(even if the driver doesn't have built-in support for the format) +with a thin wrapper be used in \PS, but there is also a tradition of +rather converting to type~1 before using such fonts with \TeX; the +latter leads to a slight drop in quality. + + + + +\subsubsection{\TeX\ font metric files (\tfm files)} + +These are binary data files in a format designed for use by \TeX\ +which contain (more-or-less) the same information as \afm files: +the size of each character in a font (font metric data), kerning, +and ligature information. + +When you select a font in \TeX, you are telling \TeX\ to typeset +using a particular \tfm file; from \TeX's point of view, a \tfm +file (and nothing else) \emph{is} a font. \TeX\ itself doesn't +see printer font files, screen bitmaps, \pk files, \vf files, or +anything else to do with fonts: only \tfm files. + +\TeX\ uses these \tfm files to decide where to put characters when +typesetting. From \TeX's point of view, \tfm files \emph{are} +fonts, even though they contain no information about the shape of +letters, and are rarely needed by anything except \TeX. (\Dvi drivers +generally read \tfm files so that they can keep track of exact glyph +widths and fine-tune positioning accordingly, but they would get by +fairly well with only the information in the printer fonts.) + + +\subsubsection{Property list files (\pl files)} + +\pl files are human-readable text files which contain all the font +metric, kerning, ligature, and other information needed to create +a \tfm file. You can convert between the two file formats using +\tftopl and \pltotf, which are standard utilities in a \TeX\ system. + + +\subsubsection{Virtual font files (\vf files)} + +These are binary data files in a format designed for use by \TeX\ +\dvi drivers. Their main purpose in life is to replace the raw font +abstraction available in the printer with one more convenient for +\TeX. These files are used by \dvi driver software only. + +\Dvi drivers use \vf files to work out what should \emph{really} be +printed when you ask for a particular character. +Technically they are like subroutine libraries for \dvi drivers, +with one subroutine for each character in the virtual font: when +the \dvi driver sees a \dvi command to set a character from a virtual +font, it will execute a sequence of \dvi commands (the ``mapcommands +property'' of this character) that it reads in the \vf file. You need +not worry about the details of this, as \fontinst deals with them for +you. Creating and using virtual fonts is what this document is about, +so don't worry if this doesn't make sense yet. (After all, how much +do you need to know about the inner workings of \dvi files to typeset +and print \TeX\ documents?) + +Each \vf file has a \tfm file with the same name. To use a +virtual font, you select the \tfm file as the font to use in your +document. When the \dvi driver comes across this \tfm file in the +\dvi file, it looks up the \vf file and uses that to decide what +to do. + + +\subsubsection{Virtual property list files (\vpl files)} + +\vpl files are human-readable text files which contain all the +font metric, kerning, mapping, and other information needed to +create a \vf and \tfm pair. + +\vptovf will create a \vf/\tfm pair from a \vpl file. \vftovp +will create a \vpl from a \vf/\tfm pair. \vftovp also needs to be +able to read all the \tfm files that are referred to by a \vf to +recreate the \vpl\ -- it looks at the checksums to verify that +everything's okay. + + +\subsubsection{Font definition files (\fd files)} + +These are files containing commands to tell \LaTeX\ which \tfm +files to associate with a request for a font using \LaTeX's font +selection commands. + +For example, here is a small and edited part of the \fd file +supplied with \setpackagename{PSNFSS} to allow you to use the +Adobe Times font in T1 encoding: + +\begin{verbatim} + \ProvidesFile{t1ptm.fd} + [1997/02/11 Fontinst v1.6 font definitions for T1/ptm.] + + \DeclareFontFamily{T1}{ptm}{} + + \DeclareFontShape{T1}{ptm}{m}{n} {<<->> ptmr8t}{} + \DeclareFontShape{T1}{ptm}{m}{it}{<<->> ptmri8t}{} + ... + \DeclareFontShape{T1}{ptm}{b}{n} {<<->> ptmb8t}{} + \DeclareFontShape{T1}{ptm}{b}{it}{<<->> ptmbi8t}{} + ... +\end{verbatim} +What this means is: when you use \LaTeX\ to select the font family +|ptm| in T1 encoding in the medium series (|m|) and normal shape +(|n|), \TeX\ uses the font \texttt{ptmr8t.tfm}. Similarly, if you +select bold italic, \TeX\ uses \texttt{ptmbi8t.tfm}. + +\LaTeX\ works out which \fd file to load based on the current +encoding and font family selected. If you've selected T1 encoded +|ptm| like this: +\begin{verbatim} + \fontencoding{T1}\fontfamily{ptm}\selectfont +\end{verbatim} +\LaTeX\ loads the file \url{t1ptm.fd} (if it doesn't exist, you're +in trouble). As you can see above, this file contains information +so that \LaTeX\ knows which \tfm file to use. So if you ask for, +say, |T1/ptm/b/it| (T1 encoded Times-Roman, bold series, italic +shape), you get the font \texttt{ptmbi8t}. + +You can find more about \fd files and \LaTeX's font selection commands +at CTAN: +\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} +and \url{ftp://ftp.tex.ac.uk/tex-archive/info/simple-nfss.tex} are +both useful. + + +\subsubsection{Font mapping files (\map files)} + +These are files telling \dvi drivers which printer fonts correspond to +specific \TeX\ fonts (\tfm files) -- how a specific \TeX\ font should +be \emph{mapped} onto a font concept available in the \dvi driver's +output format. Unlike \tfm, \fd, and \vf files, +which tend to be found as soon as they're in a suitable location +(such as the current directory), mapfiles typically need to be fully +installed or selected through a command-line option before any notice +is taken of them. + +The format of mapfiles varies from driver to driver, but a common +format is that of \dvips, where each line is a separate entry (except +lines that contain comments). The first word of an entry is the +\TeX~font name, the second word is the basic printer font name, and +remaining words provide additional information (e.g., the name of the +file in which the font is stored). + +The default in most \TeX\ systems is that fonts are assumed to be \mf +fonts unless there is a specific \map file entry which says otherwise. +Hence if you're trying to use a new Type~1 font, but the \dvi driver +gives you an error message that `\textit{somefile}\texttt{.mf} not +found', then the problem is most likely with the mapfiles. + + + + + + +\subsection{Fonts and characters} + +The term `character' (or just `char') is frequently used in +discussions of fonts, but not always correctly, and when getting into +the details of what \fontinst does it is necessary to keep the +terminology straight. + +\begin{description} +\item[Glyph] + A glyph is an image, often associated with one or several characters. + Some examples of glyphs are: + `A', `\textsf{A}', `$\mathcal{A}$', `B', `F', + `{\usefont{OT1}{cmr}{m}{n}f}', + `{\usefont{OT1}{cmr}{m}{n}fi}', `\~{}'. + Fonts are collections of glyphs. \Fontinst refers to glyphs by name. +\item[Slot] + This is jargon for `a numbered position in a font'. (What is + important is the number, and that this number refers to a position + in a font, but which font is usually specified separately.) + For typesetting, \TeX\ identifies glyphs as ``slot $n$ in font $f$''. +\item[Character] + The modern definition is that a character is the smallest component + of written language that has semantic value. Speaking of a + character, one refers to the abstract meaning, rather + than a specific shape. + + Since fonts have often contained a unique glyph for each character + and each usable glyph has been assigned a particular slot, + it is not uncommon (in particular in older terminology) to see the + three mixed up, usually so that one says `character' where one of + the other two would have been more correct. The \TeX-related font + file formats is no exception, as you may see examples of elsewhere + in this document. +\item[Encoding] + There are really two different encoding concepts that one encounters + when using \fontinst. The differences are not great, and an + encoding of one kind often corresponds to an encoding of the other + kind, but it is not merely a matter of translation. + + A \emph{\LaTeX\ encoding} is a mapping from characters (or more + formally \LaTeX\ Internal Character Representations) to slots. + In the \texttt{OT1} encoding, `\o' (or more technically `|\o|') maps + to slot~28, whereas in the \texttt{T1} encoding it maps to slot~248. + This kind of encoding affects what \TeX\ is doing; \dvi drivers are + not involved. + + A \emph{font encoding} (or \emph{encoding vector}) is a mapping from + slots to glyph names. This is the kind of encoding that \fontinst + primarily deals with, and also the kind of encoding that \dvi + drivers make use of. \texttt{ot1.etx} associates slot~28 with + `\texttt{oslash}', whereas \texttt{t1.etx} and \texttt{EC.enc} (one + of several to \texttt{T1} corresponding encoding vectors that come + with \dvips) associates slot~28 with `\texttt{fi}'. + + \LaTeX\ encodings occur in \fontinst only as names and only in + relation to \fd files. It is unlikely that you will need to create + one of your own. The mappings defined by font encodings are on the + other hand of great importance and \etx files are used to direct + the generation of virtual fonts. Advanced \fontinst users may well + find that they need to create new font encodings to achieve their + goals. +\end{description} + +\fontinst creates \vpl and \pl files from \afm or \pl files to map +any glyph or combination of glyphs in the original font files to +any slot in the output font file. There, isn't that better? Off +you go now\ldots + +% You're probably familiar with ASCII +% encoding, which has the letter `A' in slot~65, `B' in slot~66, +% and so on. That's it, really. \TeX\ uses several different +% encodings. The most common ones are OT1 (the original \TeX\ +% 7~bit encoding) and T1 (the newer \TeX\ 8~bit encoding). +% % -- much more on this later. + +The thing is that the average \PS font comes in Adobe standard +encoding, which, for example, has the glyph dotless~i `\i' in +slot~245. But \TeX\ \texttt{T1} encoding expects the glyph o~dieresis +`{\"o}' in that slot, and wants dotless~i in slot~25. So if you +tried to use a raw \PS font with \TeX, any time you tried to get +an `\"o', you'd get a `\i'; and every time you tried to get a `\i', +you'd get a blank, because Adobe standard encoding says that +slot~25 is empty. The process of dealing with this problem is +called `re-encoding', and is one thing \fontinst helps with. + +% This might not make much sense yet; the best thing to do is relax. +% There's a lot of things that need to be dealt with when you're +% setting up \LaTeX\ to use a new font, so you can expect to be a +% bit confused until you've done it a few times. + + +\subsection{What are verbatim, typewriter, and monowidth fonts?} + +The verbatim, typewriter, and monowidth concepts are common sources +of confusion for those who use \fontinst to install fonts +with \LaTeX; in particular +there are many misconceptions about the relation between them. The +official view (of which not much has actually been brought forward) +is that these concepts are really about three quite different things. + +A font is a \emph{monowidth} (monospaced, fixed-pitch) font if all +glyphs in it have exactly the same width. Some font formats make +special provisions for such fonts; the most notable example is the +\afm format, where a single \texttt{CharWidth} keyword specifies the +width for all glyphs in the font. \Fontinst responds to this +by including the command +\begin{quote} + |\setint{monowidth}{1}| +\end{quote} +in the \mtx file generated from an \afm, but that is everything that is +hard-wired into the program. That a font is monowidth is however +something that one should take note of when installing it for \TeX, +as it means many of the glyphs in it have such a strange appearance +that they are (pretty much) useless. The \texttt{endash} is for +example usually only half as long as the \texttt{hyphen} and the +letters in ligature glyphs are only half as wide as normal letters. +Many of the \etx and \mtx files that come with \fontinst +contain special commands to avoid making use of such degenerate +glyphs. + +That a font is a \emph{typewriter} font really only means that it has +a typewriterish look about it. The two most familiar typewriter fonts +are probably Computer Modern Typewriter (\texttt{cmtt}) and Courier. +Both of these fonts are monowidth, but there is no absolute rule about +this. One of the standard \TeX\ fonts is for example Computer Modern +Variable-width Typewriter (\texttt{cmvtt}), which is not a monowidth +font, as Figure~\ref{Fig:TTvsVTT} shows. +\begin{figure} + \begin{tabular}{ll} + \texttt{cmtt}:& \fontfamily{cmtt}\selectfont + The quick brown fox jumps over the lazy dog.\\ + \texttt{cmvtt}:& \fontfamily{cmvtt}\selectfont + The quick brown fox jumps over the lazy dog. + \end{tabular} + \caption{Two typewriter fonts} + \label{Fig:TTvsVTT} +\end{figure} + +The verbatim concept has very little to do with fonts at all; in +\LaTeX\ it is considered to be a property of the environment +(\texttt{verbatim}, \texttt{macrocode}, etc.) rather than a property +of the font. The connection there is with fonts is that the encoding +of the font must contain visible ASCII (as defined in Appendix~C +of \emph{The \TeX book}%~\cite{TeXbook} +) as a subset for the text to +be rendered correctly. The \texttt{cmtt} family is the only one amongst +the original Computer Modern fonts which meets this criterion and +that is the primary grounds for the idea that these three concepts +should be connected. Today that reason is at best a very weak one, as +all \texttt{T1}-encoded fonts also meet the criterion of containing +visible ASCII as a subset. + +A circumstance which has probably added to the confusion is that +\texttt{OT1} is usually claimed to be one encoding. In reality the +Computer Modern fonts that are declared in \LaTeX\ as being +\texttt{OT1} display as many as five different encodings, as shown in +Table~\ref{Tab:OT1-fonts}. +\begin{table}[!tb] + \DeleteShortVerb{\|} + \begin{tabular}{l|c|c|c|} + & \texttt{TEX TEXT}& + \begin{tabular}[b]{c} + \texttt{TEX TEXT}\\ + \texttt{WITHOUT}\\ + \texttt{F-LIGATURES} + \end{tabular}& + \begin{tabular}[b]{c}\texttt{TEX}\\ + \texttt{TYPEWRITER}\\ + \texttt{TEXT} + \end{tabular}\\ + \hline + non-italic& + \begin{tabular}{l} + \texttt{cmb10}\\ + \texttt{cmbx5}--\texttt{12}\\ + \texttt{cmbxsl10}\\ + \texttt{cmdunh10}\\ + \texttt{cmff10}\\ + \texttt{cmfib8}\\ + \texttt{cmr6}--\texttt{17}\\ + \end{tabular} + \begin{tabular}{l} + \texttt{cmsl8}--\texttt{12}\\ + \texttt{cmss8}--\texttt{17}\\ + \texttt{cmssbx10}\\ + \texttt{cmssdc10}\\ + \texttt{cmssi8}--\texttt{17}\\ + \texttt{cmssq8}\\ + \texttt{cmssqi8}\\ + \texttt{cmvtt10} + \end{tabular}& + \begin{tabular}{l} + \texttt{cmcsc8}--\texttt{10}\\ + \texttt{cmr5} + \end{tabular}& + \begin{tabular}{l} + \texttt{cmsltt10}\\ + \texttt{cmtcsc10}\\ + \texttt{cmtt8}--\texttt{12} + \end{tabular}\\ + \hline + italic& + \begin{tabular}{l} + \texttt{cmbxti10}\\ + \texttt{cmfi10}\\ + \texttt{cmti7}--\texttt{12}\\ + \texttt{cmu10} + \end{tabular}&& + \begin{tabular}{l} + \texttt{cmitt10} + \end{tabular}\\ + \hline + \end{tabular} + \MakeShortVerb{\|} + \caption{``\texttt{OT1}-encoded'' Computer Modern fonts, collected + according to the actual font encoding} + \label{Tab:OT1-fonts} +\end{table} +Since most monowidth fonts are only used for setting verbatim text, +there is some code in \texttt{ot1.etx} which automatically chooses a +\texttt{TEX TYPEWRITER TEXT} encoding for the font when the +\texttt{monowidth} integer is set. The only reason for this is the +guess that this is what the user wanted. + + + +\section{Fontmaking commands} + +There are three main types of files that you may write to control what +\fontinst does: \emph{command files} (usually with suffix +\setdotfilename{tex}), \emph{encoding definition files} (suffix +\setdotfilename{etx}), and \emph{metric files} (suffix +\setdotfilename{mtx}). Command files directly tell \fontinst to do +things, whereas the purpose of an encoding or metric file is more to +store data, but all three file types are technically sequences of +\TeX\ commands that \fontinst execute when reading the file. Normal +\TeX\ syntax rules apply in all three file types, although a few +commands may behave in unfamiliar ways. + +Within the command file category, it is possible to discern certain +subcategories. Most command files are written for one particular +task, but some are common pieces that have been factored out from +larger command files and are merely meant to be |\input| where +appropriate. (\setfilename{csc2x.tex} in the \fontinst distribution is +an example of this latter kind.) One may also distinguish between +command files that are made for use with \setfilename{fontinst.sty} +command definitions and command files that are made for use with +\setfilename{finstmsc.sty} command definitions. This section documents +the commands that are particular to the former category, whereas the +next section documents commands that are particular to the latter. + + +\subsection{Install commands} + +The core fontmaking takes place within a block of ``install +commands''. (This name is a bit unfortunate since nothing is actually +installed; rather some files that need to be installed are generated.) +Such blocks have the structure +\begin{quote} + |\installfonts|\\ + \m{install commands}\\ + |\endinstallfonts| +\end{quote} +The \m{install commands} describe the fonts, glyphs and encodings used +to build fonts, whereas the purpose of the delimiting |\installfonts| +and |\end|\-|install|\-|fonts| are rather to organise the writing +of \fd files. + +\begin{decl*} + |\installfonts|\\ + |\endinstallfonts| +\end{decl*} +At |\installfonts|, \fontinst's internal list of \fd files to generate +are cleared. At |\endinstallfonts|, \fd files are written for those +combinations of encoding and font family that appeared in the +\meta{install commands}. + +\begin{hackernote} + |\installfonts|, |\endinstallfonts|, and the individual + install commands between them also cooperate in a rather complicated + grouping scheme to cache glyphbases. This may interfere with + non-\fontinst commands in the \meta{install commands}. If for + example an assignment to some |\tracing|\dots\ parameter here does + not seem to have any effect, try making the assignment |\global|. +\end{hackernote} + +The most important \meta{install command} is +\begin{decl*} + |\installfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ + \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% + \arg{shape}\arg{size} +\end{decl*} +This produces a \TeX\ virtual font called \m{font-name}. The +\meta{metrics-list} and the \meta{etx-list} determine this font, +whereas the other arguments specify how the \fd file will declare it +for \LaTeX. The \m{encoding}, \m{family}, \m{series}, and \m{shape} +are precisely the NFSS parameters. The \m{size} is either a shorthand +declared by \verb|\declaresize| (see below), or is an \fd size +specification. + +Like most \fontinst lists, the elements in the \meta{metrics-list} and +\meta{etx-list} are separated by commas (so-called comma-separated +lists). In their simplest form, the elements of these lists are file +names (minus suffixes): \mtx files in the \meta{metrics-list} and +\etx files in the \meta{etx-list}. First the \mtx files are processed +to build up a glyphbase, i.e., store definitions of glyphs and their +metric properties in memory, and then the \etx files are processed +(several times) to select a set of glyphs and write the corresponding +information to a \vpl file. + +For example, to install the \texttt{T1}-encoded Times Roman font +(using \texttt{t1.etx} and \texttt{latin.mtx}), you say: +\begin{verbatim} + \installfont{ptmr8t}{ptmr8r,latin}{t1} + {T1}{ptm}{m}{n}{} +\end{verbatim} +To install a \texttt{OT1}-encoded Times Roman font, with a scaled +version of Symbol for the Greek letters, you say: +\begin{verbatim} + \installfont{zptmrsy}{ptmr8r,psyr scaled 1100,latin}{ot1} + {OT1}{ptm}{m}{n}{} +\end{verbatim} + +As the second example indicates, there is more to the list items than +just file names. In the case of an metrics list item, the syntax +permits the two forms +\begin{decl*} + \meta{filename}\meta{optional modifiers}\\ + |\metrics| \meta{metric commands} +\end{decl*} +\NEWfeature{v1.923} +where an \meta{optional modifier} is one of +\begin{decl*} + \verb*| scaled |\meta{rawscale factor}\\ + \verb*| suffix |\meta{glyph name suffix}\\ + \verb*| encoding |\meta{etx}\\ + \verb*| option |\meta{string} +\end{decl*} +A list item may contain several such modifiers, but most commonly it +does not contain any. The +\meta{metric commands} are explicit metric commands, as described in +Section~\ref{Sec:Metric}; this latter feature is meant for minor +adjustments that you don't want to bother creating a separate \mtx +file for. + +The \meta{filename} above primarily refers to a file +\meta{filename}\texttt{.mtx}, but that need not always exist before +executing the above command. If there exists a \pl, \afm, or \vpl file +with the right name then that is first converted to a corresponding +\mtx file. However, a special case occurs if there is an |encoding| +modifier: this forces conversion of a \pl or \vpl file even if an +\mtx file exists, and also forces using the specified \etx file when +assigning glyph names to the slots of that file. Normally the choice +of \etx file for such conversions to \mtx is based on +|\declareencoding| declarations. + +The |scaled| modifier sets the \texttt{rawscale} variable for the +processing of that file. This has the effect of scaling all raw +glyphs from that file to \meta{rawscale factor} per milles of their +previous size. The |suffix| modified causes the \meta{glyph name +suffix} to be implicitly appended to all glyphs defined by this file. +The |option| modifier adds the \meta{string} to the list of ``options'' +for this file. The |\ifoption| command can be used in the file to test +whether a particular string has been supplied as an option. + +\begin{hackernote} + In general, \fontinst commands process comma-separated list arguments + by first splitting at commas and then fully expanding each item, but + this \meta{metrics-list} argument is an exception. This is first + fully expanded (|\edef|) and then split into items. The difference + is that a macro used in this \meta{metrics-list} argument can expand + to several list items, whereas a macro used in an ordinary + comma-separated list argument can only expand to (part of) a single + list item. + + The |\metrics| list items do however constitute an exception within + this exception. These list items are in their entirety protected + from the initial full expansion, so you don't have to worry about + peculiar fragility errors there. +\end{hackernote} + +The elements in the \meta{etx-list} have fewer variants, but there is +still a general syntax +\begin{decl*} + \meta{filename}\meta{optional modifiers} +\end{decl*} +The \meta{optional modifier}s permitted are: +\begin{decl*} + \verb*| mtxasetx|\\ + \verb*| option |\meta{string} +\end{decl*} +The \texttt{option} one is as for metric files. \texttt{mtxasetx} is +probably only relevant for use with |\installrawfont| (see below). + + +\begin{decl}[v1.912] + |\installfontas|\arg{font-name}\\% + \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% + \arg{shape}\arg{size} +\end{decl} +This install command adds an \fd entry for the \meta{font-name}, but +it doesn't actually generate that font. Usually that font was +generated by a previous |\installfont|, and this is used to create +additional entries for the font. + + +\begin{decl} + |\installrawfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ + \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% + \arg{shape}\arg{size} +\end{decl} +This is similar to |\installfont| except that it produces +a \TeX\ raw font as \pl file rather than a virtual font. Often a \pl +file with the specified name will already exist when this command is +called, and that will then be overwritten. These two \pl files will +typically be somewhat different. +The normal reason for using this command is that one wishes to +``refine'' the metrics of a font that was generated by transformation +commands. + +For example, to install an \texttt{8r}-encoded Times Roman raw font +(using \texttt{8r.etx} and \texttt{8r.mtx}), you say: +\begin{verbatim} + \installrawfont{ptmr8r}{ptmr8r,8r}{8r} + {8r}{ptm}{m}{n}{} +\end{verbatim} +(The files referred to are, in order, \texttt{ptmr8r.pl}, +\texttt{ptmr8r.mtx}, \texttt{8r.mtx}, and \texttt{8r.etx}.) + +The effect of a +\begin{decl*}[v1.923] + \meta{filename}\verb*| mtxasetx| +\end{decl*} +in the \meta{etx-list} is not that \meta{filename}\texttt{.etx} is +read, but that \meta{filename}\texttt{.mtx} is read. The +interpretation of the commands in this file is however not the +customary, and almost the only thing paid attention to is the +correspondence between glyph names and slot numbers that is provided +by the |\setrawglyph| and |\setscaledrawglyph| commands; this +correspondence is treated as if it was given by |\setslot| \dots\ +|\endsetslot| commands in an \etx file. This is however only +guaranteed to work with transformable metric files. + +The purpose of this feature is to simplify installation of fonts with +very special encodings, such as ``Dingbat'' or ``Pi'' fonts. Instead +of creating an \etx file, which would probably only be useful with +that particular font, one can make use of the fact that the +interesting information is anyway available in the \mtx file. To +install Zapf Dingbats in their default encoding, one can thus say +\begin{verbatim} + \installrawfont{pzdr}{pzdr}{pzdr mtxasetx} + {U}{pzd}{m}{n}{} +\end{verbatim} + +Unlike the case with |\installfont|, which actually creates a real +(although virtual) font, |\installrawfont| can only create the +metrics for a font. The \dvi driver will require some other kind of +implementation of this font, usually an entry in some map file (e.g. +\texttt{psfonts.map}, in the case of \dvips) that links the \TeX\ font +name to e.g.\ a \PS\ font name and file. (Many \dvi drivers are +configured in such a way that they, without such a map file entry, +will call Metafont with the font name and thereby raise a sequence of +error messages about a \setdotfilename{mf} that doesn't exist. These +results are often rather confusing.) + + + +\begin{decl} + |\installfamily|\arg{encoding}\arg{family}\arg{fd-commands} +\end{decl} +This tells \fontinst to write an \fd file for the given combination +of encoding and family, and clears the internal list of entries to +put in that file. |\installfamily| commands usually come first in each +block of \meta{install commands}. + +For example, if you intend to produce a \texttt{T1}-encoded Times +family of fonts, you say: +\begin{verbatim} + \installfamily{T1}{ptm}{} +\end{verbatim} +The \m{fd-commands} are executed every time a font in that family is +loaded, for example to stop the Courier font from being hyphenated you +say: +\begin{verbatim} + \installfamily{T1}{pcr}{\hyphenchar\font=-1} +\end{verbatim} +In more recent versions of \fontinst, the |\installfamily| command is +only necessary if you want the \m{fd-commands} argument to be +nonempty, but it doesn't hurt to make it explicit. + +\begin{hackernote} + The \m{fd-commands} argument is tokenized with the current catcodes + and written to file without expansion. In particular this means + that spaces will be inserted after all control sequences whose + names consists of letters, which can be unexpected if you intend to + make use of control sequences whose names contain |@| characters. + + One way around this is to use |\fontinstcc| and |\normalcc| to + temporarily switch catcodes around the |\installfamily| command. +\end{hackernote} + + + +\subsection{Transformation commands} + + +\begin{decl} + |\transformfont|\arg{font-name}\arg{transformed font} +\end{decl} +This makes a raw transformed font, for example expanded, slanted, +condensed or re-encoded. \emph{It is the responsibility of the device + driver to implement this transform.} Each \verb|\transformfont| +command writes out an \mtx file and a raw \pl file for \m{font-name}. + +The following commands are valid \m{transformed font}s: +\begin{decl*} + |\fromafm|\arg{afm}\\ + |\fromany|\arg{whatever}\\ + |\frompl|\arg{pl}\\ + |\fromplgivenetx|\marg{pl}\marg{etx}\\ + |\frommtx|\arg{mtx} +\end{decl*} +These read the metrics of the font which is about to be transformed from +an external file. |\fromafm|, |\frompl|, and |\fromplgivenetx| write out +an \mtx file corresponding to the \afm or \pl file. In addition, +|\fromafm| also writes out a raw \pl file, containing just the glyph +metrics but no kerning information. |\fromplgivenetx| permits +specifying which encoding file to use when associating glyph names to +slots, whereas |\frompl| tries to guess this from the +\texttt{CODINGSCHEME} property of the \pl file. |\fromany| looks for +a file in any of the formats (in the order \mtx, \pl, \afm) and +behaves as the first |\from|\dots\ for which it found a file. + +A \m{transformed font} may also be one of the following: +\begin{decl*} + |\scalefont|\arg{integer expression}\arg{transformed font}\\ + |\xscalefont|\arg{integer expression}\arg{transformed font}\\ + |\yscalefont|\arg{integer expression}\arg{transformed font}\\ + |\slantfont|\arg{integer expression}\arg{transformed font} +\end{decl*} +This applies a geometric transformation to the font metrics of +\m{transformed font}. The scale factor or slant factor are given in +units 1000 to the design size. Typical examples are 167 for slanted +fonts (a slant of $\frac{1}{6}$) or 850 for condensed fonts (shrunk +to 85\% of their natural width). + +The final case of a \m{transformed font} is: +\begin{decl*} + |\reencodefont|\arg{etx}\arg{transformed font} +\end{decl*} +This rearranges the encoding vector of \m{transformed font} to match +the encoding given by the \etx file. + + +For example, to create an oblique, |8r|-encoded version of Adobe Times +called \texttt{ptmro8r} you say: +\begin{verbatim} + \transformfont{ptmro8r}{ + \reencodefont{8r}{ + \slantfont{167}{\fromafm{ptmr8a}} + } + } +\end{verbatim} +This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, +\texttt{ptmro8r.mtx} and \texttt{ptmro8r.pl}, which can then be used +as raw fonts in \verb|\installfont| commands. The equivalent +transformation can also be achieved in two steps: +\begin{verbatim} + \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} + \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} +\end{verbatim} +This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, +\texttt{ptmr8r.mtx}, \texttt{ptmr8r.pl}, \texttt{ptmro8r.mtx} and +\texttt{ptmro8r.pl}. + +You will have to inform your device driver about the transformed font, +using the syntax appropriate for that driver. For example, in \dvips +you add a line to \texttt{psfonts.map}: +\begin{verbatim} + ptmro8r Times-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc +\end{verbatim} +See Section~\ref{Sec:Mapmaking} and +Subsection~\ref{Ssec:MapFragments} for details on how to generate +such lines automatically. + + +\subsection{The \cs{latinfamily} command} + + +\begin{decl} + |\latinfamily|\marg{family}\marg{commands} +\end{decl} +This command is by itself an entire |\installfonts| \dots\ +|\endinstallfonts| block, automatically doing |\transformfont|s, +|\installfont|s, and |\install|\-|raw|\-|font|s depending on which +base font metrics it finds. It generates virtual fonts in the +\texttt{T1}, \texttt{OT1}, and \texttt{TS1} encodings. + +There is really much to much about this command for it to be described +in full here. Please see other available documentation. + +\begin{decl} + |\fakenarrow|\marg{width factor} +\end{decl} +This command makes |\latinfamily| fake `narrow' fonts in the family it +is working on, by $x$-scaling the normal fonts. The \meta{width factor} +is the scale factor to use. + + +\subsection{Reglyphing commands} + +``Reglyphing'' is an \mtx file transformation that changes glyph +names but leaves the slot numbers and metrics as they were; +optionally it may drop some of the metric commands. See +Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this. + +Like installation commands, reglyphing commands are preferably placed +in a block between two delimiter commands: +\begin{decl*} + |\reglyphfonts|\\ + \meta{reglyphing commands}\\ + |\endreglyphfonts| +\end{decl*} +The purpose of these delimiter commands is to delimit the scope in +which the various declarations made take effect. After +|\endreglyphfont|, you're back to the ``clean'' state that existed +before the |\reglyphfont|. + +\begin{decl} + |\reglyphfont|\marg{destination font}\marg{source font} +\end{decl} +This is the only command that actually does something; all the other +commands simply set parameters for the processing carried out here. +What the command does is that it reads the \meta{source font} (which +may be in \mtx, \pl, \afm, or \vpl format, but will be converted to +\mtx before it is read for reglyphing) and writes each command back to +the \meta{destination font} (in \mtx format \emph{only}), but often +with some subtle modifications. + +It should be observed that the ``destination font'' generated by this +command is not a real font, but just an \mtx file. If that \mtx file +contains raw glyph defintions (|\setscaledrawglyph| commands) then +these will refer to the \meta{source font}, so that is all a \dvi +driver needs to be informed about. + +\begin{decl} + |\renameglyph|\marg{to}\marg{from}\\ + |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ + |\killglyph|\marg{glyph}\\ + |\killglyphweighted|\marg{glyph}\marg{weight} +\end{decl} +The |\renameglyph| and |\renameglyphweighted| commands cause each +reference to the glyph \meta{from} in the source font to be replaced +by a reference to the glyph \meta{to} in the destination font. Thus if +the source font contains a command that sets a glyph with the name +\meta{from}, then this will in the destination font be changed to a +command that sets a glyph with the name \meta{to}, but with the same +metrics, slot, and base font name as in the source font. Kerns are +similarly adjusted to be for the \meta{to} glyph. + +There is also a ``weight'' associated with each command being copied +from source font to destination font, and if that weight is too small +then the command will be omitted from the destination font. The weight +of a command is the sum of the weights of all glyphs mentioned in that +command. A glyph for which no settings have been made has weight $0$. +A glyph name which is the \meta{from} of a |\renameglyphweighted| or +the \meta{glyph} of a |\killglyphweighted| has the \meta{weight} +specified there. A \meta{from} glyph of a |\renameglyph| gets the +weight stored in the \texttt{renameweight} integer variable +(by default $1$) and the \meta{glyph} of a |\killglyph| gets the +weight stored in the \texttt{killweight} integer variable (by default +$-10$). It is this large negative weight that makes |\killglyph| +``kill'' glyphs. + +The weight condition for keeping a command is given by the +|\iftokeep| command, which is regarded as a \fontinst command +variable (see Section~\ref{Sec:Variables}). The default definition is +to keep things with non-negative weight (typically everything that +doesn't involve a glyph that has been killed), but for example +\setfilename{csckrn2x.tex} redefines it to only keep things with +positive weight (typically everything involving at least one glyph +that has been renamed and not any that has been killed). + + +\begin{decl} + |\offmtxcommand|\marg{command}\\ + |\onmtxcommand|\marg{command} +\end{decl} +Turning a command `off' using |\offmtxcommand| means no such commands +are to be copied to a destination font by |\reglyphfont|. Turning it +back `on' using |\onmtxcommand| restores it to normal, i.e., whether +it is copied depends on the weight of the command. + +\begin{hackernote} + |\offmtxcommand| and |\onmtxcommand| are wrappers around the + general-purpose |\offcommand| and |\oncommand| commands (see + Subsection~\ref{Ssec:Variables}). The wrapping makes the general + commands to act on a family of internal macros, namely those which + are used by |\reglyphfont| as definitions of the transformable + metric commands. +\end{hackernote} + + +\subsection{Miscellaneous settings} + +\begin{decl} + |\substitutesilent|\arg{to}\arg{from}\\ + |\substitutenoisy|\arg{to}\arg{from} +\end{decl} +This declares a \LaTeX\ font substitution, that the series or shape +\m{to} should be substituted if necessary by the series or shape +\m{from}. Font substitutions happen at |\endinstallfonts| time, and +cause font declarations using |sub| or |ssub| to be added to the \fd +files being written. + +\verb|\substitutenoisy| means that a warning will be given when +the substitution is made by \LaTeX. +\verb|\substitutesilent| means that \LaTeX\ should not warn when +the font substitution is made. + +For example, to say that the series |bx| can be replaced by the +series |b| (a request for series |bx| selects a font with actual series +|b|), you say: +\begin{verbatim} + \substitutesilent{bx}{b} +\end{verbatim} +To say that the shape |ui| can be replaced by the shape |it| (a +request for shape |ui| selects a font with actual shape |it|), you say: +\begin{verbatim} + \substitutenoisy{ui}{it} +\end{verbatim} + +The following weight substitutions are standard: +\begin{verbatim} + \substitutesilent{bx}{b} + \substitutesilent{b}{bx} + \substitutesilent{b}{sb} + \substitutesilent{b}{db} + \substitutesilent{m}{mb} + \substitutesilent{m}{l} +\end{verbatim} +The following shape substitutions are standard: +\begin{verbatim} + \substitutenoisy{ui}{it} + \substitutesilent{it}{sl} + \substitutesilent{sl}{it} +\end{verbatim} +In order to disable a default substitution, use the \meta{from} for +both arguments. + +The |\installfontas| command should be considered as an +alternative to using font substitution, as it gives much finer +control over what \fd entries will be made. + + +\begin{decl} + |\declaresize|\arg{size}\arg{fd-size-range} +\end{decl} +This declares a new size shorthand, and gives the \fd size +specifications for it. For example, \url{fontinst.sty} declares +the following sizes: +\begin{verbatim} + \declaresize{}{<<->>} + \declaresize{5}{<<5>>} + \declaresize{6}{<<6>>} + \declaresize{7}{<<7>>} + \declaresize{8}{<<8>>} + \declaresize{9}{<<9>>} + \declaresize{10}{<<10>>} + \declaresize{11}{<<10.95>>} + \declaresize{12}{<<12>>} + \declaresize{14}{<<14.4>>} + \declaresize{17}{<<17.28>>} + \declaresize{20}{<<20.74>>} + \declaresize{25}{<<24.88>>} +\end{verbatim} +The first of these is what gives an empty \meta{size} argument for +the font installation commands the meaning ``all sizes''. + +\begin{decl} + |\declareencoding|\arg{string}\arg{etx} +\end{decl} +This declares which \etx file corresponds to which +\texttt{CODINGSCHEME} string, and is used when reading metrics in \pl +format. For example, \url{fontinst.sty} declares the following +encoding strings: +\begin{verbatim} + \declareencoding{TEX TEXT}{ot1} + \declareencoding{TEX TEXT WITHOUT F-LIGATURES}{ot1} + \declareencoding{TEX TYPEWRITER TEXT}{ot1tt} + \declareencoding{TEX MATH ITALIC}{oml} + \declareencoding{TEX MATH SYMBOLS}{oms} + \declareencoding{TEX MATH EXTENSION}{omx} + \declareencoding{EXTENDED TEX FONT ENCODING - LATIN}{t1} + \declareencoding{TEX TEXT COMPANION SYMBOLS 1---TS1}{ts1} + \declareencoding{TEXBASE1ENCODING}{8r} + \declareencoding{TEX TYPEWRITER AND WINDOWS ANSI}{8y} +\end{verbatim} + + +\subsection{Low-level conversion commands} + +The following commands are the low-level commands which carry out +various conversions. There's usually no need to bother about them +unless you are hacking \fontinst, but you may see them in the header +comments of files \fontinst generates, so here's a description of what +they do and when they are used. + +\begin{decl} + |\afmtomtx|\marg{afmfile}\marg{mtxfile}\\ + |\generalpltomtx|\marg{plfile}\marg{mtxfile}% + \marg{plsuffix}\marg{opt-enc} +\end{decl} +These handle importing font metric data to the \fontinst native \mtx +format. + +|\afmtomtx| converts metrics in \afm format. It uses the +\texttt{minimumkern} integer variable and the |\slanteditalcorr| and +|\uprightitalcorr| command variables. + +|\generalpltomtx| converts metrics in \pl or \vpl format. If the +\meta{opt-enc} string expression is nonempty then that is taken as the +name of an \etx file that assigns glyph names to the slots in the font. + +\begin{decl} + |\mtxtomtx|\marg{source MTX}\marg{destination MTX} +\end{decl} +This is the heart of the |\transformfont| command. It makes use of the +\texttt{x-scale}, \texttt{y-scale}, and \texttt{slant-scale} integer +variables, and the \texttt{etx-name} string variable. + +\begin{decl} + |\mtxtopl|\marg{mtxfile}\marg{plfile} +\end{decl} +This converts \mtx metrics to \pl format; more precisely it generates +\texttt{CHARACTER} property lists for |\setrawglyph| and +|\setscaledrawglyph| commands. Kerning information is ignored. + +The command is used immediately after an |\afmtomtx| or |\mtxtomtx|. +The invariant is that if there can be some |\setrawglyph| or +|\setscaledrawglyph| command which refers to a glyph in some font, +then there must also be a \pl file with metrics for that font. + +\begin{decl} + |\etxtovpl|\marg{encoding list}\marg{vplfile}\\ + |\etxtopl|\marg{encoding list}\marg{plfile} +\end{decl} +These are the cores of |\installfont| and |\installrawfont| +respectively. They don't really convert files---it's more like +generating a \vpl or \pl under the control of the \etx. + + + + + + +\subsection{Other} + +The following commands also belong in this section, but don't belong +to any of the major groups. + +\begin{decl} + |\recordtransforms|\marg{filename}\\ + |\endrecordtransforms| +\end{decl} +See Subsection~\ref{Ssec:MapFragments} for an explanation of how these +are used. + +\begin{decl} + |\NOFILES| +\end{decl} +This command switches off file generation, and causes \fontinst to +only generate empty files. It only affects the user level commands, +so it is primarily of use when debugging commands that build on +these, such as for example the |\latin|\-|family| command. + + + + + +\section{Mapmaking commands} +\label{Sec:Mapmaking} + +The commands described in this section are for use with command files +that input \texttt{finstmsc.sty}. + + +\subsection{Mapfile command reference} + +For an introduction to making map file entries, see +Subsection~\ref{Ssec:MapFragments}. + +\begin{decl} + |\adddriver|\marg{driver name}\marg{fragment file name} +\end{decl} +This opens the file \meta{fragment file name} for writing mapfile +entries to. The \meta{driver name} selects the format of these +entries. \emph{Note} that if the \meta{fragment file name} does not +include a suffix, it will get the suffix \setfilename{tex}, which is +probably not what you want. + +\begin{decl} + |\makemapentry|\marg{\TeX\ font name} +\end{decl} +This causes a mapfile entry for the specified font to be written to +all files currently open for receiving mapfile entries. These +commands are usually automatically generated by \fontinst. + +\begin{decl} + |\donedrivers| +\end{decl} +This closes all files open for receiving mapfile entries. + + +\subsection{Drivers} + +The \meta{driver name}s that may be used with |\adddriver| are: + +\begin{decl} + |dvips| +\end{decl} +The \dvips driver. The mapfiles generated are useful also with +pdf\TeX, but one does not always use the exact same file for both; +sometimes they require different settings. + +\begin{decl} + |dvipdfm| +\end{decl} +The \setpackagename{dvipdfm} \dvi-to-\pdf driver. Not much tested, +but appears to work. + +\begin{decl}[v1.915] + |pltotf| +\end{decl} +Not really a \dvi driver. The file that is generated is a shell +script of \texttt{pltotf} commands for converting precisely those \pl +files which are needed to \tfm files (\fontinst generally generates +also a bunch of \pl files that in the end turn out to be +unnecessary). The \texttt{TFMfileprefix} variable can be used to +specify a path to the directory where these files should be placed. + +\begin{decl} + |debug| +\end{decl} +Not a \dvi driver either, but for each base font a report on the +information that was available. Useful if you need to write the +driver file yourself. + +\begin{hackernote} + Creating a new driver \meta{foo} is mostly a matter of suitably + defining the |\make_|\meta{foo} command. +\end{hackernote} + + +\subsection{Configuration commands} +\label{Ssec:MapConfig} + +The following commands configure the generation of mapfile entries, +mostly with respect to how various pieces of information are deduced +from other pieces. + +\begin{decl} + |\AssumeAMSBSYY|\\ + |\AssumeBaKoMa|\\ + |\AssumeMetafont| +\end{decl} +These commands change what the map file writer does when it needs to +know the \PS name for a font but only knows the \TeX\ name. This +usually happen when the metrics came from a \pl file. + +|\AssumeAMSBSYY| tells it to uppercase the \TeX\ name and use that as +\PS name; this is correct for the AMS\slash Blue~Sky\slash Y\&Y +conversions of the Computer Modern fonts. + +|\AssumeBaKoMa| tells it to lowercase the \TeX\ name and use that as +\PS name; this is correct for the BaKoMa conversions of the Computer +Modern fonts. + +|\AssumeMetafont| tells it to ignore base fonts for which no \PS name +is known, on the assumption that they are \mf fonts. + + +\begin{decl} + |\AssumeLWFN| +\end{decl} +This commands changes what the map file writer does when it needs to +know the name of the file in which a \PS font is stored. The file name +is constructed from the \PS font name using the $5+3+3+\cdots$ +convention used in (Classic) Mac~OS. + +By default \fontinst uses as \PS font file name the \TeX\ name of the +font (i.e., the name of the source \afm or whatever file) and appends +to that the contents of the \texttt{PSfontsuffix} string. + +For fonts which fit neither of these schemes, one can give individual +specifications using the command +\begin{decl*} + |\specifypsfont|\marg{PS font name}\marg{actions} +\end{decl*} +Note that the font is here identified using its \PS font name, not the +\TeX\ font name. + +An \meta{action} is one of\footnote{Additional actions can be added +in the future, if there is a need for them. It is not a problem if not +all driver can support an action, since all actions typically default +to \cs{download}.} +\begin{decl*}[v1.928] + |\download|\marg{file}\\ + |\fulldownload|\marg{file} +\end{decl*} +where \meta{file} is a file to download (`download' typically means +``include in the generated \PS output or equivalent''). The difference +between |\download| and |\fulldownload| have to do with how partial +downloading (subsetting) of fonts should be handled. |\download| means +use the driver's defaults (often settable via command line options) +for this. |\fulldownload| means don't subset: always include the full +font, if \fontinst knows how to express this in a map file entry for +this particular driver. + +If FooBar-Regular is a non-subsettable font, then you may specify this +to \fontinst through a command like +\begin{verbatim} + \specifypsfont{FooBar-Regular}{\fulldownload{foobar.pfb}} +\end{verbatim} +To specify that the PDF ``base 14'' fonts do not require downloading, +one would say +\begin{verbatim} + \specifypsfont{Courier}{} + \specifypsfont{Courier-Bold}{} + \specifypsfont{Courier-BoldOblique}{} + \specifypsfont{Courier-Oblique}{} + \specifypsfont{Helvetica}{} + \specifypsfont{Helvetica-Bold}{} + \specifypsfont{Helvetica-BoldOblique}{} + \specifypsfont{Helvetica-Oblique}{} + \specifypsfont{Times-Roman}{} + \specifypsfont{Times-Bold}{} + \specifypsfont{Times-Italic}{} + \specifypsfont{Times-BoldItalic}{} + \specifypsfont{Symbol}{} + \specifypsfont{ZapfDingbats}{} +\end{verbatim} +When more than one action appears in the \meta{actions} argument, +then it is usually the last that actually creates the font, whereas +the others contain resources needed by the last. + + +\begin{decl} + |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action} +\end{decl} +This command specifies how reencoding using a particular \etx file +should be performed by the driver. The \meta{postscript name} is the +\PS name of the encoding vector used, whereas the \meta{action} is the +action (as above) that the driver needs to perform to make the +encoding known to whatever it is that it is serving (often a \PS +interpreter). + +Usually the right thing to do is to |\download| an \enc file, but +there is also an action +\begin{decl*}[v1.931] + |\encodingdownload|\marg{file} +\end{decl*} +which tries to express the fact that the \meta{file} contains an +encoding vector. In the case of \dvips this is only necessary if +(i)~the font is being subsetted and (ii)~the \meta{file} name is +nonstandard (does not end with \enc). + +\begin{decl}[v1.931] + |\providepsencoding|\marg{etx}\marg{postscript name}\marg{action} +\end{decl} +This command is the same as |\declarepsencoding|, except that it +doesn't do anything if an encoding has already been declared for this +\meta{etx}. It is used for autogenerated encoding declarations, so +that these will not override one issued by the user. + + + +\begin{decl} + |\storemapdata|\marg{\TeX\ font name}\marg{source}\marg{transforms} +\end{decl} +This records information about how the font named \meta{\TeX\ font +name} was generated. Such commands are usually found in the file of +recorded transforms. If a font is encountered for which no +information has been stored, then the corresponding \mtx file will be +sourced, looking for a |\storemapdata| command there. + +A \meta{source} is one of +\begin{decl*} + |\fromafm|\marg{\afm name}\marg{PS name}\\ + |\frompl|\marg{\pl name}\\ + |\frommtx|\marg{\mtx name}\\ + |\fromvpl| +\end{decl*} +Note that several of them have a different syntax and meaning than +they do in fontmaking command files. + +A \meta{transform} is one of +\begin{decl*} + |\reencodefont|\marg{etx}\\ + |\reglyphfont|\\ + |\transformfont|\marg{x-scale}\marg{slant-scale} +\end{decl*} +Note that all of these have a different meaning than they do in +fontmaking command files. + +\begin{decl} + |\debugvalue|\arg{name} +\end{decl} +This adds a value to the list of those that are reported by the +\texttt{debug} driver. Example: +\begin{verbatim} + \debugvalue{PS_font_file} +\end{verbatim} + + + +\subsection{Basic conversion commands} + +Some of the basic ``convert an $X$ file to a $Y$ file'' commands in +\fontinst are not useful as part of a fontmaking run, and are +available only in \texttt{finstmsc.sty} to conserve some memory. + +\begin{decl} + |\enctoetx|\marg{encfile}\marg{etxfile} +\end{decl} +This reads the file \meta{encfile}\texttt{.enc} which should be +simple \PS code defining a \PS encoding vector and generates a +corresponding rudimentary \fontinst encoding file +\meta{etxfile}\texttt{.etx}. It's a basic ``import encoding to +\fontinst'' command. + +\begin{decl}[v1.911] + |\etxtoenc|\marg{etxfiles}\marg{encfile} +\end{decl} +This does the opposite of |\enctoetx|; the information in the \etx +files that is converted is the correspondence between slots and glyph +names. +\NEWfeature{v1.927} +The \meta{etxfiles} argument is a comma-separated list of encoding +files which are superimposed to generate the \PS encoding. The first +|\setslot| for a particular slot is the one which decides which glyph +will be placed there. + +\begin{decl}[v1.928] + |\etxtocmap|\marg{etxfile}\marg{cmapfile} +\end{decl} +This reads an \etx file and generates a corresponding ToUnicode CMap +file; the information that is converted is the map from slot numbers +to |\Unicode| code points. + + + + +\section{General commands} + + + +This section describes commands and mechanisms that are the same in +all file types. Commands that are particular for one type of file are +described in subsequent sections. + + +\subsection{Variables} +\label{Ssec:Variables} + +Many (but not all) of the activities \fontinst perform can be +understood as either ``setting variables'' or ``formatting and writing +to file data stored in some variable''. The accessing of variables is +an important aspect of how \fontinst works. + +Variables come in different types and variables of different types +live in different namespaces; |\int{foo}|, |\str{foo}|, and +|\dim{foo}| refer to three different variables which are all named +|foo|. Variables are either set or not set. Unless the contrary is +stated explicitly, each variable defaults to not being set. It is an +error to access the value of a variable that has not been set. +\Fontinst variable assignments are as a rule local, i.e., will be +undone when the enclosing \TeX\ group is ended. Most command file +commands that cause files to be read will begin a group before +reading the file(s) and end the group at some point after having +read them. + +Taking string variables as an example, there are three commands for +changing a string variable: +\begin{decl*} + |\setstr|\arg{name}\arg{string expression}\\ + |\resetstr|\arg{name}\arg{string expression}\\ + |\unsetstr|\arg{name} +\end{decl*} +The |\resetstr| command unconditionally sets the string variable +\meta{name} to the full expansion of the \meta{string expression}. +The |\unsetstr| command unconditionally renders the string variable +\meta{name} unset. If the the string variable \meta{name} is +currently unset then the |\setstr| command will set it to the full +expansion of the \meta{string expression}, but if it already is set +then |\setstr| does nothing. + +This pattern with three commands, one |\set|\dots\ which only sets +unset variables, one |\reset|\dots\ which sets variables regardless of +whether they have been set or not, and one |\unset|\dots\ which unsets +variables is recurring in \fontinst. Variables are most commonly set +using some |\set|\dots\ command; this has the effect that the first +command to try to set a variable is the one which actually sets it. + +If |\set|\dots\ is the command for setting the value of a variable, +the command for getting that value has the same name without the +|set| part, e.g., |\setint|--|\int|, |\setglyph|--|\glyph|, etc. +(Notable exceptions are |\setkern|, where the ``get'' command is +called |\kerning|, and |\setcommand|, where no separate ``get'' +command is needed.) There +are typically also conditionals for testing whether variables are +set, and these take the form |\ifis|\dots\arg{name}|\then|. + +\medskip +% The following commands for changing the value of a variable can be +% used anywhere: + +\begin{decl} + |\setdim|\arg{dim}\arg{dimension}\\ + |\setint|\arg{int}\arg{integer expression}\\ + |\setstr|\arg{str}\arg{string expression} +\end{decl} +If the dimension variable \m{dim} is currently undefined, it is +defined to be the current value of \m{dimension}. + +If the integer variable \m{int} is currently undefined, it is +defined to be the current value of \m{integer expression}. + +If the string variable \m{str} is currently undefined, it is +defined to be the current value of \m{string expression}. + +\begin{decl} + |\setcommand|\arg{command}\meta{parameter text}\arg{replacement text} +\end{decl} +If the command \m{command} is currently undefined, it is defined to +grab parameters as specified by the \meta{parameter text} and then +expand to the \m{replacement text}. This uses the same syntax for +parameters as the \TeX\ \verb|\def| command. +\begin{center} + \begin{tabular}{r l} + Number of parameters& \meta{parameter text}\\ + 0& (empty)\\ + 1& |#1|\\ + 2& |#1#2|\\ + 3& |#1#2#3|\\ + \multicolumn{2}{c}{and so on.} + \end{tabular} +\end{center} +Some examples: +\begin{verbatim} + \setcommand\lc#1#2{#2} + \setcommand\lc#1#2{#1small} +\end{verbatim} +With the first definition, |\lc{A}{a}| expands to |a|, but with the +second it expands to |Asmall|. + +\begin{decl} + |\resetdim|\arg{dim}\arg{dimension}\\ + |\resetint|\arg{int}\arg{integer expression}\\ + |\resetstr|\arg{str}\arg{string expression} +\end{decl} +The dimension variable \m{dim} is defined to be the current value +of \m{dimension}. + +The integer variable \m{int} is defined to be the current value of +\m{integer expression}. + +The string variable \m{str} is defined to be the current value of +the \m{string expression}. (|\resetstr| mostly boils down to a \TeX\ +|\edef| command.) + +\begin{decl} + |\resetcommand|\arg{command}\meta{parameter text}\arg{replacement text} +\end{decl} +The command \m{command} is defined to grab parameters as specified by +the \meta{parameter text} and then expand to the \m{replacement text}. +This is a synonym for the \TeX\ \verb|\def| command. + +\begin{decl} + |\unsetdim|\arg{dim}\\ + |\unsetint|\arg{int}\\ + |\unsetstr|\arg{str}\\ + |\unsetcommand|\arg{command} +\end{decl} +Makes \m{dim}, \m{int}, \m{str}, or \m{command} an undefined +dimension, integer, string or command. + +\begin{decl}[v1.900] + |\offcommand|\marg{command}\\ + |\oncommand|\marg{command} +\end{decl} +|\offcommand| turns off a command, i.e., it redefines it to do +nothing (while still taking the same number of arguments). +|\oncommand| turns a command back on, i.e., it restores the +definition the command had before a previous |\offcommand|. Using +|\offcommand| on a command that is already off or |\oncommand| on a +command that is not off has no effect. + + +\subsection{Argument types and expansion} + +Most arguments of \fontinst commands belong to one of the following +six categories: +\begin{itemize} + \item integer expressions, + \item string expressions, + \item comma-separated lists of string expressions, + \item dimensions, + \item commands (i.e., a single \TeX\ control sequence), and + \item code (zero or more commands in sequence, each of which may + have arguments of its own). +\end{itemize} +Integer expressions are explained in Subsection~\ref{Sec:integer} +below. + +The most common form of a string expression is simply a sequence of +character tokens, but any balanced text which expands to such a +sequence of tokens is legal. Several of the standard \etx files use +macros in string expressions to make glyph names to some extent +configurable. Besides such custom macros, the following \fontinst +commands may be used to access variable values inside a string +expression +\begin{decl*} + |\strint|\arg{int}\\ + |\str|\arg{str}\\ + |\dim|\arg{dim} +\end{decl*} +Incidentally, these \m{int}, \m{str}, and \m{dim} are themselves +string expressions (for the names of integer, string, and dimen +respectively variables). + +Dimensions are simply \TeX\ \meta{dimen}s; their use is rather +limited. \Fontinst does not provide for any sort of ``dimen +expressions''. Most actual lengths are expressed as integer +expressions, in AFM units ($1/1000$ of the font size). + +Common to integer expressions, string expressions, and +dimensions is that these argument types get expanded during +evaluation (in the case of string expressions, this expansion +\emph{is} the evaluation), which means one can use macros in +arguments of these types. Command arguments do not get +expanded---they are mainly used with commands that modify the +definitions of other commands. + +Comma-separated lists of string expressions are first split at commas +(without prior expansion) and each element is then treated as a +string expression (i.e., \emph{gets expanded}). (As remarked elsewhere, +the \meta{metrics-list} argument of |\installfont| is not properly a +comma-separated list of string expressions, even though it may look +like one.) + +Code arguments are generally expanded, but one should not make any +presumptions about \emph{when} this will happen, and similarly not +assume that code placed in such an argument will only be executed +once. It is typically safe to use a macro in a code argument if the +definition of that macro stays the same throughout, but one should +otherwise not use any other commands in code arguments than those +explicitly documented as legal there. + +Finally, there are command arguments which do not fall into any of +these categories. For these, one cannot give any rules: they +might get expanded, but it could also happen that they won't. + + + +\subsection{Integer expressions} +\label{Sec:integer} + +The \emph{integer expressions} provide a user-friendly syntax for +\TeX\ arithmetic. They are used to manipulate any integers, +including glyph dimensions (which are given in AFM units, that is +1000 to the design size). \TeX\ \pl fonts have their dimensions +converted to AFM units automatically. + +The \emph{integer expressions} are: + +\begin{decl} + \m{number} +\end{decl} +Returns the value of a \TeX\ \m{number} (as explained in +\emph{The \TeX book}). Typical examples of this kind of integer +expression are |0|, |1000|, |538|, |-20|, |"9C|, |'177|, etc. + +\begin{decl} + |\int|\arg{int} +\end{decl} +Returns the value of the integer variable \m{int}. + +\begin{decl} + |\width|\arg{glyph}\\ + |\height|\arg{glyph}\\ + |\depth|\arg{glyph}\\ + |\italic|\arg{glyph} +\end{decl} +Returns the width, height, depth, or italic correction of the glyph +variable \m{glyph}. + +\begin{decl} + |\kerning|\arg{left}\arg{right} +\end{decl} +Returns the kerning between the \m{left} and \m{right} glyphs. Unlike +other types of variable accesses, where it is an error to access +something that has not been explicitly set, this command returns |0| +if no kern has been set between the two glyphs. + +\begin{decl} + |\neg|\arg{integer expression}\\ + |\add|\arg{integer expression}\arg{integer expression}\\ + |\sub|\arg{integer expression}\arg{integer expression}\\ + |\max|\arg{integer expression}\arg{integer expression}\\ + |\min|\arg{integer expression}\arg{integer expression}\\ + |\mul|\arg{integer expression}\arg{integer expression}\\ + |\div|\arg{integer expression}\arg{integer expression}\\ + |\scale|\arg{integer expression}\arg{integer expression}\\ + |\half|\arg{integer expression}\\ + |\otherhalf|\arg{integer expression} +\end{decl} +These commands evaluate their argument(s) and perform some arithmetic +operations on the result(s). + +|\neg| returns the negation of the \m{integer expression}. + +|\add| returns the sum of the two \m{integer expression}s. + +|\sub| returns the first \m{integer expression} minus the second. + +|\max| returns the maximum of the two \m{integer expression}s. + +|\min| returns the minimum of the two \m{integer expression}s. + +|\mul| returns the product of the two \m{integer expression}s. + +|\div| returns the first \m{integer expression} divided by the second. + +|\scale| returns the first \m{integer expression} times the second, +divided by 1000. |\scale| does better rounding than the corresponding +combination of |\mul| and |\div|. + +|\half| returns half the \m{integer expression}. It does better +rounding than |\scale|\arg{integer expression}|{500}| or +|\div|\arg{integer expression}|{2}|. + +|\otherhalf| returns the ``other half'' of the \m{integer +expression}, i.e., the sum of |\half| something and |\otherhalf| the +same thing is that thing back. + + +\subsection{Conditionals and loops} + +\Fontinst has a rather extensive family of conditionals (|\if|s), and +as of late also some convenient loop commands. The most common forms +of a \fontinst conditional are +\begin{decl*} + |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Fi|\\ + |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Else| + \meta{else branch} |\Fi| +\end{decl*} +i.e., \fontinst uses Plain\TeX\ style conditionals (with else and fi +control sequences) rather than \LaTeX\ style conditionals (with +separate arguments for the two branches). Every |\if|\dots\ command +can be thought of as testing some condition. +If the condition is true then the \meta{then branch} will be executed, +but not the \meta{else branch} (if there is one). +If the condition is false then the \meta{then branch} will not be +executed, but if there is an \meta{else branch} then that will be +executed. Conditionals may be nested (i.e., occur in the then or else +branch). + +\begin{hackernote} + The |\then| is not just syntactic sugar, but a functional part of + those conditionals which take arguments. Its purpose is to look + like an |\if| to \TeX\ when the conditional occurs in a skipped + branch of another conditional. +\end{hackernote} + +The most common conditionals are those which test if a variable is set. +\begin{decl*} + |\ifisint|\arg{int}|\then|\\ + |\ifisdim|\arg{dim}|\then|\\ + |\ifisstr|\arg{str}|\then|\\ + |\ifiscommand|\arg{command}|\then| +\end{decl*} +These cause the following \meta{then branch} to be executed if the +specified variable is set, and the \meta{else branch} to be executed +if the variable is not set. The \meta{int}, \meta{dim}, and +\meta{str} are string expressions for the names of an integer, +dimension, and string respectively variable. The \meta{command} is +the actual control sequence (command variable) that should be tested. + +\begin{decl} + |\ifisglyph|\arg{glyph}|\then| +\end{decl} +This similarly tests if a glyph (also a variable of a kind) is set in +the current glyph base. The glyph name \meta{glyph} is a string +expression. + +\begin{decl}[v1.917] + |\ifareglyphs|\marg{glyph list}|\then| +\end{decl} +This command tests whether all the glyphs in the \meta{glyph list} +(a comma-separated list of string expressions) are set in the current +glyph base. If one of the glyphs is not set then the condition is +false. + +\begin{decl}[v1.900] + |\ifnumber|\marg{integer expression}\meta{rel}% + \marg{integer expression}|\then| +\end{decl} +The \meta{rel} is one of \texttt{<}, \texttt{=}, and \texttt{>}. +This command evaluates the two \meta{integer expression}s and +then tests whether the specified relation holds between their values. + +\begin{decl}[v1.900] + |\ifiskern|\marg{glyph1}\marg{glyph2}|\then| +\end{decl} +This tests whether a kern has been set with \meta{glyph1} on the left +and \meta{glyph2} on the right (both arguments are string +expressions). This is almost the negation of +\begin{verbatim} + \ifnumber{\kerning{}{}}={0}\then +\end{verbatim} +but |\ifiskern| can distinguish the case that an zero kern has been +set (true) from the case that no such kern has been set (false), +which |\kerning| can not. It is however unlikely that this +distinction would ever be of use in a practical situation. + +\begin{decl}[v1.924] + |\ifoption|\marg{string}|\then| +\end{decl} +Test whether \meta{string} (a string expression) is among the current +list of options. This list is by default empty, elements are added +using |option| modifiers (cf.~the description of |\installfont|), and +the list is cleared for each new file for which one can specify +options. + +\begin{decl}[v1.909] + |\Else| + |\Fi| +\end{decl} +For \fontinst, these two control sequences are precisely the same as +the \TeX\ primitives |\else| and |\fi|, but things are a bit more +complicated in \fontdoc. The mechanism in \fontdoc\ that allows it to +present both branches of the conditional in the typeset output +requires that |\Else| and |\Fi| generate typeset output. See also the +|\showbranches| \fontdoc command. + +\begin{hackernote} + Before |\Else| and |\Fi| were introduced, the \TeX\ primitives + |\else| and |\fi| were used instead for \fontinst conditionals. + Back then, \fontdoc defined all conditionals to expand to |\iftrue|. + + It used to be the case that all conditionals would be fully + expandable (which in particular would have made it possible to use + them in string expressions), but that is no longer the case. +\end{hackernote} + +The \fontdoc formatter for visible branches treats an |\Else| +immediately followed by an `if' as an `else if', i.e., it assumes the +entire else branch consists of the conditional begun at that `if' and +leaves out one level of indentation. When that is not the case, you +will upon typesetting get a \LaTeX\ error about |\begin{IfBranchDummy}| +and |\end{IfBranch}|. In that case you need to help the formatter by +placing something between the |\Else| and the `if'; as it turns out +leaving an empty line there is sufficient (although just a single +newline is not). + + +\begin{decl}[v1.901] + |\for|\parg{name}\marg{start}\marg{stop}\marg{step} + \meta{body} |\endfor|\parg{name} +\end{decl} +will cause the \meta{body} code to be repeated some number of times. +How many depends on the values of \meta{start}, \meta{stop}, and +\meta{step}, which are integer expressions. + +As a precaution, the \meta{body} is not allowed to contain any +empty lines (|\par| tokens). If you want to have the visual +separation (for sakes of legibility or otherwise), put a |%| +somewhere on the line---that makes it nonempty. + +\meta{name} should consist of character tokens only. It is used as +the name of an integer variable, which will serve as loop variable. +This variable gets reset to the value of \meta{start} before the first +repetition of \meta{body code}. After each repetition but the last, +it is incremented by \meta{step}. \meta{body} gets repeated if +the value of \meta{name} has not gotten past that of \meta{stop}. To +get past means to be bigger if \meta{step} is positive and to be +smaller if \meta{step} is negative. In the case that \meta{step} is +zero, the entire construction above will be equivalent to +\begin{quote} + |\resetint|\marg{name}\marg{start}\\ + \meta{body} +\end{quote} + +|\for| \textellipsis\ |\endfor| constructions can be nested. +\meta{name} is used by |\for| to identify its matching |\endfor|, so +they need to be identical in |\for| and |\endfor|. \textbf{Note} that +the delimiters around the \meta{name} are parentheses, not braces. + + +\begin{decl}[v1.901] + |\foreach|\parg{name}\marg{csep-list} + \meta{body} |\endfor|\parg{name} +\end{decl} +will cause the \meta{body} code to be repeated one time for each item +in the \meta{csep-list}. \meta{csep-list} is a comma-separated list +of string expressions. + +As a precaution, the \meta{body} is not allowed to contain any +empty lines (|\par| tokens). If you want to have the visual +separation (for sakes of legibility or otherwise), put a |%| +somewhere on the line---that makes it nonempty. + +\meta{name} should consist of character tokens only. It is used as +the name of a string variable, which will serve as loop variable. +Before each repetition of the \meta{body code}, the loop variable will +get reset to the next item in the \meta{csep-list}. + +|\foreach|\textellipsis\ |\endfor| constructions can be nested. +\meta{name} is used by |\foreach| to identify its matching |\endfor|, +so they need to be identical in |\foreach| and |\endfor|. +\textbf{Note} that the delimiters around the \meta{name} are +parentheses, not braces. + + + +\subsection{Other general commands} + +\begin{decl} + |\needsfontinstversion|\arg{version} +\end{decl} +This issues a warning if the current version of the \fontinst +package is less than \m{version}. + +\begin{decl}[v1.914] + |\needsTeXextension|\marg{extension tests}\marg{who} +\end{decl} +The |\needsTeXextension| command issues a warning if \fontinst is not +being run on one of the listed extensions of \TeX. This can be used to +protect files that make use of features not present in base \TeX. As +\meta{who} is preferably used the file name in which the command +occurs; it should be the answer to ``who is issuing this warning?'' + +An extension test is one of: +\begin{decl*} + |\eTeX|\marg{version number}\\ + |\pdfTeX|\marg{version number}\marg{revision} +\end{decl*} +Multiple tests in sequence are \textsc{or}'ed together. If you rather +need to \textsc{and} them, then use separate |\needsTeXextension| +commands. + +\begin{hackernote} + At present there is no test for Omega. This is really a shame, + because the extended character codes (outside the 0--255 range) + provided by Omega is the existing extension that would be most + useful for \fontinst, but Omega documentation does not give any + indication of how such a test should be implemented. Code + contributions are welcome. +\end{hackernote} + + +\begin{decl}[v1.915] + |\fontinstcc|\\ + |\normalcc| +\end{decl} +|\fontinstcc| switches to the catcodes used in e.g.\@ +\texttt{fontinst.sty}: |_| and |@| are letters, space and newline are +ignored, and |~| is a space. |\normalcc| switches back to normal +catcodes. + +\begin{decl}[v1.900] + |\begincomment| \meta{text} |\endcomment| +\end{decl} +This hides the \meta{text} from \fontinst processing, but allows it +to show up when the file is typeset with \fontdoc. + +\begin{decl}[v1.906] + |\fontinsterror|\marg{subsystem}\marg{error}\marg{help}\\ + |\fontinstwarning|\marg{subsystem}\marg{warning}\\ + |\fontinstwarningnoline|\marg{subsystem}\marg{warning}\\ + |\fontinstinfo|\marg{subsystem}\marg{info} +\end{decl} +General commands to convey information to the user, based on \LaTeX's +|\PackageError|, |\PackageWarning|, etc. + +\begin{decl}[v1.906] + |\messagebreak| +\end{decl} +Used to start a new line in an \meta{error}, \meta{help}, +\meta{warning}, or \meta{info} message. + + +Finally, there are two Plain\TeX\ commands which should be mentioned: +\begin{decl*} + |\input| \meta{file name}\\ + |\bye| +\end{decl*} +|\input| followed by a \meta{file name} (\emph{without} braces around) +is the recommended way of inputting a \fontinst command file, or the +\fontinst package itself (\texttt{fontinst.sty}, +\texttt{finstmsc.sty}, etc.). This is the only way to make things work +regardless of whether the underlying format is \LaTeX, Plain\TeX, or +even a raw Ini\TeX. + +|\bye| is the command to use to terminate a \fontinst command file. + + + + + +\section{Encoding files} + +An \emph{encoding file} (or \texttt{.etx} file) is a \TeX\ document +with the structure: +\begin{quote} + |\relax|\\ + \meta{ignored material}\\ + |\encoding|\\ + \meta{encoding commands}\\ + |\endencoding|\\ + \meta{ignored material} +\end{quote} +This describes the encoding of a font, using the \m{encoding commands}. + +Since the encoding file ignores any material between \verb|\relax| and +\verb|\encoding|, an \emph{encoding file} can also be a \LaTeX\ +document. The structure is then +\begin{quote} + |\relax|\\ + |\documentclass{article} %| Or some other class\\ + |\usepackage{fontdoc}|\\ + \meta{\LaTeX\ preamble}\\ + |\begin{document}|\\ + \meta{\LaTeX\ text}\\ + |\encoding|\\ + \m{encoding commands}\\ + |\endencoding|\\ + \meta{\LaTeX\ text}\\ + |\end{document}| +\end{quote} + + +See also the descriptions in \emph{Writing ETX format font encoding +specifications} (\texttt{encspecs.tex}). + + +\subsection{Encoding commands} + +The \m{encoding commands} are: + +\begin{decl} + |\nextslot|\arg{integer expression} +\end{decl} +Sets the number of the next slot. If there is no \verb|\nextslot| +command, the number is the successor of the previous slot. Immediately +after |\encoding|, the next slot number is $0$. + +\begin{decl}[v1.8] + |\skipslots|\arg{integer expressions} +\end{decl} +Advances the number of the next slot. + +\begin{decl} + |\setslot|\arg{glyph} \m{slot commands} |\endsetslot| +\end{decl} +Assigns \m{glyph} to the current slot. The \m{slot commands} can be +used to specify additional behaviour for the slot, and typically also +contains comments about the glyph. + +\begin{decl}[v1.9] + |\setleftboundary|\marg{glyph} \m{slot commands} + |\endsetleftboundary| +\end{decl} +Makes the beginning of a word (left boundary) behave like the right +side of \m{glyph} with respect to kerning. |\ligature| commands in +the \meta{slot commands} create beginning of word ligatures. + +\begin{decl}[v1.9] + |\setrightboundary|\marg{glyph} +\end{decl} +Makes the end of a word (right boundary) behave like the left +side of \m{glyph} with respect to kerning and ligatures. The current +slot position is left empty. + +\begin{decl} + |\inputetx|\arg{file} +\end{decl} +Inputs the \m{encoding commands} of \m{file}\texttt{.etx}. + +\begin{decl}[v1.917] + |\setfontdimen|\marg{fontdimen no.}\marg{integer variable} +\end{decl} +Sets up a correspondence between a font dimension and an integer +variable. When generating a font, the font dimension value is taken +from the integer variable. When converting a font from \pl or \vpl +format, the fontdimen value will be recorded as a |\setint| command +for the variable. + +\begin{decl}[v1.924] + |\ifdirect| +\end{decl} +Encoding files set up a correspondence between slot numbers and glyph +names, which can be used in two different ways. In the \emph{direct} +mode, encoding files map slot numbers to glyph names. In the +\emph{inverse} mode, glyph names are mapped to slot numbers. The +inverse mapping can in general be one-to-many, and when precisely one +target slot is needed \fontinst chooses that arbitrarily. The |\ifdirect| +conditional can be used to disambiguate the inverse mapping, by +conditionalising all undesired |\setslot|s on that the file is being +interpreted in the direct mode. For example: +\begin{verbatim} + \ifdirect + \setslot{hyphen} + \comment{Soft hyphen slot} + \endsetslot + \Else + \skipslots{1} + \Fi +\end{verbatim} + +Currently the only case in which encoding files are being read in +the inverse mode is when reencoding fonts. + +\begin{decl}[v1.8] + |\setslotcomment|\marg{text}\\ + |\resetslotcomment|\marg{text}\\ + |\unsetslotcomment| +\end{decl} +These commands can be used to specify an automatic |\comment| text +for all slots. They are ignored by \fontinst, but interpreted by +\fontdoc. + +\begin{decl}[v1.8] + |\useexamplefont|\marg{font} +\end{decl} +This command is ignored by \fontinst. In \fontdoc it sets the font +that is used by the |\slotexample| command. The \meta{font} argument +has the same syntax for a font as the \TeX\ primitive |\font|. + + + + +\subsection{Slot commands} + +The \m{slot commands} are: + +\begin{decl} + |\comment|\arg{text} +\end{decl} +A comment, which is ignored by \fontinst, but typeset as a separate +paragraph by \fontdoc. + +\begin{decl}[v1.917] + |\label|\arg{text} +\end{decl} +A reference label (like in \LaTeX), which records the slot number and +glyph name. Ignored by \fontinst. + +\begin{decl} + |\ligature|\arg{ligtype}\arg{glyph1}\arg{glyph2} +\end{decl} +|\ligature| declares a ligature of type \m{ligtype}, which will take +effect if the current glyph is immediately followed by \meta{glyph1} +when \TeX\ is constructing a list of horizontal material. This +ligature will then replace the two glyphs by the third glyph +\meta{glyph2}. For example: +\begin{verbatim} + \setslot{ff} + \comment{The `ff' ligature.} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} + \endsetslot +\end{verbatim} +declares one ligature \(\texttt{ff}*\texttt{i} \longrightarrow +\texttt{ffi}\) and one ligature \(\texttt{ff}*\texttt{l} +\longrightarrow \texttt{ffl}\). + +The eight \m{ligtype}s are the names of the underlying \pl +properties, i.e.,: +\begin{quote} + \texttt{LIG}\hfil + \texttt{/LIG}\hfil + \texttt{/LIG>}\hfil + \texttt{LIG/}\hfil + \texttt{LIG/>}\hfil + \texttt{/LIG/}\hfil + \texttt{/LIG/>}\hfil + \texttt{/LIG/>>} +\end{quote} +The basic \texttt{LIG} may be immediately preceded or followed by a +slash, and then immediately followed by \texttt{>} characters not +exceeding the number of slashes. The slashes specify retention of the +left or right original glyph; the \texttt{>} signs specify passing +over that many glyphs of the result without further ligature or kern +processing. + +\begin{decl}[v1.918] + |\Ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\ + |\oddligature|\marg{note}\arg{ligtype}\arg{glyph}\arg{glyph} +\end{decl} +The |\Ligature| command is by default a synonym of |\ligature| (but +\fontdoc may typeset them differently). The |\oddligature| command is +by default ignored by \fontinst. See \setfilename{encspecs.tex} for +an explanation of the semantic differences. + +\begin{decl} + |\makerightboundary|\arg{glyph} +\end{decl} +This makes the current slot the end of word (right boundary) marker +with respect to ligatures and kerning, i.e., \TeX\ will kern and +ligature as if there was an invisible occurrence of this character +after the last character of every word. All kerns and ligatures with +\meta{glyph} as the right part will apply for this slot. + +It is preferable to use |\setrightboundary| to control end of word +behaviour if you have an empty slot to spare. + +\begin{decl} + |\Unicode|\marg{code point}\marg{name}\\ + |\charseq|\marg{\cs{Unicode} commands} +\end{decl} +These commands declare a Unicode character or character sequence as +possible interpretations of what is in this slot. They are ignored +when making fonts, but \fontdoc give them a prominent role in +encoding specifications and to |\etxtocmap| they are the primary +properties of the slot. + +\begin{decl}[Obsolete?!] + |\usedas|\arg{type}\arg{control sequence} +\end{decl} +This command declares a \TeX\ control sequence for this slot, with +the \emph{type} taken from: +\begin{verbatim} + char accent mathord + mathbin mathrel mathopen + mathclose mathpunct mathvariable + mathaccent mathdelim +\end{verbatim} +There is currently no code in \fontinst which makes any use of this +command. It might in principle be possible to autogenerate \LaTeX\ +output encoding definition (\meta{enc}\texttt{enc.def}) files and +math symbol declarations from this information. + +\begin{decl} + |\nextlarger|\arg{glyph} +\end{decl} +Math font property: makes \meta{glyph} the \textsc{nextlarger} entry +of the current slot. + +\begin{decl} + |\varchar| + \m{varchar commands} + |\endvarchar| +\end{decl} +Math font property: sets the \textsc{varchar} entry for the current +slot, using the \m{varchar commands}. The possible \m{varchar +commands} are: +\begin{decl*} + |\vartop|\arg{glyph}\\ + |\varmid|\arg{glyph}\\ + |\varbot|\arg{glyph}\\ + |\varrep|\arg{glyph} +\end{decl*} +Sets the top, middle, bottom, or repeated \m{glyph} of the +\textsc{varchar}. + + +\subsection{Other} + +\begin{decl}[v1.9] + |\ifisinslot|\marg{glyph}\marg{slot}|\then| +\end{decl} +During \vpl\slash\pl generation, this conditional tests whether glyph +\meta{glyph} (a string expression) is put in the slot \meta{slot} (an +integer expression). Since encoding files are normally read several +times in that context, the exact behaviour of this command is a bit +uncertain. It was intended to support collecting additional +information about the fonts being generated, but at the time of +writing this is probably only of academic interest. + + +\begin{decl}[v1.931] + |\declarepsencoding|\marg{etx-name}\marg{PS-encoding-name}% + \marg{action} +\end{decl} +This command is placed in \etx files generated by |\enctoetx|, and has +the same syntax as in a mapmaking command file (see +Subsection~\ref{Ssec:MapConfig}). It records information about the +source encoding file to assist the map file writer, but is mostly +ignored by main \fontinst. + + + + +\section{Metric files} +\label{Sec:Metric} + + +A \emph{metric file} (or \mtx file) is a \TeX\ document with the +structure: +\begin{quote} + |\relax|\\ + \emph{ignored material}\\ + |\metrics|\\ + \m{metric commands}\\ + |\endmetrics|\\ + \emph{ignored material} +\end{quote} +This describes the glyphs in a font, using the \m{metric commands}. +Like encoding files, metric files can simultaneously be \LaTeX\ +documents. + +Metric files are usually either \emph{hand-crafted} or +\emph{transformable}. The transformable metric files typically encode +the metrics of one particular font and are automatically generated. +Hand-crafted metric files (such as \setfilename{latin.mtx}) typically +do not contain much explicit metric data, instead the code there makes +use of metrics previously specified by other files to construct new +glyphs or adjust metrics to meet special conditions. Whereas +transformable metric files tend to be mere lists of metric data, the +hand-crafted metric files are more like programs. + + +\subsection{Metric commands} + +The \m{metric commands} are as follows. All glyph name arguments are +string expressions. + +\begin{decl} + |\setglyph|\arg{name} \m{glyph commands} |\endsetglyph| +\end{decl} +If the glyph called \m{name} is undefined, it is built using the +\m{glyph commands}, for example: +\begin{verbatim} + \setglyph{IJ} + \glyph{I}{1000} + \glyph{J}{1000} + \endsetglyph + + \setglyph{Asmall} + \glyph{A}{850} + \endsetglyph +\end{verbatim} +The \meta{glyph commands} are not executed if the glyph has already +been set. + +\begin{decl} + |\resetglyph|\arg{name} + \m{glyph commands} + |\endresetglyph| +\end{decl} +This builds a glyph using the \m{glyph commands}, and defines +(at~|\endresetglyph|) \meta{name} to be that glyph, regardless of +whether that glyph was already defined. + +\begin{decl} + |\unsetglyph|\arg{name} +\end{decl} +Makes the glyph called \m{name} undefined. + +\begin{decl} + |\setrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ + \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic + correction}\\ + |\setscaledrawglyph|% + \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ + \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic + correction} +\end{decl} +These commands will usually be +generated automatically from an \afm or \pl file. +If the glyph \meta{name} is undefined, then this sets it to be that +which is found in slot \meta{slot} of font \meta{font}. The +\meta{width}, \meta{height}, \meta{depth}, and \meta{italic} are +saved away as the width, height, depth and italic correction +respectively of the glyph. + +The \meta{scale} is a scaling factor which has been applied to the +font to give it the specified metrics. +If the integer variable \texttt{rawscale} is set, another scaling by +that amount will be applied to the glyph (this is how the |scaled| +keyword in |\installfont| metrics-lists take effect). + +The \meta{dimen} is the nominal \emph{design size} of the \meta{font}, +usually |10pt|; this information isn't really needed for anything, but +the \vf format requires it to be specified and match what is in +\meta{font}\setfilename{.tfm}, so a \dvi driver is allowed to error +out on us if we don't get this value right. + + +\begin{decl} + |\setnotglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ + \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic + correction}\\ + |\setscalednotglyph|% + \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ + \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic + correction} +\end{decl} +These set a glyph called \m{name}\texttt{-not} (if that wasn't set +already) to have the specified width, height, depth, and italic +correction but be invisible in print. + +Such commands are usually generated automatically from an \afm file, +when a glyph is present in the \m{font} but is not in the default +encoding. They take the same arguments as |\setrawglyph| and +|\setscaledrawglyph| respectively (although the \meta{slot} will +normally be |-1|), because +reencoding a font can turn |\setrawglyph| commands into +|\setnotglyph| commands and vice versa. + + +\begin{decl} + |\inputmtx|\arg{file} +\end{decl} +Inputs the \m{metric commands} of \m{file}\texttt{.mtx}. + +\begin{decl}[v1.9] + |\usemtxpackage|\marg{package~list}\\ + |\ProvidesMtxPackage|\marg{package~name} +\end{decl} +|\usemtxpackage| behaves like |\inputmtx|, but it will only input a +file if no |\ProvidesMtxPackage| for that file has been issued. By +putting a |\ProvidesMtxPackage| in an \mtx file one can |use| it in +several places without having to worry about it being sourced more +than once. + +\begin{hackernote} + |\ProvidesMtxPackage| declarations make local assignments, so the + package is forgotten when the current group ends. In particular, the + settings made with |\ProvidesMtxPackage| are forgotten when the + current glyph base is flushed. +\end{hackernote} + + + +\subsection{Glyph commands} + +The \m{glyph commands} add material to the glyph currently being +constructed in a |\setglyph| \dots\ |\endsetglyph| or +|\resetglyph| \dots\ |\endresetglyph|. They are: + +\begin{decl} + |\glyph|\arg{glyph}\arg{integer expression} +\end{decl} +Sets the named glyph \m{glyph} at the given scale, with 1000 as the +natural size. This: +\begin{itemize} + \item + Advances the current glyph width. + \item + Sets the current glyph height to be at least the height of the + named glyph, adjusted for the current vertical offset. + \item + Sets the current glyph depth to be at least the depth of the + named glyph, adjusted for the current vertical offset. + \item + Sets the current glyph italic correction to be the same as the + set glyph. +\end{itemize} +The named glyph must have already been defined, otherwise an error +will occur. For example: +\begin{verbatim} + \setglyph{fi} + \glyph{f}{1000} + \glyph{i}{1000} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\glyphrule|\arg{integer expression}\arg{integer expression} +\end{decl} +Sets a rule of the given width and height, for example: +\begin{verbatim} + \setglyph{underline} + \glyphrule{333}{40} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\glyphspecial|\arg{string expression} +\end{decl} +Sets a driver-dependent \verb|\special|, for example: +\begin{verbatim} + \setglyph{crest} + \glyphspecial{Filename: crest.eps} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\glyphwarning|\arg{string expression} +\end{decl} +Sets a warning \verb|\special|, and produces a warning message each +time the glyph is used, for example: +\begin{verbatim} + \setglyph{missingglyph} + \glyphrule{500}{500} + \glyphwarning{Missing glyph `missingglyph'} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\movert|\arg{integer expression} +\end{decl} +Moves right by the given amount, and advances the current glyph width, +for example: +\begin{verbatim} + \setglyph{Asmall} + \movert{50} + \glyph{A}{700} + \movert{50} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\moveup|\arg{integer expression} +\end{decl} +Moves up by the given amount, and advances the current vertical +offset. Each glyph should always end at vertical offset zero, for +example: +\begin{verbatim} + \setglyph{onehalf} + \moveup{500} + \glyph{one}{700} + \moveup{-500} + \glyph{slash}{1000} + \moveup{-200} + \glyph{two}{700} + \moveup{200} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\push| \m{glyph commands} |\pop| +\end{decl} +Performs the \m{glyph commands}, but at the |\pop| the current +position and glyph width are restored to what they were at the |\push|, +for example: +\begin{verbatim} + \setglyph{aacute} + \push + \movert{\half{\sub{\width{a}}{\width{acute}}}} + \glyph{acute}{1000} + \pop + \glyph{a}{1000} + \endsetglyph +\end{verbatim} + +\begin{decl} + |\glyphpcc|\arg{glyph}\arg{integer expression}\arg{integer expression} +\end{decl} +This is generated from \texttt{PCC} instructions in an \afm file, and +is syntactic sugar for: +\begin{quote} + \small + |\push|\\ + |\movert|\arg{first integer expression}\\ + |\moveup|\arg{second integer expression}\\ + |\glyph|\arg{glyph}|{1000}|\\ + |\pop| +\end{quote} + +\begin{decl} + |\resetwidth|\arg{integer expression}\\ + |\resetheight|\arg{integer expression}\\ + |\resetdepth|\arg{integer expression}\\ + |\resetitalic|\arg{integer expression} +\end{decl} +Sets the width, height, depth, or italic correction of the current +glyph. + +\begin{decl} + |\samesize|\arg{glyph} +\end{decl} +Sets the dimensions of the current glyph to be the same as \m{glyph}. + +\bigskip + +Inside a |\setglyph| definition of \m{glyph}, you can use expressions +such as |\width|\arg{glyph} to refer to the glyph defined so far. +For example, a display summation sign can be defined to be a text +summation $\sum$ scaled 120\% with 0.5\,pt extra height and depth +using: +\begin{verbatim} + \setglyph{summationdisplay} + \glyph{summationtext}{1200} + \resetheight{\add{\height{summationdisplay}}{50}} + \resetdepth{\add{\depth{summationdisplay}}{50}} + \endsetglyph +\end{verbatim} +Within a |\resetglyph|, these expressions will refer to the previous +definition of the glyph. For example, you can add sidebearings to the +letter `A' with: +\begin{verbatim} + \resetglyph{A} + \movert{25} + \glyph{A}{1000} + \movert{25} + \endresetglyph +\end{verbatim} + + +\subsection{Kerning commands} + +The kerning commands may be used anywhere in a metrics file. + +\begin{decl} + |\setkern|\arg{glyph}\arg{glyph}\arg{integer expression} +\end{decl} +This sets a kern between the two glyphs, scaled by the current +value of \texttt{rawscale}, unless such a kern already has been set. + +\begin{decl}[v1.9] + |\resetkern|\arg{glyph}\arg{glyph}\arg{integer expression} +\end{decl} +|\resetkern| unconditionally sets a kern between the two glyphs, +scaled by the current value of \texttt{rawscale}. + +\begin{decl} + |\setleftkerning|\arg{glyph}\arg{glyph}\arg{integer expression}\\ + |\setrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} +\end{decl} +Sets the amount by which the first glyph should mimic how the second +glyph kerns on the left or right, for example: +\begin{verbatim} + \setleftkerning{Asmall}{A}{850} + \setrightkerning{Asmall}{A}{850} + \setleftkerning{IJ}{I}{1000} + \setrightkerning{IJ}{J}{1000} +\end{verbatim} +The commands work by copying kerning pairs containing the first glyph. +As the names indicates, these commands do not override kerning pairs +previously set. + +\begin{decl}[v1.8] + |\setleftrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} +\end{decl} +Sets the amount by which the first glyph should mimic how the second +glyph kerns on both sides, for example: +\begin{verbatim} + \setleftrightkerning{Asmall}{A}{850} +\end{verbatim} +This command is equivalent to doing first a |\setleftkerning| and +then a |\setrightkerning|. + +\begin{decl}[v1.906] + |\noleftkerning|\arg{glyph}\\ + |\norightkerning|\arg{glyph}\\ + |\noleftrightkerning|\arg{glyph} +\end{decl} +Removes all kerning on the specified side(s) of the \meta{glyph}. + +\begin{decl}[v1.9] + |\unsetkerns|\marg{left~glyph~list}\marg{right~glyph~list} +\end{decl} +Removes all kerns with one glyph in the \meta{left glyph list} on the +left and one glyph in the \meta{right glyph list} on the right. + + + +\subsection{Other} + +\begin{decl}[v1.915] + |\aliased|\marg{font's name}\marg{alias name} +\end{decl} +This command, which syntactically counts as a \meta{string +expression}, is meant to be used in glyph name arguments of commands +one may find in metric files. It was added to support combining +mapfile entry generation with a custom form of reglyphing that has +been developed for the \texttt{T2} bundle (Cyrillic font support). +This does however not necessarily mean that the \texttt{T2} bundle +has been updated to take advantage of this feature. + +The basic problem is that cyrillic fonts display a much greater +variation in how the glyphs are named than latin fonts do.% +\footnote{The Adobe guidelines have not been as prevailing here as +in the latin range, but this isn't entirely surprising when they +give opaque suggestions such as using the name \texttt{afii10018} +for \texttt{U+0411} (\textsc{cyrillic capital letter be}). The +suggestion made some sense though; AFII (Association for Font +Information Interchange) maintained a glyph registry.} +This complicates writing files similar to \setfilename{latin.mtx}, so +the author of the \texttt{T2} bundle took the route to regularize the +glyph names at the \afm to \mtx conversion step. Since \TeX\ does not +know anything about glyph names, this makes no difference for the +virtual fonts that are built. +The glyph names do however make a difference for base fonts that are +reencoded, since \PS encoding vectors list explicit glyph names that +have to be the same as in the font. \Fontinst's choice of encoding +vector for a mapfile entry is based on which \etx file was used in the +reencoding, and hence the glyph names used when reencoding must match +those actually used in the font, or problems will follow. + +The |\aliased| command can be used to preserve the information +necessary for such reencodings. If a glyph name is specified as for +example +\begin{verbatim} + \aliased{afii10018}{CYRB} +\end{verbatim} +then \fontinst will behave as if the glyph name is \texttt{CYRB} +(i.e., the \meta{alias name}) for all purposes \emph{except} +reencoding, where instead \fontinst behaves as if the glyph name is +the \meta{font's name} \texttt{afii10018}. This makes it possible to +use \etx files when reencoding which can be correctly translated to +the right encoding vectors. + + +\begin{decl}[v1.931] + |\providepsencoding|\marg{etx}\marg{postscript name}\marg{action} +\end{decl} +If this command occurs in an \mtx file then it was placed there by a +|\declare|\-|ps|\-|encoding| in an \etx file that was used to +reencode this \mtx. It is meant for consumption by the mapfile writer, +and is ignored by main \fontinst. + + + +\section{\textsf{fontdoc} commands} + +The following commands are defined by \fontdoc but are unknown to +\fontinst. + + +\subsection{Comment commands} + +\begin{decl} + |\plaindiv|\\ + |\plainint|\\ + |\plainmax|\\ + |\plainmin|\\ + |\plainneg| +\end{decl} +These are the \LaTeX\ definitions of |\div|, |\int|, |\max|, |\min|, +and |\neg| respectively. They are provided under these names because +\fontinst uses the normal names for integer expression constructions. + +\begin{decl}[v1.8] + |\slotexample| +\end{decl} +This typesets the character in the current slot from the example font +(cf.~|\use|\-|example|\-|font|). + +\begin{decl}[v1.916] + |\macroparameter|\marg{digit} +\end{decl} +This can be used in integer and string expressions. It typesets as +\textit{\#n}, where `\textit{n}' is the \meta{digit}. + +\begin{decl}[v1.918] + |\textunicode|\marg{code point}\marg{name} +\end{decl} +This generates a reference to a particular Unicode character, for use +within a |\comment| or similar. + + +\subsection{Style control commands} + +\begin{decl}[v1.909] + |\showbranches| +\end{decl} +The is the main switch that turns on displaying both branches of +\fontinst conditionals. If you use this command in an encoding or +metrics file, you \textbf{must} use |\Else| and |\Fi| to delimit the +conditionals in that file. If you do not use this command in an +encoding or metrics file, then the conditionals will not generate any +typeset material and neither will their \meta{else branch}es. + + + + +\section{\fontinst variables} +\label{Sec:Variables} + +The following is a list of the \fontinst variables that are +accessible for the user through the |\set|\textellipsis, +|\reset|\textellipsis, |\unset|\textellipsis, etc.\ commands. You may +of course set or use other variables in the \mtx and \etx files you +write yourself, as does for example the standard \mtx file +\texttt{latin.mtx}, but all variables that \fontinst commands +implicitly use or set are listed below. + +% \begin{list}{}{% +% \setlength\labelwidth{0pt}% +% \setlength\itemindent{-\leftmargin}% +% \setlength\parsep{0pt} +% \def\makelabel#1{\hspace\labelsep \normalfont\ttfamily #1}% +% } +\begin{itemize} + \item[acccapheight] (integer denoting length) + \begin{smalldes} + \item[Description] The height of accented full capitals. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[address] (string) + \begin{smalldes} + \item[Description] Snailmail address put in \BibTeX-style file + header of automatically generated \enc files. No + \texttt{address} field is written unless the \texttt{address} + string is set. Quotes are not automatically inserted around + the \texttt{address} string. + \item[Set by] \etx files. + \item[Used by] The \etx-to-\enc converter. + \end{smalldes} + \item[afm-name] (string) + \begin{smalldes} + \item[Description] Name of source font. Internal variable. + \item[Set by] |\from|\dots\ commands. + \item[Used by] The |\transform|\-|font|, |\install|\-|font|, + |\install|\-|raw|\-|font|, and |\reglyph|\-|font| commands. + \end{smalldes} + \item[ascender] (integer denoting length) + \begin{smalldes} + \item[Description] The ascender height of the font. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this integer. + \item[Used by] Some \mtx and \etx files. + \end{smalldes} + \item[author] (string) + \begin{smalldes} + \item[Description] Author name(s) put in \BibTeX-style file + header of automatically generated \enc files. See the macro + |\ref_to_sourcefile| for more details. + \item[Set by] \etx files. + \item[Used by] The \etx-to-\enc converter. When not set, the + value \texttt{"See file }\meta{etx name}\texttt{"} is used + instead. + \end{smalldes} + \item[\cs{autoinstallfamily}] (command) + \begin{smalldes} + \item[Description] Command called by the font installation + commands, as + \begin{quote} + |\autoinstallfamily|\marg{encoding}\marg{family} + \end{quote} + when they are asked to install a font with a combination of + \meta{encoding} and \meta{family} that has not been seen + before (there was no explicit |\installfamily|). + \item[Set by] Explicit commands. Defaults to calling + |\installfamily|. + \item[Used by] Font installation commands. + \end{smalldes} + \item[axisheight] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{22}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[baselineskip] (integer denoting length) + \begin{smalldes} + \item[Description] + The font designer's recommendation for natural length of the + \TeX\ parameter |\baselineskip|. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[bigopspacing1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{9}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[bigopspacing2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{10}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[bigopspacing3] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{11}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[bigopspacing4] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{12}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[bigopspacing5] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{13}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[capheight] (integer denoting length) + \begin{smalldes} + \item[Description] The height of the font's full capitals. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this variable. + \item[Used by] Some \mtx and \etx files. + \end{smalldes} + \item[cmapname] (string) + \begin{smalldes} + \item[Description] The name given to the CMap generated from + an \etx file. + \item[Set by] \etx files. + \item[Used by] The \etx-to-CMap converter. When not set, the + value |fontinst-|\nolinebreak[1]\meta{cmap file name} is + used instead. + \end{smalldes} + \item[codingscheme] (string) + \begin{smalldes} + \item[Description] The codingscheme name. + \item[Set by] \etx files. + \item[Used by] The \cvpl writer. When not set, the + value \texttt{UNKNOWN} is used instead. + \end{smalldes} + \item[defaultrulethickness] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\xi\sb{8}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[delim1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{20}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[delim2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{21}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[denom1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{11}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[denom2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{12}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[descender] (integer denoting length) + \begin{smalldes} + \item[Description] The depth of lower case letters with descenders. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[descender\_neg] (integer denoting length) + \begin{smalldes} + \item[Description] The vertical position of the descender line + of the font, i.e., the negative of the font's descender depth. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this variable. + \item[Used by] Some \mtx and \etx files. + \end{smalldes} + \item[designsize] (dimension) + \begin{smalldes} + \item[Description] The design size of the font. + \item[Set by] \mtx files. The \cvpl-to-\mtx converter usually writes + |\setdim| commands for this variable. + \item[Used by] The \cvpl writer. The design size defaults to + $10\,\mathrm{pt}$ if this variable is not set. + \item[Note] The value of this variable has no effect on how + the font is declared to \LaTeX. + \end{smalldes} + \item[designunits] (dimension denoting a real number) + \begin{smalldes} + \item[Description] The design size of a font expressed in the + design unit used in a \cvpl file. + \item[Set by] \mtx files. The \cvpl-to-\mtx converter usually writes + |\setdim| commands for this variable. + \item[Used by] Nothing. If this variable is set, but to any + value other than $1\,\mathrm{pt}$, then some metrics are most + likely wrong. + \end{smalldes} + \item[digitwidth] (integer denoting length) + \begin{smalldes} + \item[Description] The median width of the digits in the font. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[email] (string) + \begin{smalldes} + \item[Description] Email address put in \BibTeX-style file + header of automatically generated \enc files. See the macro + |\ref_to_sourcefile| for more details. + \item[Set by] \etx files. + \item[Used by] The \etx-to-\enc converter. When not set, the + value \texttt{"See file }\meta{etx name}\texttt{"} is used + instead. + \end{smalldes} + \item[encodingname] (string) + \begin{smalldes} + \item[Description] The name by which the encoding in question is + made known to a Postscript interpreter. + \item[Set by] \etx files. + \item[Used by] The \etx-to-\enc converter. When not set, the + value |fontinst-|\nolinebreak[1]|autoenc-|\nolinebreak[1]% + \meta{etx name} is used instead. + \end{smalldes} + \item[etx-name] (string) + \begin{smalldes} + \item[Description] Name of \etx file. Internal variable in + |\transform|\-|font|. + \item[Set by] The |\reencodefont| command. + \item[Used by] The |\mtxtomtx| command. + \end{smalldes} + \item[extraspace] (integer denoting length) + \begin{smalldes} + \item[Description] + The natural width of extra interword glue at the end of a + sentence. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[fontdimen($n$)] (integer) + \begin{smalldes} + \item[Description] Family of semi-internal variables that store + the values to use for font dimension $n$. It is preferred + that the newer |\set|\-|font|\-|dimen| interface is used for + setting these values. + \item[Set by] \etx files. + \item[Used by] The \cvpl writer. + \end{smalldes} + \item[\cs{iftokeep}] (macro) + \begin{smalldes} + \item[Description] |\iftokeep|\,\#1\,|\then|, where \#1 will + be a \meta{number}, behaves like a switch and decides whether + a glyph is kept or not while reglyphing. + \item[Set by] Explicit commands. Defaults to + $$ + \mbox{\cs{iftokeep}\,\#1\,\cs{then}} \mapsto + \mbox{\cs{ifnum}\,\texttt{-1<}\#1} + $$ + \item[Used by] The |\reglyphfont| command. + \end{smalldes} + \item[interword] (integer denoting length) + \begin{smalldes} + \item[Description] The natural width of interword glue (spaces). + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[italicslant] (integer denoting factor) + \begin{smalldes} + \item[Description] The italic slant of a font. + \item[Set by] \mtx files generated from \afm or \cvpl files. \mtx + files generated by |\transformfont|. Locally in the \afm-to-\mtx + converter for possible use in |\uprightitalcorr| or + |\slanteditalcorr|. + \item[Used by] \mtx files (\texttt{latin.mtx} and the like). \etx + files (for determining \texttt{fontdimen(1)}). + \end{smalldes} + \item[killweight] (integer) + \begin{smalldes} + \item[Description] Weight for glyphs that are killed. + \item[Set by] Explicit commands. Defaults to $-10$ if not set. + \item[Used by] The |\kill|\-|glyph| command; indirectly + the |\reglyphfont| command. + \end{smalldes} + \item[letterspacing] (integer denoting length) + \begin{smalldes} + \item[Description] Extra width added to all glyphs of a font. + \item[Set by] \mtx (preferred) or \etx files. + \item[Used by] The \cvpl writer. Defaults to $0$ if not set. + \end{smalldes} + \item[maxdepth] (integer denoting length) + \begin{smalldes} + \item[Description] The maximal depth over all slots in the font. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[maxdepth\_neg] (integer denoting length) + \begin{smalldes} + \item[Description] The negative of the maximal depth of a glyph in + the font. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this variable. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[maxheight] (integer denoting length) + \begin{smalldes} + \item[Description] The maximal height of a glyph in the font. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this variable. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[minimumkern] (integer denoting length) + \begin{smalldes} + \item[Description] Kerns whose size in absolute value is less + than or equal to this variable are ignored. + \item[Set by] Command files or \mtx files. + \item[Used by] The \afm-to-\mtx converter and the \cvpl file + generator. When not set, the value $0$ is used instead. + \end{smalldes} + \item[monowidth] (flag integer) + \begin{smalldes} + \item[Description] Set if this font is monowidth, unset otherwise. + \item[Set by] \mtx files. The \afm-to-\mtx converter writes a + |\setint| command for this variable if the \afm specifies + \texttt{IsFixedPitch true}. + \item[Used by] Some \mtx files (\texttt{latin.mtx} and the like), + \etx files. + \end{smalldes} + \item[num1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{8}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[num2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{9}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[num3] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{10}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[quad] (integer denoting length) + \begin{smalldes} + \item[Description] + The quad width of the font, normally approximately equal to + the font size and\slash or the width of an `M'. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \item[Note] + It is the quad width in the symbol math font (family~|2|) + that \TeX\ uses as reference when translating |mu|s to + ordinary lengths. Hence that quad can be considered a math + font designer's scaling factor for |mu|. + \end{smalldes} + \item[PSfontsuffix] (string) + \begin{smalldes} + \item[Description] Suffix added to font names to form name of + file to download to include font. + \item[Set by] Explicit commands in mapmaking command + files. Defaults to `\texttt{.pfa}'. + \item[Used by] The map file fragments writer. + \end{smalldes} + \item[rawscale] (integer denoting factor) + \begin{smalldes} + \item[Description] Scaling factor applied to raw glyphs. + \item[Set by] The |\installfont| command (\texttt{scaled} + clauses in argument \#2). Unset for metric files listed + without a \texttt{scaled} clause. + \item[Used by] The |\set|\-|raw|\-|glyph|, + |\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, + |\set|\-|scaled|\-|not|\-|glyph|, |\set|\-|kern|, and + |\reset|\-|kern| commands. + \end{smalldes} + \item[renameweight] (integer) + \begin{smalldes} + \item[Description] Weight for glyphs that are renamed. + \item[Set by] Explicit commands. Defaults to $1$ if not set. + \item[Used by] The |\rename|\-|glyph| command; indirectly + the |\reglyphfont| command. + \end{smalldes} + \item[requireglyphs] (flag integer) + \begin{smalldes} + \item[Description] Set if warnings are to be generated for + glyphs listed in \etx files but not present in the glyph + base. + \item[Set by] Explicit commands. By default not set. + \item[Used by] The \cvpl file generator. + \end{smalldes} + \item[rightboundary] (string) + \begin{smalldes} + \item[Description] The name of a glyph with the property that + kerns on the left may be intended as right word boundary kerns. + \item[Set by] \mtx files. The \cvpl-to-\mtx converter can write + |\setstr| commands for this variable. + \item[Used by] Some \mtx files. + \end{smalldes} + \item[shrinkword] (integer denoting length) + \begin{smalldes} + \item[Description] + The (finite) shrink component of interword glue. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[slant-scale] (integer denoting factor) + \begin{smalldes} + \item[Description] Factor to slant by. + Internal variable in |\transform|\-|font|. + \item[Set by] The |\slant|\-|font|, |\xscale|\-|font|, and + |\scale|\-|font| commands. + \item[Used by] The |\mtxtomtx| command. + \end{smalldes} + \item[\cs{SlantAmount}] (macro expanding to an integer expression) + \begin{smalldes} + \item[Description] Slant factor used for faking oblique shape. + \item[Set by] Explicit commands. Defaults to \texttt{167}. + \item[Used by] The |\latinfamily| command. + \end{smalldes} + \item[\cs{slanteditalcorr}] + (macro expanding to an integer expression) + \begin{smalldes} + \item[Description] The integer expression used to calculate a + guess for the italic correction of glyphs in a font with + positive slant. It has the syntax + \begin{quote} + \cs{slanteditalcorr}\marg{width}\marg{left}\marg{right}% + \marg{bottom}\marg{top} + \end{quote} + where \meta{width} is the glyph's advance width, and the + remaining arguments are coordinates of sides of the glyph's + bounding box. The \texttt{italicslant} integer provides the + italic slant of the font. + \item[Set by] Explicit commands in \textsf{fontinst} command + files. Defaults to + $$ + \max\{0, \mathit{right}-\mathit{width}\}. + $$ + \item[Used by] The \afm-to-\mtx converter. + \end{smalldes} + \item[stretchword] (integer denoting length) + \begin{smalldes} + \item[Description] + The (finite) stretch component of interword glue. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[sub1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{16}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[sub2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{17}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[subdrop] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{19}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[sup1] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{13}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[sup2] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{14}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[sup3] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{15}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[supdrop] (integer denoting length) + \begin{smalldes} + \item[Description] Math formula parameter $\sigma\sb{18}$. + \item[Set by] \mtx files. + \item[Used by] Some \etx and \mtx files. + \end{smalldes} + \item[TFMfileprefix] (string) + \begin{smalldes} + \item[Description] Prefix (typically a path) added to names of + TFM files. + \item[Set by] Explicit commands in mapmaking command + files. By default not set, which is equivalent to being empty. + \item[Used by] The \texttt{pltotf} ``map file fragments writer''. + \end{smalldes} + \item[underlinethickness] (integer denoting length) + \begin{smalldes} + \item[Description] The recommended thickness of an underlining + rule. + \item[Set by] \mtx files. The \afm-to-\mtx converter usually writes + |\setint| commands for this variable. + \item[Used by] Some \mtx files (\texttt{latin.mtx} and the like). + \end{smalldes} + \item[\cs{uprightitalcorr}] + (macro expanding to an integer expression) + \begin{smalldes} + \item[Description] The integer expression used to calculate a + guess for the italic correction of glyphs in a font with + non-positive slant. It has the syntax + \begin{quote} + \cs{uprightitalcorr}\marg{width}\marg{left}\marg{right}% + \marg{bottom}\marg{top} + \end{quote} + where \meta{width} is the glyph's advance width, and the + remaining arguments are coordinates of sides of the glyph's + bounding box. The \texttt{italicslant} integer provides the + italic slant of the font. + \item[Set by] Explicit commands in \textsf{fontinst} command + files. Defaults to $0$. + \item[Used by] The \afm-to-\mtx converter. + \end{smalldes} + \item[version] (string) + \begin{smalldes} + \item[Description] Version number put in \BibTeX-style file + header of automatically generated \enc files. See the macro + |\ref_to_sourcefile| for more details. + \item[Set by] \etx files. + \item[Used by] The \etx-to-\enc converter. When not set, the + value \texttt{"See file }\meta{etx name}\texttt{"} is used + instead. + \end{smalldes} + \item[verticalstem] (integer denoting length) + \begin{smalldes} + \item[Description] The dominant width of vertical stems + (usually the width of stems of lower case letters). + \item[Set by] \mtx files. The \afm-to-\mtx converter writes + |\setint| commands for this variable if the \afm file specifies + \texttt{StdVW}. + \item[Used by] Currently nothing. + \end{smalldes} + \item[\texttt{warningspecials}] (switch) + \begin{smalldes} + \item[Description] Controls whether |\glyphwarning| commands + will generate \vpl \texttt{SPECIAL}s. Defaults to `true'. + \item[Set by] Explicit commands (|\warningspecialstrue| and + |\warningspecialsfalse|). + \item[Used by] The \cvpl file generator. + \end{smalldes} + \item[x-scale] (integer denoting factor) + \begin{smalldes} + \item[Description] Horizontal scaling factor. + Internal variable in |\transform|\-|font|. + \item[Set by] The |\xscale|\-|font| and |\scale|\-|font| commands. + \item[Used by] The |\mtxtomtx| command. + \end{smalldes} + \item[xheight] (integer denoting length) + \begin{smalldes} + \item[Description] The x-height of the font. + \item[Set by] \mtx files. The \afm-to-\mtx and \cvpl-to-\mtx + converters usually write |\setint| commands for this variable. + \item[Used by] \mtx files, and \etx files (for determining + \texttt{fontdimen(5)}). + \end{smalldes} + \item[y-scale] (integer denoting factor) + \begin{smalldes} + \item[Description] Vertical scaling factor. + Internal variable in |\transform|\-|font|. + \item[Set by] The |\yscale|\-|font| and |\scale|\-|font| commands. + \item[Used by] The |\mtxtomtx| command. + \end{smalldes} + \item[\meta{\rmfamily glyph}-spacing] (integer denoting length) + \begin{smalldes} + \item[Description] Glyph-specific override for + \texttt{letterspacing}; extra width added to the glyph + \meta{glyph} as part of the process of writing a \vpl + file. + \item[Set by] \etx or \mtx files. + \item[Used by] The \cvpl writer. Defaults to $0$ if not set. + \end{smalldes} +\end{itemize} +% \end{list} +Besides these, the |\latinfamily| command provides a whole range of +helper macros (|\latin_weights|, |\latin_widths|, |\latin_shapes|, +etc.) that are often used somewhat like variables. That subject +does however deserve to be treated separately. + + + +\section{Customisation} + +The \fontinst package reads a file \texttt{fontinst.rc} if it +exists. This can contain your own customisations. The catcodes that +are in force when this file is read are the same as those selected by +|\fontinstcc|. + +Similarly \texttt{finstmsc.sty} reads \texttt{finstmsc.rc} and the +\fontdoc package reads \texttt{fontdoc.cfg}. + +You can create a \texttt{fontinst} format by running ini\TeX{} on +\texttt{fontinst.sty} then saying \verb|\dump|. + + +\section{Notes on features new with v\,1.9} + +The following notes are copied from \texttt{fisource.tex}; they were +written to explain new \fontinst features to old \fontinst users. + + +\subsection{Metric packages} + +\Fontinst has traditionally come with a collection of \mtx +files that complement the \mtx files generated from base font metrics, +in that they build glyphs that may be missing from the base fonts or +in some other way needs to be improved. The most well-known of these +is the \texttt{latin.mtx} file; other examples include +\texttt{textcomp.mtx}, \texttt{mathit.mtx}, and \texttt{latinsc.mtx}. +A problem with these is however that they cannot produce optimal +results for all fonts simply because there are irregular differences +in how fonts are set up by the foundries. Most glyphs come out all right, +but there are usually a few for which the parameters used are more or +less wrong. Therefore most high quality font installations are made +with modified versions of these files, where the parameters have been +tuned to the specific font design. + +Modifying in particular \texttt{latin.mtx} is however not an entirely +easy task, because this is a rather large file (with plenty of +archaic pieces of code in curious places). Doing it once is no big +problem, but if one has to do it several times (maybe because some +errors are discovered in the original \texttt{latin.mtx}) then it is +probably no fun anymore. Furthermore, if one has two or three +modified copies of this file because one has made high quality +installations of that many different fonts then even a trivial bugfix +might start to feel like entirely too much work. + +If one has to make modifications then it is usually easier to deal +with several small files (many of which can be used unchanged) than +one big file. Thus it would be better if these big files were split up +into several smaller ones. +The main problem with splitting up something like \texttt{latin.mtx} +is that there are some commands which are defined at the top and +which are then used in almost all sections of the file. One must make +certain that these commands are always loaded, which makes the metric +files somewhat harder to use (especially if the one who tries to use +them is not the one who wrote them). + +One strategy is to include all definitions needed for a metric file in +it. This has the slight disadvantage that the commands will have to be +defined several times. What is worse however, is that the command +definitions will appear in several files, so if one finds a bug in one +of them, one cannot simply correct this bug in one place. As the number +of files can soon become quite large, correcting such bugs can become +a boring procedure indeed. + +Another strategy is to put all the command definitions in one file +and then explicitly include it in the \meta{file-list} argument of +|\installfont|. This eliminates the repeated bug fixing problem, but +requires the user to do something that the computer can actually do +just as well. + +A third strategy is to put the command definitions in one or several +files and then in each metric file the user explicitly mentions load +the command definitions needed for that particular file. Metric +packages uses an improved version of this strategy, since they also +make it possible for \fontinst to remember which packages (i.e., sets +of command definitions) that have already been loaded, so that they +are not unnecessarily loaded again. The \texttt{newlatin.mtx} file is +an alternative to \texttt{latin.mtx} that implements this strategy. +Most of the actual code is located in the following metric packages: +\begin{center} +\begin{tabular}{l p{0.7\linewidth}} + \texttt{ltcmds.mtx}& Defines some common commands used by the other + files.\\ + \texttt{llbuild.mtx}& Builds the latin lower case alphabet + (unaccented letters are `unfakable', the rest are constructed if + not present in the base fonts).\\ + \texttt{lubuild.mtx}& Builds the latin upper case alphabet.\\ + \texttt{lsbuild.mtx}& Builds accented letters in the latin + smallcaps alphabet, but only if there are unaccented letters to + build them from in the base fonts.\\ + \texttt{lsfake.mtx}& Fakes a latin smallcaps alphabet by shrinking + the upper case alphabet, but only if the glyph had not already + been manufactured.\\ + \texttt{lsmisc.mtx}& Make some miscellaneous smallcaps glyphs + (mostly ``smallcaps f-ligatures'').\\ + \texttt{ltpunct.mtx}& Makes digits, punctuation marks, and other + symbols (mostly by marking as ``unfakable''). +\end{tabular} +\end{center} +\noindent All of these are easy to use as components of equivalents +of a modified \texttt{latin.mtx} files, and all dependencies of one +package upon another are handled via explicit |\usemtxpackage| +commands. + +% For information on the syntax etcetera of commands related to metric +% packages, see Section~\ref{Sec:Metric files}. + + +\subsection{Word boundary ligatures and kerns} + +One of the new features added in \TeX~3 was that of ligatures and +kerns with word boundaries. \Fontinst has had an interface +for making such ligatures and kerns, but it has been completely +redesigned in v\,1.9 and the old interface (setting the integer +|boundarychar|) is no longer recognized by \fontinst. Files +which use the old interface can still be processed with +\texttt{cfntinst.sty}, though. + +Before considering the new commands, it is suitable to make a +distinction between proper glyphs and pseudoglyphs. A proper glyph has +been set using one of the commands |\setrawglyph|, |\setglyph|, and +|\resetglyph|. A pseudoglyph is any name used in the context of a +glyph name which does not denote a proper glyph. If a pseudoglyph +|g-not| was set using the |\setnotglyph| command, then +|\ifisglyph{g-not}\then| will evaluate to true, but something can be +a pseudoglyph even if an |\ifisglyph| test evaluates to false. The +interesting point about pseudoglyphs when considering word boundaries +however, is that a pseudoglyph can have ligatures and kerns. + +Kerns and ligatures at the left word boundary (beginning of word) are +specified using the commands |\setleftboundary| and +|\endsetleftboundary|, which are syntactically identical to +|\setslot| and |\endsetslot| respectively. One important difference is +however that the argument to |\setslot| must be a proper glyph, while +the argument to |\setleftboundary| may be any glyph, hence any +pseudoglyph will do just fine. + +|\ligature| commands between |\setleftboundary| and +|\endsetleftboundary| will generate beginning of word ligatures. Kerns +on the right of the glyph specified in |\setleftboundary| will become +beginning of word kerns. + +Kerns and ligatures at the right word boundary (end of word) are +trickier, due to the asymmetrical nature of the ligkern table in a \pl +file. What a font can do is to specify that the right word boundary, +for purposes of kerning and ligatures, should be interpreted as +character $n$. By including a kern or ligature with character $n$ on +the right, that kern or ligature will be used at the end of a word, +but it will also be used each time the next character is character +$n$. Because of this, one usually wants the slot $n$, which the right +word boundary is interpreted as being, to be empty whenever the +encoding allows this. + +The command +\begin{quote} + |\setrightboundary|\marg{glyph} +\end{quote} +will mark the current slot as used to denote the right word boundary, +and leave the slot empty, increasing the current slot number by one +just like a |\setslot| \textellipsis\ |\endsetslot| block does. Kerns on +the left of \meta{glyph} will be end of word kerns and |\ligature| +commands with \meta{glyph} as the second argument will be for the end +of a word. + +The command +\begin{quote} + |\makerightboundary|\marg{glyph} +\end{quote} +is similar to |\setrightboundary|, but it is a slot command which may +only be used between a |\setslot| and the matching |\endsetslot|. Like +|\setrightboundary|, it marks the current slot as used to denote the +right word boundary, but the glyph specified in the enclosing |\setslot| +will be written to that slot. Ligatures for the glyph specified by the +|\setslot| and ligatures for the glyph specified by the +|\makerightboundary| will both be for this single slot. Kerns on the +right of the |\setslot| glyph and the |\makerightboundary| glyph will +similarly both be for this single slot. The idea is that the |\setslot| +glyph should be used when making a kern or ligature for that glyph, +while the |\makerightboundary| glyph should be used when making a kern +or ligature for the end of a word. \Fontinst will warn you if +these two uses of the slot directly contradict each other. + + +\subsection{Changing the names of glyphs} +\label{Ssec:Des:Reglyph} + +Sometimes, primarily when making a virtual font from more than one raw +font and two of the raw fonts contain different glyphs with the same +name, it becomes necessary to change the names of some glyphs to make +some sense out of it. The main source of this kind of trouble is the +``caps and small caps'' (SC) and ``oldstyle figures'' (OsF) fonts +within many commercial font families. The typical problem is that what +is typographically different glyphs---such as the lowercase `a' +(\texttt{a}, for \fontinst) and the smallcaps `\textsc{a}' +(\texttt{Asmall}, for \fontinst)---are given the same name by +the foundry. + +One way to get round this is to say for example +\begin{quote} + |\setglyph{Asmall} \glyph{a}{1000} \endsetglyph|\\ + |\setleftrightkerning{Asmall}{a}{1000}|\\ + |\unsetglyph{a}|\\ + |\noleftrightkerning{a}| +\end{quote} +and continuing like that for all the duplicate glyph names. This is +however a rather prolix method and if the number of glyphs is large +then it is usually simpler to use the |\reglyphfont| command. + +To reglyph one or several fonts, one writes +\begin{quote} + |\reglyphfonts|\\ + \vadjust{}\quad \meta{reglyphing commands}\\ + |\endreglyphfonts| +\end{quote} +There are two types of reglyphing commands: the |\reglyphfont| +command, and the commands that modify what |\reglyphfont| will do to +the fonts it operates on. The syntax of |\reglyphfont| is +\begin{quote} + |\reglyphfont|\marg{destination font}\marg{source font} +\end{quote} +The \meta{source font} font here is the name (suffix not included, of +course) of the font metric file one wants to change the glyph names in. +This font metric file can be in any of the formats \mtx, \pl, \afm, and +\vpl, and it will be converted to \mtx format if it isn't already in +that format (this happens just as for files listed in the second +argument of |\installfont|). \meta{destination font} (which must be +different from \meta{source font}) will be taken as the name for a +new \texttt{.mtx} file that will be generated. The destination font +can differ from the source font only in two ways: the names of some +glyphs in the source font might be changed, and some of the commands +from the source font might not have been copied to the destination +font. To what extent the fonts are different is determined by what +modifying commands have been executed; when no modifying commands +have been executed, the source and destination font are equal. + +The modifying reglyphing commands are +\begin{quote} + |\renameglyph|\marg{to}\marg{from}\\ + |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ + |\killglyph|\marg{glyph}\\ + |\killglyphweighted|\marg{glyph}\marg{weight}\\ + |\offmtxcommand|\marg{command}\\ + |\onmtxcommand|\marg{command} +\end{quote} +|\renameglyph| simply declares that occurrences of the glyph name +\meta{from} should be replaced by the glyph name \meta{to}. To each +glyph name is also assigned a \emph{weight}, which is used by a +mechanism which conditions copying of commands from the source font to +the destination font by the set of glyphs that command mentions. The +details of this mechanism are however somewhat tricky, so those +interested in the full generality should read the comments in the +source of \fontinst. Here it needs only be noted that if one applies +|\killglyph| to a glyph name, then (under most circumstances) commands +that refer to that glyph name will not be copied to the destination +font. + +|\offmtxcommand| and |\onmtxcommand| also control whether commands are +copied to the destination font, but they look at the actual command +rather than the glyphs it refers to. For example, after the command +\begin{quote} + |\offmtxcommand{\setkern}| +\end{quote} +no |\setkern| commands will be copied. By using |\offmtxcommand|, it +is possible to achieve effects similar to those of the files +\texttt{kernoff.mtx} and \texttt{glyphoff.mtx}---the difference is +that with |\offmtxcommand|, it happens at an earlier stage of the font +generation. As expected, |\onmtxcommand| undoes the effect of +|\offmtxcommand|. + +A special rule pertains to the |\set|\-|raw|\-|glyph|, +|\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, and +|\set|\-|scaled|\-|not|\-|glyph| commands, since |\transformfont| +doesn't care what something was in the source font when it generates +the transformed font. To turn these commands off while reglyphing, +you use |\offmtx|\-|command| on |\set|\-|scaled|\-|raw|\-|glyph|. + +The effects of modifying reglyphing commands are delimited by +|\reglyphfonts| and |\endreglyphfonts|, which starts and ends a group +respectively. + +As we expect the most common reglyphing operation will be to go from SC +glyph names to expert glyph names, there is a file \texttt{csc2x.tex} +in the \fontinst distribution which contains the modifying +reglyphing commands needed for setting up that conversion. Thus you +can write for example +\begin{quote} + |\reglyphfonts|\\ + | \input csc2x|\\ + | \reglyphfont{padrcx8r}{padrc8r}|\\ + | \reglyphfont{padscx8r}{padsc8r}|\\ + |\endreglyphfonts| +\end{quote} +to alter the glyph names in the SC fonts in the Adobe Garamond +(\texttt{pad}) family. +Note that the names of the destination fonts here really are rather +arbitrary, since they will only exist as \texttt{.mtx} files, and +thus only need to work within your local file system. In particular, +all the |\setrawglyph| commands in the destination font files still +refer to the source font, so it is that font which the drivers need +to know about. + + +\subsection{Making map file fragments} +\label{Ssec:MapFragments} + +A \emph{map file fragment} is the lines\footnote{Not in general an +entire map file, hence the word \emph{fragment}.} of a map file that +the corresponding driver would need for handling some set of fonts. +When told to, \fontinst can (in a fairly automatic way) create +the map file fragment which is needed for the set of raw fonts +\fontinst has (i) installed directly (using |\installrawfont|) +or (ii) used as a base font for some installed virtual font (generated +by |\installfont|). \Fontinst does not support the map file +syntaxes of every existing driver, but the system is designed to be +extendable and contributions that extend its capabilities are welcome. +Nor can \fontinst examine your \TeX\ system and +determine every piece of information needed to make the correct map +file fragments, but you can tell it roughly how your installation +looks, it can make guesses which work most of the time, and you can +specify most things explicitly if the guesses turn out to be wrong. +Should the available options for configuring the process turn out to +be inadequate for your needs, then please write to the +\fontinst mailing list about this---there is probably a way +to improve the system so that your needs can be met. + +Now what does one have to do to use this map file fragment writer, +then? First you need to tell \fontinst to record the +information the map file fragment writer needs. You do this by giving +the command +\begin{quote} + |\recordtransforms{whatever.tex}| +\end{quote} +at the beginning of the run. Here \texttt{whatever.tex} is the name of +a file that will be created, so you can use some other name if you +like. After that you do all the calls to |\transform|\-|font|, +|\install|\-|font|, |\install|\-|raw|\-|font|, |\latin|\-|family|, +etc.\ you need to make the fonts you want. When you're done, you give +the command +\begin{quote} + |\endrecordtransforms| +\end{quote} +and end the run (say |\bye|). The file \texttt{whatever.tex} will now +contain the information about which fonts were used and what needs to +be done with them. + +The second step is to actually run the map file fragment writer. +Observe that it is located in the file \texttt{finstmsc.sty}, not +\texttt{fontinst.sty}! The commands you need to give it can be so few +that you can type them in at \TeX's \texttt{*} prompt, but if you are +writing a command file then it should typically have the following +structure (comments not necessary, of course): +\begin{center} + \begin{tabular}{ll} + |\input finstmsc.sty|& |%| Input command definitions\\ + \meta{general settings} & |%| See below\\ + |\adddriver|\marg{driver name}\marg{output file}& + |%| Open output file\\ + |\input whatever.tex|& |%| Writes to output file(s)\\ + |\donedrivers|& |%| Close output file(s), tidy up\\ + |\bye|& |%| Quit + \end{tabular} +\end{center} +The |\adddriver| command gives the order ``write map file entries for +the \meta{driver name} \dvi driver to the file \meta{output file}.'' The +plan is that it should be possible to use the name of just about any +major driver (\texttt{dvips}, \texttt{xdvi},\footnote{Or +does that use the same map file as \texttt{dvips}? I heard somewhere +that it did. /LH} \texttt{pdftex},\footnote{pdf\TeX\ can read +the map files generated for \texttt{dvips}, but a separate driver is +desirable because the formats are not completely identical.} +\texttt{OzTeX}, etc.) here and get suitable map file entries for that +driver as output, but for the moment only the \texttt{dvips} and +\texttt{dvipdfm}\footnote{Whose support I made very much to illustrate +that you \emph{don't} have to be a big and ancient driver like +\texttt{dvips} to have supporting code put into \fontinst. +(The fact that I just happened to have printed out the documentation and +that is was easy to read also helped, of course.) Note, however, that +there won't be any support for a driver unless someone sits down and +writes the code for it! Don't assume I will. /LH} drivers are supported. + +You may also use \texttt{debug} or \texttt{pltotf} for \meta{driver name}. +The \texttt{debug} ``\dvi driver'' file simply contains all the available +information about each font (hence it should come handy for debugging +code writing entries for real drivers) in a format that should be easy +to interpret for a human. It could be the right choice if you're going +to write the map file manually, as the combined effects of several +font transformations are not always easy to compute manually. The +file generated for the \texttt{pltotf} ``driver'' is actually a shell +script consisting of a sequence of \pltotf commands. These commands +perform the \pl to \tfm conversion for precisely those fonts that are +actually needed (\fontinst usually generates \pl files also for a +number of fonts at intermediate stages of transformation, and many of +these need not be converted to \tfm files). The \texttt{TFMfileprefix} +string can be used to add a directory path to the \tfm file names, +perhaps saving the step of moving them to their proper location later. + +The file \texttt{whatever.tex} in the above example contains the +commands (|\make|\-|map|\-|entry| commands) that actually cause entries +to be written to the output file. It also contains a number of +|\store|\-|map|\-|data| commands---these describe how some given font +was made. If some metric file you have used contains +|\set|\-|raw|\-|glyph| commands that were not automatically generated +by \fontinst, then there might not be a |\store|\-|map|\-|data| for +the font they refer to in \texttt{whatever.tex}, so you will have to +include such a command yourself somewhere. This can for example be done +in the \meta{general settings} part of the above example file. + +Another class of things that will typically appear in the +\meta{general settings} part above is commands that will inform the +routines actually writing output about your \TeX\ system, about the set +of fonts you are using on this run, or about something else that might +be useful. Some such commands are of a general nature and affect what +assumptions \fontinst will make in certain conditions when no +specific information is available. For the moment there commands are: +\begin{description} + \item[\cs{AssumeMetafont}] Assume all fonts with \pl metrics are + bitmaps generated by Metafont, and therefore make no entries for + them. + \item[\cs{AssumeAMSBSYY}] Assume all fonts with \pl metrics have their + \TeX\ names in all upper case as postscript names---just like the + Computer Modern fonts in the AMS\slash Blue~Sky\slash Y\&Y + distribution. + \item[\cs{AssumeBaKoMa}] Assume all fonts with \pl metrics have their + \TeX\ names in all lower case as postscript names---just like the + Computer Modern fonts in the BaKoMa distribution. +\end{description} +Otherwise the default action of the routine for finding out the +postscript name of a font simply is to observe that it hasn't got a clue +about what the right value is when the metrics were taken from a \pl +file, and therefore it writes `\texttt{??????}' for the postscript name. +\begin{description} + \item[\cs{AssumeLWFN}] Assume postscript fonts for which nothing + else has been specified are stored in files which are named + according to the \mbox{MacOS} scheme for + \texttt{LWFN}s.%\footnote{LaserWriter FoNt} +\end{description} +Otherwise the default action is to use the name of the \afm or \pl from +which the metrics were originally taken, and add the file suffix stored +in the string \texttt{PSfontsuffix}. The default value of this string +is \texttt{.pfa}, but it can be changed using |\resetstr|. + +If neither the default nor the LWFN scheme produce correct results +then you may use the more specific |\specifypsfont| command, which +describes exactly which file (or files, if any) a given font is stored +in. The syntax of this command is +\begin{quote} + |\specifypsfont|\marg{PS font name}\marg{actions} +\end{quote} +where the \meta{actions} is a sequence of ``action commands''. +Currently the only such command is +\begin{quote} + |\download|\marg{file} +\end{quote} +which instructs the map file writer to include in any entry using +that PS font and ``instruction'' that the specified file should be +downloaded. Some examples are +\begin{verbatim} + \specifypsfont{Times-Roman}{} + \specifypsfont{Shareware-Cyrillic-Regular}{\download{fcyr.gsf}} + \specifypsfont{zmnl8ac6}{% + \download{MinionMM.pfb}\download{zmnl8ac6.pro}% + } +\end{verbatim} +Many \dvi drivers (for example \dvips) have more than one style of +font downloading (e.g., partial and full downloading). This interface +could be extended to control also such finer details (for example by +adding a |\fulldownload| command to force full download of a font), +but requests for this has so far been scarce. + +Finally, there is the |\declarepsencoding| command which is used to +link \etx files to postscript encodings. If no postscript encoding has +been linked to a given \etx file then \fontinst will +automatically create a postscript encoding (\texttt{.enc}) file for +that encoding, and use this file for all reencoding commands. +The \texttt{8r} encoding is predeclared, and it doesn't +matter if an encoding is undeclared if you never use it to reencode +fonts, but there is potentially a problem with not having declared +encodings you have installed and use for reencoding, as you may then +find yourself having two files with identical names that define +encodings that do not have the same name (as far as postscript is +concerned). + + + +\subsection{Tuning accent positions---an application of loops} + +The accent placements made by \texttt{latin.mtx} certainly aren't +perfect for all fonts, and the only way to find out where they should +be put is through trying in text the accented letters you get for a +couple of values for the position parameter and deciding which one +works best. Since to try one parameter value you need to (i) edit it +into an \mtx file, (ii) run \fontinst, (iii) run +\vptovf, (iv) run \TeX\ on some test text, and (v) print that +text, trying one parameter value can take annoyingly much time. +Repeating the same procedure ten times to test ten values is not +something one does without being bored (unless one scripts it, of +course), but it is possible to try ten parameter values in a single +virtual font, and without doing very much typing. + +Say you're not too happy with how \texttt{latin.mtx} positions the +accent in the \texttt{ohungarumlaut} glyph: +\begin{quote} + |\setglyph{ohungarumlaut}|\\ + | \topaccent{o}{hungarumlaut}{500}|\\ + |\endsetglyph| +\end{quote} +The |500| is the horizontal position (in thousandths of the width of +the \texttt{o}) that the centre of \texttt{hungarumlaut} in the glyph +constructed will have, so that is the position parameter value that +you want to change. Create an \mtx file containing the code +\begin{quote} + |\for(pos){250}{750}{50}|\\ + | \setglyph{ohungarumlaut\strint{pos}}|\\ + | \topaccent{o}{hungarumlaut}{\int{pos}}|\\ + | \endsetglyph|\\ + | \setleftrightkerning{ohungarumlaut\strint{pos}}|\\ + | {ohungarumlaut}{1000}|\\ + |\endfor(pos)| +\end{quote} +This will set eleven glyphs \texttt{ohungarumlaut250}, +\texttt{ohungarumlaut300}, \texttt{ohungarumlaut350}, \textellipsis\,, +\texttt{ohungarumlaut750}, each being an Hungarianly umlauted `o' +(i.e., an `\H{o}') but all having that umlaut in slightly different +positions. In order to put them in a font, you also need to make an +encoding that contains them. Therefore create an \etx file which +contains the code +\begin{quote} + |\relax\encoding|\\ + |\nextslot{"C0}|\\ + |\for(pos){250}{750}{50}|\\ + | \setslot{ohungarumlaut\strint{pos}}|\\ + | \endsetslot|\\ + |\endfor(pos)|\\ + |\endencoding| +\end{quote} +The command for installing this experiment font would be something like +\begin{quote} + |\installfont|\marg{some name}|{|\meta{the normal list of metrics}% + |,|\penalty0\meta{the new \mtx}|}|\penalty0 + |{ot1,|\meta{the new \etx}|}|\penalty0|{OT1}|\textellipsis +\end{quote} +The reason for including \texttt{ot1} in the third argument above is +that you'll need letters other than `\H{o}' against which you can +compare the experimental glyphs. It would not have been possible to +use \texttt{t1} instead of \texttt{ot1} (even though that has more +Hungarian letters) since that would set all slots in the font and +leave none for these experimental \texttt{ohungarumlaut}s. + +It is even possible to use a loop for making the test text. The +\LaTeX\ macros +\begin{verbatim} +\newcount\slotcount +\newcommand\testtext[3]{% + \slotcount=#1\relax + \begin{description}% + \loop\item[\the\slotcount]#3% + \ifnum #2>>\slotcount \advance \slotcount 1 \repeat + \end{description}% +} +\DeclareTextCompositeCommand{\H}{OT1}{o}{\char\slotcount} +\end{verbatim} +will let you write +\begin{quote} + |\testtext|\marg{first}\marg{last}\marg{text} +\end{quote} +to get the text \meta{text} typeset once for each slot from +\meta{first} to \meta{last} inclusive, with |\H{o}| ranging through the +glyphs in this interval. Thus in this case +|\testtext|\penalty\hyphenpenalty|{"C0}|\penalty\hyphenpenalty|{"CA}|% +\penalty\hyphenpenalty|{Erd\H{o}s}| would be a trivial test. + + +\subsection{Font installation commands} +\label{Ssec:FontInstCmds} + +The |\installfont|, |\installrawfont|, and |\installfontas| commands +have the respective syntaxes +\begin{isyntax} + |\installfont|\marg{font-name}\marg{metrics}\marg{etx-list}\penalty0 + \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ + |\installrawfont|\marg{font-name}\marg{metrics}\marg{etx-list}% + \penalty0 + \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ + |\installfontas|\marg{font-name}\penalty0\marg{encoding}% + \marg{family}\marg{series}\marg{shape}\marg{size} +\end{isyntax} +The \meta{font-name} argument and the last five arguments are common +to all these commands. The first argument is the name of a \TeX\ font +to install. The last five arguments are the NFSS attributes under which +that font will be declared to \LaTeX---encoding, family, series, shape, +and size. It is worth observing that encoding names are usually in +upper case, whereas the family, series, and shape are usually in lower +case. The size argument is either a shorthand (declared using +|\declaresize|) for a particular font +size (or range of font sizes), or an explicit list of font sizes or +ranges of sizes, which is copied directly to the font declaration. +The most common case is to let the size argument be empty, as that is +declared as a shorthand for ``any size''. + +The |\installfontas| command does not itself create the font, it just +makes a note that the specified font declaration should be written to +the proper FD file at |\end|\-|install|\-|fonts|. The +|\install|\-|font| and |\install|\-|raw|\-|font| commands do however +produce the font, in the sense that they write a \vpl and \pl +respectively file for the font. It depends solely on the \meta{metrics} +and \meta{etx-list} arguments what this font will contain. Many +features of these arguments are new with \fontinst v\,1.9; +therefore the complete syntaxes are described below. + +Both arguments are comma-separated lists of basically file names (not +including an extension). The files listed in the \meta{metrics} are +font metric files which together build up a \emph{glyph base} +(definitions of glyphs and metrics related to one or several glyphs), +whereas the files listed in the \meta{etx-list} are encoding definition +files that select a subset of the glyph base for turning into a +\TeX\ font. The font metrics can be in either of the four formats +\mtx, \pl, \afm, and \vpl, which are considered in that order. If the +metrics are not originally in \mtx format then they will be converted +to this format (a new file will be created) before they are used. +The encoding definitions must be in \etx format. The files actually +read will have a suffix \texttt{.mtx}, \texttt{.pl}, \texttt{.afm}, +\texttt{.vpl}, or \texttt{.etx} appended to the name given, depending +on which format is expected. + +Within each element of the comma-separated list, the actual file name +is followed by zero or more \emph{modifier clause}s. A \meta{modifier +clause} consists of a \emph{keyword} followed by some number (usually +one) of \emph{arguments}, separated by spaces. The whole thing looks +a lot like the \meta{rule specifications} of e.g.\ the |\vrule| +command, but here the spaces are mandatory. The currently defined +\meta{modifier clause}s are +\begin{description} + \item[\mdseries\textvisiblespace\texttt{option}\textvisiblespace + \meta{string}] + Available for metric and encoding files. This adds \meta{string} + to the list of options for this file, which may affect what code + the file executes. The file can then test, using the |\ifoption| + command, whether a specific string is one of the options it was + given. + \item[\mdseries\textvisiblespace\texttt{scaled}\textvisiblespace + \meta{factor}] + Available for metric files. Causes the \texttt{rawscale} integer + variable to be set to the \meta{factor} (an integer expression) + while the file is being read. This scales glyphs and kerns that + are added to the glyph base by the \meta{factor}. + \item[\mdseries\textvisiblespace\texttt{suffix}\textvisiblespace + \meta{suffix}] + Available for metric files. Causes \meta{suffix} to be appended + to every glyph name appearing in a glyph or kern that file adds + to the glyph base. Thus ``\texttt{suffix /2}'' effectively + changes a + \begin{quote} + |\setrawglyph{a}|\dots + \end{quote} + to a + \begin{quote} + |\setrawglyph{a/2}|\dots + \end{quote} + \item[\mdseries\textvisiblespace\texttt{encoding}\textvisiblespace + \meta{etx-name}] + Available for metric files, and forces \fontinst to + only consider the \pl and \vpl formats for this font. + As these file formats do not contain glyph names, an \etx file + is used to assign glyph names to the slots in the font. + This \etx file is usually selected according to the + \texttt{CODINGSCHEME} property of the \pl or \vpl (using the + correspondences set up via the |\declare|\-|encoding| command), + but that information is not always as one would want it (there + are even fonts for which it is quite wrong). An \texttt{encoding} + clause bypasses this automatic mechanism, so that the file + \meta{etx-name}\texttt{.etx} is used instead. + +% % The following is no longer true as of v1.926: +% \textbf{Note:} The first time that a file in PL or VPL format is +% used in a \meta{metrics} argument, a corresponding \mtx file is +% generated. This means that if the same file reference is used +% another time then the reference will be to the \mtx file, not to +% the original PL or VPL, and thus \texttt{encoding} clauses on +% subsequent uses will have no effect. Each font only has one +% encoding, so it usually makes no sense to switch the \etx file +% used to interpret a font, but since \mtx files are not +% automatically deleted between runs there is a risk that this +% takes away the intended effect of an \texttt{encoding} clause. + + \item[\mdseries\textvisiblespace\texttt{mtxasetx}] + This is available for files in the \meta{etx-list}. The actual + function of a + \begin{quote} + \meta{file-name} \texttt{mtxasetx} + \end{quote} + item in the \meta{etx-list} is that the file + \meta{file-name}\texttt{.mtx} is inputted (\emph{not} + \meta{file-name}\texttt{.etx}) and that the correspondence + between glyph names and slot numbers set up in + |\set|\-|raw|\-|glyph| or |\set|\-|scaled|\-|raw|\-|glyph| + commands in this file is treated as if it had been set up by + |\setslot| commands in an \etx file. Provided the \mtx file is + transformable, the glyph base will be unaffected. + + The purpose of this feature is to simplify quick and dirty + installations of odd fonts for which no suitable \etx file is + available. This can be useful in early stages of the design of + a new font, but is inferior to installation using proper \etx + files since one for example cannot specify any ligatures in + \mtx files. +\end{description} +Furthermore there is a special exception for the \meta{metrics}: if +the first token in one of the list items is the control sequence +|\metrics|, then the rest of that item is interpreted as explicit +metric commands to execute. + +If the \meta{metrics} of two subsequent |\install|\-|font| +or |\install|\-|raw|\-|font| commands are identical then the glyph +bases will be identical as well. This creates an opportunity for +optimization, which \fontinst makes use of by caching glyph +bases from one installation command to the next so that the glyph +base does not have to be rebuilt in these cases. A side-effect of +this caching is that local assignments made between two font +installation commands are cleared out with the glyph base, but +|\setint| and similar \fontinst commands make global +assignments when used in such positions. + +Some examples might be in order. The first is an adaptation of an +installation command from \texttt{mfnt-0.59} %~\cite{mfnt} +by Matthias Clasen and Ulrik Vieth: the installation command for the +8-bit math font \texttt{xma1000} (which can be thought of as being +to \texttt{cmmi10} sort of as \texttt{ecrm1000} is to \texttt{cmr10}). +The first three \texttt{encoding} clauses are more fine-tuning---without +them, a few glyphs would get incorrect names---but the last two are +quite essential, as the \texttt{msam10} and \texttt{msbm10} fonts +incorrectly claim to have the coding scheme \texttt{TEX MATH +SYMBOLS}. +\begin{verbatim} + \installfont{xma1000}{% + yma1000 encoding mcin,% + cmr10 encoding ot1upright,% + cmmi10,% + cmsy10 encoding omscal,% + msam10 encoding msam,% + msbm10 encoding msbm,% + mccmhax,mccmkern,mcmissing,% + cmsy10-base,cmsy10-extra% + }{mc}{MC}{cm}{m}{n}{<<10->>} +\end{verbatim} +Also note the explicit \LaTeX\ size specification for the range +``10\,pt and up''. + +The second example makes use of a \texttt{suffix} clause to combine +the letters from one font with the digits from another. +\begin{verbatim} + \installfont{msbrj8t}{msbr8r,msbrc8r suffix /2,latin}{digit2,t1} + {T1}{msbj}{m}{n}{} +\end{verbatim} +In this case, the glyph base contains the glyphs of Monotype Sabon +(SabonMT)---under names such as \texttt{A} for `A', \texttt{a} for +`a', and \texttt{one} for a lining digit one---as well as the +glyphs of Monotype Sabon Small Caps and Oldstyle Figures +(SabonMT-SCOSF)---under names such as \texttt{A/2} for `A', +\texttt{a/2} for `\textsc{a}', and \texttt{one/2} for a hanging +digit one. The \texttt{digit2.etx} file simply makes the definition +\begin{verbatim} + \setcommand\digit#1{#1/2} +\end{verbatim} +which causes \texttt{t1.etx} to put \texttt{zero/2} in slot 48 (digit +zero), \texttt{one/2} in slot 49 etc., instead of as it normally +would \texttt{zero} in slot 48, \texttt{one} in slot 49 and so on. +The net effect is that the digits in the generated \texttt{msbrj8t} +is from \texttt{msbrc8r} (SabonMT-SCOSF) but everything else is from +\texttt{msbr8r} (SabonMT). + +The third example makes use of an \texttt{mtxasetx} clause to install +(with its default encoding) a font for which creating an appropriate +\etx file seems not worth the trouble. +\begin{verbatim} + \installrawfont{psyr}{psyr,\metrics + \setint{xheight}{\height{alpha}} + }{txtfdmns,psyr mtxasetx}{U}{psy}{m}{n}{} +\end{verbatim} +The effect of the second \texttt{psyr} is that \texttt{psyr.mtx} is +read (in case there was no \texttt{psyr.mtx} then it is created from +(hopefully) \texttt{psyr.afm}) and the information in it will form +the glyph base. Because of the |\metrics| control sequence, the rest +of that item will be interpreted as explicit metric commands +modifying the glyph base, and thus the |\setint| command can provide +a value for the \texttt{xheight} variable (there doesn't seem to be +such a value in the \afm). Once the glyph base is completed, the +|\install|\-|raw|\-|font| starts writing the file \texttt{psyr.pl} +(that's for the first \texttt{psyr}). The encoding of that font will, +because of the \texttt{psyr mtxasetx}, be the same as that used in +\texttt{psyr.mtx}. Finally, the \texttt{txtfdmns} is for +\texttt{txtfdmns.etx}, an \etx file which sets fontdimens 1--16 as for +a \texttt{T1} encoded font but does not set any slots. Since +\texttt{psyr.mtx} reinterpreted as an \etx file sets slots but no +fontdimens, these complement each other nicely. + + + +\subsection{Bounding boxes} + +Han The Thanh has created an implementation of bounding box support +for \fontinst, and it is a modified form of that support +is distributed with \fontinst as the file \texttt{bbox.sty}. To load +this, begin your command file with +\begin{verbatim} + \input fontinst.sty + \input bbox.sty +\end{verbatim} +The reason for not making it default is that keeping track of bounding +boxes increases some of \fontinst's memory requirements quite a lot. + +One important +characteristic of this implementation is that the dimensions of the +bounding box are not bundled into the same data structure (the +|\g-|\meta{glyph} macros) as the glyph's width, height, depth, and +italic correction are, but stored in a separate data structure (the +|\gb-|\meta{glyph} macros). A glyph doesn't need to have its bounding +box set, it is simply a piece of information that \fontinst +will store if you tell it to and which you can later retrieve. + +The bounding box will be stored as coordinates of the sides in the +normal AFM coordinate system. The commands for retrieving these +coordinates are +\begin{center} + \begin{tabular}{ll} + \textbf{Command}& \textbf{Side}\\ + |\bbtop|\marg{glyph}& top ($y$-coordinate)\\ + |\bbbottom|\marg{glyph}& bottom ($y$-coordinate)\\ + |\bbleft|\marg{glyph}& left ($x$-coordinate)\\ + |\bbright|\marg{glyph}& right ($x$-coordinate) + \end{tabular} +\end{center} +In Thanh's implementation the command names were |\ury|, |\lly|, +|\llx|, and |\urx| respectively instead, but I think the former are +easier to remember. If no bounding box has been set for a glyph then +the above commands will instead report the corresponding coordinate of +the glyph's \TeX\ box (i.e.\ |\height|\marg{glyph}, +|\neg{\depth|\marg{glyph}|}|, |0|, and |\width|\marg{glyph} +respectively). + +The command for setting the bounding box of a glyph is +\begin{quote} + |\setglyphbb|\marg{glyph}\marg{left}\marg{bottom}\marg{right}% + \marg{top} +\end{quote} + + + + + +\section*{Acknowledgements} + +We'd like to thank all of the \fontinst $\alpha$-testers, especially +Karl Berry, Damian Cugley, Steve Grahthwohl, Yannis Haralambous, Alan +Hoenig, Rob Hutchings, Constantin Kahn, Peter Busk Laursen, Ciar{\'a}n {\'O} +Duibh{\'\i}n, Hilmar Schlegel, Paul Thompson, Norman Walsh and John Wells, +who made excellent bug-catchers! + +Thanks to Barry Smith, Frank Mittelbach, and especially Sebastian +Rahtz for many useful email discussions on how virtual fonts should +interact with \LaTeXe. + +Thanks to Karl Berry and Damain Cugley for detailed comments on this +documentation. + +Thanks to David Carlisle for the use of his \texttt{trig} macros for +calculating trigonometry. + + +% \section*{Warranty and distribution} +% +% There is no warranty for the \fontinst package, to the extent +% permitted by applicable law. Except when otherwise stated in writing, +% the author provides 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 package prove defective, you assume +% the cost of all necessary servicing, repair or correction. +% +% In no event unless required by applicable law or agreed to in writing +% will the author 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. +% +% Redistribution of unchanged files is allowed provided that all files +% listed in the \texttt{MANIFEST} file are distributed. +% +% If you receive only some of these files from someone, or if you +% receieve altered files, then complain! + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdf b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdf new file mode 100644 index 00000000000..a7bb583f6b3 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdf differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex new file mode 100644 index 00000000000..0e7c485ab6c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex @@ -0,0 +1,1330 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% author = "Alan Jeffrey and Rowland McDonnell and +%%% Ulrik Vieth and Lars Hellstr{\"o}m", +%%% version = "1.927", +%%% date = "28 July 2004", +%%% time = "23:20:27 CEST", +%%% filename = "intro98.tex", +%%% email = "fontinst@tug.org", +%%% checksum = "", +%%% codetable = "ISO/ASCII", +%%% keywords = "fontinst, TeX, PostScript, documentation", +%%% supported = "yes", +%%% abstract = "This is documentation for the fontinst +%%% font installation package.", +%%% package = "fontinst", +%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" +%%% } +%%% ==================================================================== + +% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey + +% Modified by Rowland McDonnell June 1998 +% Modified and revised by Ulrik Vieth June 1998 + +\documentclass[a4paper]{ltxguide} +\usepackage[OT1]{fontenc} +\usepackage{url,xspace} +\usepackage{graphicx} +%\renewcommand\rmdefault{ppl} +%\renewcommand\rmdefault{padx} +%\renewcommand\rmdefault{pmnx} + + +% Title page and running heads. + +\makeatletter +\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} +\newcommand{\version}[1]{\renewcommand{\@version}{#1}} +\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} + +\newcommand{\@subtitle}{} +\newcommand{\@version}{???} +\newcommand{\@illustration}{cover.eps} + +\pagestyle{myheadings} +\AtBeginDocument{\markright{\small\itshape + \@author\hfill\@title: \@subtitle\quad}} + + +\renewcommand{\maketitle}{{% + \thispagestyle{empty}% + \normalfont\centering + \null + {\fontsize{100}{100}\textit{\@title}}% + \par\bigskip + {\Large\textbf{\@subtitle}}% + \vfill + \includegraphics[width=\textwidth]{\@illustration}% + \vfill + {\Large\textbf{% + \@author\\[\smallskipamount] \@title~v\@version + \quad\textperiodcentered\quad \@date}}% + \clearpage +}} +\makeatother + + +% Set lists tighter (assuming non-zero \parskip). + +\makeatletter +\renewcommand{\@listI}{% + \leftmargin\leftmargini + \parsep\medskipamount + \itemsep\z@ % + parsep + \topsep\z@ % + parskip + \partopsep\z@ +} +\makeatother + +% Set spacing around captions. + +\setlength{\abovecaptionskip}{\medskipamount} +\setlength{\belowcaptionskip}{\medskipamount} + +% Markup for logos, file types, programs, etc. + +\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} + +\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} +\newcommand*{\OzMF}{O\kern-.03em zMF} +\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} + +\newcommand{\PS}{Post\-Script\xspace} +\newcommand{\TT}{True\-Type\xspace} + +\newcommand*{\setfilename}[1]{\texttt{#1}} +\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} +\newcommand*{\setpackagename}[1]{\textsc{#1}} + +\newcommand{\dvips} {\setpackagename{dvips}\xspace} +\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} +\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} +\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} + +% \show\fontname +\newcommand{\fontnamekb}{fontname\xspace} +\newcommand{\Fontnamekb}{Fontname\xspace} + +\newcommand{\mf} {\setfilename{mf}\xspace} +\newcommand{\Mf} {\setfilename{Mf}\xspace} +\newcommand{\vf} {\setfilename{vf}\xspace} +\newcommand{\Vf} {\setfilename{Vf}\xspace} +\newcommand{\pl} {\setfilename{pl}\xspace} +\newcommand{\Pl} {\setfilename{Pl}\xspace} +\newcommand{\fd} {\setfilename{fd}\xspace} +\newcommand{\Fd} {\setfilename{Fd}\xspace} +\newcommand{\pk} {\setfilename{pk}\xspace} +\newcommand{\Pk} {\setfilename{Pk}\xspace} +\newcommand{\afm}{\setfilename{afm}\xspace} +\newcommand{\Afm}{\setfilename{Afm}\xspace} +\newcommand{\vpl}{\setfilename{vpl}\xspace} +\newcommand{\Vpl}{\setfilename{Vpl}\xspace} +\newcommand{\tfm}{\setfilename{tfm}\xspace} +\newcommand{\Tfm}{\setfilename{Tfm}\xspace} +\newcommand{\mtx}{\setfilename{mtx}\xspace} +\newcommand{\Mtx}{\setfilename{Mtx}\xspace} +\newcommand{\etx}{\setfilename{etx}\xspace} +\newcommand{\Etx}{\setfilename{Etx}\xspace} +\newcommand{\pfa}{\setfilename{pfa}\xspace} +\newcommand{\Pfa}{\setfilename{Pfa}\xspace} +\newcommand{\pfb}{\setfilename{pfb}\xspace} +\newcommand{\Pfb}{\setfilename{Pfb}\xspace} +\newcommand{\dvi}{\setfilename{dvi}\xspace} +\newcommand{\Dvi}{\setfilename{Dvi}\xspace} +\newcommand{\ttf}{\setfilename{ttf}\xspace} +\newcommand{\Ttf}{\setfilename{Ttf}\xspace} + +\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} +\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} +\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} +\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} + + +% Stolen from Dr Knuth +\makeatletter % borrow the private macros of PLAIN (with care) +\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant +\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant +% macros for font tables +\def\oddline#1{\cr + \noalign{\nointerlineskip} + \multispan{19}\hrulefill& + \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\def\evenline{\cr\noalign{\hrule}} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\beginchart#1{$$\global\count@=0 #1 + \halign to\hsize\bgroup + \chartstrut##\tabskip0pt plus10pt& + &\hfil##\hfil&\vrule##\cr + \lower6.5pt\null + &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} +\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& + &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} +\def\*{\global\advance\count@ by1 } +\def\:{\setbox0=\hbox{\char\count@}% + \ifdim\ht0>7.5pt\reposition + \else\ifdim\dp0>2.5pt\reposition\fi\fi + \box0\global\advance\count@ by1 } +\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} +\def\smallchart{% +%\global\advance\count@ by16 + &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 + &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 + &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 + &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 + &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 + &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 + &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 + &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 + &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} + +\def\bigchart{% +%\global\advance\count@ by16 + &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 + &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 + &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 + &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 + &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 + &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 + &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 + &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 + &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8 + &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9 + &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A} + &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B} + &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C} + &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D} + &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E} + &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F} + &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} + +% \font\xrm = cmr10 at 10pt % change this line to test font +% \beginchart\xrm \normalchart \endchart + +\newcommand{\smallfontchart}[1]{% + \font\xrm = #1 \beginchart\xrm \smallchart \endchart} +\newcommand{\bigfontchart}[1]{% + \font\xrm = #1 \beginchart\xrm \bigchart \endchart} + +% \smallfontchart{cmr10 at 10pt} +% \bigfontchart{ecrm1000 at 10pt} +\makeatother +% End stolen from Dr Knuth + + + +\title{fontinst} +\subtitle{Font installation software for \TeX} +\author{Alan Jeffrey and Rowland McDonnell} +\illustration{roadmap.eps} +\version{1.8} +\date{30 June 1998} + +\begin{document} + +\maketitle + + +\begin{small} + This is the tutorial part of the 1998 \fontinst manual, chiefly + written by Rowland McDonnell and conveying his then-view on related + subjects. Although most of it is still correct, + the passing of time has rendered it somewhat antiquated, and the + average current (2004) user new to \fontinst would probably find + Philipp Lehman's \emph{The Font Installation Guide} + (\url{http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/}) + more relevant. +\end{small} + +\tableofcontents + + +\clearpage + +\section{Introduction} + +The \fontinst package is a set of \TeX\ macros written to create +virtual fonts for use with \TeX. Its main use is creating the +files needed so you can use PostScript Type 1 fonts with \LaTeX. + +\Fontinst needs information about the fonts it works with. This +information needs to be supplied in an Adobe Font Metric (\afm) or +\TeX\ Property List (\pl) file. \pl files can be created from +\tfm files using \tftopl, a program normally included with a \TeX\ +system. + +The job that \fontinst does is complicated, but it can be used for +many tasks by people who are not \TeX\ font wizards. Having said +that, you do need to understand at least the basics of \LaTeXe's +font selection mechanism, which is documented in +\texttt{fntguide.tex}, part of the standard \LaTeX\ distribution. +\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} +will fetch a copy if you don't have one to hand. + +To get the most benefit out of \fontinst, it's important to +understand and use Karl Berry's `\Fontnamekb' naming scheme. The +definitive version of this is available from your nearest CTAN +server. The following URL will fetch all the files needed +compressed into a single ZIP archive: +\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname.zip}. I +suggest that you print out the \Fontnamekb documentation and have +it handy when you're learning about \fontinst. + +The \fontinst package: +\begin{itemize} +\item Is written in \TeX, for maximum portability (at the cost of + speed). +\item Supports the OT1 (Computer Modern) and T1 (Cork) encodings. +\item Allows fonts to be generated with arbitrary `fake' + characters; for example the `ij' character can be faked if + necessary by putting an `i' next to a `j'. +\item Allows caps and small caps fonts with letter spacing and + kerning. +\item Allows kerning to be shared between characters, for example + `ij' can be kerned on the left as if it were an `i' and on the + right as if it were a `j'. This is useful, since many + PostScript fonts only include kerning information for characters + without diacriticals. +\item Allows the generation of math fonts with \verb|nextlarger|, + \verb|varchar|, and arbitrary font dimensions. +\item Allows more than one PostScript font to contribute to a + \TeX\ font, for example the `ffi' ligatures for a font can be + taken from the Expert encoding, if you have it. +\item Can automatically generate a \fd file for use with \LaTeXe. +\item Can be customized by the user to deal with arbitrary font + encodings. +\end{itemize} +Fontinst has been a stable piece of software since mid-1994. All +further updates will be upwardly compatible with the interface +described in this document. + +\subsection{What does \fontinst do?} + +\Fontinst is a tool written in \TeX\ that can create the various +extra files needed so you can use \PS fonts with \LaTeX\ and \TeX. +It can read in \afm files, and produces the necessary \vpl, \pl, +and \fd files to use the fonts (the human-readable \vpl and \pl +files produced by \fontinst are turned into the machine-readable +\vf and \tfm forms by \vptovf and \pltotf). It does not help you +configure your DVI driver. + +There also exists a \texttt{perl} front-end to \fontinst, intended +specifically for use with a Unix \TeX\ system, which takes care of +routine tasks such as running \vptovf and \pltotf on the generated +files after \fontinst has finished it's job. It also generates a +font map file for use with \dvips. + +\Fontinst's main job is creating \vf files (virtual fonts). Not +all \TeX\ systems can use them. As far as I know, all current +(1998) free and shareware \TeX\ systems can; virtual fonts have +been in widespread use with \TeX\ since 1990. If you have a TeX +system that can't use virtual fonts, \fontinst is most likely +useless to you. + +There are some nice things about having a tool written in \TeX\ to +do this: it's completely portable and you can modify its behaviour +using \TeX\ commands. The only real problem is that it's +relatively slow: you can expect a typical \fontinst run to take +something like 10--20 minutes on, say, a 40~MHz 80486SX PC or a +25~MHz 68LC040 Macintosh. + +\Fontinst can do its work on any font for which you have a +corresponding \afm or \tfm metric file, so it's not limited to +working with \PS fonts; I have used it to produce the files I +needed to use \TT fonts with \LaTeX. Whether or not you can do +this depends on whether or not you have suitable metric files and +whether or not your \TeX\ system can use \TT fonts. In +particular, the pdf\TeX\ program supports \TT fonts and includes a +utility \texttt{ttf2afm} to generate \afm files from \ttf fonts. + +Some people have used \fontinst to produce `special effects' with +normal \TeX\ fonts. One example is the \setpackagename{eco} set +of fonts (available from CTAN: +\url{ftp://ftp.tex.ac.uk/tex-archive/fonts/eco/}). These fonts +are the same as the standard EC (European Modern) fonts, but with +normal numerals replaced with old style numerals -- +\oldstylenums{12345} rather than 12345 -- everywhere except in +maths mode. + +\subsection{Installation} + +To install \fontinst, put the contents of the \url{inputs/tex}, +\url{inputs/etx}, \url{inputs/mtx} and \url{examples} directories +into a directory read by \TeX, for example +\url{TEXMF/tex/generic/fontinst}. + +When you use \fontinst, you need to make sure that the \afm and +\pl files it will work on are in a directory searched by \TeX. + +If you are using \texttt{web2c} \TeX\ on a Unix system with the +\TeX\ directory structure (TDS), you might put all the \afm files +in subdirectories of \url{TEXMF/fonts/afm/*}. And then say: +\begin{verbatim} + setenv TEXINPUTS $TEXMF/fonts/afm//:: +\end{verbatim}%$ +Note that \pl files are not normally kept in \TeX\ installations, so +if you want to use MF fonts with \fontinst you have to generate the +corresponding \pl files from \tfm files and put them in your working +directory before running \fontinst. + +You could adopt a similar strategy with other \TeX\ systems: +create directories for the required files and then change the +relevant parameter (\url{input_folders} in the default +configuration file with \OzTeX, for example). + +The approach I use is this: I write a file containing commands for +\fontinst to process, and put the \afm and \pl files needed in the +same directory as that file. When \fontinst has finished working, +I delete the \afm and \pl files because they are not needed and +waste space on my hard disc drive. Some application programs on +some computers need \afm files, so it's not always a good idea to +remove them completely. + +\subsection{Why do we need \fontinst?} + +\TeX\ refers to characters by number when it's typesetting. When +you use a command like \verb|\i|, \TeX\ puts a number (16 if +you're using OT1, 25 if you're using T1) into the \dvi file. If +you're using a font designed for use with \TeX, this number will +correspond to the character `\i'. Assuming OT1 encoding for the +moment, when you come to print out your \dvi file, the DVI driver +will see the number 16 in the \dvi file, and select the character +that sits in position 16 of the corresponding printer font file (a +\pk file in the case of normal \TeX\ fonts). Unless something has +gone wrong, that will result in the character `\i' being placed on +the page. + +It's useful to think of these numbers and the actual characters +corresponding to each number as sets called `encodings'. A +particular set of characters are assigned particular numbers. An +example of an encoding is shown in table~\ref{OT1table}. + +\TeX\ began life using 7-bit fonts. This means the original \TeX\ +fonts used the numbers 0--127 to represent characters: +128~characters per font. \TeX\ can now use 8-bit fonts: +256~numbers from 0--255, but even so, most typesetting with \TeX\ +still uses the original 7-bit encoding, now called `OT1' (Old +\TeX~1 encoding). This has a correspondance between numbers and +characters shown in table~\ref{OT1table}. The numbers used in +that table are hexadecimal and octal because it makes for a neat +table and anyway I stole the code to generate it from Donald Knuth +and that's how he did it. + +\begin{table}[!t] +\smallfontchart{cmr10 at 10pt} +\caption{The OT1 font encoding}\label{OT1table} +\end{table} + +Returning to the example above, if you've a number 16 in your \dvi +file (expecting `\i', a dotless~i), but rather than printing +with an OT1 encoded font, you print using a non re-encoded \PS +font in Adobe standard encoding, you'll get a blank, because the +Adobe standard encoding has nothing in that character position. + +There are several ways round this problem; I'll consider two cases +here. If you are using \LaTeX\ you can tell it about a new +encoding and re-define the commands that produce characters like +`\i' that live in different positions in different encodings, or +you can use a tool to re-encode the font so that it has the +expected characters in the appropriate positions. + +Re-encoding is the approach \fontinst uses: it can produce files +to map the characters in the new font to one of \TeX's existing +encodings; this works with formats other than \LaTeX. + +The first approach is used to define the standard encodings that +\LaTeX\ uses. See, for example, the file \texttt{ot1enc.def} that +comes with the current \LaTeX\ distribution, which defines the a +few commands that refer to characters which aren't in the +positions \TeX\ would otherwise assume. This works only with +modern versions of \LaTeX. + +The second approach is used to allow you to use fonts in other +encodings with any dialect of \TeX. It has the some advantages +over the first method: it works with any \TeX\ format; and it +improves portability, because you can typeset a document using a +standard \TeX\ encoding, sure that the same document will print +correctly on a different kind of computer using a font with a +different encoding. For example, you might say: +\begin{verbatim} + \usepackage{times} +\end{verbatim} +in the preamble of your document. On my computer, that means my +DVI driver will use a Macintosh encoded \TT version of Times. On +your computer, it might mean the dvi driver will use a Unicode +encoded \PS version of Times-Roman. The results will be identical +in either case, without needing to modify the document. + +\subsection{How do you use \fontinst?} + +\Fontinst works on \afm files named (more-or-less) according to +Karl Berry's font naming scheme (see +\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname} at CTAN). +Let's say you want to use the Adobe Times fonts. You can get the +metric files for this font from CTAN: +\begin{center} +\begin{small} +\begin{tabular}{ll} + \emph{Location of file at CTAN} & \emph{Rename to} \\ + \url{fonts/psfonts/adobeafm/base35/tib_____.afm} & + \texttt{ptmb8a.afm} \\ + \url{fonts/psfonts/adobeafm/base35/tibi____.afm} & + \texttt{ptmbi8a.afm} \\ + \url{fonts/psfonts/adobeafm/base35/tii_____.afm} & + \texttt{ptmri8a.afm} \\ + \url{fonts/psfonts/adobeafm/base35/tir_____.afm} & + \texttt{ptmr8a.afm} +\end{tabular} +\end{small} +\end{center} +The new name is the name you should give the \tfm files so that +\fontinst understands what each file contains. The initial `|p|' +means `Adobe'; `|tm|' means `Times'; `|b|' bold, `|r|' roman, +`|i|' italic; and `|8a|' means `Adobe standard encoding'. + +The simplest use of \fontinst is to put the four \afm files in the +same directory as \texttt{fontinst.sty} and run \TeX\ on +\texttt{fontinst.sty}. At the \verb|*| prompt type: +\begin{verbatim} + *\latinfamily{ptm}{} \bye +\end{verbatim} + +Some time later (about 17 minutes on my rather old computer), +\fontinst will have finished, having created: +\begin{itemize} +\item Two \pl files for each \afm file +\item One \vpl file for each \TeX\ font +\item One \fd file for each family +\end{itemize} +The \pl files come in pairs: for example, \texttt{ptmb8a.pl} and +\texttt{ptmb8r.pl}. The |8a| version has the same encoding as the +original font; the |8r| version is re-encoded to |TeXBase1| (|8r|) +encoding, and is the font that is the base on which the T1 and OT1 +encoded versions are based on. The raw |8a| (Adobe standard) +encoded font is not normally used. + +These can be converted to \TeX\ fonts using \pltotf or \vptovf. +If you have \OzTeX, launch \OzMF, select \pltotf (or \vptovf) from +the Tools menu, and say `Do all files'. + +If you use the \texttt{bash} shell on a Unix system, you can +process all files using these one-liners at the \verb|$| prompt: +\begin{verbatim} + $ for f in in *.pl; do pltotf $f; done + $ for f in in *.vpl; do vptovf $f; done +\end{verbatim}%$ +(This assumes that \pltotf and \vptovf can deduce the file names +of the corresponding \tfm and \vf files automatically.) + +You should then: +\begin{itemize} +\item Move the \tfm files to your \TeX\ fonts directory\\ + (e.g.~\url{TEXMFLOCAL/fonts/tfm/*}). +\item Move the \vf files to your virtual fonts directory\\ + (e.g.~\url{TEXMFLOCAL/fonts/vf/*}). +\item Move the \fd files to your \TeX\ inputs directory\\ + (e.g.~\url{TEXMFLOCAL/tex/latex/psfonts/*}). +\end{itemize} +If your \TeX\ installation is organized using the \TeX\ directory +structure (TDS), it is customary to subdivide the \tfm and \vf +files into subdirectories by supplier and typeface name. + +The \pl, \vpl, and \mtx files are debris that can now be deleted. +\mtx files are font metric files \fontinst creates for its own use +from \afm and \pl files. They're just more convenient for \TeX\ +to read than other forms -- think of them as \fontinst readable +\afm and \pl files. + +By now, you have all the files in place to produce a \dvi file +using the new fonts. You can make Adobe Times the default roman +font in your document by putting this in your preamble: +\begin{verbatim} + \renewcommand{\rmdefault}{ptm} +\end{verbatim} + +\TeX\ will now happily produce a perfectly good \dvi file +including the new font, which your DVI driver will choke on +because you've not yet told it about the new fonts. Exactly how +you do this depends on the dvi driver, but they all need the same +information: the name of a \TeX\ font; the printer font name it +corresponds to; some information to handle an re-encoding needed; +and (in the case of a \PS driver) perhaps an instruction to +download the font to the printer. You don't need to download the +Times font to a \PS printer, because Times is built in to every +\PS printer. + +If you use \dvips, these lines added to your \texttt{psfonts.map} +file will do the job: +\begin{verbatim} + ptmr8r Times-Roman "TeXBase1Encoding ReEncodeFont" <<8r.enc + ptmri8r Times-Italic "TeXBase1Encoding ReEncodeFont" <<8r.enc + ptmb8r Times-Bold "TeXBase1Encoding ReEncodeFont" <<8r.enc + ptmbi8r Times-BoldItalic "TeXBase1Encoding ReEncodeFont" <<8r.enc + ptmro8r Times-Roman "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc + ptmbo8r Times-Bold "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc +\end{verbatim} +And now you can print a \dvi file containing the new fonts. If +you really do want to use the `raw' |8a| encoded fonts for some +reason, you need to add these lines to your \texttt{psfonts.map} +file: +\begin{verbatim} + ptmr8a Times-Roman + ptmri8a Times-Italic + ptmb8a Times-Bold + ptmbi8a Times-BoldItalic + ptmro8a Times-Roman "0.167 SlantFont" + ptmbo8a Times-Bold "0.167 SlantFont" +\end{verbatim} + +Assuming that you're using the \fd file that \fontinst has +produced, and that you've asked for the Adobe Times family (|ptm|) +in medium series (|m|) and upright shape (|n| for normal) using +the NFSS font selection commands: +\begin{verbatim} + \renewcommand{\rmdefault}{ptm} + \rmfamily \mdseries \upshape +\end{verbatim} +Assuming further that you are using the \fd file \texttt{t1ptm.fd} +produced by \fontinst, the \TeX\ font (\tfm file) \texttt{ptmr8t.tfm} +will be selected by the above commands, as you can see from the +relevant line in \texttt{t1ptm.fd}: +\begin{verbatim} + \DeclareFontShape{T1}{ptm}{m}{n}{<<->> ptmr8t}{} +\end{verbatim} + +This is what happens: +\begin{itemize} +\item \TeX\ typesets your document using the font metric file + \texttt{ptmr8t.tfm}; this is the font that is put in the \dvi + file. +\item \Dvips looks at the \dvi file, and sees a reference to the + font \texttt{ptmr8t}. +\item \Dvips searches for a \vf file corresponding to + \texttt{ptmr8t}; when it finds \texttt{ptmr8t.vf}, it knows it + has a virtual font on its hands. + %\footnote{This is a slight lie--why?} +\item \Dvips follows the instructions in the \vf file, which map + characters in \texttt{ptmr8t.tfm} to characters in the font + \texttt{ptmr8r.tfm}. That is, when it sees a number~25 in the + \dvi file (dotless~i -- `\i' -- in T1 encoding), it replaces it + with a number~17, which is a dotless~i in |8r| encoding. +\item Then \dvips looks up the name of each number according to + the scheme given in the file \texttt{8r.enc}, and replaces each + number with the name of the character, in this case, number~17 + is listed as `dotlessi'. +\item And finally, \dvips tells the printer to print the named + character. +\end{itemize} + +Not all DVI drivers can manage re-encoding as well as \dvips can. +For example, \OzTeX's built-in non-\PS \dvi driver can only work +with numbers, so if I'm using a \PS font, I can't print characters +(such as Eth) that don't have a number in Macintosh text encoding +unless I use \dvips and print on a \PS printer. \Dvips works with +character names, so it's not subject to this restriction. In the +example above, \OzTeX\ would replace the number~17 for `dotlessi' +in |8r| encoding with a number~245 for `dotlessi' in Macintosh +text encoding. + +The details of the \LaTeXe{} font selection scheme are described +in \emph{\LaTeXe{} font selection} (distributed with \LaTeXe\ as +the file \texttt{fntguide.tex}) and \emph{The \LaTeX\ Companion} +(Goossens, Mittelbach and Samarin, Addison-Wesley). +%You might also find useful the file \url{info/simple-nfss.tex} +%available at your nearest comprehensive \TeX\ archive network +%(CTAN) FTP server. + +The files you need to use Times, Helvetica, Courier, and the rest +of the `standard' \PS fonts are distributed as part of the +\setpackagename{PSNFSS} bundle available from CTAN, so there's no +need to create new files to use these fonts. + +A more involved example of \fontinst use can be seen in the file +\texttt{fontptcm.tex} which creates the files you need to use a +combination of Times, Symbol, Zapf Chancery and Computer Modern as +\TeX\ math fonts. + + +\section{Installing your own font family} + +The \fontinst package has a command \verb|\latinfamily| meant to +do most of the work to install a `normal' set (family) of roman +text fonts from Adobe. Assuming you have a set of \afm files to +match the fonts you wish to use, the first step is to rename the +\afm files according to the \Fontnamekb naming scheme. + +A `normal' set of text fonts usually includes the basic upright +roman version, bold, italic, and bold italic. Sometimes there +will also be small caps versions, perhaps some `expert' fonts, and +maybe some other weights such as light, medium, semi bold, black +or ultra bold. + +The most important point to note is this: no matter what sort of +computer you're using and no matter what font encoding it uses +normally, \afm files for text fonts are almost always in |8a| +encoding (Adobe standard encoding), so the \afm files when renamed +normally end in |8a|. + +A typical set of four \afm files re-named for use with \fontinst +is this: +\begin{verbatim} + ptmr8r.afm Times-Roman + ptmri8r.afm Times-Italic + ptmb8r.afm Times-Bold + ptmbi8r.afm Times-BoldItalic +\end{verbatim} +Not all \afm files use |8a| encoding. If you open an \afm file +using a text editor, you'll see a line looking like this somewhere +near the top: +\begin{verbatim} + EncodingScheme AdobeStandardEncoding +\end{verbatim} +and if you see exactly that, the \afm file should end with |8a|. +If you see something like this: +\begin{verbatim} + EncodingScheme FontSpecific +\end{verbatim} +have a look at the name of the font in the \afm file. If you see +something like this: +\begin{verbatim} + FontName AGaramondExp-Regular + FullName Adobe Garamond Regular Expert +\end{verbatim} +you have an `expert' encoded font on your hands, and the \afm file +should end with |8x| to indicate this to \fontinst. An |8x| +encoded font contains extra glyphs like old style numerals, small +capital letters, more ligatures, and so on. + +%% UV: taken out -- repeated below +%% +%If you have an expert font, you can tell \fontinst to use it when +%it's processing a \verb|\latinfamily| command by putting an `|x|' +%on the end of the family name: +%\begin{verbatim} +% \latinfamily{padx}{} +%\end{verbatim} +%If you want to tell \fontinst to use expert fonts to install fonts +%with old style numerals, you can do so by putting an `|j|' on the +%end of the family name: +%\begin{verbatim} +% \latinfamily{padj}{} +%\end{verbatim} + +The |\latinfamily| command is used like this: +\begin{decl} + |\latinfamily|\arg{family}\arg{commands} +\end{decl} +This installs a Latin family of fonts. + +For example, to install Adobe Times, you say: +\begin{verbatim} + \latinfamily{ptm}{} +\end{verbatim} +The \textit{commands} issued by \LaTeX\ each time a font from that +family is loaded. This is most often used with typewriter fonts, +to switch off hyphenation. For example, Adobe Courier can be +installed with: +\begin{verbatim} + \latinfamily{pcr}{\hyphenchar\font=-1} +\end{verbatim} +Once the installation is over (which may take some time) the fonts +can be used in \LaTeX\ by selecting an appropriate +\verb|\fontfamily|, for example Adobe Times can be selected with: +\begin{verbatim} + \fontfamily{ptm}\selectfont +\end{verbatim} +If the fourth letter of the family name is `|x|' then \fontinst +will use expert fonts in creating the fonts. If the fourth letter +is `|j|' (or for backward compatibility `|9|') then \fontinst will +use expert fonts to create fonts with old style digits. + +For example, to install Adobe Garamond using expert fonts, you say: +\begin{verbatim} + \latinfamily{padx}{} +\end{verbatim} +To install Adobe Garamond using expert fonts with oldstyle digits, +you say: +\begin{verbatim} + \latinfamily{padj}{} +\end{verbatim} + +When you have expert fonts, and you've told \fontinst to use +them, it will carry on as normal, but the resulting font family +will have the name `|padx|' or `|padj|', and it will use expert +glyphs whenever possible, so you'll have a real (rather than +faked) small caps font, real (rather than faked) `ffl' ligatures, +and so on. + +Before using these commands, you will need to make sure that you +have the Adobe Font Metric (\afm) files for the fonts, and that +they have appropriate names. The \fontinst package uses the +\LaTeX\ convention for naming fonts, and uses a \emph{font family} +name which consists of: +\begin{itemize} +\item a \emph{supplier} (or foundry), such as `|p|' for Adobe. +\item a \emph{typeface}, such as `|ad|' for Adobe Garamond. +\item up to two \emph{variants}, such as `|j|' or `|x|' for `old + style digits' or `expert'. +\end{itemize} +So the family name `|padj|' indicates Adobe Garamond with old +style digits. Note that the variants `|j|' or `|x|' are +interpreted by \fontinst itself and do not appear in external font +names, whereas other variants are passed through as part of the +font names. (This is needed for families which have a sans serif +or typewriter variant.) + +The \emph{supplier} must be one letter, and the \emph{typeface} +must be two (this is an attempt to fit all filenames into MS-DOS +format). Each variant is one letter. The full list of foundries, +typefaces, shapes and variants is given in Karl Berry's +`\emph{Filenames for fonts}' (available by anonymous FTP from +\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname}), but the more +common ones are given in +Tables~\ref{Tab:foundry}--\ref{Tab:typeface}. + +\begin{table}[!t] +\begin{minipage}{0.5\textwidth} + \small + \begin{tabular}{ll} + |b| & Bitstream \\ + |f| & `free' (public domain) \\ + |h| & Bigelow \& Holmes \\ + |i| & ITC \\ + |l| & Linotype \\ + |m| & Monotype \\ + |p| & Adobe (|p| for \PS) \\ + |r| & `raw' (obsolete) \\ + |u| & URW \\ + |z| & bizarre + \end{tabular} + \caption{A partial list of foundries} + \label{Tab:foundry} + \begin{tabular}{ll} + |a| & alternate \\ + |d| & display, titling \\ + |f| & fraktur, handtooled \\ + |j| & oldstyle digits \\ + |n| & informal, casual \\ + |p| & ornaments \\ + |s| & sans serif \\ + |t| & typewriter \\ + |w| & script, handwriting, swash \\ + |x| & expert \\ + \end{tabular} + \caption{A partial list of variants} + \label{Tab:variant} + \begin{tabular}{ll} + |c| & small caps \\ + |i| & italic \\ + |o| & oblique (i.e.,~slanted) \\ + |u| & unslanted italic \\ + \end{tabular} + \caption{A partial list of shapes} + \label{Tab:shape} +\end{minipage} +\begin{minipage}{0.5\textwidth} + \small + \begin{tabular}{ll} + |ac| & Adobe Caslon \\ + |ad| & Adobe Garamond \\ + |ag| & Avantgarde \\ + |bb| & Bembo \\ + |bd| & Bodoni \\ + |bk| & Bookman \\ + |bv| & Baskerville \\ + |ca| & Caslon \\ + |ch| & Charter \\ + |cr| & Courier \\ + |fr| & Frutiger \\ + |fu| & Futura \\ + |gl| & Galliard \\ + |gm| & Garamond \\ + |gs| & Gill Sans \\ + |hv| & Helvetica \\ + |mn| & Minion \\ + |lc| & Lucida \\ + |lh| & Lucida Bright \\ + |ls| & Lucida Sans \\ + |nb| & New Baskerville \\ + |nc| & New Century Schoolbook \\ + |op| & Optima \\ + |pl| & Palatino \\ + |sy| & Symbol \\ + |tm| & Times \\ + |ut| & Utopia \\ + |zc| & Zapf Chancery \\ + |zd| & Zapf Dingbats \\ + \end{tabular} + \caption{A partial list of faces} + \label{Tab:typeface} +\end{minipage} +\end{table} + +The \fontinst package uses Karl Berry's naming scheme for \afm +files. The full naming scheme is rather more flexible than the +subset used by \fontinst, which uses filenames consisting of: +\begin{itemize} +\item a \emph{supplier}, such as `|p|' for Adobe. +\item a \emph{typeface}, such as `|hv|' for Helvetica. +\item a \emph{weight}, such as `|r|' for regular. +\item up to two \emph{shapes} or \emph{variants}, such as `|o|' + for oblique. +\item an \emph{encoding}, such as `|7t|' for Knuth's 7-bit \TeX{} + encoding. +\item an optional \emph{width}, such as `|n|' for narrow. +\item a \emph{file extension}, such as `\texttt{.tfm}' + for \TeX{} Font Metric. +\end{itemize} +So the filename name `\texttt{phvro7tn.tfm}' indicates Adobe +Helvetica regular oblique narrow, in the 7-bit \TeX{} encoding. + +The full list of shapes, encodings and weights is given in Karl +Berry's `\emph{Filenames for fonts}', but the more common ones are +given in Tables~\ref{Tab:shape}--\ref{Tab:weight}. + +\begin{table} +\begin{minipage}{0.5\textwidth} + \small + \begin{tabular}{ll} + |b| & bold \\ + |c| & black \\ + |d| & demibold \\ + |h| & heavy \\ + |k| & book \\ + |l| & light \\ + |m| & medium \\ + |r| & regular \\ + |s| & semibold \\ + |u| & ultra bold \\ + |x| & extra bold \\ + \end{tabular} + \caption{A partial list of weights} + \label{Tab:weight} + \begin{tabular}{ll} + |c| & condensed \\ + |n| & narrow \\ + |w| & wide \\ + |x| & extended \\ + \end{tabular} + \caption{A partial list of widths} + \label{Tab:width} +\end{minipage} +\begin{minipage}{0.5\textwidth} + \small + \begin{tabular}{ll} + |8a| & Adobe Standard \\ + |8x| & Adobe Expert \\ + |8r| & \TeX{} 8-bit `raw' (\texttt{TeXBase1}) \\ + |8y| & \TeX{} 8-bit `raw' (\texttt{TeXnANSI}) \\ + |7t| & \TeX{} 7-bit text (\texttt{OT1}) \\ + |7m| & \TeX{} 7-bit math italic (\texttt{OML}) \\ + |7y| & \TeX{} 7-bit math symbol (\texttt{OMS}) \\ + |7v| & \TeX{} 7-bit math extension (\texttt{OMX}) \\ + |8t| & \TeX{} 8-bit text (\texttt{T1}) \\ + |8c| & \TeX{} 8-bit text symbols (\texttt{TS1}) \\ + |9t| & \TeX{} 7-bit text with expert glyphs \\ + |9o| & \TeX{} 7-bit text with expert glyphs \\ + & and old-style digits \\ + |9e| & \TeX{} 8-bit text with expert glyphs \\ + |9d| & \TeX{} 8-bit text with expert glyphs \\ + & and old-style digits \\ + |9c| & \TeX{} 8-bit symbols with expert glyphs \\ + & and old-style digits \\ + \end{tabular} + \caption{A partial list of encodings} +\end{minipage} +\end{table} + +For example, to install Adobe Garamond including the expert fonts, you +would need to rename the \afm files: +\begin{center} +\begin{small} +\begin{tabular}{lll} + \emph{Adobe name} & \emph{ATM name} & \emph{Fontinst name} \\ + |AGaramond-Bold.afm| & |gdb_____.afm| & |padb8a.afm| \\ + |AGaramond-BoldItalic.afm| & |gdbi____.afm| & |padbi8a.afm| \\ + |AGaramond-Italic.afm| & |gdi_____.afm| & |padri8a.afm| \\ + |AGaramond-Regular.afm| & |gdrg____.afm| & |padr8a.afm| \\ + |AGaramond-Semibold.afm| & |gdsb____.afm| & |pads8a.afm| \\ + |AGaramond-SemiboldItalic.afm| & |gdsbi___.afm| & |padsi8a.afm| \\ + |AGaramondExp-Bold.afm| & |geb_____.afm| & |padb8x.afm| \\ + |AGaramondExp-BoldItalic.afm| & |gebi____.afm| & |padbi8x.afm| \\ + |AGaramondExp-Italic.afm| & |gei_____.afm| & |padri8x.afm| \\ + |AGaramondExp-Regular.afm| & |gerg____.afm| & |padr8x.afm| \\ + |AGaramondExp-Semibold.afm| & |gesb____.afm| & |pads8x.afm| \\ + |AGaramondExp-SemiboldItalic.afm| & |gesbi___.afm| & |padsi8x.afm| \\ + |AGaramond-RegularSC.afm| & |gdsc____.afm| & |padrc8a.afm| \\ + |AGaramond-SemiboldSC.afm| & |gdsbs___.afm| & |padsc8a.afm| \\ +\end{tabular} +\end{small} +\end{center} +You can then run \TeX{} on the following document to install the +Adobe Garamond family: +\begin{verbatim} + \input fontinst.sty + \latinfamily{padx}{} + \latinfamily{padj}{} + \bye +\end{verbatim} +Not all font families can be installed using the \verb|\latinfamily| +command, nor does it always produce optimal results. The main +interfaces to \fontinst are at a slightly lower level, where all font +names appear explicitly in command arguments, and at that level it is +possible to fine tune the font generation. The \verb|\latinfamily| +command is mainly a clever collection of macros which expand to a +mostly fixed\footnote{Commands that would refer to files which are +not present are skipped, and in some cases there is a ``Plan B'' +when ``Plan A'' would have made use of such a nonexistent file, but +that is about it.} sequence of lower level \fontinst commands. + +\begin{bfseries} + Descriptions of the sub-\verb|\latinfamily| commands can be found + in the main \fontinst manual. +\end{bfseries} + + + +\section{More on the \cs{latinfamily} command} + +The \verb|\latinfamily| command is essentially a short-cut to save you +preparing a huge file with many different \fontinst commands in it. + +It takes \afm or \mtx files as the source of font metric data to work +with. Usually, you have a set of \afm files. They must be named +according to a subset of the \Fontnamekb naming scheme. To illustrate +the process, here is an edited part of the console log from a use of +\verb|\latinfamily|: +\begin{verbatim} + \latinfamily{pad}{} +\end{verbatim} +This log does not show \fontinst `in action'; it's just to illustrate +which fonts are looked for when you use the \verb|\latinfamily| +command. +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padr8r.mtx + INFO>> to make LaTeX font shape <> seek padrc8r.mtx + INFO>> to make LaTeX font shape <> seek padro8r.mtx + INFO>> to make LaTeX font shape <> seek padri8r.mtx + INFO>> to make LaTeX font shape <> seek padr8rn.mtx + INFO>> to make LaTeX font shape <> seek padrc8rn.mtx + INFO>> to make LaTeX font shape <> seek padro8rn.mtx + INFO>> to make LaTeX font shape <> seek padri8rn.mtx +\end{verbatim} + +The important point to notice is that \fontinst needs an |8r| encoded +\mtx file for each font when you are using the \verb|latinfamily| +command. If it can't find an |8r| encoded \mtx file, it'll look for +for an |8a| encoded \afm file. It will automatically turn the file it +finds into an |8r| encoded \mtx file. So when \fontinst says +`\verb|seek padr8r.mtx|', it is in fact looking for +\texttt{padr8r.mtx} and \texttt{padr8a.afm}. Whatever it finds, it +will end up with \verb|padr8r.mtx| to work on. + +The first line of the log shows that \fontinst is trying to create a +\vpl file for |pad/m/n|. That is, font family |pad| (Adobe Garamond), +font series |m| (normal `book' or `regular' weight), and font shape +|n| (normal upright). + +If it finds what it's looking for, it will create the files: +\begin{verbatim} + padr7t.vpl + padr8t.vpl + padr8c.vpl +\end{verbatim} +And add these lines to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{n}{<<->> padr7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{m}{n}{<<->> padr8t}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{n}{<<->> padr8c}{} +\end{verbatim} +This means you will have three new fonts to use in \LaTeX: the OT1, T1 +and TS1 encoded versions of |pad/m/n|. You'll be able to select (say) +|T1/pad/m/n| by saying: +\begin{verbatim} + \fontencoding{T1}\fontfamily{pad}\fontseries{m}\fontshape{n}\selectfont +\end{verbatim} +This is the clumsiest way of selecting that particular font, but I've +done it to illustrate exactly what's happening. + +The next line: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padrc8r.mtx +\end{verbatim} +shows that \fontinst is trying to install a small caps font. If you +have a real small caps metric file named \texttt{padrc8r.mtx} (don't +forget it'll look for an |8a| encoded \afm file), \fontinst will go +ahead and create the \vpl file and \fd file entry as expected. + +But you don't normally have a real small caps font, so \fontinst will +quite happily produce a fake small caps font. To do this, it looks +for a suitable metric file by dropping the `|c|': +\begin{quote} + `Hmm\ldots\ I can't find \texttt{padrc8r}, so I'll look for + \texttt{padr8r}.' +\end{quote} +And you will eventually have: +\begin{verbatim} + padrc7t.vpl + padrc8t.vpl +\end{verbatim} +And add these lines to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sc}{<<->> padrc7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sc}{<<->> padrc8t}{} +\end{verbatim} +(Note that it won't install a TS1-encoded small caps font because +TS1 is a text symbol font, which would look the same in the upright +and small caps shape.) + +The next log line shows \fontinst trying to create a \vpl for the +oblique version of Adobe Garamond: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padro8r.mtx +\end{verbatim} +It's quite usual for an oblique version to be unavailable, but +\fontinst has a way round this: it can fake an oblique font from the +corresponding `straight' version: +\begin{quote} + `Oh dear: I can't find \texttt{padro8r}, so I'll look for + \texttt{padr8r} and use clever maths to fake a slanted version.' +\end{quote} +This is not as straightforward as the small caps case. \Fontinst +only works out what the metrics ought to be if the entire font is +slanted to the right. It's up to the DVI driver to actually print a +slanted font. \Dvips can do this. + +You will eventually have: +\begin{verbatim} + padro7t.vpl + padro8t.vpl + padro8c.vpl +\end{verbatim} +And these lines added to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sl}{<<->> padro7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sl}{<<->> padro8t}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{sl}{<<->> padro8c}{} +\end{verbatim} + +The next line is straightforward: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padri8r.mtx +\end{verbatim} +If \fontinst can't find a suitable metrics file (\texttt{padri8r.mtx} +or \texttt{padri8a.afm}), it carries on without doing anything. If it +does find a suitable metrics file, it churns away until you will +eventually have: +\begin{verbatim} + padri7t.vpl + padri8t.vpl + padri8c.vpl +\end{verbatim} +And these lines added to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{it}{<<->> padri7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{m}{it}{<<->> padri8t}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{it}{<<->> padri8c}{} +\end{verbatim} + +The next line is a bit different. \Fontinst is now trying to create a +\vpl file for a \emph{condensed} font: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padr8rn.mtx +\end{verbatim} +If it finds a suitable metric file (Adobe Garamond, medium weight, +normal upright shape, condensed), it will eventually produce: +\begin{verbatim} + padr7tn.vpl + padr8tn.vpl + padr8cn.vpl +\end{verbatim} +And these lines added to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{mc}{n}{<<->> padr7tn}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{mc}{n}{<<->> padr8tn}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{mc}{n}{<<->> padr8cn}{} +\end{verbatim} +There is no standard \LaTeX\ command like \verb|\bfseries| to select +the medium condensed (|mc|) series created here. If you want to use +this font, you must do something like: +\begin{verbatim} + \fontfamily{pad}\fontseries{mc}\selectfont +\end{verbatim} +If it doesn't find a suitable metric file for a narrow series, +\fontinst will just skip over and continue, unless you specifically +tell it to fake a narrow series. + +And so the process continues: \fontinst attempts to create \vpl files +for condensed versions of all the font shapes met so far, and then +goes on to: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padb8r.mtx +\end{verbatim} +And again, if it finds a suitable metric file (\texttt{padb8r.mtx} or +\texttt{padb8a.afm}), it'll potter off and create the files: +\begin{verbatim} + padb7t.vpl + padb8t.vpl + padb8c.vpl +\end{verbatim} +And these lines added to the given \fd files: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{b}{n}{<<->> padb7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{b}{n}{<<->> padb8t}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{b}{n}{<<->> padb8c}{} +\end{verbatim} +With this step done, fontinst will try to create \vpl files for the +small caps, slanted, and italic versions of |pad/b|; and then it'll +try to create condensed versions of all those: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek padb8r.mtx + INFO>> to make LaTeX font shape <> seek padbc8r.mtx + INFO>> to make LaTeX font shape <> seek padbo8r.mtx + INFO>> to make LaTeX font shape <> seek padbi8r.mtx + INFO>> to make LaTeX font shape <> seek padb8rn.mtx + INFO>> to make LaTeX font shape <> seek padbc8rn.mtx + INFO>> to make LaTeX font shape <> seek padbo8rn.mtx + INFO>> to make LaTeX font shape <> seek padbi8rn.mtx +\end{verbatim} +If it manages to find the files it needs to create the \vpl files to +use all those fonts with \LaTeX, you'll end up with the following +lines in the T1 \fd file (I've ignored the OT1 \fd file to save some +space): +\begin{verbatim} + \DeclareFontShape{T1} {pad}{b} {n} {<<->> padb8t}{} + \DeclareFontShape{T1} {pad}{b} {sc}{<<->> padbc8t}{} + \DeclareFontShape{T1} {pad}{b} {sl}{<<->> padbo8t}{} + \DeclareFontShape{T1} {pad}{b} {it}{<<->> padbi8t}{} + \DeclareFontShape{T1} {pad}{bc}{n} {<<->> padb8tn}{} + \DeclareFontShape{T1} {pad}{bc}{sc}{<<->> padbc8tn}{} + \DeclareFontShape{T1} {pad}{bc}{sl}{<<->> padbo8tn}{} + \DeclareFontShape{T1} {pad}{bc}{it}{<<->> pckbi8tn}{} +\end{verbatim} +To translate into English: Adobe Garamond bold in `normal', small +caps, slanted, and italic versions, as well as condensed versions of +all four. + +Again, because there's no convenient way of selecting the condensed +versions with existing \LaTeX\ commands, you need to say something +like: +\begin{verbatim} + \fontfamily{pad}\fontseries{bc}\selectfont +\end{verbatim} +to use the bold condensed (|bc|) versions of this font; you can of +course use \verb|\itshape|, \verb|\scshape|, \verb|\slshape|, and +\verb|upshape| to switch between the italic, small caps, slanted, and +`normal' versions of Adobe Garamond bold condensed once you've got +|pad/bc| selected. + +So far, you've seen \verb|\latinfamily| look at two different weights +and two different widths. For each weight, \verb|\latinfamily| will +try and install eight different fonts as you can see above. It will +try and install the same eight different fonts for each of the +following different weights: +\begin{center} +\begin{tabular}{lll} + \emph{\LaTeX} & \emph{Fontname} & \emph{description} \\ + |ul| & |a| & ultra light \\ + |el| & |i| & extra light \\ + |l| & |l| & light \\ + |m| & |k|, |r| & book, regular \\ + |mb| & |m| & medium \\ + |db| & |d| & demi bold \\ + |sb| & |s| & semi bold \\ + |b| & |b| & bold \\ + |eb| & |c|, |h|, |x| & black, heavy, extra bold \\ + |ub| & |u| & ultra bold +\end{tabular} +\end{center} +The \LaTeX\ column contains the label that will be used in the +\verb|\DeclareFontShape| command to specify the font series. The +\Fontnamekb column contains the width specifier used to name the font +metric file that \fontinst will look for in that case. + +In other words, at some stage \fontinst will look for: +\begin{verbatim} + INFO>> to make LaTeX font shape <> seek pads8r.mtx +\end{verbatim} +and if it finds a suitable metric file (\texttt{pads8r.mtx} or +\texttt{pads8a.afm}), it will create: +\begin{verbatim} + pads7t.vpl + pads8t.vpl + pads8c.vpl +\end{verbatim} +and \fd file entries like this: +\begin{verbatim} + OT1pad.fd: \DeclareFontShape{OT1}{pad}{sb}{n}{<<->> pads7t}{} + T1pad.fd: \DeclareFontShape{T1} {pad}{sb}{n}{<<->> pads8t}{} + TS1pad.fd: \DeclareFontShape{TS1}{pad}{sb}{n}{<<->> pads8c}{} +\end{verbatim} +and since |sb| is not a normal \LaTeX\ font series, you'll need to use +something like: +\begin{verbatim} + \fontfamily{pad}\fontseries{sb}\selectfont +\end{verbatim} +to use this font. + +% For example, \verb|\latinfamily{ptm}{}| is +% syntactic sugar for: +% \begin{verbatim} +% \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} +% \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} +% \transformfont{ptmb8r}{\reencodefont{8r}{\fromafm{ptmb8a}}} +% \transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}} +% \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} +% \transformfont{ptmbo8r}{\slantfont{167}{\frommtx{ptmb8r}}} +% \installfonts +% \installfamily{T1}{ptm}{} +% \installfamily{OT1}{ptm}{} +% \installfont{ptmr8t}{ptmr8r,latin}{T1}{T1}{ptm}{m}{n}{} +% \installfont{ptmr7t}{ptmr8r,latin}{OT1}{OT1}{ptm}{m}{n}{} +% \installfont{ptmrc8t}{ptmr8r,latin}{T1c}{T1}{ptm}{m}{sc}{} +% \installfont{ptmrc7t}{ptmr8r,latin}{OT1c}{OT1}{ptm}{m}{sc}{} +% \installfont{ptmri8t}{ptmri8r,latin}{T1}{T1}{ptm}{m}{it}{} +% \installfont{ptmri7t}{ptmri8r,latin}{OT1i}{OT1}{ptm}{m}{it}{} +% \installfont{ptmro8t}{ptmro8r,latin}{T1}{T1}{ptm}{m}{sl}{} +% \installfont{ptmro7t}{ptmro8r,latin}{OT1}{OT1}{ptm}{m}{sl}{} +% \installfont{ptmb8t}{ptmb8r,latin}{T1}{T1}{ptm}{b}{n}{} +% \installfont{ptmb7t}{ptmb8r,latin}{OT1}{OT1}{ptm}{b}{n}{} +% \installfont{ptmbc8t}{ptmb8r,latin}{T1c}{T1}{ptm}{b}{sc}{} +% \installfont{ptmbc7t}{ptmb8r,latin}{OT1c}{OT1}{ptm}{b}{sc}{} +% \installfont{ptmbi8t}{ptmbi8r,latin}{T1}{T1}{ptm}{b}{it}{} +% \installfont{ptmbi7t}{ptmbi8r,latin}{OT1i}{OT1}{ptm}{b}{it}{} +% \installfont{ptmbo8t}{ptmbo8r,latin}{T1}{T1}{ptm}{b}{sl}{} +% \installfont{ptmbo7t}{ptmbo8r,latin}{OT1}{OT1}{ptm}{b}{sl}{} +% \endinstallfonts +% \end{verbatim} + + +The \texttt{basicex.tex} file in the \texttt{examples} directory of +the main \fontinst distribution is an annotated command file which +does roughly the same things as the \verb|\latinfamily| command for +the \texttt{pad} family of fonts. + + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps b/Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps new file mode 100644 index 00000000000..8ca14df79de --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps @@ -0,0 +1,265 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: roadmap.fig +%%Creator: fig2dev Version 3.1 Patchlevel 1 +%%CreationDate: Sat Sep 16 18:24:06 1995 +%%For: alanje@rsuna.crn.cogs.susx.ac.uk (Alan Jeffrey, Research Fellow) +%%Orientation: Portrait +%%BoundingBox: 0 0 298 312 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize A4 +%%EndSetup +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {} def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-112.0 334.0 translate +1 -1 scale + +/clp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/l {lineto} bind def +/m {moveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +7.500 slw +% Arc +n 4813.51 1452.05 m 4800.00 1575.00 l 4754.06 1460.15 l gs col-1 s gr +n 4284.38 1645.31 520.40 -91.03 -7.77 arc +gs col-1 s gr + +% Arc +n 3045.94 1460.15 m 3000.00 1575.00 l 2986.49 1452.05 l gs col-1 s gr +n 3515.62 1645.31 520.40 -88.97 -172.23 arcn +gs col-1 s gr + +% Arc +n 2771.84 3251.35 m 2775.00 3375.00 l 2714.02 3267.38 l gs col-1 s gr +n 2279.17 3512.50 514.55 -84.89 -15.50 arc +gs col-1 s gr + +% Arc +n 3285.98 3267.38 m 3225.00 3375.00 l 3228.16 3251.35 l gs col-1 s gr +n 3720.83 3512.50 514.55 -95.11 -164.50 arcn +gs col-1 s gr + +% Arc +n 4247.24 2906.08 m 4125.00 2925.00 l 4223.95 2850.78 l gs col-1 s gr +n 3525.00 1500.00 1546.16 39.09 67.17 arc +gs col-1 s gr + +% Arc +n 3403.37 4702.50 m 3525.00 4725.00 l 3407.09 4762.39 l gs col-1 s gr +n 3493.27 4214.42 511.56 164.63 86.44 arcn +gs col-1 s gr + +% Arc +n 4394.64 4681.42 m 4275.00 4650.00 l 4395.35 4621.42 l gs col-1 s gr +n 4291.72 3239.01 1411.09 -3.62 90.68 arc +gs col-1 s gr + +% Arc +n 4398.18 4811.29 m 4275.00 4800.00 l 4389.00 4752.00 l gs col-1 s gr +n 3787.50 1650.00 3187.50 28.07 81.20 arc +gs col-1 s gr + +% Arc +n 4306.30 4511.76 m 4200.00 4575.00 l 4264.03 4469.17 l gs col-1 s gr +n 2769.64 3133.93 2030.42 0.45 45.21 arc +gs col-1 s gr + +% Ellipse +n 3900 2962 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3900 562 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3900 1762 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3000 1762 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4800 1762 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 4800 2962 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 5700 2962 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 6600 2962 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 2100 2962 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3000 4162 225 187 0 360 DrawEllipse gs col-1 s gr + +% Ellipse +n 3900 5362 225 187 0 360 DrawEllipse gs col-1 s gr + +% Polyline +n 3525 975 m 4275 975 l 4275 1275 l 3525 1275 l clp gs col-1 s gr +% Polyline +n 3525 2175 m 4275 2175 l 4275 2475 l 3525 2475 l clp gs col-1 s gr +% Polyline +n 4425 2175 m 5175 2175 l 5175 2475 l 4425 2475 l clp gs col-1 s gr +% Polyline +n 2625 3375 m 3375 3375 l 3375 3675 l 2625 3675 l clp gs col-1 s gr +% Polyline +n 3525 4575 m 4275 4575 l 4275 4875 l 3525 4875 l clp gs col-1 s gr +% Polyline +n 3900 750 m 3900 975 l gs col-1 s gr +n 3930.00 855.00 m 3900.00 975.00 l 3870.00 855.00 l gs col-1 s gr +% Polyline +n 3900 1275 m 3900 1575 l gs col-1 s gr +n 3930.00 1455.00 m 3900.00 1575.00 l 3870.00 1455.00 l gs col-1 s gr +% Polyline +n 3900 1950 m 3900 2175 l gs col-1 s gr +n 3930.00 2055.00 m 3900.00 2175.00 l 3870.00 2055.00 l gs col-1 s gr +% Polyline +n 3900 2475 m 3900 2775 l gs col-1 s gr +n 3930.00 2655.00 m 3900.00 2775.00 l 3870.00 2655.00 l gs col-1 s gr +% Polyline +n 4800 1950 m 4800 2175 l gs col-1 s gr +n 4830.00 2055.00 m 4800.00 2175.00 l 4770.00 2055.00 l gs col-1 s gr +% Polyline +n 4800 2475 m 4800 2775 l gs col-1 s gr +n 4830.00 2655.00 m 4800.00 2775.00 l 4770.00 2655.00 l gs col-1 s gr +% Polyline +n 3000 1950 m 3000 3375 l gs col-1 s gr +n 3030.00 3255.00 m 3000.00 3375.00 l 2970.00 3255.00 l gs col-1 s gr +% Polyline +n 3000 3675 m 3000 3975 l gs col-1 s gr +n 3030.00 3855.00 m 3000.00 3975.00 l 2970.00 3855.00 l gs col-1 s gr +% Polyline +n 3900 3150 m 3900 4575 l gs col-1 s gr +n 3930.00 4455.00 m 3900.00 4575.00 l 3870.00 4455.00 l gs col-1 s gr +% Polyline +n 3900 4875 m 3900 5175 l gs col-1 s gr +n 3930.00 5055.00 m 3900.00 5175.00 l 3870.00 5055.00 l gs col-1 s gr +/Helvetica findfont 180.00 scalefont setfont +3900 3000 m +gs 1 -1 sc (tfm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +3900 600 m +gs 1 -1 sc (afm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +3900 1800 m +gs 1 -1 sc (pl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +4800 1800 m +gs 1 -1 sc (vpl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +3000 1800 m +gs 1 -1 sc (fd) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +4800 3000 m +gs 1 -1 sc (vf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +5700 3000 m +gs 1 -1 sc (pfa) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +6600 3000 m +gs 1 -1 sc (pfb) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +2100 3000 m +gs 1 -1 sc (tex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +3000 4200 m +gs 1 -1 sc (dvi) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Helvetica findfont 180.00 scalefont setfont +3900 5400 m +gs 1 -1 sc (ps) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Palatino-Italic findfont 180.00 scalefont setfont +3900 1175 m +gs 1 -1 sc (fontinst) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Palatino-Italic findfont 180.00 scalefont setfont +3900 2375 m +gs 1 -1 sc (pltotf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Palatino-Italic findfont 180.00 scalefont setfont +4800 2375 m +gs 1 -1 sc (vptovf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Palatino-Italic findfont 180.00 scalefont setfont +3000 3575 m +gs 1 -1 sc (latex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +/Palatino-Italic findfont 180.00 scalefont setfont +3900 4775 m +gs 1 -1 sc (dvips) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr +$F2psEnd +restore diff --git a/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf new file mode 100644 index 00000000000..8d6c2b593c7 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf new file mode 100644 index 00000000000..4ae8a1eeb75 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf differ diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/cc-pl.enc b/Master/texmf-dist/doc/fonts/fontinst/test/cc-pl.enc new file mode 100644 index 00000000000..161fe4345be --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/cc-pl.enc @@ -0,0 +1,258 @@ +/encpcr [ +/Gamma +/Delta +/Theta +/Lambda +/Xi +/Pi +/Sigma +/Upsilon +/Phi +/Psi +/Omega +/ff +/fi +/fl +/ffi +/ffl +/dotlessi +/dotlessj +/grave +/acute +/caron +/breve +/macron +/ring +/cedilla +/germandbls +/ae +/oe +/oslash +/AE +/OE +/Oslash +/suppress +/exclam +/quotedblright +/numbersign +/dollar +/percent +/ampersand +/quoteright +/parenleft +/parenright +/asterisk +/plus +/comma +/hyphen +/period +/slash +/zero +/one +/two +/three +/four +/five +/six +/seven +/eight +/nine +/colon +/semicolon +/exclamdown +/equal +/questiondown +/question +/at +/A +/B +/C +/D +/E +/F +/G +/H +/I +/J +/K +/L +/M +/N +/O +/P +/Q +/R +/S +/T +/U +/V +/W +/X +/Y +/Z +/bracketleft +/quotedblleft +/bracketright +/circumflex +/dotaccent +/quoteleft +/a +/b +/c +/d +/e +/f +/g +/h +/i +/j +/k +/l +/m +/n +/o +/p +/q +/r +/s +/t +/u +/v +/w +/x +/y +/z +/endash +/emdash +/hungarumlaut +/tilde +/dieresis +/.notdef +/Aogonek +/Cacute +/.notdef +/.notdef +/.notdef +/Eogonek +/.notdef +/.notdef +/.notdef +/Lslash +/Nacute +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/Sacute +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/Zacute +/.notdef +/Zdotaccent +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/aogonek +/cacute +/.notdef +/.notdef +/.notdef +/eogonek +/.notdef +/.notdef +/.notdef +/lslash +/nacute +/.notdef +/.notdef +/guillemotleft +/guillemotright +/.notdef +/sacute +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/zacute +/.notdef +/zdotaccent +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/Oacute +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/oacute +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/quotedblbase +] def diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty b/Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty new file mode 100644 index 00000000000..7864da89731 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty @@ -0,0 +1,941 @@ +% We start by making some default catcode assignments, in case we are +% using ini\TeX{}. +% \begin{macrocode} +%<*pkg> +\catcode`\{=1 +\catcode`\}=2 +\catcode`\#=6 +\catcode`\^=7 +% +% \end{macrocode} +% +% \package{fontinst} uses some unusual, but convenient, settings of +% |\catcode|. |@| and |_| are made letters, |~| is made a space, and +% space and newline are ignored. Before setting those however, we save +% the current values of the catcodes, so that they can be restored at +% the end of \texttt{fontinst.sty}. +% +% \begin{macrocode} +%<*pkg> +\edef\spacecatcode{\the\catcode`\ } +\edef\nlcatcode{\the\catcode`\^^M} +\edef\atcatcode{\the\catcode`\@} +\edef\underscorecatcode{\the\catcode`\_} +\edef\tildecatcode{\the\catcode`\~} +% \end{macrocode} +% +% \begin{macrocode} +\catcode`\ =9 +\catcode`\^^M=9 +\catcode`\@=11 +\catcode`\_=11 +\catcode`\~=10 +% +% \end{macrocode} +% + + +\newlinechar=`\^^J + +% \begin{macro}{\a_read} +% \begin{macro}{\b_read} +% \begin{macro}{\a_filelineno} +% \begin{macro}{\b_filelineno} +% These control sequences are used for keeping track of the ``physical'' +% side of the two input files. |\a_read| and |\b_read| are the stream +% numbers. |\a_filelineno| and |\b_filelineno| are the respective +% line numbers of the lines most recently read from these files. +% \begin{macrocode} +\newread\a_read +\newread\b_read +\newcount\a_filelineno +\newcount\b_filelineno +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro} +% +% \begin{macro}{\a_lineno} +% \begin{macro}{\b_lineno} +% \begin{macro}{\a_bufbase} +% \begin{macro}{\b_bufbase} +% \begin{macro}{\a_bufmid} +% \begin{macro}{\b_bufmid} +% \begin{macro}{\a_buftop} +% \begin{macro}{\b_buftop} +% These count registers are used for managing the buffert of lines +% that are read from the input files when a match between lines is +% being looked for. This buffert consists of lines which are saved in +% the macros +% \begin{quote} +% |\|\meta{letter}|_saved-|\meta{ofs} +% \end{quote} +% where \meta{letter} is |a| or |b| and \meta{ofs} is an integer, +% being the index into the buffert. |\a_bufbase| and |\b_bufbase| +% contain the \meta{ofs} of the first line currently in the buffert, +% whereas |\a_buftop| and |\b_buftop| contain the \meta{ofs} of the +% last such line. |\a_bufmid| and |\b_bufmid| hold the buffert +% positions of the lines which are currently considered the next by +% |\get_next_line|. If \(\mathtt{buftop}<\mathtt{bufmid}\) then the +% buffert is empty. |\a_lineno| and |\b_lineno| are the respective +% line numbers of the |\a_bufbase| and |\b_bufbase| lines. +% +% All these registers should be set globally. +% \begin{macrocode} +\newcount\a_lineno \newcount\b_lineno +\newcount\a_bufbase \newcount\b_bufbase +\newcount\a_bufmid \newcount\b_bufmid +\newcount\a_buftop \newcount\b_buftop +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% \end{macro}\end{macro} + + +% \begin{macro}{\get_next_line} +% The |\get_next_line| macro is called as +% \begin{quote} +% |\get_next_line|\marg{letter} +% \end{quote} +% where \meta{letter} is |a| or |b|. This sets the +% |\|\meta{letter}|_line| macro to the next line of that file and +% updates the value of |\|\meta{letter}|_lineno|. +% +% The ``next line'' is normally read from input stream +% |\|\meta{letter}|_read|, but if a line mismatch recently occured +% then it might happen that the next line has already been read from +% the file, and in that case it is taken from one of the +% |\|\meta{letter}|_saved-|\meta{ofs} macros. +% \begin{macrocode} +\def\get_next_line#1{ + \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname + \ifeof \csname#1_read\endcsname + \x_cs\let{#1_line}\end_of_file_line + \else + \read\csname#1_read\endcsname t\x_cs{o}{#1_line} + \global\advance \csname#1_filelineno\endcsname \@ne + \fi + \else + \expandafter\let \csname#1_line\expandafter\endcsname + \csname#1_saved-\the\csname#1_bufmid\endcsname\endcsname + \fi +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\end_of_file_line} +% This macro expands to the text \verb*|(ENDOFFILE) | with the +% catcodes it would have if read from an input file. It is used as an +% end-of-file marker. +% \begin{macrocode} +\begingroup + \catcode`\(=13 + \catcode`\)=13 + \gdef\end_of_file_line{(ENDOFFILE)~} +\endgroup +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\the_line} +% The |\the_line| macro is called as +% \begin{quote} +% |\the_line|\marg{letter}\marg{ofs} +% \end{quote} +% where \meta{letter} is |a| or |b|, and \meta{ofs} is a \TeX\ number. +% It expands to the control sequence |\|\meta{letter}|_saved-|^^A +% \meta{ofs}. +% \begin{macrocode} +\def\the_line#1#2{\csname#1_saved-\number#2\endcsname} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\initialise_search} +% The |\initialise_search| macro sets everything up for a search for +% a match between lines. +% +% \begin{macrocode} +\def\initialise_search{ + \global\a_bufbase=\a_bufmid + \global\b_bufbase=\b_bufmid + \add_to_buffert{a} + \add_to_buffert{b} + \global\advance \a_bufmid \@ne + \global\advance \b_bufmid \@ne +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\add_to_buffert} +% The |\add_to_buffert| macro is called as +% \begin{quote} +% |\add_to_buffert|\marg{letter} +% \end{quote} +% It adds the line returned by |\get_next_line| to the corresponding +% buffert (if it wasn't already there) and updates the counters for +% that buffert. After this, the line following the line being put into +% the buffert will be the line that |\get_next_line| returns. +% \begin{macrocode} +\def\add_to_buffert#1{ + \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname + \expandafter\let + \csname#1_saved-\the\csname#1_bufmid\endcsname + \expandafter\endcsname + \csname#1_line\endcsname + \global\advance \csname#1_buftop\endcsname \@ne + \fi +} +% \end{macrocode} +% \end{macro} + + + +\newcount\first_integer +\newcount\second_integer + +% \begin{macro}{\match_lines} +% The |\match_lines| macro tests if two lines can be considered the +% same (up to metrics changes, which need not be small). It is called as +% \begin{quote} +% |\match_lines|\marg{line a}\marg{line b} +% \end{quote} +% \meta{line a} and \meta{line b} may be any amount of text which +% eventually expands to the lines in question. |\match_lines| returns +% its answer by setting the |_a_| switch to |false| (if the lines +% match) or |true| (if the lines don't match). +% +% |\match_lines| also causes the |\first_dimen| and |\second_dimen| +% registers, as well as the |_histogram_dimen_| switch to be updated, +% so it can be immediately followed by a test of the metrics. +% \begin{macrocode} +\def\match_lines#1#2{ + \first_integer=\z@ + \second_integer=\z@ + \first_dimen=\z@ + \second_dimen=\z@ + \x_cs\let{string-+}\empty_command + \x_cs\let{string--}\empty_command +% \end{macrocode} +% \begin{macrocode} + \def\sign{+} + #1\line_stop + \def\sign{-} + #2\line_stop +% \end{macrocode} +% \begin{macrocode} + \_a_false + \expandafter\ifx \csname cmd-+ \expandafter\endcsname + \csname cmd--\endcsname + \else \_a_true \fi + \ifnum \first_integer=\z@ \else \_a_true \fi + \ifnum \second_integer=\z@ \else \_a_true \fi + \expandafter\ifx \csname string-+ \expandafter\endcsname + \csname string--\endcsname + \else \_a_true \fi +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\try_matching} +% \begin{macro}{\a_bufP} +% \begin{macro}{\b_bufP} +% The |\try_matching| descends through the buffert until the |_a_| +% switch gets |false| or it has tried the bottommost lines in the +% buffert. Since |\body| is already defined by the |\loop| in +% |\process_lines|, |\try_matching| uses an explicit end recursion to +% make the loop. +% \begin{macrocode} +\newcount\a_bufP +\newcount\b_bufP +\def\try_matching{ + \global\advance \a_bufP \m@ne + \global\advance \b_bufP \m@ne +% % Begin debug +% \wlog{a_bufbase:~\the\a_bufbase\space\space\space +% b_bufbase:~\the\b_bufbase} +% \wlog{a_bufmid:~\the\a_bufmid\space\space\space +% b_bufmid:~\the\b_bufmid} +% \wlog{a_buftop:~\the\a_buftop\space\space\space +% b_buftop:~\the\b_buftop} +% \wlog{a_bufP:~\the\a_bufP\space\space\space +% b_bufP:~\the\b_bufP} +% \begingroup +% \def\do_left_paren{(}\def\do_right_paren{)} +% \wlog{a_line:~\a_line} +% \wlog{b_buf_line:~\the_line{b}{\b_bufP}} +% \wlog{b_line:~\b_line} +% \wlog{a_buf_line:~\the_line{a}{\a_bufP}^^J} +% \endgroup +% % End debug + \match_lines{\a_line}{\the_line{b}{\b_bufP}} + \if_a_ + \match_lines{\the_line{a}{\a_bufP}}{\b_line} + \if_a_ \else + \global\a_bufmid=\a_bufP + \fi + \else + \global\b_bufmid=\b_bufP + \fi + \ifnum \a_bufP>\a_bufbase \if_a_ + \expandafter\expandafter\expandafter\try_matching + \fi \fi +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\report_mismatch} +% The |\report_mismatch| macro does precisely what it says. It also increases +% the \texttt{bufbase} and \texttt{lineno} registers to point at the +% matching lines. +% \begin{macrocode} +\def\report_mismatch{ + \begingroup + \def\do_left_paren{(} + \def\do_right_paren{)} + \wlog{Mismatch~in~first~file~(at~\the\a_lineno):} + \loop + \wlog{\the_line{a}{\a_bufbase}} + \ifnum \a_bufbase<\a_bufmid + \global\advance \a_bufbase \@ne + \global\advance \a_lineno \@ne + \repeat + \wlog{Match~found~at~line~\the\a_lineno.} + \wlog{Mismatch~in~second~file~(at~\the\b_lineno):} + \loop + \wlog{\the_line{b}{\b_bufbase}} + \ifnum \b_bufbase<\b_bufmid + \global\advance \b_bufbase \@ne + \global\advance \b_lineno \@ne + \repeat + \wlog{Match~found~at~line~\the\b_lineno.} + \endgroup + \glyphified_location + \ifnum 4>\compared_status + \global\chardef\compared_status=4 + \fi +} +% \end{macrocode} +% \end{macro} + +\def\glyphified_location{ + \ifx \encoding_name\empty_command + \ifnum \m@ne<\last_character + \wlog{This~is~related~to~slot~\the\last_character.^^J} + \else + \wlog{This~is~in~the~header.^^J} + \fi + \else + \if_undefined{name-\encoding_name-\the\last_character}\then + \ifnum \last_character=\m@ne + \wlog{This~is~in~the~header.^^J} + \else + \wlog{This~is~related~to~slot~\the\last_character\space + (unencoded).^^J} + \fi + \else + \wlog{This~is~related~to~the~glyph~ + \csname name-\encoding_name-\the\last_character\endcsname + .^^J} + \fi + \fi +} +% \begin{macro}{\compared_status} +% |\compared_status| is a \meta{chardef token} which stores the +% current status of the comparision, according to the following table +% \begin{enumerate} +% \item[0] The property lists are equal---there may be checksum +% differences, but nothing else. +% \item[1] The property lists are almost equal---there are +% differences in the metrics, but these are within the |\tolerance| +% level. +% \item[2] The property lists are essentially equal---there are +% differences in the metrics, but these are within the |\tolerance| +% level, with the exception of some \texttt{CHARHT}, +% \texttt{CHARDP}, and \texttt{CHARIC} values. +% \item[3] The property lists have metric differences---there are +% metric differences not with category 2. +% \item[4] The property lists are not completely matched. +% \end{enumerate} +% \end{macro} + +% \begin{macro}{\step_linenos} +% The |\step_linenos| macro increments the |_lineno| line numbers. If +% the current line was fetched from the buffert, then it also +% increments the |_bufmid| and |_bufbase| registers, and checks +% whether the buffert ended (in which case it is normalized to its +% starting position, to conserve hash table space). +% \begin{macrocode} +\def\step_linenos{ + \global\advance \a_lineno \@ne + \ifnum \a_bufmid=\a_buftop + \global\a_bufbase=\z@ + \global\a_bufmid=\z@ + \global\a_buftop=\m@ne + \else\ifnum \a_bufmid<\a_buftop + \global\advance \a_bufmid \@ne + \global\advance \a_bufbase \@ne + \fi\fi + \global\advance \b_lineno \@ne + \ifnum \b_bufmid=\b_buftop + \global\b_bufbase=\z@ + \global\b_bufmid=\z@ + \global\b_buftop=\m@ne + \else\ifnum \b_bufmid<\b_buftop + \global\advance \b_bufmid \@ne + \global\advance \b_bufbase \@ne + \fi\fi +} +% \end{macrocode} +% \end{macro} + + +\newdimen\first_dimen +\newdimen\second_dimen +\newcount\ht_hist_i +\newcount\ht_hist_ii +\newcount\ht_hist_iii +\newcount\ht_hist_iv +\newcount\dp_hist_i +\newcount\dp_hist_ii +\newcount\dp_hist_iii +\newcount\dp_hist_iv +\newcount\ic_hist_i +\newcount\ic_hist_ii +\newcount\ic_hist_iii +\newcount\ic_hist_iv + +% \begin{macro}{\clear_histograms} +% This macro clears all the histograms. +% \begin{macrocode} +\def\clear_histograms{ + \global\ht_hist_i=\z@ + \global\ht_hist_ii=\z@ + \global\ht_hist_iii=\z@ + \global\ht_hist_iv=\z@ + \global\dp_hist_i=\z@ + \global\dp_hist_ii=\z@ + \global\dp_hist_iii=\z@ + \global\dp_hist_iv=\z@ + \global\ic_hist_i=\z@ + \global\ic_hist_ii=\z@ + \global\ic_hist_iii=\z@ + \global\ic_hist_iv=\z@ +} +% \enc{macrocode} +% \end{macro} + +% \begin{macro}{\present_histograms} +% This macro writes the histogram data to the log file. +% \begin{macrocode} +\def\present_histograms{ + \wlog{\string\tolerance*~\space CHARHT~\space CHARDP~\space CHARIC} + \wlog{~\space\space 1--~\space\space 10\hist_to_eight{ht}{i} + \hist_to_eight{dp}{i}\hist_to_eight{ic}{i}} + \wlog{~\space 10--~\space 100\hist_to_eight{ht}{ii} + \hist_to_eight{dp}{ii}\hist_to_eight{ic}{ii}} + \wlog{~100--~1000\hist_to_eight{ht}{iii}\hist_to_eight{dp}{iii} + \hist_to_eight{ic}{iii}} + \wlog{1000--10000\hist_to_eight{ht}{iv}\hist_to_eight{dp}{iv} + \hist_to_eight{ic}{iv}} +} +\def\hist_to_eight#1#2{\x_cs\hist_to_eight_i{#1_hist_#2}} +\def\hist_to_eight_i#1{ + \ifnum #1<\@M + \four_spaces + \ifnum #1<\one_hundred + \space\space + \ifnum 10>#1 ~\fi + \else \ifnum #1<\one_thousand \space\fi \fi + \else + \ifnum 1000000>#1 + \space\space + \ifnum 100000>#1 ~\fi + \else \ifnum 1000000>#1 ~\fi \fi + \fi + \the#1 +} +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\metric_statistics} +% \begin{macro}{\metric_origin} +% The |\metric_statistics| macro takes care of comparing the metrics +% by inspecting the values of |\first_dimen| and |\second_dimen|. It +% has four classes of differences, which are represented by +% |\compared_status| values 0--3: no difference, tolerable (almost no) +% difference, histogrammed (essentially no) difference, and +% non-tolerable difference. If a non-tolerable difference is found, +% then the current lines are written to the log file. Histogrammed +% differences causes the corresponding +% |\|\meta{type}|_hist_|\meta{group} register to be incremented, and +% tolerable differences only affect the value of |\compared_status|. +% +% The |\metric_origin| macro contains the \meta{type} of the metric +% data. It is usually empty, but PL properties with metrics that have +% histograms set it so that the correct histogram is updated. +% +% \begin{macrocode} +\def\metric_statistics{ + \_a_false + % + \ifdim \first_dimen<\z@ \first_dimen=-\first_dimen \fi + \ifdim \first_dimen=\z@ + \else\ifdim \first_dimen<\tolerance + \ifnum 1>\compared_status + \global\chardef\compared_status=1 + \fi + \else\ifx \metric_origin\empty_command + \_a_true + \else + \a_count=\@ne + \def\a_macro{10} + \loop\ifdim \a_macro\tolerance<\first_dimen + \edef\a_macro{\a_macro 0} + \advance \a_count \@ne + \repeat + \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then + \_a_true + \else + \global\advance \csname \metric_origin _hist_ + \romannumeral\a_count \endcsname \@ne + \ifnum 2>\compared_status + \global\chardef\compared_status=2 + \fi + \fi + \fi\fi\fi + % + \ifdim \second_dimen<\z@ \second_dimen=-\second_dimen \fi + \ifdim \second_dimen=\z@ + \else\ifdim \second_dimen<\tolerance + \ifnum 1>\compared_status + \global\chardef\compared_status=1 + \fi + \else\ifx \metric_origin\empty_command + \_a_true + \else + \a_count=\@ne + \def\a_macro{10} + \loop\ifdim \a_macro\tolerance<\second_dimen + \edef\a_macro{\a_macro 0} + \advance \a_count \@ne + \repeat + \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then + \_a_true + \else + \global\advance \csname \metric_origin _hist_ + \romannumeral\a_count \endcsname \@ne + \ifnum 2>\compared_status + \global\chardef\compared_status=2 + \fi + \fi + \fi\fi\fi + % + \if_a_ + \ifnum 3>\compared_status + \global\chardef\compared_status=3 + \fi + \begingroup + \def\do_left_paren{(} + \def\do_right_paren{)} + \wlog{Metric~differences~at~lines~\the\a_lineno\space + and~\the\b_lineno\space respectively:} + \wlog{\a_line} + \wlog{\b_line} + \endgroup + \glyphified_location + \fi +} +% \end{macrocode} +% \end{macro}\end{macro} + + + + +\newif\if_b_ + +% \begin{macro}{\process_lines} +% The |\process_lines| macro is the cheif executive in the comparision. +% Its normal mode of operation is to retrive the next two lines from +% the input files, match them, and update the metric differences +% statistics. If the lines do not match, however, it starts building a +% buffert of lines in which it searches for two matching lines. When +% these two lines are found the mismatching portions of the files are +% written to the log file, and the metric difference statistics are +% updated for the two lines that matched. +% +% \begin{macrocode} +\def\process_lines{ + \get_next_line{a} + \get_next_line{b} + \match_lines{\a_line}{\b_line} + \if_a_ +% \end{macrocode} +% Now the process of trying to find a match begins. At each step of +% the search for a match, it tries all possible matches with the +% lines read so far that haven't been tried at an earlier step. +% \begin{macrocode} +% \tracingmacros=\@ne\tracingcommands=\tw@ % DEBUG + \initialise_search + \loop + \get_next_line{a} + \get_next_line{b} + \add_to_buffert{a} + \add_to_buffert{b} + \match_lines{\a_line}{\b_line} + \if_a_ + \global\a_bufP=\a_bufmid + \global\b_bufP=\b_bufmid + \try_matching + \fi + \if_a_ + \global\advance \a_bufmid \@ne + \global\advance \b_bufmid \@ne + \ifnum \a_bufmid>\sixt@@n + \errmessage{Big~buffert.~\the\a_lineno[\the\a_filelineno]: + \the\b_lineno[\the\b_filelineno]} + \fi % DEBUG + \repeat + \report_mismatch +% \tracingcommands=\z@\tracingmacros=\z@ % DEBUG +% \end{macrocode} +% \begin{macrocode} + \fi + \metric_statistics + \step_linenos + \par % DEBUG + \if \ifx \a_line\end_of_file_line + \ifx \b_line\end_of_file_line 1\else 0\fi\else 0\fi 0 + % then + \expandafter\process_lines + \fi +} +% \end{macrocode} +% \end{macro} + +\def\loadencoding#1{{ + \def\do_slot{\x_cs\xdef{name-#1-\the\slot_number}{\slot_name}} + \inputetx{#1} +}} + +% \begin{macro}{\comparePLs} +% The |\comparePLs| command compares two property lists files. It is +% geared against verifying that two different such files are as good +% as equal, and it might take a very long time before it gives up on +% trying to find any resemblance between them. It is furthermore only +% meant to be used on (V)PL files generated by \package{TFtoPL} or +% \package{VFtoVP}, because it assumes the property lists follow a +% stricter syntax than \package{PLtoTF} and \package{VPtoVF} requires +% them to. Finally it needs to be said that the comparision is rather +% stupid in many respects, as it is completely line-oriented and +% takes no notice of what kind of property list it is reading. This +% may in some cases cause it to find ``matches'' between lines which +% for syntactical reasons alone cannot match. +% +% |\comparePLs| is called as +% \begin{quote} +% |\comparePLs|\marg{first PL}\marg{second PL}\marg{encoding} +% \end{quote} +% where \meta{first PL} and \meta{second PL} are the complete names +% (including extensions) of the files to compare. \meta{encoding} is +% the name of the encoding to use when translating slots to glyph +% names; leave it empty if you don't want to specify one. (One could +% use the \texttt{CODINGSCHEME} property to determine the encoding in +% that case, but this is not currently done). The slot to glyph +% translation is only done to make it easier to locate the position of +% some mismatch; it has not effect on the actual comparision. +% \begin{macrocode} +\newcount\last_character +\def\comparePLs#1#2#3{{ + \def\encoding_name{#3} + \last_character=\m@ne + \openin\a_read=#1\x_relax + \openin\b_read=#2\x_relax + \immediate\write\sixt@@n{#1~and^^J #2} + \pl_catcodes + \let\do_left_paren=\do_property + \let\do_right_paren=\empty_command + \global\chardef\compared_status=\z@ + \clear_histograms + \global\a_filelineno=\@ne + \global\b_filelineno=\@ne + \global\a_lineno=\@ne + \global\b_lineno=\@ne + \global\a_bufbase=\z@ + \global\b_bufbase=\z@ + \global\a_bufmid=\z@ + \global\b_bufmid=\z@ + \global\a_buftop=\m@ne + \global\b_buftop=\m@ne + \process_lines + \closein\a_read + \closein\b_read + \ifcase \compared_status + \immediate\write\sixt@@n{are~equal.^^J} + \or + \immediate\write\sixt@@n{are~almost~equal.^^J} + \or + \immediate\write\sixt@@n{are~essentially~equal.} + \or + \immediate\write\sixt@@n{have~non-tolerated~metric~differences.} + \or + \immediate\write\sixt@@n{do~not~completely~match.} + \else + \immediate\write\sixt@@n{could~not~be~matched!} + \fi + \ifnum 1<\compared_status + \immediate\write\sixt@@n{See~log~file~for~specification.} + \present_histograms + \immediate\write\sixt@@n{} + \fi +}} +% \end{macrocode} +% \end{macro} + + +\begingroup + \catcode`\(=13 \catcode`\)=13 + \gdef\pl_catcodes{ + \catcode`\(=13 \def({\do_left_paren} + \catcode`\)=13 \def){\do_right_paren} + } +\endgroup + +\def\do_property#1~{ + \x_cs\edef{cmd-\sign}{#1} + \let\metric_origin=\empty_command + \x_cs\ifx{pl-#1}\x_relax + \expandafter\ignore_parens + \else + \csname pl-#1 \expandafter\endcsname + \fi +} +\def\pl_def_s#1(#2){\x_cs\def{pl-#1}#2~} +\begingroup + \catcode`\!=13\lccode`\!=`\) +\lowercase{\endgroup + \def\pl_def_p#1(#2){\x_cs\def{pl-#1}#2!} +} +\def\pl_let#1#2{ + \expandafter\let + \csname pl-#1 \expandafter\endcsname \csname pl-#2 \endcsname +} + + + +\newdimen\tolerance \tolerance=110sp + +% The following is for gobbling to the next unmatched right parenthesis. +% The |\catcode| trick used by the PL-to-MTX converter's +% |\ignore_parens| cannot be used since the characters are already +% tokenized, but one can do something similar with an |\edef| since one +% does not have to worry about the PL files containing material which +% expands in an undesirable way. +% +% The |\line_stop| is so that linebreaks in the parenthesis being +% gobbled will not cause total havok (although the parenthesis won't be +% gobbled completely). It inserts end-of-group tokens until the |\edef| +% is terminated, and then the |\afterassignment| token will close the +% group and restore the normal definition. + +\def\ignore_parens{ + \begingroup + \def\do_left_paren{{\iffalse}\fi} + \def\do_right_paren{\iffalse{\fi}} + \def\line_stop{\do_right_paren\line_stop} + \afterassignment\endgroup + \edef\a_macro{\iffalse}\fi +} +\def\line_stop{\x_relax} +% \end{macrocode} +% +\begingroup + \catcode`\(=1 + \catcode`\)=2 + \gdef\pl_string{ + \begingroup + \def\do_left_paren{(\iffalse)\fi} + \def\do_right_paren{\iffalse(\fi)} + \def\line_stop{\iffalse{\fi}\line_stop} + \afterassignment\pl_string_i + \edef\a_macro{\iffalse}\fi + } +\endgroup +\def\pl_string_i{ + \expandafter\endgroup \expandafter\def + \csname string-\sign \expandafter\endcsname + \expandafter{\a_macro} +} + +\def\pl_real#1{\sign#1\hundred_pt} +\newdimen\hundred_pt \hundred_pt=100pt + +% Convert a PL int to a \TeX{} int, assuming it's prefixed +% by |C|, |D|, |O|, or |H|. +% +% \begin{macrocode} +\def\pl_int#1#2{ + \sign \ifx#1C `#2 + \else\ifx#1D #2 + \else\ifx#1O '#2 + \else\ifx#1H "#2 + \else -1\errmessage{Unknown~PL~number~prefix~`#1'} + \fi\fi\fi\fi +} +% \end{macrocode} + + +% \begin{macrocode} +\pl_def_p{NEXTLARGER}(#1~#2){\advance \first_integer \pl_int{#1}{#2}} +\pl_let{BOUNDARYCHAR}{NEXTLARGER} +% \end{macrocode} +% +% +% \begin{macrocode} +\x_cs\let{pl-VTITLE}=\pl_string +\pl_let{FONTNAME}{VTITLE} +\pl_let{FONTAREA}{VTITLE} +% \pl_let{CHECKSUM}{VTITLE} +% % Not really a string, but unsigned numbers can become too large for TeX. +% \pl_let{FONTCHECKSUM}{CHECKSUM} +% Commented out since checksums vary too much. +\pl_def_p{FONTAT}(R~#1){\advance \first_dimen \pl_real{#1}} +\pl_let{FONTDSIZE}{FONTAT} +\pl_let{SELECTFONT}{NEXTLARGER} +\pl_let{SETCHAR}{NEXTLARGER} +\pl_def_p{SETRULE}(R~#1~R~#2){ + \advance \first_dimen \pl_real{#1} + \advance \second_dimen \pl_real{#2} +} +\x_cs\let{pl-POP}\empty_command +\pl_let{PUSH}{POP} +\pl_let{MOVERIGHT}{FONTAT} +\pl_let{MOVELEFT}{FONTAT} +\pl_let{MOVEUP}{FONTAT} +\pl_let{MOVEDOWN}{FONTAT} +\pl_let{SPECIAL}{VTITLE} +\pl_let{SPECIALHEX}{VTITLE} +% \end{macrocode} +% +% + +\pl_let{CODINGSCHEME}{VTITLE} +\pl_let{DESIGNSIZE}{FONTAT} + +\def\pl_parameter#1#2#3{ + \advance \first_integer \pl_int{#1}{#2} + \advance \first_dimen \pl_real{#3} +} + +\pl_def_p{PARAMETER}(#1~#2~R~#3){\pl_parameter{#1}{#2}{#3}} + +\pl_def_p{SLANT}(R~#1){\pl_parameter{D}{1}{#1}} +\pl_def_p{SPACE}(R~#1){\pl_parameter{D}{2}{#1}} +\pl_def_p{STRETCH}(R~#1){\pl_parameter{D}{3}{#1}} +\pl_def_p{SHRINK}(R~#1){\pl_parameter{D}{4}{#1}} +\pl_def_p{XHEIGHT}(R~#1){\pl_parameter{D}{5}{#1}} +\pl_def_p{QUAD}(R~#1){\pl_parameter{D}{6}{#1}} +\pl_def_p{EXTRASPACE}(R~#1){\pl_parameter{D}{7}{#1}} + +\pl_def_p{NUM1}(R~#1){\pl_parameter{D}{8}{#1}} +\pl_def_p{NUM2}(R~#1){\pl_parameter{D}{9}{#1}} +\pl_def_p{NUM3}(R~#1){\pl_parameter{D}{10}{#1}} +\pl_def_p{DENOM1}(R~#1){\pl_parameter{D}{11}{#1}} +\pl_def_p{DENOM2}(R~#1){\pl_parameter{D}{12}{#1}} +\pl_def_p{SUP1}(R~#1){\pl_parameter{D}{13}{#1}} +\pl_def_p{SUP2}(R~#1){\pl_parameter{D}{14}{#1}} +\pl_def_p{SUP3}(R~#1){\pl_parameter{D}{15}{#1}} +\pl_def_p{SUB1}(R~#1){\pl_parameter{D}{16}{#1}} +\pl_def_p{SUB2}(R~#1){\pl_parameter{D}{17}{#1}} +\pl_def_p{SUPDROP}(R~#1){\pl_parameter{D}{18}{#1}} +\pl_def_p{SUBDROP}(R~#1){\pl_parameter{D}{19}{#1}} +\pl_def_p{DELIM1}(R~#1){\pl_parameter{D}{20}{#1}} +\pl_def_p{DELIM2}(R~#1){\pl_parameter{D}{21}{#1}} +\pl_def_p{AXISHEIGHT}(R~#1){\pl_parameter{D}{22}{#1}} + +\pl_let{DEFAULTRULETHICKNESS}{NUM1} +\pl_let{BIGOPSPACING1}{NUM2} +\pl_let{BIGOPSPACING2}{NUM3} +\pl_let{BIGOPSPACING3}{DENOM1} +\pl_let{BIGOPSPACING4}{DENOM2} +\pl_let{BIGOPSPACING5}{SUP1} + +\def\boundarychar_name{BOUNDARYCHAR} +\pl_def_s{LABEL}(#1){ + \def\a_macro{#1} + \ifx \a_macro\boundarychar_name + \x_cs\let{string-\sign}\a_macro + \else + \def\a_macro{\csname pl-LABEL(i\endcsname #1~} + \expandafter\a_macro + \fi +} +\pl_def_p{LABEL(i}(#1~#2){ + \last_character=\first_integer + \advance \first_integer \pl_int{#1}{#2} +} +\pl_def_p{LIG}(#1~#2~#3~#4){ + \advance \first_integer \pl_int{#1}{#2} + \advance \second_integer \pl_int{#3}{#4} +} +\pl_let{/LIG}{LIG} +\pl_let{/LIG>}{LIG} +\pl_let{LIG/}{LIG} +\pl_let{LIG/>}{LIG} +\pl_let{/LIG/}{LIG} +\pl_let{/LIG/>}{LIG} +\pl_let{/LIG/>>}{LIG} + +\pl_let{HEADER}{LIG} + +% \def\pl_lig#1~#2~#3~#4~#5~{ +% \x_cs\def{string-\sign}{#1} +% \def\LIG#1~{ +% \if\ifx #1C 0 +% \else\ifx #1D 0 +% \else\ifx #1H 0 +% \else\ifx #1O 0 \else 1\fi\fi\fi\fi 0 +% % then +% \expandafter\both_of_two +% \else +% \expandafter\first_of_two +% \fi{\pl_lig LIG}{~}#1~ +% } +% \def\/{\pl_lig/} + +\pl_let{KRN}{PARAMETER} +\pl_let{SKIP}{NEXTLARGER} + +\pl_def_s{CHARACTER}(#1~#2){ + \last_character=\first_integer + \advance \first_integer \pl_int{#1}{#2} +} +\pl_let{CHARWD}{FONTAT} +\pl_def_p{CHARHT}(R~#1){ + \def\metric_origin{ht} + \advance \first_dimen \pl_real{#1} +} +\pl_def_p{CHARDP}(R~#1){ + \def\metric_origin{dp} + \advance \first_dimen \pl_real{#1} +} +\pl_def_p{CHARIC}(R~#1){ + \def\metric_origin{ic} + \advance \first_dimen \pl_real{#1} +} + +\pl_let{TOP}{NEXTLARGER} +\pl_let{MID}{NEXTLARGER} +\pl_let{BOT}{NEXTLARGER} +\pl_let{REP}{NEXTLARGER} + +\pl_let{FONTDIMEN}{POP} +\pl_let{LIGTABLE}{POP} +\pl_let{VARCHAR}{POP} +\pl_def_s{MAPFONT}(#1~#2){\advance \first_integer \pl_int{#1}{#2}} +\pl_let{MAP}{POP} + + +% \begin{macrocode} +\catcode`\@=\atcatcode +\catcode`\^^M=\nlcatcode +\catcode`\ =\spacecatcode +\catcode`\~=\tildecatcode +\catcode`\_=\underscorecatcode +% \end{macrocode} diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex b/Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex new file mode 100644 index 00000000000..a735a34ed79 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex @@ -0,0 +1,73 @@ +\input fontinst.sty +\input comparemetrics.sty + +% % \tracingmacros=1\tracingcommands=2 +% \comparePLs{cmr5.pl}{cmr5.pl} +% +% \bye + +\tracingstats=1 + +\def\oldf{::efficiency:saved:v1.912:} +\def\newf{::efficiency:saved:v1.913:} + +\loadencoding{t1} +\loadencoding{ot1} +\loadencoding{ts1} +\loadencoding{8r} + +\comparePLs{\oldf padb7t.vpl}{\newf padb7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padb8c.vpl}{\newf padb8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padb8t.vpl}{\newf padb8t.vpl}{t1} %OK 11sp +\comparePLs{\oldf padbc7t.vpl}{\newf padbc7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padbc8t.vpl}{\newf padbc8t.vpl}{t1} +\comparePLs{\oldf padbi7t.vpl}{\newf padbi7t.vpl}{ot1} +\comparePLs{\oldf padbi8c.vpl}{\newf padbi8c.vpl}{ts1} +\comparePLs{\oldf padbi8t.vpl}{\newf padbi8t.vpl}{t1} +\comparePLs{\oldf padbo7t.vpl}{\newf padbo7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padbo8c.vpl}{\newf padbo8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padbo8t.vpl}{\newf padbo8t.vpl}{t1} +\comparePLs{\oldf padr7t.vpl}{\newf padr7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padr8c.vpl}{\newf padr8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padr8t.vpl}{\newf padr8t.vpl}{t1} %OK 11sp +\comparePLs{\oldf padrc7t.vpl}{\newf padrc7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padrc8t.vpl}{\newf padrc8t.vpl}{t1} %OK 11sp +\comparePLs{\oldf padri7t.vpl}{\newf padri7t.vpl}{ot1} +\comparePLs{\oldf padri8c.vpl}{\newf padri8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padri8t.vpl}{\newf padri8t.vpl}{t1} +\comparePLs{\oldf padro7t.vpl}{\newf padro7t.vpl}{ot1} %OK 11sp +\comparePLs{\oldf padro8c.vpl}{\newf padro8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padro8t.vpl}{\newf padro8t.vpl}{t1} +\comparePLs{\oldf pads7t.vpl}{\newf pads7t.vpl}{ot1} +\comparePLs{\oldf pads8c.vpl}{\newf pads8c.vpl}{ts1} +\comparePLs{\oldf pads8t.vpl}{\newf pads8t.vpl}{t1} +\comparePLs{\oldf padsc7t.vpl}{\newf padsc7t.vpl}{ot1} +\comparePLs{\oldf padsc8t.vpl}{\newf padsc8t.vpl}{t1} %OK 11sp +\comparePLs{\oldf padsi7t.vpl}{\newf padsi7t.vpl}{ot1} +\comparePLs{\oldf padsi8c.vpl}{\newf padsi8c.vpl}{ts1} %OK 11sp +\comparePLs{\oldf padsi8t.vpl}{\newf padsi8t.vpl}{t1} +\comparePLs{\oldf padso7t.vpl}{\newf padso7t.vpl}{ot1} +\comparePLs{\oldf padso8c.vpl}{\newf padso8c.vpl}{ts1} +\comparePLs{\oldf padso8t.vpl}{\newf padso8t.vpl}{t1} + +\comparePLs{\oldf padb8a.pl}{\newf padb8a.pl}{} +\comparePLs{\oldf padb8r.pl}{\newf padb8r.pl}{8r} +\comparePLs{\oldf padbi8a.pl}{\newf padbi8a.pl}{} +\comparePLs{\oldf padbi8r.pl}{\newf padbi8r.pl}{8r} +\comparePLs{\oldf padbo8r.pl}{\newf padbo8r.pl}{8r} +\comparePLs{\oldf padr8a.pl}{\newf padr8a.pl}{} +\comparePLs{\oldf padr8r.pl}{\newf padr8r.pl}{8r} +\comparePLs{\oldf padrc8a.pl}{\newf padrc8a.pl}{} +\comparePLs{\oldf padrc8r.pl}{\newf padrc8r.pl}{8r} +\comparePLs{\oldf padri8a.pl}{\newf padri8a.pl}{} +\comparePLs{\oldf padri8r.pl}{\newf padri8r.pl}{8r} +\comparePLs{\oldf padro8r.pl}{\newf padro8r.pl}{8r} +\comparePLs{\oldf pads8a.pl}{\newf pads8a.pl}{} +\comparePLs{\oldf pads8r.pl}{\newf pads8r.pl}{8r} +\comparePLs{\oldf padsc8a.pl}{\newf padsc8a.pl}{} +\comparePLs{\oldf padsc8r.pl}{\newf padsc8r.pl}{8r} +\comparePLs{\oldf padsi8a.pl}{\newf padsi8a.pl}{} +\comparePLs{\oldf padsi8r.pl}{\newf padsi8r.pl}{8r} +\comparePLs{\oldf padso8r.pl}{\newf padso8r.pl}{8r} + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/fadrr.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/fadrr.mtx new file mode 100644 index 00000000000..e9ce1b2e583 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/fadrr.mtx @@ -0,0 +1,51 @@ +% Filename: fadrr.mtx +% Created by: tclsh pstofont Knuth:MPtoType1:Test:fadrr +% Created using: pstofont::write_MTX Knuth:MPtoType1:Test:fadrr.mtx +% +% This file contains the metric information about the font +% AGaramondAdditions-Regular, in a format used by fontinst. + +\relax +\documentclass[twocolumn]{article} +\usepackage{fontdoc} +\begin{document} +\title{The \textit{AGaramondAdditions-Regular} font metrics} +\date{2002-08-05 13.22.05} +\maketitle + +\begin{abstract} + The AGaramond Additions family of fonts is free software; + you can redistribute it and/or modify it under the terms + of the Design Science License. + As a special exception, permission is granted to include + this font program in a Postscript, PDF, or similar file + that consists of a document that contains text to be + displayed or printed using this font, regardless of the + conditions or license applying to the document itself. +\end{abstract} + +\metrics +\needsfontinstversion{1.333} +\setcommand\storemapdata#1#2#3{} +\setcommand\setglyphbb#1#2#3#4#5{} +\storemapdata{fadrr}{\fromafm{fadrr}{AGaramondAdditions-Regular}}{} +\setint{ascender}{715} +\setint{capheight}{660} +\setint{descender_neg}{-258} +\setint{xheight}{397} +\setint{maxheight}{664} +\setint{maxdepth}{4} +\setint{italicslant}{0} +\setnotglyph{.notdef}{fadrr}{10pt}{-1}{400}{0}{0}{0} +\setglyphbb{.notdef}{0}{0}{0}{0} +\setrawglyph{Gamma}{fadrr}{10pt}{71}{538}{660}{0}{0} +\setglyphbb{Gamma}{40}{-4}{493}{664} +\setrawglyph{I}{fadrr}{10pt}{73}{338}{660}{0}{0} +\setglyphbb{I}{41}{-4}{297}{664} +\setrawglyph{Pi}{fadrr}{10pt}{80}{806}{660}{0}{0} +\setglyphbb{Pi}{40}{-4}{766}{664} +\setrawglyph{uni0428}{fadrr}{10pt}{87}{962}{660}{0}{0} +\setglyphbb{uni0428}{40}{-4}{922}{664} + +\endmetrics +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/multislot-test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/multislot-test.tex new file mode 100644 index 00000000000..f557b47aa2e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/multislot-test.tex @@ -0,0 +1,16 @@ +\input fontinst.sty +\input multislot.sty + +\mathchardef\apa=0 +\catcode`\_=11 +\add_to\pre_second_etx_pass_hook{\mathchardef\apa=1} +\catcode`\_=\underscorecatcode + +\transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} + +\installfonts + \installfamily{XX}{ptm}{} + \installfont{ptmr5z}{ptmr8r,psyr,latin}{multislot} {XX}{ptm}{m}{n}{} +\endinstallfonts + +\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/multislot.etx b/Master/texmf-dist/doc/fonts/fontinst/test/multislot.etx new file mode 100644 index 00000000000..962080bff87 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/multislot.etx @@ -0,0 +1,54 @@ +\relax +\encoding +\immediate\write16{\the\csname slot_number\endcsname,\the\csname +slot_index\endcsname} +% \ifnum 1=\apa +% \expandafter\show \csname name-0\endcsname +% % \tracingmacros=1 +% % \tracingcommands=2 +% \fi +\inputetx{ot1} +\immediate\write16{\the\csname slot_number\endcsname,\the\csname +slot_index\endcsname} + +% \tracingmacros=1 +% \tracingcommands=2 + +\nextslot{32} +\setrightboundary{space} + +\nextslot{172} +\setrightboundary{omega} + +\setleftboundary{space} +\endsetleftboundary + +% \tracingcommands=0 +% \tracingmacros=0 + + +\immediate\write16{\the\csname slot_number\endcsname,\the\csname +slot_index\endcsname} + + +\inputetx{t1} + +\immediate\write16{\the\csname slot_number\endcsname,\the\csname +slot_index\endcsname} + + +\setleftboundary{compwordmark} +\endsetleftboundary + + +\setcommand\resetslot#1\endsetslot{} + +\nextslot{`l} +\resetslot{lambda} + \comment{The letter `$\lambda$'.} +\endsetslot + +\immediate\write16{\the\csname slot_number\endcsname,\the\csname +slot_index\endcsname} + +\endencoding diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/omsdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/test/omsdraft.etx new file mode 100644 index 00000000000..3e60ee0a562 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/omsdraft.etx @@ -0,0 +1,871 @@ +%%% ==================================================================== +%%% @TeX-font-encoding-file{ +%%% author = "Alan Jeffrey and Ulrik Vieth and +%%% Lars Hellstr{\"o}m", +%%% version = "1.928", +%%% date = "2004-11-30", +%%% time = "14:45:29 +01:00", +%%% filename = "oms.etx", +%%% email = "fontinst@tug.org", +%%% URL = "http://www.tug.org/applications/fontinst/index.html", +%%% checksum = "", +%%% codetable = "ISO/ASCII", +%%% keywords = "encoding, math, TeX, PostScript", +%%% supported = "yes", +%%% abstract = "This is (an incomplete) specification of the +%%% old math symbol encoding as a TeX font encoding +%%% file, for use with the fontinst utility.", +%%% package = "fontinst", +%%% dependencies = "fontinst.sty, fontdoc.sty", +%%% } +%%% ==================================================================== +\relax + +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2004/11/24] + +\title{The \TeX\ math symbol encoding vector} +\author{Alan Jeffrey\and Ulrik Vieth\and Lars Hellstr\"om} +\date{24 November 2004\\Version 1.928} + +\begin{document} +\maketitle + +\section{Introduction} + +This document describes the \TeX\ math symbol (OMS) encoding. +\emph{Or rather, it describes part of that encoding---a part which +includes some characters beyond the Basic Multilingual Plane. The +primary purpose of creating this file was to test that case of the +ETX-to-CMap converter.} + +\showbranches +\encoding + +\needsfontinstversion{1.928} + + +\begincomment +\section{Ordinary characters} +There are 128 ordinary characters in this encoding. +\endcomment + + +\begincomment +\subsection{Operations} +\endcomment + + +\nextslot{0} +\setslot{minus} + \Unicode{2212}{MINUS SIGN} +\endsetslot + +\setslot{periodcentered} + \Unicode{22C5}{DOT OPERATOR} + \comment{This is called `\texttt{dotmath}' in Adobe Symbol.} +\endsetslot + +\setslot{multiply} + \Unicode{00D7}{MULTIPLICATION SIGN} +\endsetslot + +\setslot{asteriskmath} + \Unicode{2217}{ASTERISK OPERATOR} +\endsetslot + +\setslot{divide} + \Unicode{00F7}{DIVISION SIGN} +\endsetslot + +\setslot{diamondmath} + \Unicode{22C4}{DIAMOND OPERATOR} +\endsetslot + +\setslot{plusminus} + \Unicode{00B1}{PLUS-MINUS SIGN} +\endsetslot + +\setslot{minusplus} + \Unicode{2213}{MINUS-OR-PLUS SIGN} +\endsetslot + +\setslot{circleplus} + \Unicode{2295}{CIRCLED PLUS} +\endsetslot + +\setslot{circleminus} + \Unicode{2296}{CIRCLED MINUS} +\endsetslot + +\setslot{circlemultiply} + \Unicode{2297}{CIRCLED TIMES} +\endsetslot + +\setslot{circledivide} + \Unicode{2298}{CIRCLED DIVISION SLASH} +\endsetslot + +\setslot{circledot} + \Unicode{2299}{CIRCLED DOT OPERATOR} +\endsetslot + +\setslot{circlecopyrt} + \Unicode{25CB}{WHITE CIRCLE} + \Unicode{20DD}{COMBINING ENCLOSING CIRCLE} + \comment{The large circle symbol `$\bigcirc$', also used for building + the copyright symbol `\copyright'.} +\endsetslot + +\setslot{openbullet} + \Unicode{2218}{RING OPERATOR} +\endsetslot + +\setslot{bullet} + \Unicode{2219}{BULLET OPERATOR} +\endsetslot + + +\begincomment +\subsection{Calligraphic alphabet} +\endcomment + +\nextslot{65} +\setslot{A} + \Unicode{1D49C}{MATHEMATICAL SCRIPT CAPITAL A} +\endsetslot + +\setslot{B} + \Unicode{212C}{SCRIPT CAPITAL B} +\endsetslot + +\setslot{C} + \Unicode{1D49E}{MATHEMATICAL SCRIPT CAPITAL C} +\endsetslot + +\setslot{D} + \Unicode{1D49F}{MATHEMATICAL SCRIPT CAPITAL D} +\endsetslot + +\setslot{E} + \Unicode{2130}{SCRIPT CAPITAL E} +\endsetslot + +\setslot{F} + \Unicode{2131}{SCRIPT CAPITAL F} +\endsetslot + +\setslot{G} + \Unicode{1D4A2}{MATHEMATICAL SCRIPT CAPITAL G} +\endsetslot + +\setslot{H} + \Unicode{210B}{SCRIPT CAPITAL H} +\endsetslot + +\setslot{I} + \Unicode{2110}{SCRIPT CAPITAL I} +\endsetslot + +\setslot{J} + \Unicode{1D4A5}{MATHEMATICAL SCRIPT CAPITAL J} +\endsetslot + +\setslot{K} + \Unicode{1D4A6}{MATHEMATICAL SCRIPT CAPITAL K} +\endsetslot + +\setslot{L} + \Unicode{2112}{SCRIPT CAPITAL L} +\endsetslot + +\setslot{M} + \Unicode{2133}{SCRIPT CAPITAL M} +\endsetslot + +\setslot{N} + \Unicode{1D4A9}{MATHEMATICAL SCRIPT CAPITAL N} +\endsetslot + +\setslot{O} + \Unicode{1D4AA}{MATHEMATICAL SCRIPT CAPITAL O} +\endsetslot + +\setslot{P} + \Unicode{1D4AB}{MATHEMATICAL SCRIPT CAPITAL P} +\endsetslot + +\setslot{Q} + \Unicode{1D4AC}{MATHEMATICAL SCRIPT CAPITAL Q} +\endsetslot + +\setslot{R} + \Unicode{211B}{SCRIPT CAPITAL R} +\endsetslot + +\setslot{S} + \Unicode{1D4AE}{MATHEMATICAL SCRIPT CAPITAL S} +\endsetslot + +\setslot{T} + \Unicode{1D4AF}{MATHEMATICAL SCRIPT CAPITAL T} +\endsetslot + +\setslot{U} + \Unicode{1D4B0}{MATHEMATICAL SCRIPT CAPITAL U} +\endsetslot + +\setslot{V} + \Unicode{1D4B1}{MATHEMATICAL SCRIPT CAPITAL V} +\endsetslot + +\setslot{W} + \Unicode{1D4B2}{MATHEMATICAL SCRIPT CAPITAL W} +\endsetslot + +\setslot{X} + \Unicode{1D4B3}{MATHEMATICAL SCRIPT CAPITAL X} +\endsetslot + +\setslot{Y} + \Unicode{1D4B4}{MATHEMATICAL SCRIPT CAPITAL Y} +\endsetslot + +\setslot{Z} + \Unicode{1D4B5}{MATHEMATICAL SCRIPT CAPITAL Z} +\endsetslot + + + +\begincomment +\subsection{Card suits} +\endcomment + +\nextslot{124} +\setslot{club} + \Unicode{2663}{BLACK CLUB SUIT} +\endsetslot + +\setslot{diamond} + \Unicode{2662}{WHITE DIAMOND SUIT} +\endsetslot + +\setslot{heart} + \Unicode{2661}{WHITE HEART SUIT} +\endsetslot + +\setslot{spade} + \Unicode{2660}{BLACK SPADE SUIT} +\endsetslot + + + +\begincomment +\section{Font dimensions} +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . + +\setfontdimen{8}{num1} % num 1 +\setfontdimen{9}{num2} % num 2 +\setfontdimen{10}{num3} % num 3 +\setfontdimen{11}{denom1} % denom 1 +\setfontdimen{12}{denom2} % denom 2 +\setfontdimen{13}{sup1} % sup 1 +\setfontdimen{14}{sup2} % sup 2 +\setfontdimen{15}{sup3} % sup 3 +\setfontdimen{16}{sub1} % sub 1 +\setfontdimen{17}{sub2} % sub 2 +\setfontdimen{18}{supdrop} % supdrop +\setfontdimen{19}{subdrop} % subdrop +\setfontdimen{20}{delim1} % delim 1 +\setfontdimen{21}{delim2} % delim 2 +\setfontdimen{22}{axisheight} % math axis height + + + +\begincomment +\section{Default values} +\endcomment + +\setstr{codingscheme}{TEX MATH SYMBOLS} +\setstr{encodingname}{TeXMathSymbolEncoding} + + +\endencoding + + + +\end{document} + +%%%%% Old stuff: + +\begincomment +\section{The encoding} +\endcomment + +\setslot{minus} + \comment{The subtraction symbol `$-$'.} +\endsetslot + +\setslot{periodcentered} + \comment{The centered dot symbol `$\cdot$'. + It is called `dotmath' in Adobe Symbol.} +\endsetslot + +\setslot{multiply} + \comment{The multiplication symbol `$\times$'.} +\endsetslot + +\setslot{asteriskmath} + \comment{The centered asterisk symbol `$*$'.} +\endsetslot + +\setslot{divide} + \comment{The division symbol `$\plaindiv$'.} +\endsetslot + +\setslot{diamondmath} + \comment{The diamond symbol `$\diamond$'.} +\endsetslot + +\setslot{plusminus} + \comment{The plus or minus symbol `$\pm$'.} +\endsetslot + +\setslot{minusplus} + \comment{The minus or plus symbol `$\mp$'.} +\endsetslot + +\setslot{circleplus} + \comment{The circled plus symbol `$\oplus$'.} +\endsetslot + +\setslot{circleminus} + \comment{The circled minus symbol `$\ominus$'.} +\endsetslot + +\setslot{circlemultiply} + \comment{The circled multiplication symbol `$\otimes$'.} +\endsetslot + +\setslot{circledivide} + \comment{The circled oblique symbol `$\oslash$'.} +\endsetslot + +\setslot{circledot} + \comment{The circled dot symbol `$\odot$'.} +\endsetslot + +\setslot{circlecopyrt} + \comment{The large circle symbol `$\bigcirc$' used for building the + copyright symbol `\copyright'.} +\endsetslot + +\setslot{openbullet} + \comment{The circle symbol `$\circ$'.} +\endsetslot + +\setslot{bullet} + \comment{The bullet symbol `$\bullet$'.} +\endsetslot + +\setslot{equivasymptotic} + \comment{The asymptotic equals symbol `$\asymp$'.} +\endsetslot + +\setslot{equivalence} + \comment{The equivalence symbol `$\equiv$'.} +\endsetslot + +\setslot{reflexsubset} + \comment{The subset or equals symbol `$\subseteq$'.} +\endsetslot + +\setslot{reflexsuperset} + \comment{The superset or equals symbol `$\supseteq$'.} +\endsetslot + +\setslot{lessequal} + \comment{The less or equals symbol `$\leq$'.} +\endsetslot + +\setslot{greaterequal} + \comment{The greater or equals symbol `$\geq$'.} +\endsetslot + +\setslot{precedesequal} + \comment{The precedes or equals symbol `$\preceq$'.} +\endsetslot + +\setslot{followsequal} + \comment{The follows or equals symbol `$\succeq$'.} +\endsetslot + +\setslot{similar} + \comment{The similar symbol `$\sim$'.} +\endsetslot + +\setslot{approxequal} + \comment{The approximate equality symbol `$\approx$'.} +\endsetslot + +\setslot{propersubset} + \comment{The subset symbol `$\subset$'.} +\endsetslot + +\setslot{propersuperset} + \comment{The superset symbol `$\supset$'.} +\endsetslot + +\setslot{lessmuch} + \comment{The much less symbol `$\ll$'.} +\endsetslot + +\setslot{greatermuch} + \comment{The much greater symbol `$\gg$'.} +\endsetslot + +\setslot{precedes} % was curlyless + \comment{The precedes symbol `$\prec$'.} +\endsetslot + +\setslot{follows} % was curlygreater + \comment{The follows symbol `$\succ$'.} +\endsetslot + +\setslot{arrowleft} + \comment{The left arrow symbol `$\leftarrow$'.} +\endsetslot + +\setslot{arrowright} + \comment{The right arrow symbol `$\rightarrow$'.} +\endsetslot + +\setslot{arrowup} + \comment{The up arrow symbol `$\uparrow$'.} +\endsetslot + +\setslot{arrowdown} + \comment{The down arrow symbol `$\downarrow$'.} +\endsetslot + +\setslot{arrowboth} + \comment{The horizontal arrow symbol `$\leftrightarrow$'.} +\endsetslot + +\setslot{arrownortheast} + \comment{The north-east arrow symbol `$\nearrow$'.} +\endsetslot + +\setslot{arrowsoutheast} + \comment{The south-east arrow symbol `$\searrow$'.} +\endsetslot + +\setslot{similarequal} + \comment{The similar or equal symbol `$\simeq$'.} +\endsetslot + +\setslot{arrowdblleft} + \comment{The double left arrow symbol `$\Leftarrow$'.} +\endsetslot + +\setslot{arrowdblright} + \comment{The double right arrow symbol `$\Rightarrow$'.} +\endsetslot + +\setslot{arrowdblup} + \comment{The double up arrow symbol `$\Uparrow$'.} +\endsetslot + +\setslot{arrowdbldown} + \comment{The double down arrow symbol `$\Downarrow$'.} +\endsetslot + +\setslot{arrowdblboth} + \comment{The double horizontal arrow symbol `$\Leftrightarrow$'.} +\endsetslot + +\setslot{arrownorthwest} + \comment{The north-west arrow symbol `$\nwarrow$'.} +\endsetslot + +\setslot{arrowsouthwest} + \comment{The south-west arrow symbol `$\swarrow$'.} +\endsetslot + +\setslot{proportional} + \comment{The proportional symbol `$\propto$'.} +\endsetslot + +\setslot{prime} + \comment{The prime symbol `$\prime$'.} +\endsetslot + +\setslot{infinity} + \comment{The infinity symbol `$\infty$'.} +\endsetslot + +\setslot{element} + \comment{The set membership symbol `$\in$'.} +\endsetslot + +\setslot{owner} + \comment{The backwards set membership symbol `$\ni$'.} +\endsetslot + +\setslot{triangle} + \comment{The upwards triangle symbol `$\bigtriangleup$'.} +\endsetslot + +\setslot{triangleinv} + \comment{The downwards triangle symbol `$\bigtriangledown$'.} +\endsetslot + +\setslot{negationslash} + \comment{The negation slash symbol, used to construct + negated relations or arrows such as `$\not=$'.} +\endsetslot + +\setslot{mapstochar} + \comment{The maps to building block symbol `$\mapstochar$', + used to build `$\mapsto$'.} +\endsetslot + +\setslot{universal} + \comment{The universal quantification symbol `$\forall$'.} +\endsetslot + +\setslot{existential} + \comment{The existential quantification symbol `$\exists$'.} +\endsetslot + +\setslot{logicalnot} + \comment{The negation symbol `$\plainneg$'.} +\endsetslot + +\setslot{emptysetstress} + \comment{The `stressed' empty set symbol `$\emptyset$', which should + look like a zero with a slash. The `emptyset' symbol is a circle + with a slash.} +\endsetslot + +\setslot{Rfraktur} + \comment{The upper case Fraktur R symbol `$\Re$'. It is called + `Rfractur' rather than `Rfraktur' in MathTime and Lucida New Math.} +\endsetslot + +\setslot{Ifraktur} + \comment{The upper case Fraktur I symbol `$\Im$'. It is called + `Ifractur' rather than `Ifraktur' in MathTime and Lucida New Math.} +\endsetslot + +\setslot{latticetop} + \comment{The inverted perpendicular symbol `$\top$'.} +\endsetslot + +\setslot{perpendicular} + \comment{The perpendicular symbol `$\perp$'.} +\endsetslot + +\setslot{aleph} + \comment{The aleph symbol `$\aleph$'.} +\endsetslot + +\setslot{A} + \comment{The calligraphic letter `$\mathcal{A}$'.} +\endsetslot + +\setslot{B} + \comment{The calligraphic letter `$\mathcal{B}$'.} +\endsetslot + +\setslot{C} + \comment{The calligraphic letter `$\mathcal{C}$'.} +\endsetslot + +\setslot{D} + \comment{The calligraphic letter `$\mathcal{D}$'.} +\endsetslot + +\setslot{E} + \comment{The calligraphic letter `$\mathcal{E}$'.} +\endsetslot + +\setslot{F} + \comment{The calligraphic letter `$\mathcal{F}$'.} +\endsetslot + +\setslot{G} + \comment{The calligraphic letter `$\mathcal{G}$'.} +\endsetslot + +\setslot{H} + \comment{The calligraphic letter `$\mathcal{H}$'.} +\endsetslot + +\setslot{I} + \comment{The calligraphic letter `$\mathcal{I}$'.} +\endsetslot + +\setslot{J} + \comment{The calligraphic letter `$\mathcal{J}$'.} +\endsetslot + +\setslot{K} + \comment{The calligraphic letter `$\mathcal{K}$'.} +\endsetslot + +\setslot{L} + \comment{The calligraphic letter `$\mathcal{L}$'.} +\endsetslot + +\setslot{M} + \comment{The calligraphic letter `$\mathcal{M}$'.} +\endsetslot + +\setslot{N} + \comment{The calligraphic letter `$\mathcal{N}$'.} +\endsetslot + +\setslot{O} + \comment{The calligraphic letter `$\mathcal{O}$'.} +\endsetslot + +\setslot{P} + \comment{The calligraphic letter `$\mathcal{P}$'.} +\endsetslot + +\setslot{Q} + \comment{The calligraphic letter `$\mathcal{Q}$'.} +\endsetslot + +\setslot{R} + \comment{The calligraphic letter `$\mathcal{R}$'.} +\endsetslot + +\setslot{S} + \comment{The calligraphic letter `$\mathcal{S}$'.} +\endsetslot + +\setslot{T} + \comment{The calligraphic letter `$\mathcal{T}$'.} +\endsetslot + +\setslot{U} + \comment{The calligraphic letter `$\mathcal{U}$'.} +\endsetslot + +\setslot{V} + \comment{The calligraphic letter `$\mathcal{V}$'.} +\endsetslot + +\setslot{W} + \comment{The calligraphic letter `$\mathcal{W}$'.} +\endsetslot + +\setslot{X} + \comment{The calligraphic letter `$\mathcal{X}$'.} +\endsetslot + +\setslot{Y} + \comment{The calligraphic letter `$\mathcal{Y}$'.} +\endsetslot + +\setslot{Z} + \comment{The calligraphic letter `$\mathcal{Z}$'.} +\endsetslot + +\setslot{union} + \comment{The set union symbol `$\cup$'.} +\endsetslot + +\setslot{intersection} + \comment{The set intersection symbol `$\cap$'.} +\endsetslot + +\setslot{unionmulti} + \comment{The multiset union symbol `$\uplus$'.} +\endsetslot + +\setslot{logicaland} + \comment{The meet symbol `$\wedge$'.} +\endsetslot + +\setslot{logicalor} + \comment{The join symbol `$\vee$'.} +\endsetslot + +\setslot{turnstileleft} + \comment{The turnstile symbol `$\vdash$'.} +\endsetslot + +\setslot{turnstileright} + \comment{The backwards turnstile symbol `$\dashv$'.} +\endsetslot + +\setslot{floorleft} + \comment{The left floor symbol `$\lfloor$'.} +\endsetslot + +\setslot{floorright} + \comment{The right floor symbol `$\rfloor$'.} +\endsetslot + +\setslot{ceilingleft} + \comment{The left ceiling symbol `$\lceil$'.} +\endsetslot + +\setslot{ceilingright} + \comment{The right ceiling symbol `$\rceil$'.} +\endsetslot + +\setslot{braceleft} + \comment{The left brace symbol `$\{$'.} +\endsetslot + +\setslot{braceright} + \comment{The right brace symbol `$\}$'.} +\endsetslot + +\setslot{angleleft} + \comment{The left angle bracket symbol `$\langle$'. + It is called `angbracketleft' in MathTime and Lucida, + but `angleleft' in Adobe Symbol.} +\endsetslot + +\setslot{angleright} + \comment{The right angle bracket symbol `$\rangle$'. + It is called `angbracketright' in MathTime and Lucida, + but `angleleft' in Adobe Symbol.} +\endsetslot + +\setslot{bar} + \comment{The vertical bar symbol `$|$'.} +\endsetslot + +\setslot{bardbl} + \comment{The parallel vertical bars symbol `$\parallel$'.} +\endsetslot + +\setslot{arrowbothv} + \comment{The vertical arrows symbol `$\updownarrow$'.} +\endsetslot + +\setslot{arrowdblbothv} + \comment{The double vertical arrows symbol `$\Updownarrow$'.} +\endsetslot + +\setslot{backslash} + \comment{The backwards oblique symbol `$\backslash$'.} +\endsetslot + +\setslot{wreathproduct} + \comment{The Wreath product symbol `$\wp$'.} +\endsetslot + +\setslot{radicallow} + \comment{The lowered radical symbol `$\surd$'.} +\endsetslot + +\setslot{coproduct} + \comment{The textstyle coproduct symbol `$\coprod$'.} +\endsetslot + +\setslot{gradient} + \comment{The inverted Delta symbol `$\nabla$'. + It is also called `gradient' in MathTime and Lucida, + but `gradient' in Adobe Symbol.} +\endsetslot + +\setslot{integral} + \comment{The small integral symbol `$\plainint$'.} +\endsetslot + +\setslot{unionsq} + \comment{The square union symbol `$\sqcup$'.} +\endsetslot + +\setslot{intersectionsq} + \comment{The square intersection symbol `$\sqcap$'.} +\endsetslot + +\setslot{subsetsqequal} + \comment{The square subset or equal symbol `$\sqsubseteq$'.} +\endsetslot + +\setslot{supersetsqequal} + \comment{The square superset or equal symbol `$\sqsupseteq$'.} +\endsetslot + +\setslot{section} + \comment{The section symbol `\S'.} +\endsetslot + +\setslot{dagger} + \comment{The dagger symbol `\dag'.} +\endsetslot + +\setslot{daggerdbl} + \comment{The double dagger symbol `\ddag'.} +\endsetslot + +\setslot{paragraph} + \comment{The paragraph symbol `\P'.} +\endsetslot + +\setslot{club} + \comment{The club suit symbol `$\clubsuit$'.} +\endsetslot + +\setslot{diamond} + \comment{The diamond suit symbol `$\diamondsuit$'.} +\endsetslot + +\setslot{heart} + \comment{The heart suit symbol `$\heartsuit$'.} +\endsetslot + +\setslot{spade} + \comment{The spade suit symbol `$\spadesuit$'.} +\endsetslot + +\endencoding + +\section{Changes} + +29 Dec 1993, v1.30: Created file. + +03 Jan 1994, v1.301: Moved from ltugboat class to article. + +06 Jan 1994, v1.303: Corrected a fontdimen bug. + +08 Jan 1994, v1.304: Renamed radicallowered to radicallow and + perpendicularinverse to perpendicularinv. + +09 Jan 1994, v1.305: Renamed emptyset to emptysetstress, to distinguish + the geometric and the humanist emptyset symbols. + Renamed some glyphs to use the same glyph names + as Lucida New Math. + +10 Jun 1998, v1.800: Really use the same names as Lucida New Math. + `curlyless/greater' renamed to `precedes/follows'. + +06 Oct 2000, v1.915: Introduced intermediate variables for fontdimens + 8--22. Added \texttt{encodingname}. Updated markup. + (LH) + +27 Jul 2002, v1.921: Introduced intermediate variables also for + fontdimens 1--7. Switched to setting fontdimens + using \verb"\setfontdimen". (LH) + +24 Nov 2004, v1.928: Changed \verb"\neg" to \verb"\plainneg" for + `\texttt{logicalnot}'. (LH) + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex b/Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex new file mode 100644 index 00000000000..c54452d45e1 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex @@ -0,0 +1,41 @@ +\input fontinst.sty + +\transformfont{padr8r} {\reencodefont{8r}{\fromafm{padr8a}}} +\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}} +\transformfont{pads8r} {\reencodefont{8r}{\fromafm{pads8a}}} +\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} +\fromafm{padr8x} +\fromafm{pads8x} + +\installfonts + +\installfamily{T1}{pad} {} +\installfamily{T1}{padx}{} +\installfamily{T1}{padj}{} + +\installfont{padrc8t}{padrc8r,latin} + {T1}{T1}{pad}{m}{sc}{} +\installfont{padrc9e} + {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon, + resetsc,latinsc} + {T1c}{T1}{padx}{m}{sc}{} +\installfont{padrc9d} + {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon, + resetosf,resetsc,latinsc} + {T1cj}{T1}{padj}{m}{sc}{} + +\installfont{padsc8t}{padsc8r,latin} + {T1}{T1}{pad}{m}{sc}{} +\installfont{padsc9e} + {kernoff,pads8r,pads8x,kernon,glyphoff,padsc8r,glyphon, + resetsc,latinsc} + {T1c}{T1}{padx}{sb}{sc}{} +\installfont{padsc9d} + {kernoff,pads8r,pads8x,kernon,glyphoff,padrc8r,glyphon, + resetosf,resetsc,latinsc} + {T1cj}{T1}{padj}{sb}{sc}{} + +\endinstallfonts +\bye + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx new file mode 100644 index 00000000000..624a39bf81d --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx @@ -0,0 +1,22 @@ +\relax + +% This is a test MTX file for the new implementation of +% the \transformfont stuff. + +\metrics + +\setint{italicslant}{0} +\setint{italicslant}{100} +\setint{xheight}{400} + +\setrawglyph{a}{v1901test}{10.95pt}{10} {500}{400}{0}{40} +\setrawglyph{g}{v1901test}{10.95pt}{10} {500}{400}{-300}{40} + +\setkern{a}{g}{100} + +\setglyph{ag} + \glyphpcc{a}{0}{500} + \glyphpcc{g}{500}{0} +\endsetglyph + +\endmetrics \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex new file mode 100644 index 00000000000..81a6218f679 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex @@ -0,0 +1,214 @@ +% Test of fontinst v1.901. +% Started 1999/03/13. +\input fontinst.sty + +% Part one---test of pooled file allocation. +\catcode`\_=11 +\catcode`\@=11 + +\def\show_out_filenames{% + \immediate\write16{\string\count17=\the\count17}% + \for(i){-1}{16}{1}% + \immediate\write16{Stream \strint{i}: + \x_cs\meaning{out_filename-\strint{i}}% + }% + \endfor(i)% +} + +% %1 Standard usage +% \show_out_filenames +% \open_pout\tF{\jobname.out} +% \show_out_filenames +% \pout_line\tF{Hello world!} +% \close_pout\tF{Test output} +% \show_out_filenames +% % Seems to work fine. + +% %2 Allocating LOTS of files. +% \newcount\j_count +% \newcount\k_count +% \j_count=0 +% \k_count=1 +% \for(o){1}{48}{1} +% \x_cs\open_pout{F-\strint{o}}{\jobname.\strint{o}}% +% \ifodd \int{o} \else +% \x_cs\pout_line{F-\the\k_count}{% +% open=\strint{o} close=\the\j_count\space write=\the\k_count +% }% +% \multiply \k_count \thr@@ +% \advance \k_count \@ne +% \d_count=\k_count +% \divide \d_count \int{o}% +% \multiply \d_count \int{o}% +% \advance \k_count -\d_count +% \advance \k_count \@ne +% \advance \j_count \@ne +% \x_cs\close_pout{F-\the\j_count}{Test data}% +% \fi +% \d_count=\int{o}% +% \divide \d_count 8% +% \multiply \d_count 8% +% \advance \d_count -\int{o}% +% \ifnum 0=\d_count \show_out_filenames \fi +% \endfor(o) +% % Seems to work fine as well. + + +%% Part two---test of reimplemented \transformfont stuff +%% Part two B---test of \recordtransforms stuff + +\recordtransforms{mapfrags.tex} +\transformfont{v1901test1}{ + \xscalefont{2000}{\reencodefont{t1c}{\frommtx{v1901test}}} +} +\transformfont{v1901test2}{ + \yscalefont{500}{\xscalefont{2000}{\frommtx{v1901test}}} +} +\transformfont{v1901test3}{ + \reencodefont{t1}{\slantfont{100}{\frommtx{v1901test}}} +} +\endrecordtransforms + + +\bye + +%% Part three---test of reglyphing + +\reglyphfonts + \resetcommand\iftokeep#1\then{\ifnum 0<#1} + % This means that an AFM command will survive the conversion only if + % it refers to at least one renamed glyph and not refer to any killed + % glyph. + +% \offmtxcommand\setrawglyph +% \offmtxcommand\setglyph +% % This reglyphing file is inteded for extracting information from the +% % AFM file of a Caps, Small caps, and Oldstyle figures fonts--with the +% % intention to build a corresponding virtual font with glyphs that are +% % present in the Regular and Expert Regular variants instead. Hence +% % there is no need for \setrawglyph or \setglyph commands (the +% % dimensions of the characters are known from the Reg. and Exp.Reg. +% % AFM's), but the \setkern commands are most interesting (since 8x +% % fonts don't contain any upper case letters, and hence has no kerning +% % pairs between these and the small caps either). + + + \renameglyph{dollaroldstyle}{dollar} + \renameglyph{ampersandsmall}{ampersand} + + \renameglyph{zerooldstyle}{zero} + \renameglyph{oneoldstyle}{one} + \renameglyph{twooldstyle}{two} + \renameglyph{threeoldstyle}{three} + \renameglyph{fouroldstyle}{four} + \renameglyph{fiveoldstyle}{five} + \renameglyph{sixoldstyle}{six} + \renameglyph{sevenoldstyle}{seven} + \renameglyph{eigtholdstyle}{eight} + \renameglyph{nineoldstyle}{nine} + + \renameglyph{Asmall}{a} + \renameglyph{Bsmall}{b} + \renameglyph{Csmall}{c} + \renameglyph{Dsmall}{d} + \renameglyph{Esmall}{e} + \renameglyph{Fsmall}{f} + \renameglyph{Gsmall}{g} + \renameglyph{Hsmall}{h} + \renameglyph{Ismall}{i} + \renameglyph{Jsmall}{j} + \renameglyph{Ksmall}{k} + \renameglyph{Lsmall}{l} + \renameglyph{Msmall}{m} + \renameglyph{Nsmall}{n} + \renameglyph{Osmall}{o} + \renameglyph{Psmall}{p} + \renameglyph{Qsmall}{q} + \renameglyph{Rsmall}{r} + \renameglyph{Ssmall}{s} + \renameglyph{Tsmall}{t} + \renameglyph{Usmall}{u} + \renameglyph{Vsmall}{v} + \renameglyph{Wsmall}{w} + \renameglyph{Xsmall}{x} + \renameglyph{Ysmall}{y} + \renameglyph{Zsmall}{z} + + \renameglyph{centoldstyle}{cent} + + % \renameglyph{FIsmall}{fi} + % \renameglyph{FLsmall}{fl} + % These two aren't really necessary, since the ligature `fi' looks + % exactly as the letters `f'`i' next to each others. + \killglyph{fi} + \killglyph{fl} + + \renameglyph{Gravesmall}{grave} + \renameglyph{Acutesmall}{acute} + \renameglyph{Circumflexsmall}{circumflex} + \renameglyph{Tildesmall}{tilde} + \renameglyph{Macronsmall}{macron} + \renameglyph{Brevesmall}{breve} + \renameglyph{Dotaccentsmall}{dotaccent} + \renameglyph{Dieresissmall}{dieresis} + \renameglyph{Ringsmall}{ring} + \renameglyph{Cedillasmall}{cedilla} + \renameglyph{Ogoneksmall}{ogonek} + \renameglyph{Caronsmall}{caron} + + \renameglyph{AEsmall}{ae} + \renameglyph{dotlessIsmall}{dotlessi} + \renameglyph{Lslashsmall}{lslash} + \renameglyph{Oslashsmall}{oslash} + \renameglyph{OEsmall}{oe} + % \renameglyph{SSsmall}{germandbls} + % This isn't really needed in the AGaramond font family, since `SSsmall' + % looks exactly like `Ssmall'`Ssmall' + \killglyph{germandbls} + + \renameglyph{Oacutesmall}{oacute} + \renameglyph{Odieresissmall}{odieresis} + \renameglyph{Ucircumflexsmall}{ucircumflex} + + \renameglyph{Uacutesmall}{uacute} + \renameglyph{Eacutesmall}{eacute} + \renameglyph{Iacutesmall}{iacute} + \renameglyph{Icircumflexsmall}{icircumflex} + + \renameglyph{Thornsmall}{thorn} + \renameglyph{Yacutesmall}{yacute} + + \renameglyph{Ocircumflexsmall}{ocircumflex} + \renameglyph{Otildesmall}{otilde} + \renameglyph{Ntildesmall}{ntilde} + \renameglyph{Ydieresissmall}{ydieresis} + \renameglyph{Ethsmall}{eth} + \renameglyph{Acircumflexsmall}{acircumflex} + \renameglyph{Aringsmall}{aring} + \renameglyph{Ccedillasmall}{ccedilla} + + \renameglyph{Ugravesmall}{ugrave} + \renameglyph{Zcaronsmall}{zcaron} + \renameglyph{Idieresissmall}{idieresis} + \renameglyph{Agravesmall}{agrave} + + \renameglyph{Ogravesmall}{ograve} + + \renameglyph{Udieresissmall}{udieresis} + \renameglyph{Edieresissmall}{edieresis} + \renameglyph{Aacutesmall}{aacute} + \renameglyph{Igravesmall}{igrave} + \renameglyph{Idieresissmall}{idieresis} + \renameglyph{Adieresissmall}{adieresis} + + \renameglyph{Scaronsmall}{scaron} + \renameglyph{Egravesmall}{egrave} + \renameglyph{Atildesmall}{atilde} + \renameglyph{Ecircumflexsmall}{ecircumflex} + + \reglyphfont{K-padrc}{gdsc} + \reglyphfont{K-padsc}{padsc8a} +\endreglyphfonts + + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex new file mode 100644 index 00000000000..7274fb76597 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex @@ -0,0 +1,11 @@ +\input fontinst.sty + +\generalpltomtx{cmr5}{cmr5;1}{pl}{OT1} +\generalpltomtx{padr9d}{padr9d;1}{vpl}{} +\generalpltomtx{padr9d}{padr9d;2}{vpl}{OT1} + +\transformfont{cmr5;2}{\fromplgivenetx{cmr5}{OT1}} +\transformfont{padr9d;3}{\fromvpl{padr9d}} +\transformfont{padr9d;4}{\fromvplgivenetx{padr9d}{OT1}} + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex new file mode 100644 index 00000000000..47117acc5fb --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex @@ -0,0 +1,22 @@ +\input fontinst.sty +\catcode`\_=11\catcode`\ =9\catcode`\^^M=9 +\catcode`\~=10\catcode`\@=11 + +\fontinst_error{Hungarian}{ + I~will~not~buy~this~record,\message_break + it~is~scratched +}\error_help_a + +\fontinst_warning{Hungarian}{Your~hovercraft~is~full~of~eels} + +\fontinst_info{Hungarian}{That~will~be~six~pence,~please} + +\fontinst_warning_no_line{Hungarian}{ + Do~you~want~to~come~home~to~my~place\message_break + and~pantsy~pantsy? +} + + + + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.etx b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.etx new file mode 100644 index 00000000000..072cdfdf686 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.etx @@ -0,0 +1,128 @@ +\relax +% Test1.etx + + + +\encoding + +\setint{italicslant}{0} + +\ifisglyph{x}\then + \setint{xheight}{\height{x}} +\else + \setint{xheight}{500} +\fi + +\ifisglyph{space}\then + \setint{interword}{\width{space}} +\else\ifisglyph{i}\then + \setint{interword}{\width{i}} +\else + \setint{interword}{333} +\fi\fi + +% added by Thierry Bouche +% 1997/02/07 to calculate values for extra EC fontdimens +% Amended by SPQR 1997/02/09 +\ifisglyph{X}\then + \setint{capheight}{\height{X}} +\else + \setint{capheight}{750} +\fi + +\ifisglyph{d}\then + \setint{ascender}{\height{d}} +\else + \ifisint{capheight}\then + \setint{ascender}{\int{capheight}} + \else + \setint{ascender}{750} +\fi\fi + +\ifisglyph{Aring}\then + \setint{acccapheight}{\height{Aring}} +\else + \setint{acccapheight}{999} +\fi + +\ifisint{descender_neg}\then + \setint{descender}{\neg{\int{descender_neg}}} + \else + \ifisglyph{p}\then + \setint{descender}{\depth{p}} + \else + \setint{descender}{250} + \fi +\fi + +\ifisglyph{Aring}\then + \setint{maxheight}{\height{Aring}} +\else + \setint{maxheight}{1000} +\fi + +\ifisint{maxdepth_neg}\then + \setint{maxdepth}{\neg{\int{maxdepth_neg}}} +\else + \ifisglyph{j}\then + \setint{maxdepth}{\depth{j}} + \else + \setint{maxdepth}{250} + \fi +\fi + +\ifisglyph{six}\then + \setint{digitwidth}{\width{six}} +\else + \setint{digitwidth}{500} +\fi + +\setint{capstem}{0} % not in AFM files +\setint{baselineskip}{1200} +% end changes by Thierry + + +\comment{\section{Default font dimensions}} + +\setint{fontdimen(1)}{\int{italicslant}} % italic slant +\setint{fontdimen(2)}{\int{interword}} % interword space +\ifisint{monowidth}\then + \setint{fontdimen(3)}{0} % interword stretch + \setint{fontdimen(4)}{0} % interword shrink +\else + \setint{fontdimen(3)}{\scale{\int{interword}}{600}}% interword stretch + \setint{fontdimen(4)}{\scale{\int{interword}}{240}}% interword shrink +\fi +\setint{fontdimen(5)}{\int{xheight}} % x-height +\setint{fontdimen(6)}{1000} % quad +\ifisint{monowidth}\then + \setint{fontdimen(7)}{\int{interword}} % extra space after . +\else + \setint{fontdimen(7)}{\scale{\int{interword}}{240}}% extra space after . +\fi +% added by Thierry Bouche 1997/02/07 +\setint{fontdimen(8)}{\int{capheight}} % cap height +\setint{fontdimen(9)}{\int{ascender}} % ascender +\setint{fontdimen(10)}{\int{acccapheight}} % accented cap height +\setint{fontdimen(11)}{\int{descender}} % descender's depth +\setint{fontdimen(12)}{\int{maxheight}} % max height +\setint{fontdimen(13)}{\int{maxdepth}} % max depth +\setint{fontdimen(14)}{\int{digitwidth}} % digit width +\setint{fontdimen(15)}{\int{capstem}} % cap_stem +\setint{fontdimen(16)}{\int{baselineskip}} % baselineskip + + +\comment{\section{The encoding}} + +\for(i){0}{20}{1} + \setslot{c\strint{i}} + \comment{The `c\strint{i}' test glyph.} + \endsetslot +\endfor(i) + +\setslot{d} +\endsetslot + + + +\endencoding diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx new file mode 100644 index 00000000000..94306a07b32 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx @@ -0,0 +1,64 @@ +\relax +% v1906test.mtx +% +% A test of the nokerning commands and the \glyphbboxright IE. + + +\metrics + +\for(i){0}{20}{1} + \setglyph{c\strint{i}} + \glyphrule{20}{\mul{\add{\int{i}}{1}}{20}} + \movert{\mul{20}{\int{i}}} + \endsetglyph +\endfor(i) + + +\setglyph{d} + \for(i){5}{10}{1} + \glyphpcc{c\strint{i}}{\int{i}}{\int{i}} + \endfor(i) + \resetint{j}{\glyphbboxright} + \immediate\write16{\string\glyphbboxright=\strint{j}} + \glyph{c20}{1000} + \resetint{j}{\glyphbboxright} + \immediate\write16{\string\glyphbboxright=\strint{j}} +\endsetglyph + + +\for(i){0}{20}{1} + \for(j){0}{20}{1} + \setkern{c\strint{i}}{c\strint{j}}{\mul{\int{i}}{\int{j}}} + \endfor(j) +\endfor(i) + +\noleftkerning{c1,c3,c5,c7,c9,c11,c13,c15,c17,c19} +\immediate\write16{\expandafter\meaning\csname a_macro\endcsname} +\norightkerning{c1,c3,c5,c7,c9} + +% \resetint{i}{0} +% \loop +% \setkern{c\strint{i}}{c\strint{i}}{-50} +% \resetint{j}{\sub{20}{\int{i}}} +% \resetkern{c\strint{i}}{c\strint{j}}{-100} +% \ifnum 20>\int{i} +% \resetint{i}{\add{\int{i}}{1}} +% \repeat + + +% \resetint{i}{0} +% \loop +% \ifiskern{c3}{c\strint{i}}\then +% \resetint{T}{\kerning{c3}{c\strint{i}}} +% \message{c3:c\strint{i} has kern \strint{T} units^^J} +% \else +% \message{c3:c\strint{i} no kern^^J} +% \fi +% \ifnum 20>\int{i} +% \resetint{i}{\add{\int{i}}{1}} +% \repeat + + + +\endmetrics + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex new file mode 100644 index 00000000000..92ed6281198 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex @@ -0,0 +1,12 @@ +%&Plain +% Test of fontinst v1.906. +% Begun 1999/08/01. +\input fontinst.sty + +\installfonts + \installfamily{U}{ztest1}{} + \installfont{v1906test}{v1906test}{v1906test}{U}{ztest1}{m}{n}{} +\endinstallfonts + +\bye + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex new file mode 100644 index 00000000000..b9382cdf898 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex @@ -0,0 +1,21 @@ +\input fontinst.sty + +\recordtransforms{v1913test.recs} + +\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} +\transformfont{padr8r-ys}{\yscalefont{\div{397000}{663}}{\frommtx{padr8r}}} +\reglyphfonts + \renameglyph{oneoldstyle}{one} + \reglyphfont{padr8r-ys2}{padr8r-ys} +\endreglyphfonts + +\installfonts + \installfamily{T1}{pad}{} + \installfamily{8r}{pad}{} + \installfont{padr9d}{padr8r,padr8r-ys2,padr8x,latin}{t1j}{T1}{pad}{m}{n}{} + \installrawfont{padr8r2}{padr8r-ys}{8r}{8r}{pad}{m}{n}{} +\endinstallfonts + +\endrecordtransforms + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex new file mode 100644 index 00000000000..73b271b986c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex @@ -0,0 +1,50 @@ +\input fontinst.sty + +%1 +\recordtransforms{v1914test.recs} + +\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} +\for(x){0}{2}{1} + \for(y){0}{2}{1} + \transformfont{p-ad-rr--8r--\strint{x}=\strint{y}}{ + \xscalefont{\add{\mul{\int{x}}{300}}{700}}{ + \yscalefont{\add{\mul{\int{y}}{300}}{700}}{ + \frommtx{padr8r}}}} + \endfor(y) +\endfor(x) + +\installfonts + \installfamily{T1}{padxy}{} + \installfamily{8r}{padxy}{} + \for(x){0}{2}{1} + \for(y){0}{2}{1} + \installfont{p-ad-rr--8t--\strint{x}=\strint{y}} + {p-ad-rr--8r--\strint{x}=\strint{y},latin} + {t1}{T1}{padxy}{m\strint{x}\strint{y}}{n}{} + \installrawfont{p-ad-rr--8r--\strint{x}=\strint{y}} + {p-ad-rr--8r--\strint{x}=\strint{y},8r} + {8r}{8r}{padxy}{m\strint{x}\strint{y}}{n}{} + \endfor(y) + \endfor(x) +\endinstallfonts + +\endrecordtransforms + +% % \tracingmacros=1\tracingcommands=2 +% %2 +% \installfonts +% \installrawfont{cmr5}{cmr5,\metrics +% \resetint{xheight}{\mul{\int{xheight}}{2}},kernoff}{ot1}{OT1} +% {cmr}{m}{n}{5} +% \installfont{padr18t}{padr8r scaled 856,% +% \metrics \message{% +% \ifisint{rawscale}\then\strint{rawscale}\else None\fi +% }% +% \expandafter\show \csname g-A\endcsname +% ,latin,% +% \metrics \message{% +% \ifisint{rawscale}\then\strint{rawscale}\else None\fi +% }}{t1}{T1}{pad}{m}{ns}{} +% \endinstallfonts + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex new file mode 100644 index 00000000000..9b1921bbc8d --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex @@ -0,0 +1,17 @@ +\input finstmsc.sty + +\resetstr{PSfontsuffix}{.pfb} +\adddriver{dvipdfm}{v1914test.dvipdfm} +\adddriver{pltotf}{v1914test.sh} % v1.915 feature, actually +\input v1914test.recs +\donedrivers + +\AssumeLWFN +\adddriver{dvips}{v1914test.map} +\adddriver{debug}{v1914test.debug} +\debugvalue{PS_font_file} +\input v1914test.recs +\donedrivers + + +\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex new file mode 100644 index 00000000000..bd7a957b0a8 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex @@ -0,0 +1,22 @@ +\documentclass{article} + + +\newcommand\fontxy[2]{% + \usefont{T1}{padxy}{m#1#2}{n}% + Flygande b\"ackasiner s\"oka hwila p\r{a} mjuka tuvor% +} + + +\begin{document} + +$$ + \hss + \begin{tabular}{lll} + \fontxy00& \fontxy10& \fontxy20\\ + \fontxy01& \fontxy11& \fontxy21\\ + \fontxy02& \fontxy12& \fontxy22 + \end{tabular} + \hss +$$ +\end{document} + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex new file mode 100644 index 00000000000..c889464e444 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex @@ -0,0 +1,25 @@ +\input fontinst.sty + +% %1: Catcodes +% \def\do#1{Catcode of `\string#1 = \the\catcode`#1 ^^J} +% \def\showcatcodes{\message{\do{\ }\do{\^^M}\do{\@}\do{\_}\do{\~}}} +% +% \showcatcodes +% \show\fontinstcc +% \fontinstcc +% \showcatcodes +% \show\normalcc +% \normalcc +% \showcatcodes + +%2: Aliased glyphs +\input Knuth:fontinst:New.fontinst:cyrfinst:etc:fnstcorr.tex +\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}} +\def\renameglyph#1#2{\galias{#1}{#2}} +\input csc2x.tex +\transformfont{padscx8r}{\reencodefont{8r}{\fromafm{padsc8a}}} +% När glyfnamnen har tagits bort från de omkodade PL-filerna så är +% de i allt väsentligt lika. Sålunda tycks det fungera! + + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex new file mode 100644 index 00000000000..7e83526cd40 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex @@ -0,0 +1,9 @@ +\input finstmsc.sty +\adddriver{pltotf}{v1915test.sh} +\input v1914test.recs +\donedrivers +\setstr{TFMfileprefix}{:a:b:c:} +\adddriver{pltotf}{v1915test.sh2} +\input v1913test.recs +\donedrivers +\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx new file mode 100644 index 00000000000..1829c79d02d --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx @@ -0,0 +1,23 @@ +\relax + +\documentclass[twocolumn]{article} +\usepackage{fontdoc} + +\errorcontextlines=999 + +\begin{document} + +\metrics + +\foreach(glyph){a,b,c,d,tilde,\strint{a},db\str{a}ef,AB\str{glyph}CD} + \resetglyph{\str{glyph}} + \glyph{\str{glyph}}{1000} + \resetitalic{0} + \endresetglyph +\endfor(glyph) + + +\endmetrics + + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex new file mode 100644 index 00000000000..56f26a51b0f --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex @@ -0,0 +1,14 @@ +% v1916test.tex + +\input fontinst.sty + +% \half and \otherhalf +\fontinstcc +\for(i){-5}{5}{1} + \eval_expr_to\b_count{\half{\int{i}}} + \eval_expr{\otherhalf{\int{i}}} + \immediate\write16{\strint{i}:~\the\b_count \space+~ \the\result} +\endfor(i) +\normalcc + +\bye diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex new file mode 100644 index 00000000000..8cc954f2615 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex @@ -0,0 +1,27 @@ +%&Plain +\input fontinst.sty + +% %1 \ifareglyphs +% +% \setrawglyph{f}{xfont}{10pt}{102}{375}{750}{375}{50} +% \setrawglyph{g}{xfont}{10pt}{102}{375}{750}{375}{50} +% \setrawglyph{h}{xfont}{10pt}{102}{375}{750}{375}{50} +% +% \ifareglyphs{}\then True \else False \fi +% \ifareglyphs{a}\then True \else False \fi +% \ifareglyphs{f}\then True \else False \fi +% \ifareglyphs{f,a}\then True \else False \fi +% \ifareglyphs{a,f}\then True \else False \fi +% \ifareglyphs{f,g}\then True \else False \fi +% \ifareglyphs{f,g,a}\then True \else False \fi + +%2 \setfontdimen +\generalpltomtx{ecrm1000}{ecrm1000}{pl}{t1draft} +\generalpltomtx{ecss1000}{ecss1000}{pl}{t1draft} +\transformfont{ecdh-shrunk}{% + \yscalefont{500}{\fromplgivenetx{ecdh1000}{t1draft}}% +} + +\bye + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex new file mode 100644 index 00000000000..ede00d90444 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex @@ -0,0 +1,47 @@ +%&Plain + +\input fontinst.sty + +% %1 +% \transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}} +% \transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}} +% +% \installfonts +% \installfamily{T1}{pad2}{} +% \installfont{zpad2i8t}{padri8r scaled 1009,% +% padr8r scaled 999 suffix -upright scaled 1009,\metrics +% % \expandafter\show \csname r-T-upright\endcsname +% \unsetglyph{parenleft} +% \setglyph{parenleft} +% \glyph{parenleft-upright}{1000} +% \endsetglyph +% \resetglyph{parenright} +% \glyph{parenright-upright}{1000} +% \endresetglyph,latin}{t1}{T1}{pad2}{m}{it}{} +% \endinstallfonts + +% %2 +% +% \installfonts +% \installfamily{U}{fad}{} +% \installfont{fadrr}{fadrr}{textfdim,fadrr mtxasetx}{U}{fad}{m}{n}{} +% \endinstallfonts + +% %3 +% \transformfont{pagk8r}{\reencodefont{8r}{\fromafm{pagk8a}}} +% \installfonts +% \installfont{pagk8t}{pagk8r,newlatin}{t1}{T1}{pag}{m}{n}{} +% \endinstallfonts + +%4 +\installfonts + \installfont{test}{rsfs10 encoding rsfs,cmsy10}{oms}{OMS}{xxx}{m}{n}{} +\endinstallfonts +% %4b +% \installfonts +% \installfont{test}{cmsy10,rsfs10 encoding rsfs}{oms}{OMS}{xxx}{m}{n}{} +% \endinstallfonts + + +\bye + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex new file mode 100644 index 00000000000..b21f16bf60e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex @@ -0,0 +1,18 @@ +%&Plain + +\input finstmsc.sty + +% %1 +% \etxtoenc{ot1}{temp} + +%2 +\storemapdata{a}{\fromafm{a}{XX}}{} +\storemapdata{a}{\fromafm{a}{XX}}{} +\storemapdata{a}{\fromafm{a}{XY}}{} +\storemapdata{a}{\fromafm{a}{XX}}{} +\storemapdata{a}{\fromafm{a}{XX}}{\reencodefont{8r}} + + + +\bye + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex new file mode 100644 index 00000000000..8242cc3438c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex @@ -0,0 +1,13 @@ +%&Plain + +\input finstmsc.sty + +%1 +\etxtocmap{t1draft}{temp} +\etxtocmap{ot1draft}{ot1} +\etxtocmap{omsdraft}{oms} + + + +\bye + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex new file mode 100644 index 00000000000..c9b099e643c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex @@ -0,0 +1,32 @@ +\documentclass{article} + + + + +\def\FontWithCMap#1#2#3{% + \font#1=#2\relax + \immediate\pdfobj stream file {#3}% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% +} +\def\AddCMapToFont#1#2{% + \immediate\pdfobj stream file {#2}% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% +} + + +\begin{document} + + +\FontWithCMap\test{cmr12}{ot1.cmap} +\test abcdef ghijkl mnopqr stuvwx yz fi fl ffi ffl + + +\begin{math} + a + \AddCMapToFont{\textfont2}{oms.cmap} + \mathcal{A} - \mathcal{B} + \mathcal{C} * \mathcal{D} \cdot + \mathcal{E} \bullet \mathcal{F} \spadesuit +\end{math} + + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1930test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1930test.tex new file mode 100644 index 00000000000..5fbc46b0d5e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1930test.tex @@ -0,0 +1,16 @@ +%&Plain + +\input fontinst.sty + + +%1 +\CalculateTan{30} +\message{sin 30 = \UseSin{30}} +\message{cos 30 = \UseCos{30}} +\message{tan 30 = \UseTan{30}} + + + +\bye + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1931test0.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test0.tex new file mode 100644 index 00000000000..edee5cf3b56 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test0.tex @@ -0,0 +1,8 @@ +% Test fontinst v1.931 +% + +\input finstmsc.sty + +\enctoetx{cc-pl}{cc-pl-test} + +\bye \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1931test1.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test1.tex new file mode 100644 index 00000000000..d6c7052d5bb --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test1.tex @@ -0,0 +1,50 @@ +% fontinst v1.931 test + +\input fontinst.sty + +\recordtransforms{v1931test.recs} + + +\transformfont{padr6z}{\reencodefont{cc-pl-test}{\fromafm{padr8a}}} +\transformfont{padro6z}{\slantfont{250}{\frommtx{padr6z}}} + +\substitutesilent{sl}{sl} + + +\installfonts + \installfont{padr8d}{padr6z,newlatin option nosc}{t1} {T1}{pad}{m}{n}{} + \installfont{padro8d}{padro6z,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{} +\endinstallfonts + +\endrecordtransforms + +\bye + + +% Expected t1pad.fd contents: +% +% %Filename: t1pad.fd +% %Created by: tex v1931test1 +% %Created using fontinst v1.931 +% +% %THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY +% +% \ProvidesFile{t1pad.fd} +% [2005/05/14 Fontinst v1.931 font definitions for T1/pad.] +% +% \DeclareFontFamily{T1}{pad}{} +% +% \DeclareFontShape{T1}{pad}{m}{n}{ +% <-> padr8d +% }{} +% +% \DeclareFontShape{T1}{pad}{m}{sl}{ +% <-> padro8d +% }{} +% +% +% \endinput +% +% The notable feature is that there is no {T1}{pad}{m}{it} entry, +% since that substitution was turned off. + diff --git a/Master/texmf-dist/doc/fonts/fontinst/test/v1931test2.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test2.tex new file mode 100644 index 00000000000..8fecddca18e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1931test2.tex @@ -0,0 +1,35 @@ +% fontinst v1.931 test + +\input finstmsc.sty + + +% %1 +% +% \adddriver{dvips}{v1931test.map} +% \input v1931test.recs +% \donedrivers +% +% % Expected results in v1931test.map: +% % +% % padr6z AGaramond-Regular \def\fontinstversion{1.929} +%\def\fontinstversion{1.933} % \end{macrocode} % \end{macro} % @@ -86,7 +87,7 @@ %\NeedsTeXFormat{LaTeX2e}[1995/06/01] %\ProvidesPackage{fontdoc} %\ProvidesPackage{fontinst} -%[2005/02/05 v\fontinstversion\space +%[2007/01/23 v\fontinstversion\space % fontinst documentation package] % fontinst installation package] % \end{macrocode} @@ -439,24 +440,20 @@ \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt +% % \end{macrocode} % \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} % % % \subsection{Trigonometry macros} % -% Include David Carlisle's trigonometry macros. First, do some hacks -% to get round all that |\NeedsTeXFormat{LaTeX2e}| stuff that David -% put in :-) In v\,1.8 these hacks been moved to an earlier place since -% we put in |\ProvidesPackage| ourselves. -% \SortIndex{trig package}{\package{trig} package} -% -% \begin{macrocode} -\let\@tempdima\a_dimen -\let\@tempdimb\b_dimen -\input trig.sty -% -% \end{macrocode} +% Before v\,1.930, the file \texttt{trig.sty} used to be input at this +% point. That is now inlined into the \package{fontinst} source proper +% instead. +% +% \multchanges{\cs{@tempdima}\cs{@tempdimb}}{1.930}{2005/02/06} +% {These aliases for \cs{a_dimen} and \cs{b_dimen} were removed, +% since we may now hack them out of \cs{CalculateTan}. (LH)} % % % \subsection @@ -1948,7 +1945,7 @@ % \meta{digits} is the number of digits to generate. If the % \meta{value} is greater than or equal to $16^{\mathit{digits}}$ % then |\a_count| will be set to \meta{value} divided by this number -% and the formatted value will be for the corresponding reminder. +% and the formatted value will be for the corresponding remainder. % \changes{1.928}{2004/11/28}{Macro added. (LH)} % % The macro overwrites |\a_count|, |\b_count|, and |\c_count|. @@ -1960,7 +1957,7 @@ % |\format_hex_i|\marg{command}\marg{control token} % \end{quote} % If the \meta{control token} is |i| then nothing is done. -% Otherwise the quotient and reminder of |\a_count| with respect to +% Otherwise the quotient and remainder of |\a_count| with respect to % $16$ is computed, where the former is assigned to |\a_count| and % the latter is converted to hexadecimal and prepended to the % \meta{command}, after which the macro expands to @@ -1988,7 +1985,8 @@ % To get the loop to run the wanted number of times, one uses the % trick that |\romannumeral| can generate an arbitrary number of |m|s. % The |\identity_one| stuff is to prevent |\number| from processesing -% the subsequent |001~|, which will be the last that |\roman| reads. +% the subsequent |001~|, which will be the last that |\romannumeral| +% reads. % \begin{macrocode} \def\format_hex#1#2#3{ \a_count=#2 diff --git a/Master/texmf-dist/source/fontinst/base/ficonv.dtx b/Master/texmf-dist/source/fontinst/base/ficonv.dtx index 8af04ffc216..4281142ea16 100644 --- a/Master/texmf-dist/source/fontinst/base/ficonv.dtx +++ b/Master/texmf-dist/source/fontinst/base/ficonv.dtx @@ -1,4 +1,4 @@ -% \CheckSum{2337} +% \CheckSum{2502} % \iffalse meta-comment % % Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, @@ -47,10 +47,6 @@ % reads \meta{encfile}|.enc| and writes the same information to % \meta{etxfile}|.etx|, in a format \TeX{} can read more easily. % -% Each |/|\meta{glyph} command is recorded in a macro |\o-|\meta{glyph}, -% which expands to a corresponding |\setslot|\marg{glyph} -% \textellipsis\ |\endslot| -% statement. % % \begin{macrocode} %<*misc> @@ -59,6 +55,12 @@ % \end{macrocode} % % \begin{macro}{\enctoetx} +% For every |/|\meta{glyph} command, the command |\o-|\meta{glyph} +% gets passed code which writes the corresponding +% |\setslot|\marg{glyph} \textellipsis\ |\endslot| statement. +% Normally that constrol sequence is undefined, hence equivalent to +% |\relax|, and thus the code gets executed. However |\o-.notdef| will +% instead gobble this argument and set |missingslots| to true. % \begin{macrocode} { \catcode`\/=\active @@ -67,20 +69,10 @@ \catcode`\/=\active \catcode`\]=\active \def/##1[{ + \encname_to_etx ##1~{#1}{#2} \a_count=0 \global\missingslotsfalse - \def/####1~{ - \csname~o-####1\endcsname{ - \ifmissingslots - \out_line{\string\nextslot{\the\a_count}} - \fi - \global\missingslotsfalse - \out_line{\string\setslot{####1}} - \out_line{\string\endsetslot} - \out_line{} - } - \advance\a_count by 1 - } + \let/=\encslot_to_etx } \def]~def{} \make_etx{#1}{#2} @@ -88,9 +80,63 @@ } % \end{macrocode} % \end{macro} +% +% \begin{macro}{\encname_to_etx} +% This macro recieves the encoding vector name, the ENC file name, +% and the ETX file name when converting an ENC file to an ETX file. +% The call syntax is +% \begin{quote} +% |\encname_to_etx|\meta{vectorname}\textvisiblespace +% \marg{enc}\marg{etx} +% \end{quote} +% (making the first argument space-delimited but the second +% undelimited is a trick to gobble any space that may be present at +% the end of that which the caller thinks is the vector name). +% +% The command outputs a |\declarepsencoding| command to the +% generated ETX file. +% \changes{1.931}{2005/05/13}{Macro added, to support caching +% original ENC names in autogenerated ETX files. (LH) +% Thanks to Alexej Kryukov for the inspiration for this.} +% \begin{macrocode} +\def\encname_to_etx#1~#2#3{ + \out_line{\percent_char\space REMOVE~THE~FOLLOWING~LINE~IF~ + THIS~FILE~IS~MODIFIED~OR~RENAMED.} + \out_line{\string\declarepsencoding{#3}{#1}{\string\download{#2.enc}}} + \out_line{} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\encslot_to_etx} +% This macro grabs everything up to the next space and writes a +% |\setslot| entry with the grabbed material as glyph name. It is +% used as the definition of |/| (active character) when parsing +% elements of an encoding vector. +% \changes{1.931}{2005/05/13}{Macro added (separated from +% \cs{enctoetx}). (LH)} +% \begin{macrocode} +\def\encslot_to_etx#1~{ + \csname o-#1\endcsname{ + \ifmissingslots + \out_line{\string\nextslot{\the\a_count}} + \fi + \global\missingslotsfalse + \out_line{\string\setslot{#1}} + \out_line{\string\endsetslot} + \out_line{} + } + \advance\a_count by 1 +} +% \end{macrocode} +% \end{macro} % -% |\make_etx| finishes the job of |\enctoetx|. -% +% \begin{macro}{\make_etx} +% |\make_etx| does the stuff that |\enctoetx| does not; it handles +% writing the preamble and postamble of the ETX file, but also does +% the actual |\input| of the ENC file to convert. +% \changes{1.931}{2005/05/13}{Now requiring a particular +% \package{fontdoc} version. (LH)} % \begin{macrocode} \def\make_etx#1#2{ \open_out{\temp_prefix#2.etx} @@ -108,13 +154,13 @@ \out_line{\string\relax} \out_line{} \out_line{\string\documentclass[twocolumn]{article}} - \out_line{\string\usepackage{fontdoc}} + \out_line{\string\usepackage{fontdoc}[2005/05/13]} \out_line{} \out_line{\string\begin{document}} \out_line{} \out_line{This~document~describes~the~#1~encoding.} \out_line{It~was~automatically~generated~by~the} - \out_line{{\string\tt\space~fontinst}~package.} + \out_line{\string\texttt{fontinst}~package.} \out_line{} \out_line{\string\encoding} \out_line{} @@ -125,9 +171,10 @@ \out_line{\string\end encoding} \out_line{} \out_line{\string\end{document}} - \close_out{Encoding~vector} + \close_out{Encoding} } % \end{macrocode} +% \end{macro} % % % \subsection{Converting an ETX file to an ENC file} @@ -400,7 +447,9 @@ % % % \begin{macro}{\etxtocmap} -% The +% As usual for macros with this kind of name, this is the user +% level command to call to generate a CMAP from an ETX. The +% arguments are file names (not including extensions). % \begin{macrocode} \def\etxtocmap#1#2{\begingroup \inputetx{#1} @@ -561,8 +610,9 @@ {\afm_command#1~\end_of_line\afm_line}} % \end{macrocode} % -% The command |\afm_command| reads the first word |FOO|, and calls -% |afm-FOO|. If this does not exist, then |\gobble_one_line| will +% The command |\afm_command| reads the first word \meta{FOO}, and +% calls |\afm-|\meta{FOO}\describecsfamily{afm-\meta{key}}. If this +% does not exist, then |\gobble_one_line| will % eat up the rest of the line. % % \begin{macrocode} @@ -580,10 +630,12 @@ % To define an AFM command, you say |\afm_def|\marg{command}^^A % \parg{pattern}\marg{result} % \begin{macrocode} -\def\afm_def#1(#2)#3{\x_cs\def{afm-#1} - \gobble_one_line#2\end_of_line{#3}} +\def\afm_def#1(#2)#3{ + \x_cs\def{afm-#1}\gobble_one_line#2\end_of_line{#3} +} % \end{macrocode} % \end{macro} +% % \begin{macro}{\afm_let} % Saying |\afm_let|\marg{dest-command}\marg{source-command} copies % the definition of one AFM command to another. @@ -654,9 +706,20 @@ } % \end{macrocode} % \end{macro} -% -% Processing kern pairs. If one of the glyph name starts with -% a dot as in |.notdef| or |.null| the kern pair is ignored. +% +% \begin{macro}{\afm-KPX} +% \begin{macro}{\afm-KP} +% Processing kern pairs. If one of the glyph name starts with +% a dot as in |.notdef| or |.null| the kern pair is ignored. +% The pair is also ignored if the absolute value of the kern +% amount is |\minimum_kern| or less. +% +% That \texttt{KPX} can have the same definition as \texttt{KP} is +% due to an edge case in the processing of AFM lines: |\afm_line| +% inserts an extra space at the end of a line. For \texttt{KPX} +% which really only has three arguments this extra space matches +% the space in |#3~#4|, whereas for \texttt{KP} which has four +% arguments this extra space appears at the end of |#4|. % % \begin{macrocode} \afm_def{KP}(#1~#2~#3~#4){ @@ -664,21 +727,42 @@ \if\first_char#2=.\else \afm_length\a_count{#3} \ifnum \a_count>\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \else\ifnum \a_count<-\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \fi\fi \fi\fi } \afm_let{KPX}{KP} % \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\afm_write_setkern} +% This macro is a hook for the auto-aliasing mechanism to redefine. +% In this plain form, it just outputs a |\setkern| command with the +% given three arguments. +% \changes{1.933}{2007/01/23}{Macro added. (LH)} +% \begin{macrocode} +\def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}} +% \end{macrocode} +% \end{macro} % % Processing char metrics. % % \begin{macrocode} \afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} -\afm_let{CH}{C} % \end{macrocode} +% +% \begin{macro}{\afm-CH} +% The |CH| keyword is like |C|, but signals that the following +% character code is given in hexadecimal. +% \changes{1.933}{2007/01/22}{Proper definition, that parses the +% following hexadecimal value. (LH) Since noone has complained +% about this before, it's probably not very common.} +% \begin{macrocode} +\afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char} +% \end{macrocode} +% \end{macro} % % Processing composite chars. % @@ -700,8 +784,9 @@ \let\char_name=\empty_command % \end{macrocode} % -% |\init_afm| initializes the variables the AFM character list writes to. -% +% \begin{macro}{\init_afm} +% |\init_afm| initializes the variables the AFM character list +% writes to. % \begin{macrocode} \def\init_afm#1{ \char_slot=#1\x_relax @@ -713,23 +798,17 @@ \let\char_name=\empty_command } % \end{macrocode} +% \end{macro} % -% ^^A Commented out, since it describes the way of things before -% ^^A v1.308 (this comment has been wrong for over five years!): -% ^^A -% ^^A |\afm_char| writes the values of these variables to the |.mtx| -% ^^A file, and saves them in a macro |\g-GLYPHNAME|, in the form: -% ^^A \begin{quote} -% ^^A |{WIDTH}{HEIGHT}{DEPTH}{ITALIC}| -% ^^A \end{quote} -% ^^A -% ^^A These are needed, because the (grumble grumble) syntax of |CC| -% ^^A commands doesn't include the glyph measurements, so we have to -% ^^A remember them. -% +% \begin{macro}{\afm_char} +% This command is executed at the end of processing a \texttt{C} +% (or \texttt{CH}) line. It outputs the corresponding +% |\setrawglyph| or |\setnotglyph| command, based on information +% stored into registers when processing that line. +% \changes{1.933}{2007/01/23}{Negating \cs{bbox_lly} using +% \cs{number} instead of an assignment to \cs{a_count}. (LH)} % \begin{macrocode} \def\afm_char{ - \a_count=-\bbox_lly \eval_expr{ \italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_ury } @@ -745,11 +824,12 @@ {\the\char_slot} {\the\x_width} {\the\bbox_ury} - {\the\a_count} + {\number -\bbox_lly} {\the\result} } } % \end{macrocode} +% \end{macro} % % |\init_cc| and |\cc_char| write out a composite character glyph. % @@ -840,7 +920,10 @@ % \end{macro} % % To process a list of commands separated by semi-colons, we call -% |\do_list[LIST]|. This works in a similar way to |\afm_line|. +% |\do_list[LIST]|. This works in a similar way to |\afm_line|, but +% the control sequence family used for decoding is +% \describecsfamily{list-\meta{key}}|\list-|\meta{keyword} rather +% than |\afm-|\meta{keyword}. % % \begin{macrocode} \def\do_list[~#1~#2;~#3]{ @@ -879,7 +962,129 @@ \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} } % \end{macrocode} -% +% +% \begin{macro}{\definealias} +% The |\definealias| command can be used to define a glyph name +% alias, for generation of |\aliased| clauses in glyph names. The +% syntax is +% \begin{quote} +% |\definealias|\marg{alias name}\marg{font's name}\marg{int} +% \end{quote} +% where \meta{font's name} is the glyph name that if found in an +% AFM file should be converted to an |\aliased| clause using the +% \meta{alias name}. The \meta{int} is the name of an integer which +% will be incremented every time this alias applies to a glyph +% definition; this mechanism is meant to help higher level code +% pick an ETX file that fits the font's glyph names. +% +% \changes{1.933}{2007/01/22}{Command added. (LH)} +% +% Defined aliases are stored in the +% \describecsfamily{GN-\meta{font's name}}|\GN-|\meta{font's name} +% family of control sequences. These control sequences are defined +% to be macros expanding to the two tokens +% \begin{quote} +% |\g-|\meta{alias name}\,|\i-|\meta{int} +% \end{quote} +% In the case of |\g-|\meta{alias name}, this is purely a trick to +% save memory (it is very likely that these control sequences will +% anyway occur during the fontmaking part of the processing). +% \begin{macrocode} +\def\definealias#1#2#3{ + \expandafter\def \csname GN-#1 \expandafter\endcsname + \expandafter{ \csname g-#2 \expandafter\endcsname + \csname i-#3\endcsname} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\glyph_alias} +% \begin{macro}{\glyph_alias_i} +% The |\glyph_alias| macro has the syntax +% \begin{quote} +% |\glyph_alias|\marg{font's name} +% \end{quote} +% It expands to the \meta{alias name} corresponding to the +% \meta{font's name}, that had previously been set up using +% |\definealias|. Where this macro is used, it must already have +% been checked that |\GN-|\meta{font's name} is defined. +% \begin{macrocode} +\def\glyph_alias#1{ + \expandafter\expandafter \expandafter\glyph_alias_i + \csname GN-#1\endcsname +} +\def\glyph_alias_i#1#2{ + \expandafter\gobble_three \string#1 +} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macrocode} +\let\charnameprefix\empty +\def\charnamealias#1{ + \if_defined{GN-\charnameprefix#1}\then + \glyph_alias{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \glyph_alias{#1} + \else + #1 + \fi\fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\alias_incr#1{ + \expandafter\expandafter \expandafter\alias_incr_i + \csname GN-#1\endcsname +} +\def\alias_incr_i#1#2{ + \ifx#2\x_relax + \mathchardef#2=\@ne + \else + \a_count=#2 + \advance\a_count\@ne + \mathchardef#2=\a_count + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\alias_char_name#1{ + \if_defined{GN-\charnameprefix#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{\charnameprefix#1}} + } + \alias_incr{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{#1}} + } + \alias_incr{#1} + \else + \edef\char_name{#1} + \fi\fi +} +\def\autoaliasafm{ + \begingroup + \list_def{N}(##1){\alias_char_name{##1}} + \def\afm_write_setkern##1##2##3{ + \out_line{ + \string\setkern{\charnamealias{##1}}{\charnamealias{##2}}{##3} + } + } + \def\init_cc##1{% + \edef\char_name{\charnamealias{##1}} + \out_line{\string\setglyph{\char_name}} + } + \list_def{PCC}(##1~##2~##3){ + \afm_length\a_count{##2} + \afm_length\b_count{##3} + \out_lline{\string\glyphpcc + {\charnamealias{##1}}{\the\a_count}{\the\b_count}} + } +} +\def\endautoaliasafm{\endgroup} +% \end{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -2043,16 +2248,14 @@ % \changes{1.911}{1999/11/19}{\cs{edef}ing \cs{raw_font_name}. (LH)} % \changes{1.915}{2000/09/09}{Locally redefining \cs{aliased}. (LH)} % \changes{1.924}{2003/02/08}{Added \cs{directfalse}. (LH)} +% \changes{1.931}{2005/05/13}{Placed ETX processing after +% \cs{needsfontinstversion} had been written, so that ETX commands +% can write data directly to the output MTX file. (LH)} +% \changes{1.931}{2005/05/13}{Copying \cs{declarepsencoding} data to +% generated MTX file as a \cs{setpsencoding} command. (LH)} % \begin{macrocode} \def\mtxtomtx#1#2{{ - \ifisstr{etx-name}\then - \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} - \directfalse - \inputetx{\str{etx-name}} - \edef\a_macro{\string\reencodefont{\str{etx-name}}} - \else - \let\a_macro=\empty_command - \fi + \let\a_macro=\empty_command \_a_true \ifnum \int{x-scale}=\int{y-scale} \ifnum \int{slant-scale}=\z@ @@ -2082,6 +2285,20 @@ \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} + \ifisstr{etx-name}\then + \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} + \def\declarepsencoding##1##2##3{ + \a_toks={{##1}{##2}{##3}} + \out_line{\string\providepsencoding\the\a_toks} + \ifnum \transform_record_file=\closed_stream \else + \pout_line\transform_record_file + {\string\providepsencoding\the\a_toks} + \fi + } + \directfalse + \inputetx{\str{etx-name}} + \edef\a_macro{\a_macro\string\reencodefont{\str{etx-name}}} + \fi \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue \out_line{} \mtxtomtx_redefinitions diff --git a/Master/texmf-dist/source/fontinst/base/fimain.dtx b/Master/texmf-dist/source/fontinst/base/fimain.dtx index 6edad395440..8fe61d23a73 100644 --- a/Master/texmf-dist/source/fontinst/base/fimain.dtx +++ b/Master/texmf-dist/source/fontinst/base/fimain.dtx @@ -1,4 +1,4 @@ -% \CheckSum{4033} +% \CheckSum{4056} % \iffalse meta-comment % % Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, @@ -2332,6 +2332,10 @@ % \end{quote} % \changes{1.925}{2003/05/28}{Added check that the glyph used is % defined; we get an ugly error if it isn't. (LH)} +% \changes{1.932}{2005/06/17}{Changed error message to warning when a +% corresponding notglyph exists. (LH) This deals with an issue +% regarding composites in fonts which have been reencoded to +% something not a superset of \texttt{8a}.} % % \begin{macrocode} %<*pkg> @@ -2342,12 +2346,17 @@ \moveup{#3} \glyph{\glyph_name_modifier{#1}}{\one_thousand} \pop + \else\ifisglyph{\glyph_name_modifier{#1}-not}\then + \fontinstwarning{\string\glyphpcc}{ + Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreak + because~it~is~so~far~unencoded~in~the~glyph~base + } \else \fontinsterror{\string\glyphpcc}{ - Base~glyph~not~set.\messagebreak - This~could~be~a~sign~that~the~AFM~file~is~buggy + Base~glyph~not~set.\messagebreak + This~could~be~a~sign~that~the~AFM~file~is~buggy }\error_help_a - \fi + \fi\fi } % % \end{macrocode} @@ -2715,7 +2724,7 @@ % is a category 12 (other) token whose character code equals the slot % number. % -% In the entire space of such names, each slot sould be mensioned +% In the entire space of such names, each slot should be mentioned % at most once, with one exception, namely the slot which serves as % right boundary marker, which may occur twice (once for the glyph % which actually is assigned to the slot and once for the right boundary @@ -4451,22 +4460,50 @@ % % \begin{macro}{\substitutesilent} % \begin{macro}{\substitutenoisy} -% |\substitutesilent{TO}{FROM}|\\ -% |\substitutenoisy{TO}{FROM}| -% -% Specifies a default substitution for family or shape |TO|, -% which is substituted by family or shape |FROM|. -% -% \begin{macrocode} -\def\substitutesilent#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{ssub} -} -\def\substitutenoisy#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{sub} +% These commands specify a default substitution for series or shape +% \meta{to}, which points to the series or shape \meta{from}. +% \begin{quote} +% |\substitutesilent|\marg{to}\marg{from}\\ +% |\substitutenoisy|\marg{to}\marg{from} +% \end{quote} +% There can be at most one \meta{to} for every \meta{from}; later +% substitutions will override previous ones. If \meta{to} and +% \meta{from} are equal, then any existing substitution from +% \meta{from} is disabled. +% +% The way this is implemented is that if a font has been installed +% with shape or series \meta{from}, but no entry for \meta{to} has +% been written, then write an entry also for \meta{to} consisting of +% a substitution by \meta{from}. (After doing that, an entry has been +% written also for \meta{to}, so the process may repeat itself with +% the old \meta{to} as a new \meta{from}.) +% +% \begin{macro}{\substitute_generic} +% This is the common part of |\substitutesilent| and +% |\substitutenoisy|. The syntax is +% \begin{quote} +% |\substitute_generic|\marg{type}\marg{to}\marg{from} +% \end{quote} +% where \meta{type} is |ssub| or |sub| respectively. +% \changes{1.931}{2005/05/12}{Macro added, to support explicit +% disabling of substitutions. (LH)} +% \begin{macrocode} +\def\substitute_generic#1#2#3{ + \edef\a_macro{#2} + \edef\b_macro{#3} + \ifx \a_macro \b_macro + \x_cs\let{sub-#3}\undefined_command + \else + \x_cs\let{sub-#3}\a_macro + \x_cs\def{typ-#3}{#1} + \fi } % \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\substitutesilent{\substitute_generic{ssub}} +\def\substitutenoisy{\substitute_generic{sub}} +% \end{macrocode} % \end{macro} % \end{macro} % @@ -4492,7 +4529,7 @@ % \end{macrocode} % % -% \subsection{The font substitution mechanism} +% \subsection{New font substitution mechanism} % % \textbf{Note:} This subsection contains (part of) a new implementation % of the font substitution mechanism, but it is uncertain whether it diff --git a/Master/texmf-dist/source/fontinst/base/fimapgen.dtx b/Master/texmf-dist/source/fontinst/base/fimapgen.dtx index fccdf30b5e2..0ebd1fe7d78 100644 --- a/Master/texmf-dist/source/fontinst/base/fimapgen.dtx +++ b/Master/texmf-dist/source/fontinst/base/fimapgen.dtx @@ -1,4 +1,4 @@ -% \CheckSum{876} +% \CheckSum{916} % \iffalse meta-comment % % Copyright 1999 the fontinst maintenance team and any individual @@ -95,10 +95,10 @@ % \end{quote} % The only real difference between |\fromafm| and |\frompl| at this % stage is that the former specifies the PS name of the font, but the -% latter do not. If you write a |\store|\-|map|\-|data| command yourself +% latter does not. If you write a |\store|\-|map|\-|data| command yourself % and want to supply the PS name then you should use |\fromafm| even if % you took the font metrics from a PL. -% There is a important difference between |\fromvpl| and the first three +% There is an important difference between |\fromvpl| and the first three % in that virtual fonts need no map file entry (and hence there should % not be any either). Besides some error checking, |\fromvpl| causes a % |\makemapentry| to do essentially nothing. @@ -829,10 +829,11 @@ % \end{quote} % \meta{postscript name} is the name by which the encoding is known to % the postscript interpreter, and \meta{action} lists any additional -% action that must be taken before the encoding can be used. So far the -% only action known is \DescribeMacro{\download}|\download|\marg{file}, -% which will cause code for downloading the file by the name \meta{file} -% (suffix included) to be inserted in the output. +% action that must be taken before the encoding can be used. +% ^^A So far the only actions known is +% ^^A \DescribeMacro{\download}|\download|\marg{file}, +% ^^A which will cause code for downloading the file by the name +% ^^A \meta{file} (suffix included) to be inserted in the output. % % \begin{macro}{\declarepsencoding} % Data is entered in a |\pse-|\meta{etx} macro using the @@ -842,6 +843,38 @@ % \end{quote} % \begin{macrocode} \def\declarepsencoding#1#2#3{\x_cs\gdef{pse-#1}{{#2}{#3}}} +% +% \end{macrocode} +% In main \package{fontinst}, |\declarepsencoding| should be a noop so +% that it can appear in encoding files. It's probably a good idea to +% show it when typesetting as well. +% \changes{1.931}{2005/05/13}{Added main \package{fontinst} and +% \package{fontdoc} definitions. (LH)} +% \begin{macrocode} +%\let\declarepsencoding=\gobble_three +%<*doc> +\def\declarepsencoding#1#2#3{\comment{% + This file corresponds to the \FD@typeset@string{#2} encoding vector.}} +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\providepsencoding} +% This command is basically the same as |\declarepsencoding|, but it +% checks whether the encoding has already been set and does nothing +% if that is the case. It is used for autogenerated declarations, to +% allow the user to override the setting. +% \changes{1.931}{2005/05/13}{Command added. (LH)} +% \begin{macrocode} +%<*map> +\def\providepsencoding#1#2#3{ + \if_undefined{pse-#1}\then + \declarepsencoding{#1}{#2}{#3} + \fi +} +% +%\let\providepsencoding=\gobble_three +%\newcommand\providepsencoding[3]{} % \end{macrocode} % \end{macro} % @@ -849,6 +882,7 @@ % By default |\download| gobbles its argument. It should be redefined % when that is not the desired effect. % \begin{macrocode} +%<*map> \let\download=\gobble_one % \end{macrocode} % \end{macro} @@ -863,9 +897,19 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\encodingdownload} +% By default this defaults to being a synonym of |\download|, to +% simplify matters for drivers where the distinction is not relevant. +% They should be redefined when that is not the desired effect. +% \changes{1.931}{2005/05/04}{Command added. (LH)} +% \begin{macrocode} +\def\encodingdownload#1{\download{#1}} +% \end{macrocode} +% \end{macro} +% % Some encodings seem to always be present, so they can be declared here. % \begin{macrocode} -\declarepsencoding{8r}{TeXBase1Encoding}{\download{8r.enc}} +\declarepsencoding{8r}{TeXBase1Encoding}{\encodingdownload{8r.enc}} \declarepsencoding{8a}{StandardEncoding}{} % \end{macrocode} % \package{fontinst} must be told about other postscript encodings (if you @@ -924,6 +968,12 @@ % | \download{MinionMM.pfb}\download{zmnl8ac6.pro}%|\\ % |}| % \end{quote} +% (It should probably be remarked that the most common method of +% defining a multiple master font instance is not to explicitly +% create it as in this example, but to simply use it as any ordinary +% PS font and then rely on the PS \textsf{findfont} operator to +% automagically create it for you. This requires using a special +% naming scheme for instances of multiple master fonts.) % \item Fonts which do not fit any of the general naming schemes. % \end{itemize} % @@ -1299,19 +1349,27 @@ % \begin{macro}{\append_download} % The |\downloads_list| is a token list register which is especially % used for accumulating |\download| commands. Each driver maker which -% uses it should begin by emptying it. +% uses it should begin by emptying it. The command % \begin{quote} -% |\append_download|\marg{arg} +% |\append_download|\marg{cseq}\marg{string expression} % \end{quote} +% \changes{1.931}{2005/05/10}{New syntax (two arguments)! The second +% is expanded, whereas the first is protected by a \cs{noexpand}. +% (LH)} % appends % \begin{quote} -% |\download|\marg{arg} +% \meta{cseq}\marg{expanded string expression} % \end{quote} -% to |\downloads_list|. +% to |\downloads_list|. It overwrites |\a_macro|. % \begin{macrocode} \newtoks\downloads_list -\def\append_download#1{ - \downloads_list=\expandafter{ \the\downloads_list \download{#1} } +\def\append_download#1#2{ + \edef\a_macro{ + \downloads_list = + \noexpand\expandafter{ \noexpand\the \downloads_list + \noexpand#1 {#2} } + } + \a_macro } % \end{macrocode} % \end{macro}\end{macro} @@ -1323,13 +1381,17 @@ % mapfile entry is on one line, the entire entry is written at once. % The \meta{font transformations} is collected as explicit text in the % macro |\postscript_code|. The \meta{downloads} is collected as a -% sequence of |\download| commands in the |\downloads_list| token -% register. +% sequence of |\|\dots|download| commands in the |\downloads_list| +% token register. +% \changes{1.931}{2005/05/10}{Supporting \cs{fulldownload} and +% \cs{encodingdownload}. (LH)} % \begin{macrocode} \def\make_dvips{ \downloads_list={} \let\postscript_code\empty_command - \let\download\append_download + \def\download{\append_download\download} + \def\fulldownload{\append_download\fulldownload} + \def\encodingdownload{\append_download\encodingdownload} \ifx \reencode_etx\empty_command \else \if_undefined{pse-\reencode_etx}\then \etxtoenc{\reencode_etx}{\reencode_etx} @@ -1377,7 +1439,7 @@ \fi\fi \if_a_ \ifx \PS_font_file\unknown_str \get_PS_font_file \fi - \append_download{\PS_font_file} + \append_download\download{\PS_font_file} \ifx \PS_font_file\clueless_str \includewarning\warn_undecided_data \fi @@ -1390,6 +1452,8 @@ % expanding the |\the| with an |\expandafter|. % \begin{macrocode} \def\download##1{~<##1} + \def\fulldownload##1{~<<##1} + \def\encodingdownload##1{~<[##1} \pout_line\output_dvips{ \TeX_font_name\space\PS_font_name \expandafter\empty_command \the\downloads_list diff --git a/Master/texmf-dist/source/fontinst/base/fisource.dvi b/Master/texmf-dist/source/fontinst/base/fisource.dvi index 335361e6f20..0a564d8141d 100644 Binary files a/Master/texmf-dist/source/fontinst/base/fisource.dvi and b/Master/texmf-dist/source/fontinst/base/fisource.dvi differ diff --git a/Master/texmf-dist/source/fontinst/base/fisource.tex b/Master/texmf-dist/source/fontinst/base/fisource.tex index 8c684883f99..39f29a7f17b 100644 --- a/Master/texmf-dist/source/fontinst/base/fisource.tex +++ b/Master/texmf-dist/source/fontinst/base/fisource.tex @@ -87,7 +87,8 @@ \fi \title{The \package{fontinst} utility} -\author{Alan Jeffrey, Sebastian Rahtz, Ulrik Vieth, Lars Hellstr\"om} +\author{Alan Jeffrey\and David Carlisle\and Sebastian Rahtz\and + Ulrik Vieth\and Lars Hellstr\"om} \begin{document} \maketitle @@ -106,10 +107,14 @@ This document implements and describes version~1.9 of \subsection{Source files} -The source for \package{fontinst} is currently split on the six -source files \texttt{fibasics.dtx}, \texttt{ficommon.dtx}, -\texttt{fimain.dtx}, \texttt{ficonv.dtx}, \texttt{filtfam.dtx}, and -\texttt{fimapgen.dtx}. +The source for \package{fontinst} is currently split on the seven +source files \texttt{fibasics.dtx} (basic \TeX\ initialisation and +hackery), \texttt{ficommon.dtx} (commands for variables, integer +expressions, and the like), \texttt{fimain.dtx} (actually making +fonts), \texttt{fitrig.dtx} (trigonometry), \texttt{ficonv.dtx} +(conversions between file formats, font transformations), +\texttt{filtfam.dtx} (the \cs{latinfamily} command), and +\texttt{fimapgen.dtx} (mapfile generation). \subsection{Generated files} @@ -155,10 +160,6 @@ By running the \package{docstrip} installation script \texttt{csc2x.tex}, which only changes the names of digits. \end{description} -\texttt{fontinst.ins} also generates the file \texttt{trig.sty}, which -contains \index{Carlisle, David} David Carlisle's -\SortIndex{trig package}{\package{trig} package} \package{trig} -package, and puts it in the same place as \texttt{fontinst.sty}. \changes{1.914}{2000/05/14}{Generating \texttt{trig.sty} from source. (LH)} @@ -176,8 +177,8 @@ The source is split up on the following \package{docstrip} modules: \item[\Module{debug}, \texttt{filtfam}] Guards code in the |\latinfamily| section that writes \texttt{INFO>} messages. - \item[\Module{doc}, \texttt{fibasics}, \texttt{ficommon}, and - \texttt{fimain}] + \item[\Module{doc}, \texttt{fibasics}, \texttt{ficommon}, + \texttt{fimain}, and \texttt{fimapgen}] Guards code that is to go into \texttt{fontdoc.sty}. \item[\Module{driver}, all files] Guards the driver code---the short piece of \LaTeX\ code in the @@ -235,7 +236,7 @@ The source is split up on the following \package{docstrip} modules: \item[\Module{textcomp}, \texttt{filtfam}] Guards code in the |\latinfamily| section that generates text symbol (\texttt{TS1}\slash ``text companion'') fonts. - \item[\Module{underconstruction}, \texttt{main}] + \item[\Module{underconstruction}, \texttt{fimain}] Guards some code that is ``under construction''. \end{description} @@ -353,9 +354,12 @@ enhancements can be based. \section{About this \package{fontinst} release} -Several improvements, some of which fixes old bugs and some of which -introduces new features, have been made to in particular the generation -of fonts. The most important are: +Versions 1.9xx of \package{fontinst} represent a more-or-less +continuous evolution from 1999 to the present. Several improvements, +the extents of which are perhaps not clearly represented in the version +number increments, have been made in this series---sometimes as fixes +to old bugs, but more often to introduce new features. The most +important are: \begin{itemize} \item The old multiple |\setkern| bug, which resulted in pointless |KRN| instructions being written to (V)PL files have been fixed. @@ -393,8 +397,8 @@ of fonts. The most important are: \item Several \package{fontinst} commands that were previously missing have been added to the \package{fontdoc} package. The most significant are probably |\inputmtx| and |\inputetx|. - \item There is now a simple way of changing the names of glyphs in - metric files generated from AFM files. + \item There is now a way of automatically changing the names of + glyphs in metric files generated from AFM files. % See Subsection~\ref{Ssec:Reglyph} for further details. \item The implementation of font metrics transformations, as done by |\transformfont|, has been rewritten and \package{fontinst} now @@ -417,7 +421,7 @@ of fonts. The most important are: |\setscaled|\-|notglyph| which generalize the |\setraw|\-|glyph| and |\setnot|\-|glyph| commands. These commands are described in Subsection~\ref{Ssec:Glyph-info}. - \item The routines for converting metrics to (V)PL format has + \item The routines for converting metrics to (V)PL format have changed. As a result of this the metrics of fonts are likely to change (slightly), but the conversion is now more accurate than it used to be. A side-effect is that VPL files generated by @@ -514,6 +518,20 @@ of fonts. The most important are: | \Unicode{0069}{LATIN SMALL LETTER I}|\\ |}| \end{quote} + \item + There are now three `actions' for files needed for a font: + |\download|, |\fulldownload|, and |\encodingdownload|; + corresponding to the prefixes |<|, |<<|, and |<[| respectively + in a \package{dvips} map file. + \item + There is a documented way of turning off default substitutions: + Make a |\substitutesilent| or |\substitutenoisy| with the + \meta{from} argument also as \meta{to}. + \item + When ETX files are generated using |\enctoetx| then the original + encoding names (as PS object and as file) are recorded and this + information is made available to the map file writer when + necessary. \end{itemize} @@ -607,17 +625,22 @@ packages, see Section~\ref{Sec:Metric files}. \subsection{Word boundary ligatures and kerns} One of the new features added in \TeX~3 was that of ligatures and -kerns with word boundaries. \package{fontinst} has had an interface +kerns with word boundaries.\footnote{For purposes of ligatures and +kerning, a `word' is a consecutive string of characters from a +single font. These words thus typically include punctuation marks, +unlike the `words' considered in hyphenation.} +\package{fontinst} has had an interface for making such ligatures and kerns, but it has been completely redesigned in v\,1.9 and the old interface (setting the integer |boundarychar|) is no longer recognized by \package{fontinst}. Files which use the old interface can still be processed with \texttt{cfntinst.sty}, though. -Before considering the new commands, it is suitable to make a -distinction between proper glyphs and pseudoglyphs. A proper glyph has -been set using one of the commands |\setrawglyph|, |\setglyph|, and -|\resetglyph|. A pseudoglyph is any name used in the context of a +Before considering the new commands, it is suitable to define the +concepts of proper glyph and pseudoglyph. A \emph{proper glyph} has +been set using one of the commands |\setrawglyph|, +|\set|\-|scaled|\-|raw|\-|glyph|, |\setglyph|, and +|\reset|\-|glyph|. A pseudoglyph is any name used in the context of a glyph name which does not denote a proper glyph. If a pseudoglyph |g-not| was set using the |\setnotglyph| command, then |\ifisglyph{g-not}\then| will evaluate to true, but something can be @@ -630,7 +653,7 @@ specified using the commands |\setleftboundary| and |\endsetleftboundary|, which are syntactically identical to |\setslot| and |\endsetslot| respectively. One important difference is however that the argument to |\setslot| must be a proper glyph, while -the argument to |\setleftboundary| may be any glyph, hence any +the argument to |\setleftboundary| may be any glyph, hence a pseudoglyph will do just fine. |\ligature| commands between |\setleftboundary| and @@ -860,9 +883,8 @@ structure (comments not necessary, of course): The |\adddriver| command gives the order ``write map file entries for the \meta{driver name} DVI driver to the file \meta{output file}.'' The plan is that it should be possible to use the name of just about any -major driver (\texttt{dvips}, \texttt{xdvi},\footnote{Or -does that use the same map file as \texttt{dvips}? I heard somewhere -that it did. /LH} \texttt{pdftex},\footnote{pdf\TeX\ can read +major driver (\texttt{dvips}, \texttt{xdvi}, +\texttt{pdftex},\footnote{pdf\TeX\ can read the map files generated for \texttt{dvips}, but a separate driver is desirable because the formats are not completely identical.} \texttt{OzTeX}, etc.) here and get suitable map file entries for that @@ -2007,7 +2029,10 @@ implicitly use or set are listed below. bounding box. The \texttt{italicslant} integer provides the italic slant of the font. \item[Set by] Explicit commands in \textsf{fontinst} command - files. Defaults to $\max\{0, \mathit{right}-\mathit{width}\}$. + files. Defaults to + $$ + \max\{0, \mathit{right}-\mathit{width}\}. + $$ \item[Used by] The AFM-to-MTX converter. \end{smalldes} \item[stretchword] (integer denoting length) @@ -2223,6 +2248,7 @@ a user-defined macro; see \texttt{ltcmds.mtx} for examples. \DocInclude{fibasics} \DocInclude{ficommon} \DocInclude{fimain} +\DocInclude{fitrig} \DocInclude{ficonv} \DocInclude{filtfam} \DocInclude{fimapgen} diff --git a/Master/texmf-dist/source/fontinst/base/fitrig.dtx b/Master/texmf-dist/source/fontinst/base/fitrig.dtx new file mode 100644 index 00000000000..9d369b37720 --- /dev/null +++ b/Master/texmf-dist/source/fontinst/base/fitrig.dtx @@ -0,0 +1,326 @@ +% \CheckSum{209} +% \iffalse meta-comment +% +% trig.dtx Copyright (C) 1993 1994 1995 1996 1997 1999 David Carlisle +% Inlined as fitrig.dtc 2005 Lars Hellstr"om +% +% This file is part of the fontinst system version 1.9. +% ----------------------------------------------------- +% +% It may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1.1 or, at your option, any later version. +% +%%% From file: fitrig.dtx +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{fisource} +\title{The \textsf{trig} package inlined into \package{fontinst}} +\author{David Carlisle\\Edited by Lars Hellstr\"om} +\begin{document} +\maketitle +\DocInput{fitrig.dtx} +\end{document} +% +% \fi +% +% +% The predecessor of this file is v\,1.09 of \texttt{trig.dtx}, the +% source for the \package{trig} package in the standard \LaTeX\ +% ``graphics'' bundle. It has been inlined into the \package{fontinst} +% source mainly because archive maintainers never seem to tire of +% questioning the need to provide \texttt{trig.sty} with +% \package{fontinst}. +% +% \changes{1.930}{2005/02/06}{Inlined the \package{trig} package into +% \texttt{fontinst.sty} and friends. (LH)} +% +% +% \section{Trigonometrical functions} +% +% These macros implement the trigonometric functions, sin, cos and tan. +% In each case two commands are defined. For instance the command +% |\CalculateSin{33}| may be isued at some point, and then anywhere +% later in the document, the command |\UseSin{33}| will return the +% decimal expansion of $\sin(33^\circ)$. +% +% The arguments to these macros do not have to be whole numbers, +% although in the case of whole numbers, \LaTeX\ or plain \TeX\ counters +% may be used. In \TeX{}Book syntax, arguments must be of type: +% \meta{optional signs}\meta{factor} +% +% Some other examples are:\\ +% |\CalculateSin{22.5}|, |\UseTan{\int{myvar}}|, +% |\UseCos{\count@}|. +% +% Note that unlike the psfig macros, these save all previously +% computed values. This could easily be changed, but I thought that in +% many applications one would want many instances of the +% same value. (eg rotating all the headings of a table by the +% \emph{same} amount). +% +% I don't really like this need to pre-calculate the values, I +% originally implemented |\UseSin| so that it automatically calculated +% the value if it was not pre-stored. This worked fine in testing, until +% I remembered why one needs these values. You want to be able to say +% |\dimen2=\UseSin{30}\dimen0|. Which means that |\UseSin| must +% \emph{expand} to a \meta{factor}. +% +% \StopEventually{} +% +% +% \subsection{The Macros} +% +% \begin{macrocode} +%<*pkg> +% \end{macrocode} +% +% \begin{macro}{\nin@ty}\begin{macro}{\@clxxx} +% \changes{1.930}{2005/02/06}{Renamed this constant. There should be +% three \texttt{x}s in \cs{romannumeral} 180, but \package{trig} +% only had two. (LH)} +% \begin{macro}{\@lxxi}\begin{macro}{\@mmmmlxviii} +% Some useful constants for converting between degrees and radians. +% $$ +% \frac{\pi}{180}\simeq\frac{355}{113\times180}=\frac{71}{4068} +% $$ +% \begin{macrocode} +\chardef\nin@ty=90 +\chardef\@clxxx=180 +\chardef\@lxxi=71 +\mathchardef\@mmmmlxviii=4068 +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro} +% +% The approximation to $\sin$. I experimented with various +% approximations based on Tchebicheff polynomials, and also some +% approximations from a SIAM handbook `Computer Approximations' However +% the standard Taylor series seems sufficiently accurate, and used by +% far the fewest \TeX\ tokens, as the coefficients are all rational. +% \begin{eqnarray*} +% \sin(x)& \simeq& +% x - (1/3!)x^3 + (1/5!)x^5 - (1/7!)x^7 + (1/9!)x^9\\ +% &\simeq& +% \frac{((((7!/9!x^2-7!/7!)x^2+7!/5!)x^2 +7!/3!)x^2+7!/1!)x}{7!}\\ +% &=& \frac{ ((((1/72x^2-1)x^2+42)x^2 +840)x^2+5040)x }{5040} +% \end{eqnarray*} +% The nested form used above reduces the number of operations required. +% In order to further reduce the number of operations, and more +% importantly reduce the number of tokens used, we can precompute the +% coefficients. Note that we cannot use $9!$ as the denominator as +% this would cause overflow of \TeX's arithmetic. +% +% \begin{macro}{\@coeffz} +% \begin{macro}{\@coeffa} +% \begin{macro}{\@coeffb} +% \begin{macro}{\@coeffc} +% \begin{macro}{\@coeffd} +% Save the coefficients as |\|(|math|)|char|s. +% \begin{macrocode} +\chardef\@coeffz=72 +%\chardef\@coefa=1 +\chardef\@coefb=42 +\mathchardef\@coefc=840 +\mathchardef\@coefd=5040 +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% +% \begin{macro}{\TG@rem@pt} +% The standard trick of getting a real number out of a \meta{dimen}. +% This gives a maximum accuracy of approx.\ 5 decimal places, which +% should be sufficient. It puts a space after the number, perhaps it +% shouldn't. +% \changes{1.930}{2005/02/06}{Using \cs{lose_measure}. (LH)} +% \begin{macrocode} +\def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TG@term} +% Compute one term of the above nested series. Multiply the previous +% sum by $x^2$ (stored in |\@tempb|, then add the next coefficient, +% |#1|. +% \begin{macrocode} +\def\TG@term#1{ + \dimen@\@tempb\dimen@ + \advance\dimen@ #1\p@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TG@series} +% Compute the above series. The value in degrees will be in +% |\dimen@| before this is called. +% \begin{macrocode} +\def\TG@series{ + \dimen@\@lxxi\dimen@ + \divide \dimen@ \@mmmmlxviii +% \end{macrocode} +% |\dimen@| now contains the angle in radians, as a \meta{dimen}. +% We need to remove the units, so store the same value as a +% \meta{factor} in |\@tempa|. +% \begin{macrocode} + \edef\@tempa{\TG@rem@pt\dimen@} +% \end{macrocode} +% Now put $x^2$ in |\dimen@| and |\@tempb|. +% \begin{macrocode} + \dimen@\@tempa\dimen@ + \edef\@tempb{\TG@rem@pt\dimen@} +% \end{macrocode} +% The first coefficient is $1/72$. +% \begin{macrocode} + \divide\dimen@\@coeffz + \advance\dimen@\m@ne\p@ + \TG@term\@coefb + \TG@term{-\@coefc}% + \TG@term\@coefd +% \end{macrocode} +% Now the cubic in $x^2$ is completed, so we need to multiply by +% $x$ and divide by $7!$. +% \begin{macrocode} + \dimen@\@tempa\dimen@ + \divide\dimen@ \@coefd +} +% \end{macrocode} +% \end{macro} +% +% \changes{1.930}{2005/02/06}{Use \cs{x_cs} and \cs{if_undefined} where +% appropriate. (LH)} +% +% \begin{macro}{\CalculateSin} +% If this angle has already been computed, do nothing, else store +% the angle, and call |\TG@@sin|. Computed sines are stored in +% control sequences with names of the form +% \describecsfamily{sin(\meta{number})}|\sin(|\meta{number}|)|. +% \begin{macrocode} +\def\CalculateSin#1{{% + \if_undefined{sin(\number#1)}\then + \dimen@=#1\p@ + \TG@@sin + \x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CalculateCos} +% As above, but use the relation $\cos(x) = \sin(90-x)$. Computed +% cosines are stored in control sequences with names of the form +% \describecsfamily{cos(\meta{number})}|\cos(|\meta{number}|)|. +% \begin{macrocode} +\def\CalculateCos#1{{% + \if_undefined{cos(\number#1)}\then + \dimen@=\nin@ty\p@ + \advance \dimen@ -#1\p@ + \TG@@sin + \x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TG@@sin} +% Repeatedly use one of the the relatations +% $\sin(x)=\sin(180-x)=\sin(-180-x)$ to get $x$ in the range +% $-90 \leq x\leq 90$. Then call |\TG@series|. +% \begin{macrocode} +\def\TG@@sin{% + \ifdim\TG@reduce>+% + \else\ifdim\TG@reduce<-% + \else\TG@series\fi\fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TG@reduce} +% Slightly cryptic, but it seems to work\ldots\space +% The first line is the condition for an |\ifdim|, the remaining +% lines constitutes the `then' branch of that conditional. +% \begin{macrocode} +\def\TG@reduce#1#2{ + \dimen@#1#2\nin@ty\p@ + \advance\dimen@#2-\@clxxx\p@ + \dimen@-\dimen@ + \TG@@sin +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\UseSin} +% \begin{macro}{\UseCos} +% Use a pre-computed value. +% \begin{macrocode} +\def\UseSin#1{\csname sin(\number#1)\endcsname} +\def\UseCos#1{\csname cos(\number#1)\endcsname} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% A few shortcuts to save space. +% \begin{macrocode} +\chardef\z@num\z@ +\x_cs\let{sin(0)} \z@num +\x_cs\let{cos(0)} \@ne +\x_cs\let{sin(90)} \@ne +\x_cs\let{cos(90)} \z@num +\x_cs\let{sin(-90)}\m@ne +\x_cs\let{cos(-90)}\z@num +\x_cs\let{sin(180)}\z@num +\x_cs\let{cos(180)}\m@ne +% \end{macrocode} +% +% \begin{macro}{\CalculateTan} +% Originally I coded the Taylor series for tan, but it seems to +% be more accurate to just take the ratio of the sine and cosine. +% This is accurate to 4 decimal places for angles up to +% $50^\circ$, after that the accuracy tails off, giving +% $57.47894$ instead of $57.2900$ for $89^\circ$. +% +% Computed tangents are stored in control sequences with names of the +% form \describecsfamily{tan(\meta{number})}|\tan(|\meta{number}|)|. +% \begin{macrocode} +\def\CalculateTan#1{{% + \if_undefined{tan(\number#1)}\then + \CalculateSin{#1}% + \CalculateCos{#1}% + \a_dimen\UseCos{#1}\p@ + \divide \a_dimen \@iv + \b_dimen\UseSin{#1}\p@ + \b_dimen\two@fourteen\b_dimen + \divide\b_dimen\a_dimen + \x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen} + \fi +}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\UseTan} +% Just like |\UseSin|. +% \begin{macrocode} +\def\UseTan#1{\csname tan(\number#1)\endcsname} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\two@fourteen} +% \begin{macro}{\@iv} +% Two constants needed to keep the division within \TeX's range. +% \begin{macrocode} +\mathchardef\two@fourteen=16384 +\chardef\@iv=4 +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Predefine $\tan(\pm90)$ to be an error. +% \begin{macrocode} +\x_cs\def{tan(90)}{\errmessage{Infinite tan !}} +\expandafter\let + \csname tan(-90)\expandafter\endcsname \csname tan(90)\endcsname +% +% \end{macrocode} +% +% \Finale +% +\endinput + diff --git a/Master/texmf-dist/source/fontinst/base/fontinst.ins b/Master/texmf-dist/source/fontinst/base/fontinst.ins index 7916a253328..fbde286b9d6 100644 --- a/Master/texmf-dist/source/fontinst/base/fontinst.ins +++ b/Master/texmf-dist/source/fontinst/base/fontinst.ins @@ -69,6 +69,7 @@ generated. \from{fibasics.dtx}{pkg}% \from{ficommon.dtx}{pkg}% \from{fimain.dtx}{pkg}% + \from{fitrig.dtx}{pkg}% \from{ficonv.dtx}{pkg}% \from{filtfam.dtx}{pkg,textcomp,debug}% \from{fimapgen.dtx}{pkg}% @@ -78,6 +79,7 @@ generated. \from{fibasics.dtx}{pkg}% \from{ficommon.dtx}{pkg}% \from{fimain.dtx}{pkg,boundaryCompability}% + \from{fitrig.dtx}{pkg}% \from{ficonv.dtx}{pkg}% \from{filtfam.dtx}{pkg,textcomp,debug}% \from{fimapgen.dtx}{pkg}% @@ -87,6 +89,7 @@ generated. \from{fibasics.dtx}{pkg}% \from{ficommon.dtx}{pkg}% \from{fimain.dtx}{pkg}% + \from{fitrig.dtx}{pkg}% \from{ficonv.dtx}{pkg}% \from{filtfam.dtx}{pkg,textcomp,debug,oldstyle}% \from{fimapgen.dtx}{pkg}% @@ -111,21 +114,22 @@ generated. \from{fibasics.dtx}{doc}% \from{ficommon.dtx}{doc}% \from{fimain.dtx}{doc}% + \from{fimapgen.dtx}{doc}% }% } -\OriginalAsk\answer{Do you wish to install trig.sty with fontinst? [y/n] } -\ifx \answer\y \let\answer\yes \fi -\ifx \answer\yes - -\usedir{tex/fontinst/base} -% From graphics.ins: -\preamble -\endpreamble - -\generate{\file{trig.sty}{\from{trig.dtx}{package}}} - -\fi +% \OriginalAsk\answer{Do you wish to install trig.sty with fontinst? [y/n] } +% \ifx \answer\y \let\answer\yes \fi +% \ifx \answer\yes +% +% \usedir{tex/fontinst/base} +% % From graphics.ins: +% \preamble +% \endpreamble +% +% \generate{\file{trig.sty}{\from{trig.dtx}{package}}} +% +% \fi \endbatchfile \endinput diff --git a/Master/texmf-dist/tex/fontinst/base/cfntinst.sty b/Master/texmf-dist/tex/fontinst/base/cfntinst.sty index ec2ee057ba1..033e21175d7 100644 --- a/Master/texmf-dist/tex/fontinst/base/cfntinst.sty +++ b/Master/texmf-dist/tex/fontinst/base/cfntinst.sty @@ -7,6 +7,7 @@ %% fibasics.dtx (with options: `pkg') %% ficommon.dtx (with options: `pkg') %% fimain.dtx (with options: `pkg,boundaryCompability') +%% fitrig.dtx (with options: `pkg') %% ficonv.dtx (with options: `pkg') %% filtfam.dtx (with options: `pkg,textcomp,debug') %% fimapgen.dtx (with options: `pkg') @@ -32,13 +33,13 @@ \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 -\def\fontinstversion{1.929} +\def\fontinstversion{1.933} \ifx\ProvidesPackage\undefined \def\NeedsTeXFormat#1{} \def\ProvidesPackage#1[#2]{} \fi \ProvidesPackage{fontinst} -[2005/02/05 v\fontinstversion\space +[2007/01/23 v\fontinstversion\space fontinst installation package] \def\a_macro#1{\catcode\number`#1=\the\catcode`#1 } \edef\normalcc{% @@ -82,9 +83,6 @@ \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt -\let\@tempdima\a_dimen -\let\@tempdimb\b_dimen -\input trig.sty \def\x_cs#1#2{\expandafter#1\csname#2\endcsname} \let\x_relax=\relax \def\g_let{\global\let} @@ -1190,12 +1188,17 @@ \moveup{#3} \glyph{\glyph_name_modifier{#1}}{\one_thousand} \pop + \else\ifisglyph{\glyph_name_modifier{#1}-not}\then + \fontinstwarning{\string\glyphpcc}{ + Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreak + because~it~is~so~far~unencoded~in~the~glyph~base + } \else \fontinsterror{\string\glyphpcc}{ - Base~glyph~not~set.\messagebreak - This~could~be~a~sign~that~the~AFM~file~is~buggy + Base~glyph~not~set.\messagebreak + This~could~be~a~sign~that~the~AFM~file~is~buggy }\error_help_a - \fi + \fi\fi } \def\glyphbboxright{\max\glyph_width\glyph_maxhpos} \def\samesize#1{ @@ -1992,14 +1995,18 @@ \fi \fi } -\def\substitutesilent#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{ssub} -} -\def\substitutenoisy#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{sub} +\def\substitute_generic#1#2#3{ + \edef\a_macro{#2} + \edef\b_macro{#3} + \ifx \a_macro \b_macro + \x_cs\let{sub-#3}\undefined_command + \else + \x_cs\let{sub-#3}\a_macro + \x_cs\def{typ-#3}{#1} + \fi } +\def\substitutesilent{\substitute_generic{ssub}} +\def\substitutenoisy{\substitute_generic{sub}} \substitutesilent{bx}{b} \substitutesilent{b}{bx} \substitutesilent{b}{sb} @@ -2064,6 +2071,89 @@ \out_line{\percent_char~Created~whilst~debugging~fontinst.} \close_out{Test~file} } +%%% From file: fitrig.dtx +\chardef\nin@ty=90 +\chardef\@clxxx=180 +\chardef\@lxxi=71 +\mathchardef\@mmmmlxviii=4068 +\chardef\@coeffz=72 +\chardef\@coefb=42 +\mathchardef\@coefc=840 +\mathchardef\@coefd=5040 +\def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space} +\def\TG@term#1{ + \dimen@\@tempb\dimen@ + \advance\dimen@ #1\p@ +} +\def\TG@series{ + \dimen@\@lxxi\dimen@ + \divide \dimen@ \@mmmmlxviii + \edef\@tempa{\TG@rem@pt\dimen@} + \dimen@\@tempa\dimen@ + \edef\@tempb{\TG@rem@pt\dimen@} + \divide\dimen@\@coeffz + \advance\dimen@\m@ne\p@ + \TG@term\@coefb + \TG@term{-\@coefc}% + \TG@term\@coefd + \dimen@\@tempa\dimen@ + \divide\dimen@ \@coefd +} +\def\CalculateSin#1{{% + \if_undefined{sin(\number#1)}\then + \dimen@=#1\p@ + \TG@@sin + \x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\CalculateCos#1{{% + \if_undefined{cos(\number#1)}\then + \dimen@=\nin@ty\p@ + \advance \dimen@ -#1\p@ + \TG@@sin + \x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\TG@@sin{% + \ifdim\TG@reduce>+% + \else\ifdim\TG@reduce<-% + \else\TG@series\fi\fi +} +\def\TG@reduce#1#2{ + \dimen@#1#2\nin@ty\p@ + \advance\dimen@#2-\@clxxx\p@ + \dimen@-\dimen@ + \TG@@sin +} +\def\UseSin#1{\csname sin(\number#1)\endcsname} +\def\UseCos#1{\csname cos(\number#1)\endcsname} +\chardef\z@num\z@ +\x_cs\let{sin(0)} \z@num +\x_cs\let{cos(0)} \@ne +\x_cs\let{sin(90)} \@ne +\x_cs\let{cos(90)} \z@num +\x_cs\let{sin(-90)}\m@ne +\x_cs\let{cos(-90)}\z@num +\x_cs\let{sin(180)}\z@num +\x_cs\let{cos(180)}\m@ne +\def\CalculateTan#1{{% + \if_undefined{tan(\number#1)}\then + \CalculateSin{#1}% + \CalculateCos{#1}% + \a_dimen\UseCos{#1}\p@ + \divide \a_dimen \@iv + \b_dimen\UseSin{#1}\p@ + \b_dimen\two@fourteen\b_dimen + \divide\b_dimen\a_dimen + \x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen} + \fi +}} +\def\UseTan#1{\csname tan(\number#1)\endcsname} +\mathchardef\two@fourteen=16384 +\chardef\@iv=4 +\x_cs\def{tan(90)}{\errmessage{Infinite tan !}} +\expandafter\let + \csname tan(-90)\expandafter\endcsname \csname tan(90)\endcsname %%% From file: ficonv.dtx \def\afmtomtx#1#2{{ \let\setsomething_global=\x_relax @@ -2117,8 +2207,9 @@ \def\afm_command#1~{\csname~afm-#1\endcsname\gobble_one_line} \def\gobble_one_line#1\end_of_line{} \x_cs\def{afm-EndFontMetrics}#1\afm_line{\endinput} -\def\afm_def#1(#2)#3{\x_cs\def{afm-#1} - \gobble_one_line#2\end_of_line{#3}} +\def\afm_def#1(#2)#3{ + \x_cs\def{afm-#1}\gobble_one_line#2\end_of_line{#3} +} \def\afm_let#1#2{ \expandafter\let \csname afm-#1\expandafter\endcsname \csname afm-#2\endcsname @@ -2162,15 +2253,16 @@ \if\first_char#2=.\else \afm_length\a_count{#3} \ifnum \a_count>\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \else\ifnum \a_count<-\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \fi\fi \fi\fi } \afm_let{KPX}{KP} +\def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}} \afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} -\afm_let{CH}{C} +\afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char} \afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char} \newcount\char_slot \newcount\char_x_width @@ -2190,7 +2282,6 @@ \let\char_name=\empty_command } \def\afm_char{ - \a_count=-\bbox_lly \eval_expr{ \italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_ury } @@ -2206,7 +2297,7 @@ {\the\char_slot} {\the\x_width} {\the\bbox_ury} - {\the\a_count} + {\number -\bbox_lly} {\the\result} } } @@ -2257,6 +2348,76 @@ \afm_length\b_count{#3} \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} } +\def\definealias#1#2#3{ + \expandafter\def \csname GN-#1 \expandafter\endcsname + \expandafter{ \csname g-#2 \expandafter\endcsname + \csname i-#3\endcsname} +} +\def\glyph_alias#1{ + \expandafter\expandafter \expandafter\glyph_alias_i + \csname GN-#1\endcsname +} +\def\glyph_alias_i#1#2{ + \expandafter\gobble_three \string#1 +} +\let\charnameprefix\empty +\def\charnamealias#1{ + \if_defined{GN-\charnameprefix#1}\then + \glyph_alias{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \glyph_alias{#1} + \else + #1 + \fi\fi +} +\def\alias_incr#1{ + \expandafter\expandafter \expandafter\alias_incr_i + \csname GN-#1\endcsname +} +\def\alias_incr_i#1#2{ + \ifx#2\x_relax + \mathchardef#2=\@ne + \else + \a_count=#2 + \advance\a_count\@ne + \mathchardef#2=\a_count + \fi +} +\def\alias_char_name#1{ + \if_defined{GN-\charnameprefix#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{\charnameprefix#1}} + } + \alias_incr{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{#1}} + } + \alias_incr{#1} + \else + \edef\char_name{#1} + \fi\fi +} +\def\autoaliasafm{ + \begingroup + \list_def{N}(##1){\alias_char_name{##1}} + \def\afm_write_setkern##1##2##3{ + \out_line{ + \string\setkern{\charnamealias{##1}}{\charnamealias{##2}}{##3} + } + } + \def\init_cc##1{% + \edef\char_name{\charnamealias{##1}} + \out_line{\string\setglyph{\char_name}} + } + \list_def{PCC}(##1~##2~##3){ + \afm_length\a_count{##2} + \afm_length\b_count{##3} + \out_lline{\string\glyphpcc + {\charnamealias{##1}}{\the\a_count}{\the\b_count}} + } +} +\def\endautoaliasafm{\endgroup} \def\generalpltomtx#1#2#3#4{{ \let\setsomething_global=\x_relax \let\setfontdimen=\pl_setfontdimen @@ -2645,14 +2806,7 @@ \resetstr{etx-name}{#1} } \def\mtxtomtx#1#2{{ - \ifisstr{etx-name}\then - \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} - \directfalse - \inputetx{\str{etx-name}} - \edef\a_macro{\string\reencodefont{\str{etx-name}}} - \else - \let\a_macro=\empty_command - \fi + \let\a_macro=\empty_command \_a_true \ifnum \int{x-scale}=\int{y-scale} \ifnum \int{slant-scale}=\z@ @@ -2682,6 +2836,20 @@ \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} + \ifisstr{etx-name}\then + \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} + \def\declarepsencoding##1##2##3{ + \a_toks={{##1}{##2}{##3}} + \out_line{\string\providepsencoding\the\a_toks} + \ifnum \transform_record_file=\closed_stream \else + \pout_line\transform_record_file + {\string\providepsencoding\the\a_toks} + \fi + } + \directfalse + \inputetx{\str{etx-name}} + \edef\a_macro{\a_macro\string\reencodefont{\str{etx-name}}} + \fi \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue \out_line{} \mtxtomtx_redefinitions @@ -3494,6 +3662,8 @@ \pout_line\transform_record_file{\string\makemapentry{#1}} \fi } +\let\declarepsencoding=\gobble_three +\let\providepsencoding=\gobble_three %%% From file: fibasics.dtx \def\needsfontinstversion#1{{ \a_dimen=#1pt diff --git a/Master/texmf-dist/tex/fontinst/base/finstmsc.sty b/Master/texmf-dist/tex/fontinst/base/finstmsc.sty index 170464cd0e9..d2fd613cef0 100644 --- a/Master/texmf-dist/tex/fontinst/base/finstmsc.sty +++ b/Master/texmf-dist/tex/fontinst/base/finstmsc.sty @@ -31,13 +31,13 @@ \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 -\def\fontinstversion{1.929} +\def\fontinstversion{1.933} \ifx\ProvidesPackage\undefined \def\NeedsTeXFormat#1{} \def\ProvidesPackage#1[#2]{} \fi \ProvidesPackage{fontinst} -[2005/02/05 v\fontinstversion\space +[2007/01/23 v\fontinstversion\space fontinst installation package] \def\a_macro#1{\catcode\number`#1=\the\catcode`#1 } \edef\normalcc{% @@ -81,9 +81,6 @@ \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt -\let\@tempdima\a_dimen -\let\@tempdimb\b_dimen -\input trig.sty \def\x_cs#1#2{\expandafter#1\csname#2\endcsname} \let\x_relax=\relax \def\g_let{\global\let} @@ -806,25 +803,33 @@ \catcode`\/=\active \catcode`\]=\active \def/##1[{ + \encname_to_etx ##1~{#1}{#2} \a_count=0 \global\missingslotsfalse - \def/####1~{ - \csname~o-####1\endcsname{ - \ifmissingslots - \out_line{\string\nextslot{\the\a_count}} - \fi - \global\missingslotsfalse - \out_line{\string\setslot{####1}} - \out_line{\string\endsetslot} - \out_line{} - } - \advance\a_count by 1 - } + \let/=\encslot_to_etx } \def]~def{} \make_etx{#1}{#2} }} } +\def\encname_to_etx#1~#2#3{ + \out_line{\percent_char\space REMOVE~THE~FOLLOWING~LINE~IF~ + THIS~FILE~IS~MODIFIED~OR~RENAMED.} + \out_line{\string\declarepsencoding{#3}{#1}{\string\download{#2.enc}}} + \out_line{} +} +\def\encslot_to_etx#1~{ + \csname o-#1\endcsname{ + \ifmissingslots + \out_line{\string\nextslot{\the\a_count}} + \fi + \global\missingslotsfalse + \out_line{\string\setslot{#1}} + \out_line{\string\endsetslot} + \out_line{} + } + \advance\a_count by 1 +} \def\make_etx#1#2{ \open_out{\temp_prefix#2.etx} \out_line{\percent_char~Filename:~#2.etx} @@ -841,13 +846,13 @@ \out_line{\string\relax} \out_line{} \out_line{\string\documentclass[twocolumn]{article}} - \out_line{\string\usepackage{fontdoc}} + \out_line{\string\usepackage{fontdoc}[2005/05/13]} \out_line{} \out_line{\string\begin{document}} \out_line{} \out_line{This~document~describes~the~#1~encoding.} \out_line{It~was~automatically~generated~by~the} - \out_line{{\string\tt\space~fontinst}~package.} + \out_line{\string\texttt{fontinst}~package.} \out_line{} \out_line{\string\encoding} \out_line{} @@ -858,7 +863,7 @@ \out_line{\string\end encoding} \out_line{} \out_line{\string\end{document}} - \close_out{Encoding~vector} + \close_out{Encoding} } \def\notdef_name{.notdef} \def\etxtoenc#1#2{\begingroup @@ -1231,9 +1236,15 @@ Check~the~output~file(s)--some~data~was~considered~uncertain} } \def\declarepsencoding#1#2#3{\x_cs\gdef{pse-#1}{{#2}{#3}}} +\def\providepsencoding#1#2#3{ + \if_undefined{pse-#1}\then + \declarepsencoding{#1}{#2}{#3} + \fi +} \let\download=\gobble_one \def\fulldownload#1{\download{#1}} -\declarepsencoding{8r}{TeXBase1Encoding}{\download{8r.enc}} +\def\encodingdownload#1{\download{#1}} +\declarepsencoding{8r}{TeXBase1Encoding}{\encodingdownload{8r.enc}} \declarepsencoding{8a}{StandardEncoding}{} \def\specifypsfont#1#2{\x_cs\def{psf-#1}{#2}} \def\AssumeLWFN{\let\get_PS_font_file\LWFN_get_PS_font_file} @@ -1322,13 +1333,20 @@ \let\debug_values_hook\empty_command \debugvalue{PS_font_name} \newtoks\downloads_list -\def\append_download#1{ - \downloads_list=\expandafter{ \the\downloads_list \download{#1} } +\def\append_download#1#2{ + \edef\a_macro{ + \downloads_list = + \noexpand\expandafter{ \noexpand\the \downloads_list + \noexpand#1 {#2} } + } + \a_macro } \def\make_dvips{ \downloads_list={} \let\postscript_code\empty_command - \let\download\append_download + \def\download{\append_download\download} + \def\fulldownload{\append_download\fulldownload} + \def\encodingdownload{\append_download\encodingdownload} \ifx \reencode_etx\empty_command \else \if_undefined{pse-\reencode_etx}\then \etxtoenc{\reencode_etx}{\reencode_etx} @@ -1366,12 +1384,14 @@ \fi\fi \if_a_ \ifx \PS_font_file\unknown_str \get_PS_font_file \fi - \append_download{\PS_font_file} + \append_download\download{\PS_font_file} \ifx \PS_font_file\clueless_str \includewarning\warn_undecided_data \fi \fi \def\download##1{~<##1} + \def\fulldownload##1{~<<##1} + \def\encodingdownload##1{~<[##1} \pout_line\output_dvips{ \TeX_font_name\space\PS_font_name \expandafter\empty_command \the\downloads_list diff --git a/Master/texmf-dist/tex/fontinst/base/fontinst.sty b/Master/texmf-dist/tex/fontinst/base/fontinst.sty index a15f50fb7c6..c19adcf8386 100644 --- a/Master/texmf-dist/tex/fontinst/base/fontinst.sty +++ b/Master/texmf-dist/tex/fontinst/base/fontinst.sty @@ -7,6 +7,7 @@ %% fibasics.dtx (with options: `pkg') %% ficommon.dtx (with options: `pkg') %% fimain.dtx (with options: `pkg') +%% fitrig.dtx (with options: `pkg') %% ficonv.dtx (with options: `pkg') %% filtfam.dtx (with options: `pkg,textcomp,debug') %% fimapgen.dtx (with options: `pkg') @@ -32,13 +33,13 @@ \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 -\def\fontinstversion{1.929} +\def\fontinstversion{1.933} \ifx\ProvidesPackage\undefined \def\NeedsTeXFormat#1{} \def\ProvidesPackage#1[#2]{} \fi \ProvidesPackage{fontinst} -[2005/02/05 v\fontinstversion\space +[2007/01/23 v\fontinstversion\space fontinst installation package] \def\a_macro#1{\catcode\number`#1=\the\catcode`#1 } \edef\normalcc{% @@ -82,9 +83,6 @@ \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt -\let\@tempdima\a_dimen -\let\@tempdimb\b_dimen -\input trig.sty \def\x_cs#1#2{\expandafter#1\csname#2\endcsname} \let\x_relax=\relax \def\g_let{\global\let} @@ -1190,12 +1188,17 @@ \moveup{#3} \glyph{\glyph_name_modifier{#1}}{\one_thousand} \pop + \else\ifisglyph{\glyph_name_modifier{#1}-not}\then + \fontinstwarning{\string\glyphpcc}{ + Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreak + because~it~is~so~far~unencoded~in~the~glyph~base + } \else \fontinsterror{\string\glyphpcc}{ - Base~glyph~not~set.\messagebreak - This~could~be~a~sign~that~the~AFM~file~is~buggy + Base~glyph~not~set.\messagebreak + This~could~be~a~sign~that~the~AFM~file~is~buggy }\error_help_a - \fi + \fi\fi } \def\glyphbboxright{\max\glyph_width\glyph_maxhpos} \def\samesize#1{ @@ -1980,14 +1983,18 @@ \fi \fi } -\def\substitutesilent#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{ssub} -} -\def\substitutenoisy#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{sub} +\def\substitute_generic#1#2#3{ + \edef\a_macro{#2} + \edef\b_macro{#3} + \ifx \a_macro \b_macro + \x_cs\let{sub-#3}\undefined_command + \else + \x_cs\let{sub-#3}\a_macro + \x_cs\def{typ-#3}{#1} + \fi } +\def\substitutesilent{\substitute_generic{ssub}} +\def\substitutenoisy{\substitute_generic{sub}} \substitutesilent{bx}{b} \substitutesilent{b}{bx} \substitutesilent{b}{sb} @@ -2052,6 +2059,89 @@ \out_line{\percent_char~Created~whilst~debugging~fontinst.} \close_out{Test~file} } +%%% From file: fitrig.dtx +\chardef\nin@ty=90 +\chardef\@clxxx=180 +\chardef\@lxxi=71 +\mathchardef\@mmmmlxviii=4068 +\chardef\@coeffz=72 +\chardef\@coefb=42 +\mathchardef\@coefc=840 +\mathchardef\@coefd=5040 +\def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space} +\def\TG@term#1{ + \dimen@\@tempb\dimen@ + \advance\dimen@ #1\p@ +} +\def\TG@series{ + \dimen@\@lxxi\dimen@ + \divide \dimen@ \@mmmmlxviii + \edef\@tempa{\TG@rem@pt\dimen@} + \dimen@\@tempa\dimen@ + \edef\@tempb{\TG@rem@pt\dimen@} + \divide\dimen@\@coeffz + \advance\dimen@\m@ne\p@ + \TG@term\@coefb + \TG@term{-\@coefc}% + \TG@term\@coefd + \dimen@\@tempa\dimen@ + \divide\dimen@ \@coefd +} +\def\CalculateSin#1{{% + \if_undefined{sin(\number#1)}\then + \dimen@=#1\p@ + \TG@@sin + \x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\CalculateCos#1{{% + \if_undefined{cos(\number#1)}\then + \dimen@=\nin@ty\p@ + \advance \dimen@ -#1\p@ + \TG@@sin + \x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\TG@@sin{% + \ifdim\TG@reduce>+% + \else\ifdim\TG@reduce<-% + \else\TG@series\fi\fi +} +\def\TG@reduce#1#2{ + \dimen@#1#2\nin@ty\p@ + \advance\dimen@#2-\@clxxx\p@ + \dimen@-\dimen@ + \TG@@sin +} +\def\UseSin#1{\csname sin(\number#1)\endcsname} +\def\UseCos#1{\csname cos(\number#1)\endcsname} +\chardef\z@num\z@ +\x_cs\let{sin(0)} \z@num +\x_cs\let{cos(0)} \@ne +\x_cs\let{sin(90)} \@ne +\x_cs\let{cos(90)} \z@num +\x_cs\let{sin(-90)}\m@ne +\x_cs\let{cos(-90)}\z@num +\x_cs\let{sin(180)}\z@num +\x_cs\let{cos(180)}\m@ne +\def\CalculateTan#1{{% + \if_undefined{tan(\number#1)}\then + \CalculateSin{#1}% + \CalculateCos{#1}% + \a_dimen\UseCos{#1}\p@ + \divide \a_dimen \@iv + \b_dimen\UseSin{#1}\p@ + \b_dimen\two@fourteen\b_dimen + \divide\b_dimen\a_dimen + \x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen} + \fi +}} +\def\UseTan#1{\csname tan(\number#1)\endcsname} +\mathchardef\two@fourteen=16384 +\chardef\@iv=4 +\x_cs\def{tan(90)}{\errmessage{Infinite tan !}} +\expandafter\let + \csname tan(-90)\expandafter\endcsname \csname tan(90)\endcsname %%% From file: ficonv.dtx \def\afmtomtx#1#2{{ \let\setsomething_global=\x_relax @@ -2105,8 +2195,9 @@ \def\afm_command#1~{\csname~afm-#1\endcsname\gobble_one_line} \def\gobble_one_line#1\end_of_line{} \x_cs\def{afm-EndFontMetrics}#1\afm_line{\endinput} -\def\afm_def#1(#2)#3{\x_cs\def{afm-#1} - \gobble_one_line#2\end_of_line{#3}} +\def\afm_def#1(#2)#3{ + \x_cs\def{afm-#1}\gobble_one_line#2\end_of_line{#3} +} \def\afm_let#1#2{ \expandafter\let \csname afm-#1\expandafter\endcsname \csname afm-#2\endcsname @@ -2150,15 +2241,16 @@ \if\first_char#2=.\else \afm_length\a_count{#3} \ifnum \a_count>\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \else\ifnum \a_count<-\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \fi\fi \fi\fi } \afm_let{KPX}{KP} +\def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}} \afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} -\afm_let{CH}{C} +\afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char} \afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char} \newcount\char_slot \newcount\char_x_width @@ -2178,7 +2270,6 @@ \let\char_name=\empty_command } \def\afm_char{ - \a_count=-\bbox_lly \eval_expr{ \italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_ury } @@ -2194,7 +2285,7 @@ {\the\char_slot} {\the\x_width} {\the\bbox_ury} - {\the\a_count} + {\number -\bbox_lly} {\the\result} } } @@ -2245,6 +2336,76 @@ \afm_length\b_count{#3} \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} } +\def\definealias#1#2#3{ + \expandafter\def \csname GN-#1 \expandafter\endcsname + \expandafter{ \csname g-#2 \expandafter\endcsname + \csname i-#3\endcsname} +} +\def\glyph_alias#1{ + \expandafter\expandafter \expandafter\glyph_alias_i + \csname GN-#1\endcsname +} +\def\glyph_alias_i#1#2{ + \expandafter\gobble_three \string#1 +} +\let\charnameprefix\empty +\def\charnamealias#1{ + \if_defined{GN-\charnameprefix#1}\then + \glyph_alias{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \glyph_alias{#1} + \else + #1 + \fi\fi +} +\def\alias_incr#1{ + \expandafter\expandafter \expandafter\alias_incr_i + \csname GN-#1\endcsname +} +\def\alias_incr_i#1#2{ + \ifx#2\x_relax + \mathchardef#2=\@ne + \else + \a_count=#2 + \advance\a_count\@ne + \mathchardef#2=\a_count + \fi +} +\def\alias_char_name#1{ + \if_defined{GN-\charnameprefix#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{\charnameprefix#1}} + } + \alias_incr{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{#1}} + } + \alias_incr{#1} + \else + \edef\char_name{#1} + \fi\fi +} +\def\autoaliasafm{ + \begingroup + \list_def{N}(##1){\alias_char_name{##1}} + \def\afm_write_setkern##1##2##3{ + \out_line{ + \string\setkern{\charnamealias{##1}}{\charnamealias{##2}}{##3} + } + } + \def\init_cc##1{% + \edef\char_name{\charnamealias{##1}} + \out_line{\string\setglyph{\char_name}} + } + \list_def{PCC}(##1~##2~##3){ + \afm_length\a_count{##2} + \afm_length\b_count{##3} + \out_lline{\string\glyphpcc + {\charnamealias{##1}}{\the\a_count}{\the\b_count}} + } +} +\def\endautoaliasafm{\endgroup} \def\generalpltomtx#1#2#3#4{{ \let\setsomething_global=\x_relax \let\setfontdimen=\pl_setfontdimen @@ -2633,14 +2794,7 @@ \resetstr{etx-name}{#1} } \def\mtxtomtx#1#2{{ - \ifisstr{etx-name}\then - \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} - \directfalse - \inputetx{\str{etx-name}} - \edef\a_macro{\string\reencodefont{\str{etx-name}}} - \else - \let\a_macro=\empty_command - \fi + \let\a_macro=\empty_command \_a_true \ifnum \int{x-scale}=\int{y-scale} \ifnum \int{slant-scale}=\z@ @@ -2670,6 +2824,20 @@ \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} + \ifisstr{etx-name}\then + \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} + \def\declarepsencoding##1##2##3{ + \a_toks={{##1}{##2}{##3}} + \out_line{\string\providepsencoding\the\a_toks} + \ifnum \transform_record_file=\closed_stream \else + \pout_line\transform_record_file + {\string\providepsencoding\the\a_toks} + \fi + } + \directfalse + \inputetx{\str{etx-name}} + \edef\a_macro{\a_macro\string\reencodefont{\str{etx-name}}} + \fi \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue \out_line{} \mtxtomtx_redefinitions @@ -3482,6 +3650,8 @@ \pout_line\transform_record_file{\string\makemapentry{#1}} \fi } +\let\declarepsencoding=\gobble_three +\let\providepsencoding=\gobble_three %%% From file: fibasics.dtx \def\needsfontinstversion#1{{ \a_dimen=#1pt diff --git a/Master/texmf-dist/tex/fontinst/base/multislot.sty b/Master/texmf-dist/tex/fontinst/base/multislot.sty new file mode 100644 index 00000000000..fac72144059 --- /dev/null +++ b/Master/texmf-dist/tex/fontinst/base/multislot.sty @@ -0,0 +1,234 @@ +% multislot.sty +% +% Second version + + +\needsfontinstversion{1.900} +% Relies heavily on _etx_pass_hook commands. + + +%%%%%%%%%%%%%%% RESOURCES USED %%%%%%%%%%%%%%% +% +% The following classes of control sequences are used by the multislot +% routines, in addition to the ones defined below and the ones fontinst +% normally uses: +% +% \name-NUM +% +% where NUM is a number consisting of one, two, or three decimal digits. +% These are also used by \pltomtx, so they probably already exist as +% hash table entries. + + + +%%%%%%%%%%%%%%% SAVE CATCODES %%%%%%%%%%%%%%% +% +% Save the current values of the catcodes of space, @, NL, ~ and _. +% _ and @ are made letters, ~ is a space, and space and NL are ignored. + +\edef\spacecatcode{\the\catcode`\ } +\edef\atcatcode{\the\catcode`\@} +\edef\nlcatcode{\the\catcode`\^^M} +\edef\underscorecatcode{\the\catcode`\_} +\edef\tildecatcode{\the\catcode`\~} + +\catcode`\ =9 +\catcode`\^^M=9 +\catcode`\@=11 +\catcode`\_=11 +\catcode`\~=10 + + +%%%%%%%%%%%%%%% MULTIPLE SLOT COMMANDS %%%%%%%%%%%%%%% +% +% The user-level commands are quite simple. As usual, you can write +% +% \setslot{NAME} +% +% \endsetslot +% +% to assign a glyph to a slot. The difference is that if there are +% multiple \setslot commands for a slot, this will no longer cause +% strange results. Instead, only the first \setslot-\endsetslot pair +% for each slot will be used, the others are ignored. +% +% If you instead write +% +% \resetslot{NAME} +% +% \endsetslot +% +% then this will override any earlier occurences of \setslot or +% \resetslot. Finally, there is the command +% +% \unsetslot{NUMBER} +% +% which makes fontinst forget any earlier occurences of \setslot +% or \resetslot commands for that particular slot. + + +% The way this works is that every \setslot or \resetslot command is +% implicitly assigned an index, namely the number of such commands +% perviously encountered since the start of the ETX pass. The count +% register \slot_index is allocated to keep track of the current +% index: + +\newcount\slot_index +\def\clear_slot_index{\slot_index=\m@ne} +\add_to\pre_first_etx_pass_hook{\clear_slot_index} +\add_to\pre_second_etx_pass_hook{\clear_slot_index} +\add_to\pre_third_etx_pass_hook{\clear_slot_index} +\add_to\pre_fourth_etx_pass_hook{\clear_slot_index} + +% \setslot, \setleftboundary, and \setrightboundary increments the +% counter just before checking it. + + + +% The point of maintaining the index is that the index of the +% \setslot (or whatever) that actually sets a particular slot gets +% stored in the \name-SLOT control sequence (which is \mathchardef'ed +% to the index). After assignments are made, all a \setslot (or +% whatever) needs to do is to check whether the stored index matches +% the current one, and gobble itself if they don't. + +% The basic check is performed by the command \later_index_check. +% This has the syntax +% +% \later_index_check{SLOT}{} +% +% and expands to nothing if this \setslot will be active, but to +% if it will not. +\def\later_index_check#1{ + \x_cs\ifnum {name-#1}=\slot_index + \expandafter\gobble_one + \else + \expandafter\identity_one + \fi +} +% However, when deciding which \setslots will be active, the condition +% to test is slightly different: is the control sequence in question +% already defined to be a mathchar token? If it isn't, then this will +% be the active \setslot. +\def\setslot_index_check#1{\x_cs\setslot_index_check_i{name-#1}} +\def\temp_command#1{ + \def\setslot_index_check_ii##1#1##2\setslot_index_check_ii{##1} + \def\setslot_index_check_i##1{ + \expandafter\setslot_index_check_ii \expandafter\ifx + \expandafter$ \meaning##1 #1 0 \setslot_index_check_ii $ + \expandafter\identity_one + \else + \mathchardef##1=\slot_index + \expandafter\gobble_one + \fi + } +} +\expandafter\temp_command \expandafter{ \string\mathchar " } + +% The stated definition of \setslot_index_check should thus be in +% force during the first etx pass, but after that the +% \later_index_check definition should rule. +\add_to\post_first_etx_pass_hook{ + \let\setslot_index_check=\later_index_check +} + +% The following is used to ignore a \setslot--\endsetslot or +% \setleftboundary--\endsetleftboundary construction; the argument is +% the command which marks the end. The reason not to use +% \gobble_setslot is that it still executes \end_do_slot, which is +% quite wrong for the kind of ignoring done here. +\def\ignore_to_end#1{ + \bgroup + \let#1=\fi + \expandafter + \egroup + \iffalse +} + + +% The \setslot, \setleftboundary, and \setrightboundary commands must +% be equipped with checks at the start. +\def\checked_setslot{ + \advance \slot_index \@ne + \setslot_index_check{\the\slot_number}{ + \advance \slot_number \@ne + \ignore_to_end\endsetslot + } + \unchecked_setslot +} + +\def\checked_setleftboundary{ + \advance \slot_index \@ne + \setslot_index_check{leftboundary}{\ignore_to_end\endsetleftboundary} + \unchecked_setleftboundary +} + +\def\checked_setrightboundary#1{ + \advance \slot_index \@ne + \setslot_index_check{\the\slot_number}{ + \advance \slot_number \@ne + \gobble_two + } + \unchecked_setrightboundary{#1} +} +\add_to\pre_first_etx_pass_hook{ + \let\unchecked_setslot=\setslot + \let\setslot=\checked_setslot + \let\unchecked_setleftboundary=\setleftboundary + \let\setleftboundary=\checked_setleftboundary + \let\unchecked_setrightboundary=\setrightboundary + \let\setrightboundary=\checked_setrightboundary +} +% But that's it, as far as the \set... commands are concerned. + + +% What about \unsetslot? In principle, it _should_ just be a matter of +\def\unsetslot#1{ + \eval_expr{#1} + \x_cs\let{name-\the\result}\undefined_command +} +\add_to\post_first_etx_pass_hook{\let\unsetslot=\gobble_one} +% given which \resetslot is simply +\def\resetslot{\unsetslot\slot_number \setslot} +% and this sort-of works, but not quite. +% +% The problem is that the ordinary slot assignment table, which is +% used for ligature and kerning instructions, is not updated by +% \unsetslot. Hence ligatures and kerns will be generated as if all +% glyphs that have been set for a slot are present there; after +% +% \nextslot{108} +% \setslot{l} \endsetslot +% +% \nextslot{108} +% \resetslot{lambda} \endsetslot +% +% the effect will be as if one had given the command +% +% \setleftkerning{lambda}{l}{1000} +% +% and moreover the same happens for ligatures, so an f + l -> fl +% ligature will also work as an f + lambda -> fl ligature. +% +% This is of course a BUG, and there doesn't seem to be any way +% around it, short of adding another pass of reading ETX files. Doing +% so would probably not be worth the effort, since the usefulness of +% a \resetslot command is not clear; unlike \resetglyph, it cannot be +% used to amend an existing \set..., but only to override it. + + + +%%%%%%%%%%%%%%% RESTORE CATCODES %%%%%%%%%%%%%%% +% +% Restore the catcodes that were changed. + +\catcode`\@=\atcatcode +\catcode`\^^M=\nlcatcode +\catcode`\ =\spacecatcode +\catcode`\~=\tildecatcode +\catcode`\_=\underscorecatcode + +%%%%%%%%%%%%%%% THE END %%%%%%%%%%%%%%% + +\endinput + diff --git a/Master/texmf-dist/tex/fontinst/base/xfntinst.sty b/Master/texmf-dist/tex/fontinst/base/xfntinst.sty index c969deab6b3..d13e9746234 100644 --- a/Master/texmf-dist/tex/fontinst/base/xfntinst.sty +++ b/Master/texmf-dist/tex/fontinst/base/xfntinst.sty @@ -7,6 +7,7 @@ %% fibasics.dtx (with options: `pkg') %% ficommon.dtx (with options: `pkg') %% fimain.dtx (with options: `pkg') +%% fitrig.dtx (with options: `pkg') %% ficonv.dtx (with options: `pkg') %% filtfam.dtx (with options: `pkg,textcomp,debug,oldstyle') %% fimapgen.dtx (with options: `pkg') @@ -32,13 +33,13 @@ \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 -\def\fontinstversion{1.929} +\def\fontinstversion{1.933} \ifx\ProvidesPackage\undefined \def\NeedsTeXFormat#1{} \def\ProvidesPackage#1[#2]{} \fi \ProvidesPackage{fontinst} -[2005/02/05 v\fontinstversion\space +[2007/01/23 v\fontinstversion\space fontinst installation package] \def\a_macro#1{\catcode\number`#1=\the\catcode`#1 } \edef\normalcc{% @@ -82,9 +83,6 @@ \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt -\let\@tempdima\a_dimen -\let\@tempdimb\b_dimen -\input trig.sty \def\x_cs#1#2{\expandafter#1\csname#2\endcsname} \let\x_relax=\relax \def\g_let{\global\let} @@ -1190,12 +1188,17 @@ \moveup{#3} \glyph{\glyph_name_modifier{#1}}{\one_thousand} \pop + \else\ifisglyph{\glyph_name_modifier{#1}-not}\then + \fontinstwarning{\string\glyphpcc}{ + Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreak + because~it~is~so~far~unencoded~in~the~glyph~base + } \else \fontinsterror{\string\glyphpcc}{ - Base~glyph~not~set.\messagebreak - This~could~be~a~sign~that~the~AFM~file~is~buggy + Base~glyph~not~set.\messagebreak + This~could~be~a~sign~that~the~AFM~file~is~buggy }\error_help_a - \fi + \fi\fi } \def\glyphbboxright{\max\glyph_width\glyph_maxhpos} \def\samesize#1{ @@ -1980,14 +1983,18 @@ \fi \fi } -\def\substitutesilent#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{ssub} -} -\def\substitutenoisy#1#2{ - \x_cs\def{sub-#2}{#1} - \x_cs\def{typ-#2}{sub} +\def\substitute_generic#1#2#3{ + \edef\a_macro{#2} + \edef\b_macro{#3} + \ifx \a_macro \b_macro + \x_cs\let{sub-#3}\undefined_command + \else + \x_cs\let{sub-#3}\a_macro + \x_cs\def{typ-#3}{#1} + \fi } +\def\substitutesilent{\substitute_generic{ssub}} +\def\substitutenoisy{\substitute_generic{sub}} \substitutesilent{bx}{b} \substitutesilent{b}{bx} \substitutesilent{b}{sb} @@ -2052,6 +2059,89 @@ \out_line{\percent_char~Created~whilst~debugging~fontinst.} \close_out{Test~file} } +%%% From file: fitrig.dtx +\chardef\nin@ty=90 +\chardef\@clxxx=180 +\chardef\@lxxi=71 +\mathchardef\@mmmmlxviii=4068 +\chardef\@coeffz=72 +\chardef\@coefb=42 +\mathchardef\@coefc=840 +\mathchardef\@coefd=5040 +\def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space} +\def\TG@term#1{ + \dimen@\@tempb\dimen@ + \advance\dimen@ #1\p@ +} +\def\TG@series{ + \dimen@\@lxxi\dimen@ + \divide \dimen@ \@mmmmlxviii + \edef\@tempa{\TG@rem@pt\dimen@} + \dimen@\@tempa\dimen@ + \edef\@tempb{\TG@rem@pt\dimen@} + \divide\dimen@\@coeffz + \advance\dimen@\m@ne\p@ + \TG@term\@coefb + \TG@term{-\@coefc}% + \TG@term\@coefd + \dimen@\@tempa\dimen@ + \divide\dimen@ \@coefd +} +\def\CalculateSin#1{{% + \if_undefined{sin(\number#1)}\then + \dimen@=#1\p@ + \TG@@sin + \x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\CalculateCos#1{{% + \if_undefined{cos(\number#1)}\then + \dimen@=\nin@ty\p@ + \advance \dimen@ -#1\p@ + \TG@@sin + \x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@} + \fi +}} +\def\TG@@sin{% + \ifdim\TG@reduce>+% + \else\ifdim\TG@reduce<-% + \else\TG@series\fi\fi +} +\def\TG@reduce#1#2{ + \dimen@#1#2\nin@ty\p@ + \advance\dimen@#2-\@clxxx\p@ + \dimen@-\dimen@ + \TG@@sin +} +\def\UseSin#1{\csname sin(\number#1)\endcsname} +\def\UseCos#1{\csname cos(\number#1)\endcsname} +\chardef\z@num\z@ +\x_cs\let{sin(0)} \z@num +\x_cs\let{cos(0)} \@ne +\x_cs\let{sin(90)} \@ne +\x_cs\let{cos(90)} \z@num +\x_cs\let{sin(-90)}\m@ne +\x_cs\let{cos(-90)}\z@num +\x_cs\let{sin(180)}\z@num +\x_cs\let{cos(180)}\m@ne +\def\CalculateTan#1{{% + \if_undefined{tan(\number#1)}\then + \CalculateSin{#1}% + \CalculateCos{#1}% + \a_dimen\UseCos{#1}\p@ + \divide \a_dimen \@iv + \b_dimen\UseSin{#1}\p@ + \b_dimen\two@fourteen\b_dimen + \divide\b_dimen\a_dimen + \x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen} + \fi +}} +\def\UseTan#1{\csname tan(\number#1)\endcsname} +\mathchardef\two@fourteen=16384 +\chardef\@iv=4 +\x_cs\def{tan(90)}{\errmessage{Infinite tan !}} +\expandafter\let + \csname tan(-90)\expandafter\endcsname \csname tan(90)\endcsname %%% From file: ficonv.dtx \def\afmtomtx#1#2{{ \let\setsomething_global=\x_relax @@ -2105,8 +2195,9 @@ \def\afm_command#1~{\csname~afm-#1\endcsname\gobble_one_line} \def\gobble_one_line#1\end_of_line{} \x_cs\def{afm-EndFontMetrics}#1\afm_line{\endinput} -\def\afm_def#1(#2)#3{\x_cs\def{afm-#1} - \gobble_one_line#2\end_of_line{#3}} +\def\afm_def#1(#2)#3{ + \x_cs\def{afm-#1}\gobble_one_line#2\end_of_line{#3} +} \def\afm_let#1#2{ \expandafter\let \csname afm-#1\expandafter\endcsname \csname afm-#2\endcsname @@ -2150,15 +2241,16 @@ \if\first_char#2=.\else \afm_length\a_count{#3} \ifnum \a_count>\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \else\ifnum \a_count<-\minimum_kern - \out_line{\string\setkern{#1}{#2}{\the\a_count}} + \afm_write_setkern{#1}{#2}{\the\a_count} \fi\fi \fi\fi } \afm_let{KPX}{KP} +\def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}} \afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} -\afm_let{CH}{C} +\afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char} \afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char} \newcount\char_slot \newcount\char_x_width @@ -2178,7 +2270,6 @@ \let\char_name=\empty_command } \def\afm_char{ - \a_count=-\bbox_lly \eval_expr{ \italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_ury } @@ -2194,7 +2285,7 @@ {\the\char_slot} {\the\x_width} {\the\bbox_ury} - {\the\a_count} + {\number -\bbox_lly} {\the\result} } } @@ -2245,6 +2336,76 @@ \afm_length\b_count{#3} \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} } +\def\definealias#1#2#3{ + \expandafter\def \csname GN-#1 \expandafter\endcsname + \expandafter{ \csname g-#2 \expandafter\endcsname + \csname i-#3\endcsname} +} +\def\glyph_alias#1{ + \expandafter\expandafter \expandafter\glyph_alias_i + \csname GN-#1\endcsname +} +\def\glyph_alias_i#1#2{ + \expandafter\gobble_three \string#1 +} +\let\charnameprefix\empty +\def\charnamealias#1{ + \if_defined{GN-\charnameprefix#1}\then + \glyph_alias{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \glyph_alias{#1} + \else + #1 + \fi\fi +} +\def\alias_incr#1{ + \expandafter\expandafter \expandafter\alias_incr_i + \csname GN-#1\endcsname +} +\def\alias_incr_i#1#2{ + \ifx#2\x_relax + \mathchardef#2=\@ne + \else + \a_count=#2 + \advance\a_count\@ne + \mathchardef#2=\a_count + \fi +} +\def\alias_char_name#1{ + \if_defined{GN-\charnameprefix#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{\charnameprefix#1}} + } + \alias_incr{\charnameprefix#1} + \else\if_defined{GN-#1}\then + \edef\char_name{ + \string\aliased{#1}{\glyph_alias{#1}} + } + \alias_incr{#1} + \else + \edef\char_name{#1} + \fi\fi +} +\def\autoaliasafm{ + \begingroup + \list_def{N}(##1){\alias_char_name{##1}} + \def\afm_write_setkern##1##2##3{ + \out_line{ + \string\setkern{\charnamealias{##1}}{\charnamealias{##2}}{##3} + } + } + \def\init_cc##1{% + \edef\char_name{\charnamealias{##1}} + \out_line{\string\setglyph{\char_name}} + } + \list_def{PCC}(##1~##2~##3){ + \afm_length\a_count{##2} + \afm_length\b_count{##3} + \out_lline{\string\glyphpcc + {\charnamealias{##1}}{\the\a_count}{\the\b_count}} + } +} +\def\endautoaliasafm{\endgroup} \def\generalpltomtx#1#2#3#4{{ \let\setsomething_global=\x_relax \let\setfontdimen=\pl_setfontdimen @@ -2633,14 +2794,7 @@ \resetstr{etx-name}{#1} } \def\mtxtomtx#1#2{{ - \ifisstr{etx-name}\then - \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} - \directfalse - \inputetx{\str{etx-name}} - \edef\a_macro{\string\reencodefont{\str{etx-name}}} - \else - \let\a_macro=\empty_command - \fi + \let\a_macro=\empty_command \_a_true \ifnum \int{x-scale}=\int{y-scale} \ifnum \int{slant-scale}=\z@ @@ -2670,6 +2824,20 @@ \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} + \ifisstr{etx-name}\then + \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} + \def\declarepsencoding##1##2##3{ + \a_toks={{##1}{##2}{##3}} + \out_line{\string\providepsencoding\the\a_toks} + \ifnum \transform_record_file=\closed_stream \else + \pout_line\transform_record_file + {\string\providepsencoding\the\a_toks} + \fi + } + \directfalse + \inputetx{\str{etx-name}} + \edef\a_macro{\a_macro\string\reencodefont{\str{etx-name}}} + \fi \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue \out_line{} \mtxtomtx_redefinitions @@ -3581,6 +3749,8 @@ \pout_line\transform_record_file{\string\makemapentry{#1}} \fi } +\let\declarepsencoding=\gobble_three +\let\providepsencoding=\gobble_three %%% From file: fibasics.dtx \def\needsfontinstversion#1{{ \a_dimen=#1pt diff --git a/Master/texmf-dist/tex/fontinst/latinetx/t1.etx b/Master/texmf-dist/tex/fontinst/latinetx/t1.etx index 541211c8a14..e44ef1cdd1e 100644 --- a/Master/texmf-dist/tex/fontinst/latinetx/t1.etx +++ b/Master/texmf-dist/tex/fontinst/latinetx/t1.etx @@ -2,9 +2,9 @@ %%% @TeX-font-encoding-file{ %%% author = "Alan Jeffrey and Sebastian Rahtz and %%% Ulrik Vieth and Lars Hellstr{\"o}m", -%%% version = "1.923", -%%% date = "2002-10-29", -%%% time = "00:17:50 +01:00", +%%% version = "1.932", +%%% date = "2005-05-27", +%%% time = "16:17:50 +02:00", %%% filename = "t1.etx", %%% email = "fontinst@tug.org", %%% URL = "http://tug.org/applications/fontinst/", @@ -130,11 +130,11 @@ value of this variable is interpreted as follows: are the slots normally used for \texttt{c}, \texttt{f}, \texttt{s}, \texttt{i}, and \texttt{I}. \end{enumerate} -The default value is $0$ for monowidth fonts (because the ligature -glyphs in such fonts are often useless) and $1$ otherwise. The -negative values are useful when making fonts with a nonstandard -set of ligatures; the idea is that some other (smaller) encoding file -should set these remaining slots. +The default value is $0$ for monowidth or letterspaced fonts (because +the ligature glyphs in such fonts are often useless, or at least not +looking right) and $1$ otherwise. The negative values are useful when +making fonts with a nonstandard set of ligatures; the idea is that +some other (smaller) encoding file should set these remaining slots. \encoding @@ -151,15 +151,33 @@ should set these remaining slots. \setcommand\lctop#1#2{#2} \setcommand\uctop#1#2{#1} \setcommand\lclig#1#2{#2} +\ifisint{letterspacing}\then + \ifnumber{\int{letterspacing}}={0}\then \Else + \setcommand\uclig#1#2{#1spaced} + \comment{Here we set \verb|\uclig#1#2| to \verb|#1spaced|, but + you can't see it as \verb|\setcommand| commands are invisible in + the typeset output.} + \Fi +\Fi \setcommand\uclig#1#2{#1} \setcommand\digit#1{#1} + \ifisint{monowidth}\then \setint{ligaturing}{0} \Else + % The following empty line is *important* to get the formatting + % right here (sigh)! (Remember that it is a \par token.) + + \ifisint{letterspacing}\then + \ifnumber{\int{letterspacing}}={0}\then \Else + \setint{ligaturing}{0} + \Fi + \Fi \setint{ligaturing}{1} \Fi + \comment{The remaining code in this section sets various metric parameters for the font. Ideally, all these parameters should already have been set; the values computed here are merely crude guesses @@ -1416,7 +1434,7 @@ This is one of the files which have been with \textsf{fontinst} ``forever'', so a lot of the early changes where probably never recorded. The following are from the \texttt{CHANGES} file. -1994/06/01 (v\,1.327): Removed the f-liagatures for monowidth fonts. +1994/06/01 (v\,1.327): Removed the f-ligatures for monowidth fonts. (ASAJ) Sebastian spotted that one. 1994/11/29 (v\,1.401): Added \texttt{hyphen}${}*{}$\texttt{hyphenchar}% @@ -1447,6 +1465,14 @@ Changed definition of fontdimen 15 slightly---from ``the width of capital vertical stems'' to ``the dominant width of vertical stems'', which is provided in AFM files. (LH) +2005/05/27 (v\,1.932): Modified defaults for |\uclig| and +$\TypesetIntegerExpression{\int{ligaturing}}$ in fonts with +letterspacing, to use \texttt{spaced} glyphs and not make ligatures +respectively. (LH) Rationale (from discussion with Philipp Lehman): +The non-\texttt{spaced} and ready-made ligature glyphs are often +unnaturally cramped in comparison with other letterspaced character +sequences. The system is probably overly complicated, but can be kept +for historical reasons. \end{document} diff --git a/Master/texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx b/Master/texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx index 372ea4b4fdd..35220c773c2 100644 --- a/Master/texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx +++ b/Master/texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx @@ -70,17 +70,21 @@ have a look at \texttt{lsfake.mtx} instead. \Fi } \begincomment\medskip -A \textbf{Try: Set glyph} is an ordinary \textbf{Set glyph} which is +A ``\textbf{Try: Set glyph}'' is an ordinary \textbf{Set glyph} which is conditional on that a set of glyphs (those used to construct the -composite glyph) are available. It is technically e.g. +composite glyph) are available. Technically the command definitions +are \begin{quotation} + \verb|\setcsctopglyph|\textit{\#1\#2\#3\#4} $\mapsto$\\ \setcsctopglyph{\macroparameter{1}}{\macroparameter{2}}% {\macroparameter{3}}{\macroparameter{4}} + \par\medskip + + \verb|\setcscbotglyph|\textit{\#1\#2\#3\#4} $\mapsto$\\ \setcscbotglyph{\macroparameter{1}}{\macroparameter{2}}% {\macroparameter{3}}{\macroparameter{4}}\par \end{quotation} -(both of which are implemented in the code as simple four argument -commands), but in the list of commands below those two commands will +but in the list of commands below those two commands will be typeset as \resetcommand\setcsctopglyph#1#2#3#4{% \Aheading{Try: Set glyph `\TypesetStringExpression{#1}'} diff --git a/Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx b/Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx index ad942a87a7e..9062e376a1c 100644 --- a/Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx +++ b/Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx @@ -2,8 +2,8 @@ %%% @TeX-font-metrics-file{ %%% author = "Lars Hellstr{\"o}m", %%% version = "1.923", -%%% date = "2003-03-29", -%%% time = "16:17:30 +01:00", +%%% date = "2005-04-15", +%%% time = "12:13:38 +02:00", %%% filename = "lsfake.mtx", %%% email = "fontinst@tug.org", %%% URL = "http://www.tug.org/applications/fontinst/", @@ -55,7 +55,10 @@ diacritical marks (skrunk by the same factor as the letters), with names such as \texttt{Acutesmall}. These are meant to be used as accent characters in a font where the fake small capitals are used as small letters, so that clashes within a single character when \TeX's -\verb|\accent| primitive is used can be less pronounced. +\verb|\accent| primitive is used can be less pronounced. +\textsf{Fontinst} users should however be aware that this is not +necessarily the right thing to do; some fonts might look better with +the \texttt{acute} etc.\@ glyphs as \texttt{Acutesmall} and friends. \metrics @@ -305,65 +308,6 @@ but such an accent would be too low. The exact meaning of -\begincomment -\section{Miscellaneous glyphs} -\endcomment - - -\setglyph{dotlessIsmall} - \glyph{Ismall}{1000} -\endsetglyph -\setleftrightkerning{dotlessIsmall}{Ismall}{1000} - -\setglyph{dotlessJsmall} - \glyph{Jsmall}{1000} -\endsetglyph -\setleftrightkerning{dotlessJsmall}{Jsmall}{1000} - -\setglyph{FFsmall} - \glyph{Fsmall}{1000} - \movert{\kerning{Fsmall}{Fsmall}} - \glyph{Fsmall}{1000} -\endsetglyph - -\setglyph{FIsmall} - \glyph{Fsmall}{1000} - \movert{\kerning{Fsmall}{Ismall}} - \glyph{Ismall}{1000} -\endsetglyph - -\setglyph{FLsmall} - \glyph{Fsmall}{1000} - \movert{\kerning{Fsmall}{Lsmall}} - \glyph{Lsmall}{1000} -\endsetglyph - -\setglyph{FFIsmall} - \glyph{FFsmall}{1000} - \movert{\kerning{FFsmall}{Ismall}} - \glyph{Ismall}{1000} -\endsetglyph - -\setglyph{FFLsmall} - \glyph{FFsmall}{1000} - \movert{\kerning{FFsmall}{Lsmall}} - \glyph{Lsmall}{1000} -\endsetglyph - -\setglyph{IJsmall} - \glyph{Ismall}{1000} - \movert{\kerning{Ismall}{Jsmall}} - \glyph{Jsmall}{1000} -\endsetglyph - -\setglyph{SSsmall} - \glyph{Ssmall}{1000} - \movert{\kerning{Ssmall}{Ssmall}} - \glyph{Ssmall}{1000} -\endsetglyph - - - \endmetrics \section{Notes} @@ -393,6 +337,12 @@ purposes. 2003/01/02--05: File heavily reorganised. (LH) +2005/04/15: Removed section on \emph{Miscellaneous glyphs}, since +that should be handled by \texttt{lsmisc.mtx}, and moreover prevented +the code there from working correctly. (LH) Thanks to Michael Zedler +for drawing my attention to this error. + + \end{document} % Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, diff --git a/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx b/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx index ffe2af0efd3..6e9f1455ba1 100644 --- a/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx +++ b/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx @@ -250,7 +250,6 @@ is equivalent to \setint{visiblespacedepth}{200} \setint{visiblespacewidth}{400} \setint{visiblespacesurround}{50} -\setint{capspacing}{0} \ifisglyph{parenleft}\then @@ -299,4 +298,8 @@ code by Walter Schmidt. 2004/08/07: Fixed typo in vertical symmetry axis code. (LH) +2005/05/21: Moved default for +$\TypesetIntegerExpression{\int{capspacing}}$ to \texttt{lubuild.mtx}, +which is where it is used. (LH) + \end{document} diff --git a/Master/texmf-dist/tex/fontinst/latinmtx/lubuild.mtx b/Master/texmf-dist/tex/fontinst/latinmtx/lubuild.mtx index e1e2f1bf9a4..c9603104bb8 100644 --- a/Master/texmf-dist/tex/fontinst/latinmtx/lubuild.mtx +++ b/Master/texmf-dist/tex/fontinst/latinmtx/lubuild.mtx @@ -477,6 +477,13 @@ $\TypesetIntegerExpression{\int{letterspacing}}$ equal to the $\TypesetIntegerExpression{\int{capspacing}}$. \endcomment +\ifisint{letterspacing}\then + \setint{capspacing}{\int{letterspacing}} +\Else + \setint{capspacing}{0} +\Fi + + \setglyph{FFspaced} \glyph{F}{1000} \movert{\add{\kerning{F}{F}}{\int{capspacing}}} @@ -642,5 +649,8 @@ conveys more information. (LH) 2003/03/29: Added some code (from \texttt{latin.mtx}) for all-caps glyphs that had been forgotten. (LH) +2005/05/21: Improved default for +$\TypesetIntegerExpression{\int{capspacing}}$. (LH) + \end{document} diff --git a/Master/texmf-dist/tex/fontinst/smbletx/ts1.etx b/Master/texmf-dist/tex/fontinst/smbletx/ts1.etx index 52b940e30df..4a28ab14601 100644 --- a/Master/texmf-dist/tex/fontinst/smbletx/ts1.etx +++ b/Master/texmf-dist/tex/fontinst/smbletx/ts1.etx @@ -3,8 +3,8 @@ %%% author = "Sebastian Rahtz and Ulrik Vieth and %%% Lars Hellstr{\"o}m", %%% version = "1.913", -%%% date = "2004-11-12", -%%% time = "16:53:13 +01:00", +%%% date = "2005-05-24", +%%% time = "15:45:46 +02:00", %%% filename = "ts1.etx", %%% email = "fontinst@cogs.susx.ac.uk", %%% URL = "http://www.thphy.uni-duesseldorf.de/~vieth/", @@ -311,9 +311,9 @@ This document describes the \TeX{} text companion encoding vector. \endsetslot \nextslot{79} +\setslot{bigcircle} \comment{A circle `\textbigcircle', big enough to enclose a letter as in `\textcopyright' or `\textregistered'.} -\setslot{bigcircle} \endsetslot \nextslot{87} diff --git a/Master/texmf-dist/tex/fontinst/smblmtx/textcomp.mtx b/Master/texmf-dist/tex/fontinst/smblmtx/textcomp.mtx index ac2216139f2..c4c0a17f27c 100644 --- a/Master/texmf-dist/tex/fontinst/smblmtx/textcomp.mtx +++ b/Master/texmf-dist/tex/fontinst/smblmtx/textcomp.mtx @@ -15,8 +15,8 @@ %%% author = "Sebastian Rahtz and Ulrik Vieth and %%% Walter Schmidt and Lars Hellstr{\"o}m", %%% version = "1.926", -%%% date = "2003-07-13", -%%% time = "23:34:04 +02:00", +%%% date = "2005-05-24", +%%% time = "22:30:49 +02:00", %%% filename = "textcomp.mtx", %%% email = "w-a-schmidt@arcor.de", %%% URL = "http://www.tug.org/applications/fontinst/", @@ -555,7 +555,7 @@ Commented out section on zero-depth accents. (LH) Rationale: 2003/07/13: Added some \verb|\resetitalic| commands. Added fakes for \texttt{interrobang} and \texttt{interrobangdown}. Using an -\verb|unfakableaccent| for unfakable accents. (LH) Rationale: +\verb|\unfakableaccent| for unfakable accents. (LH) Rationale: The result becomes much more readable. \end{document} diff --git a/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty b/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty index aca36f59f7a..01d8efa1e6e 100644 --- a/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty +++ b/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty @@ -7,6 +7,7 @@ %% fibasics.dtx (with options: `doc') %% ficommon.dtx (with options: `doc') %% fimain.dtx (with options: `doc') +%% fimapgen.dtx (with options: `doc') %% %% This is a generated file. %% @@ -27,10 +28,10 @@ %% generated. %% %%% From file: fibasics.dtx -\def\fontinstversion{1.929} +\def\fontinstversion{1.933} \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{fontdoc} -[2005/02/05 v\fontinstversion\space +[2007/01/23 v\fontinstversion\space fontinst documentation package] \newcommand*\needsfontinstversion[1]{% \ifFD@spec@ @@ -1379,6 +1380,11 @@ \def\ifoption#1\then{% \generic@if{option \TypesetStringExpression{#1}}% } +%%% From file: fimapgen.dtx +\def\mapfrags_subsystem{Map~fragments~writer} +\def\declarepsencoding#1#2#3{\comment{% + This file corresponds to the \FD@typeset@string{#2} encoding vector.}} +\newcommand\providepsencoding[3]{} \endinput %% %% End of file `fontdoc.sty'. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 6ef1746b590..efbe40d4a4e 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -3350,9 +3350,9 @@ sub MAKEfontinst &runjob("mkdir -p $DEST/tex/latex/fontinst"); &runjob("mkdir -p $DEST/tex/fontinst"); &runjob("mkdir -p $DEST/source/fontinst"); - &runjob("mkdir -p $DEST/doc/fontinst/base"); - &runjob("$CP -r examples test $DEST/doc/fontinst/base"); - &runjob("$CP -r doc/* README test $DEST/doc/fontinst/base"); + &runjob("mkdir -p $DEST/doc/fonts/fontinst"); + &runjob("$CP -r examples test $DEST/doc/fonts/fontinst"); + &runjob("$CP -r doc/* README test $DEST/doc/fonts/fontinst"); &runjob("$CP -r source $DEST/source/fontinst/base"); &runjob("$CP -r latex/* $DEST/tex/latex/fontinst"); &runjob("$CP -r inputs/* $DEST/tex/fontinst"); -- cgit v1.2.3