summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-08-28 17:52:47 +0000
committerKarl Berry <karl@freefriends.org>2009-08-28 17:52:47 +0000
commit9574391f1c92725d497fa2a84962aee68b5cbf25 (patch)
tree8c6a92468e9c6da565ed5da07c13c0c01187875f /Master/texmf-dist
parent227ebe2cb5e11abb7e12b88ba66adc7735fa9570 (diff)
fontinst 1.933 (24aug09)
git-svn-id: svn://tug.org/texlive/trunk@14924 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/README (renamed from Master/texmf-dist/doc/fonts/fontinst/base/README)18
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvibin207780 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdfbin381721 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvibin62532 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdfbin172067 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex8
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex62
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex208
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex)197
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/Makefile45
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.map12
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/eurofont/eurofont.tex43
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/Makefile24
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/fontptcm.tex75
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/mathtest.tex643
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/resetsy.mtx30
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/unsetmu.mtx7
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrhax.mtx15
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmhax.mtx14
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrmkern.mtx158
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zrvhax.mtx73
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptm/zryhax.mtx26
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/Makefile23
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/fontptcmx.tex76
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathptmx.sty42
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/mathtestx.tex643
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/resetsy.mtx30
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/unsetmu.mtx7
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrhax.mtx15
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmhax.mtx14
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrmkernx.mtx239
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrvhax.mtx73
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zryhax.mtx26
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/examples/mathptmx/zrykernx.mtx35
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdfbin0 -> 463486 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex)1796
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdfbin0 -> 190986 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps (renamed from Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf (renamed from Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf)bin201767 -> 201767 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf (renamed from Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf)bin242186 -> 242186 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/cc-pl.enc258
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/fadrr.mtx51
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/multislot-test.tex16
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/multislot.etx54
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/omsdraft.etx871
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1906test.etx128
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex)4
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex (renamed from Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex)0
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1930test.tex16
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1931test0.tex8
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1931test1.tex50
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/test/v1931test2.tex35
-rw-r--r--Master/texmf-dist/source/fontinst/base/CHANGES6
-rw-r--r--Master/texmf-dist/source/fontinst/base/fibasics.dtx38
-rw-r--r--Master/texmf-dist/source/fontinst/base/ficonv.dtx337
-rw-r--r--Master/texmf-dist/source/fontinst/base/fimain.dtx77
-rw-r--r--Master/texmf-dist/source/fontinst/base/fimapgen.dtx100
-rw-r--r--Master/texmf-dist/source/fontinst/base/fisource.dvibin1091112 -> 1147220 bytes
-rw-r--r--Master/texmf-dist/source/fontinst/base/fisource.tex82
-rw-r--r--Master/texmf-dist/source/fontinst/base/fitrig.dtx326
-rw-r--r--Master/texmf-dist/source/fontinst/base/fontinst.ins28
-rw-r--r--Master/texmf-dist/tex/fontinst/base/cfntinst.sty230
-rw-r--r--Master/texmf-dist/tex/fontinst/base/finstmsc.sty70
-rw-r--r--Master/texmf-dist/tex/fontinst/base/fontinst.sty230
-rw-r--r--Master/texmf-dist/tex/fontinst/base/multislot.sty234
-rw-r--r--Master/texmf-dist/tex/fontinst/base/xfntinst.sty230
-rw-r--r--Master/texmf-dist/tex/fontinst/latinetx/t1.etx44
-rw-r--r--Master/texmf-dist/tex/fontinst/latinmtx/lsbuild.mtx12
-rw-r--r--Master/texmf-dist/tex/fontinst/latinmtx/lsfake.mtx74
-rw-r--r--Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx5
-rw-r--r--Master/texmf-dist/tex/fontinst/latinmtx/lubuild.mtx10
-rw-r--r--Master/texmf-dist/tex/fontinst/smbletx/ts1.etx6
-rw-r--r--Master/texmf-dist/tex/fontinst/smblmtx/textcomp.mtx6
-rw-r--r--Master/texmf-dist/tex/latex/fontinst/fontdoc.sty10
100 files changed, 6993 insertions, 1330 deletions
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/README b/Master/texmf-dist/doc/fonts/fontinst/README
index 9e5f39cde19..b6a30ea506f 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/README
+++ b/Master/texmf-dist/doc/fonts/fontinst/README
@@ -29,21 +29,19 @@ what the interesting files are called.
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.
+interest, as it contains the fontinst manual. For questions
+about the meaning of fontinst commands, 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:
+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 recent revision.
+ 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.)
@@ -112,5 +110,5 @@ General information about the mailing list is at:
http://tug.org/mailman/listinfo/fontinst
-16 December 2004,
+22 August 2009,
Lars Hellstr\"om
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
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi
+++ /dev/null
Binary files 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
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf
+++ /dev/null
Binary files differ
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
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi
+++ /dev/null
Binary files 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
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf
+++ /dev/null
Binary files differ
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/encspecs/encspecs.tex b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex
index 88911506970..a23be98dd27 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex
@@ -58,7 +58,42 @@
\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{\|}
@@ -93,46 +128,93 @@
\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
+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
@@ -142,14 +224,40 @@ 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
+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 then you would also lose several of the advantages
+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}
@@ -351,6 +459,7 @@ directory then one should, as a rule of thumb, include a
\section{Font encoding specifications}
+\label{Sec:FontEncSpec}
\subsection{Basic principles}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx
index efccabde857..efccabde857 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx
+++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx
index 6f07bbd6f4a..6f07bbd6f4a 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx
+++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx
index d82c9e53ed0..d82c9e53ed0 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx
+++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex
index fe7f6f69935..fe7f6f69935 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex
index 74fe2a4df5a..74fe2a4df5a 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/examples/basic/basicex2.tex
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
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex
index 19f5f012231..a66b89054c5 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/manual/fontinst.tex
@@ -3,8 +3,8 @@
%%% 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",
+%%% date = "2007-09-06",
+%%% time = "11:22:41 +02:00",
%%% filename = "fontinst.tex",
%%% email = "fontinst@tug.org",
%%% checksum = "",
@@ -22,7 +22,8 @@
% Modified by Rowland McDonnell June 1998
% Modified and revised by Ulrik Vieth June 1998
-% Modified by Lars Hellstr\"om July 2004
+% Modified by Lars Hellstr\"om July 2004 and later
+
\documentclass[a4paper]{ltxguide}
@@ -140,7 +141,8 @@
\makeatletter
\newenvironment{decl*}[1][]{%
\par
- \small\addvspace{2.3ex}%
+ \small
+ \addvspace{2.3ex}%
\vskip -\parskip
\ifx\relax#1\relax
\def\@decl@date{}%
@@ -177,6 +179,21 @@
\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}
@@ -209,12 +226,15 @@
\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}
@@ -225,6 +245,9 @@
\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}
@@ -234,99 +257,6 @@
\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}
@@ -334,20 +264,21 @@
\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om}
\illustration{roadmap.eps}
\version{1.9}
-\date{December 2004}
+\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{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
@@ -372,29 +303,134 @@
\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{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}
-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.
+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?}
@@ -423,33 +459,44 @@ Looked at from a particular point of view, each of these 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
+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'. 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.
+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
+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
+(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.
+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}
@@ -457,10 +504,17 @@ is not available.
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.
+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)}
@@ -468,8 +522,9 @@ 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.
+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.
@@ -480,6 +535,40 @@ 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\
@@ -494,15 +583,12 @@ 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.)
+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)}
@@ -510,18 +596,18 @@ part of the output process.)
\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.
+\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. 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.
+\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.
-They are used only by \dvi drivers to work out what it should
-\emph{really} print when you ask for a particular character.
+\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
@@ -600,14 +686,42 @@ and \url{ftp://ftp.tex.ac.uk/tex-archive/info/simple-nfss.tex} are
both useful.
-\subsection{What does \fontinst do?}
+\subsubsection{Font mapping files (\map files)}
-\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
+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.
-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.
@@ -619,11 +733,12 @@ If you're still confused, I'll explain a few things.
\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.)
+ 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 and/or shape, rather
+ character, one refers to the abstract meaning, rather
than a specific shape.
Since fonts have often contained a unique glyph for each character
@@ -663,6 +778,11 @@ If you're still confused, I'll explain a few things.
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
@@ -675,41 +795,150 @@ 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',
+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 what \fontinst helps with.
+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.
+% 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?}
+\subsection{What are verbatim, typewriter, and monowidth fonts?}
-If you're using \fontinst, the usual steps you need to take to use
-an ordinary \PS text font with \LaTeX\ are these:
+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.
-\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}
@@ -751,7 +980,9 @@ Such blocks have the structure
\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.
+and |\end|\-|install|\-|fonts| are rather to organise the writing
+of \fd files.
+
\begin{decl*}
|\installfonts|\\
|\endinstallfonts|
@@ -897,7 +1128,7 @@ additional entries for the font.
\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
+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
@@ -910,6 +1141,8 @@ For example, to install an \texttt{8r}-encoded Times Roman raw font
\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]
@@ -957,8 +1190,8 @@ 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:
+For example, if you intend to produce a \texttt{T1}-encoded Times
+family of fonts, you say:
\begin{verbatim}
\installfamily{T1}{ptm}{}
\end{verbatim}
@@ -978,11 +1211,13 @@ nonempty, but it doesn't hurt to make it explicit.
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}
@@ -1002,10 +1237,10 @@ The following commands are valid \m{transformed font}s:
|\fromplgivenetx|\marg{pl}\marg{etx}\\
|\frommtx|\arg{mtx}
\end{decl*}
-This reads the metrics of a font which is about to be transformed from
+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,
-|\formafm| also writes out a raw \pl file, containing just the glyph
+|\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
@@ -1022,8 +1257,9 @@ A \m{transformed font} may also be one of the following:
\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.
+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*}
@@ -1065,6 +1301,29 @@ 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
@@ -1072,14 +1331,34 @@ 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}
+Like installation commands, reglyphing commands are preferably placed
+in a block between two delimiter commands:
+\begin{decl*}
|\reglyphfonts|\\
+ \meta{reglyphing commands}\\
|\endreglyphfonts|
-\end{decl}
+\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}\\
@@ -1087,13 +1366,56 @@ Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this.
|\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}
@@ -1104,18 +1426,23 @@ Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this.
\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.
+\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| is the same as \verb|\substitutesilent|, but
-gives a warning when the substitution is made by \LaTeX.
+\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|, you say:
+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 |i|, you say:
+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}
@@ -1135,6 +1462,8 @@ The following shape substitutions are standard:
\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
@@ -1144,8 +1473,9 @@ 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:
+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>>}
@@ -1161,12 +1491,15 @@ it. For example, \url{fontinst.sty} declares the following sizes:
\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. For example, \url{fontinst.sty} declares the following
+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}
@@ -1182,36 +1515,82 @@ encoding strings:
\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.
-\subsection{Other}
+|\afmtomtx| converts metrics in \afm format. It uses the
+\texttt{minimumkern} integer variable and the |\slanteditalcorr| and
+|\uprightitalcorr| command variables.
-The following commands also belong to this section, but there is
-currently no description of them here.
+|\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.
-|\afmtomtx|\marg{afmfile}\marg{mtxfile}
+\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.
-|\endrecordtransforms|
+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.
-|\etxtopl|\marg{encoding list}\marg{plfile}
+\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.
-|\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}
+\subsection{Other}
-|\NOFILES|
+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.
-|\recordtransforms|\marg{filename}
@@ -1233,7 +1612,9 @@ Subsection~\ref{Ssec:MapFragments}.
\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.
+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}
@@ -1255,7 +1636,9 @@ 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.
+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|
@@ -1280,8 +1663,14 @@ 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
@@ -1290,20 +1679,48 @@ from other pieces.
\begin{decl}
|\AssumeAMSBSYY|\\
|\AssumeBaKoMa|\\
- |\AssumeLWFN|\\
|\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}
- |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action}
-\end{decl}
\begin{decl}
- |\specifypsfont|\marg{PS font name}\marg{actions}
+ |\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.
-An \meta{action} is one of
+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}
@@ -1317,8 +1734,62 @@ 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.
+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}
@@ -1332,9 +1803,9 @@ 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}\\
+ |\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
@@ -1407,6 +1878,7 @@ 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
@@ -1417,12 +1889,13 @@ 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.
+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:
@@ -1448,13 +1921,16 @@ 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
+|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|.
-
-The following commands for changing the value of a variable can be
-used anywhere:
+\medskip
+% The following commands for changing the value of a variable can be
+% used anywhere:
\begin{decl}
|\setdim|\arg{dim}\arg{dimension}\\
@@ -1479,7 +1955,7 @@ 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}\\
+ Number of parameters& \meta{parameter text}\\
0& (empty)\\
1& |#1|\\
2& |#1#2|\\
@@ -1538,17 +2014,18 @@ definition the command had before a previous |\offcommand|. Using
command that is not off has no effect.
-\subsection{Argument types}
+\subsection{Argument types and expansion}
-There are roughly six types of arguments that \fontinst
-commands can take. These are
+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., \TeX\ control sequences), and
- \item other (pretty much ``none of the above'').
+ \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.
@@ -1572,7 +2049,7 @@ 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).
+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
@@ -1588,7 +2065,17 @@ 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
+
+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.
@@ -1598,9 +2085,9 @@ might get expanded, but it could also happen that they won't.
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.
+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:
@@ -1609,7 +2096,7 @@ The \emph{integer expressions} are:
\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.
+expression are |0|, |1000|, |538|, |-20|, |"9C|, |'177|, etc.
\begin{decl}
|\int|\arg{int}
@@ -1645,9 +2132,12 @@ if no kern has been set between the two glyphs.
|\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}.
-|\ad| returns the sum of the two \m{integer expression}s.
+|\add| returns the sum of the two \m{integer expression}s.
|\sub| returns the first \m{integer expression} minus the second.
@@ -1682,11 +2172,13 @@ of a \fontinst conditional are
|\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
+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).
@@ -1724,7 +2216,8 @@ expression.
\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.
+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}%
@@ -1778,6 +2271,15 @@ requires that |\Else| and |\Fi| generate typeset output. See also the
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]
@@ -1793,8 +2295,9 @@ 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
+\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
@@ -1825,9 +2328,10 @@ 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}.
+\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|,
@@ -1845,11 +2349,33 @@ parentheses, not braces.
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}\\
+\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}
+\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|\\
@@ -1872,10 +2398,14 @@ to show up when the file is typeset with \fontdoc.
|\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:
@@ -1883,6 +2413,14 @@ Finally, there are two Plain\TeX\ commands which should be mentioned:
|\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.
@@ -1932,7 +2470,8 @@ The \m{encoding commands} are:
|\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.
+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}
@@ -1986,7 +2525,16 @@ 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.
+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.
@@ -2023,27 +2571,51 @@ 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.
+A reference label (like in \LaTeX), which records the slot number and
+glyph name. Ignored by \fontinst.
\begin{decl}
- |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph}
+ |\ligature|\arg{ligtype}\arg{glyph1}\arg{glyph2}
\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:
+|\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}
- \comment{The `ff' ligature.}
\endsetslot
\end{verbatim}
-\begin{decl*}[v1.918]
+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*}
+\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
@@ -2083,37 +2655,57 @@ the \emph{type} taken from:
mathaccent mathdelim
\end{verbatim}
There is currently no code in \fontinst which makes any use of this
-command.
+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}
-Sets a \textsc{nextlarger} entry from the current slot to the
-\m{glyph}.
+Math font property: makes \meta{glyph} the \textsc{nextlarger} entry
+of the current slot.
\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}
+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}
+\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|
+\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.
@@ -2156,12 +2748,13 @@ string expressions.
|\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:
+\m{glyph commands}, for example:
\begin{verbatim}
\setglyph{IJ}
\glyph{I}{1000}
\glyph{J}{1000}
\endsetglyph
+
\setglyph{Asmall}
\glyph{A}{850}
\endsetglyph
@@ -2174,8 +2767,9 @@ been set.
\m{glyph commands}
|\endresetglyph|
\end{decl}
-Gives the definition of the glyph called \m{name} using the
-\m{glyph commands}.
+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}
@@ -2191,14 +2785,26 @@ Makes the glyph called \m{name} undefined.
\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
+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.
+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}\\
@@ -2209,15 +2815,19 @@ that amount will be applied to the glyph.
\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
+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}
@@ -2227,6 +2837,19 @@ Inputs the \m{metric commands} of \m{file}\texttt{.mtx}.
|\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}
@@ -2369,8 +2992,10 @@ 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.
+\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:
@@ -2456,7 +3081,8 @@ left and one glyph in the \meta{right glyph list} on the right.
\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
+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).
@@ -2467,9 +3093,10 @@ 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.}
+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
@@ -2496,6 +3123,15 @@ 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}
@@ -2520,7 +3156,7 @@ and |\neg| respectively. They are provided under these names because
|\slotexample|
\end{decl}
This typesets the character in the current slot from the example font
-(cf.~|\useexamplefont|).
+(cf.~|\use|\-|example|\-|font|).
\begin{decl}[v1.916]
|\macroparameter|\marg{digit}
@@ -2551,36 +3187,38 @@ 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
+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{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.
+ \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
+ 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.
+ \item[Set by] \etx files.
+ \item[Used by] The \etx-to-\enc converter.
\end{smalldes}
\item[afm-name] (string)
\begin{smalldes}
@@ -2592,17 +3230,17 @@ implicitly use or set are listed below.
\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
+ \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.
+ \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
+ 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
+ \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}
@@ -2623,120 +3261,120 @@ implicitly use or set are listed below.
\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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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
+ \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.
+ \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
+ 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
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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
+ \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.
+ \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
+ \item[Set by] \mtx files. The \cvpl-to-\mtx converter usually writes
|\setdim| commands for this variable.
- \item[Used by] The (V)PL writer. The design size defaults to
+ \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.
@@ -2744,8 +3382,8 @@ implicitly use or set are listed below.
\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
+ 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
@@ -2754,16 +3392,16 @@ implicitly use or set are listed below.
\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.
+ \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
+ 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
+ \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}
@@ -2771,14 +3409,14 @@ implicitly use or set are listed below.
\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
+ \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
+ \item[Description] Name of \etx file. Internal variable in
|\transform|\-|font|.
\item[Set by] The |\reencodefont| command.
\item[Used by] The |\mtxtomtx| command.
@@ -2788,8 +3426,8 @@ implicitly use or set are listed below.
\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.
+ \item[Set by] \mtx files.
+ \item[Used by] Some \etx and \mtx files.
\end{smalldes}
\item[fontdimen($n$)] (integer)
\begin{smalldes}
@@ -2797,8 +3435,8 @@ implicitly use or set are listed below.
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.
+ \item[Set by] \etx files.
+ \item[Used by] The \cvpl writer.
\end{smalldes}
\item[\cs{iftokeep}] (macro)
\begin{smalldes}
@@ -2815,17 +3453,17 @@ implicitly use or set are listed below.
\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.
+ \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
+ \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
+ \item[Used by] \mtx files (\texttt{latin.mtx} and the like). \etx
files (for determining \texttt{fontdimen(1)}).
\end{smalldes}
\item[killweight] (integer)
@@ -2838,72 +3476,77 @@ implicitly use or set are listed below.
\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.
+ \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.
+ \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
+ \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.
+ \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
+ \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.
+ \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
+ \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
+ \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.
+ \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.
+ \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.
+ \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.
+ \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[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}
@@ -2934,25 +3577,25 @@ implicitly use or set are listed below.
\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
+ 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.
+ \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 (V)PL-to-MTX converter can write
+ \item[Set by] \mtx files. The \cvpl-to-\mtx converter can write
|\setstr| commands for this variable.
- \item[Used by] Some MTX files.
+ \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.
+ \item[Set by] \mtx files.
+ \item[Used by] Some \etx and \mtx files.
\end{smalldes}
\item[slant-scale] (integer denoting factor)
\begin{smalldes}
@@ -2987,56 +3630,56 @@ implicitly use or set are listed below.
$$
\max\{0, \mathit{right}-\mathit{width}\}.
$$
- \item[Used by] The AFM-to-MTX converter.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \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.
+ \item[Set by] \mtx files.
+ \item[Used by] Some \etx and \mtx files.
\end{smalldes}
\item[TFMfileprefix] (string)
\begin{smalldes}
@@ -3044,15 +3687,15 @@ implicitly use or set are listed below.
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''.
+ \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
+ \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).
+ \item[Used by] Some \mtx files (\texttt{latin.mtx} and the like).
\end{smalldes}
\item[\cs{uprightitalcorr}]
(macro expanding to an integer expression)
@@ -3070,15 +3713,15 @@ implicitly use or set are listed below.
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.
+ \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
+ 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
+ \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}
@@ -3086,18 +3729,18 @@ implicitly use or set are listed below.
\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
+ \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'.
+ 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.
+ \item[Used by] The \cvpl file generator.
\end{smalldes}
\item[x-scale] (integer denoting factor)
\begin{smalldes}
@@ -3109,9 +3752,9 @@ implicitly use or set are listed below.
\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
+ \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
+ \item[Used by] \mtx files, and \etx files (for determining
\texttt{fontdimen(5)}).
\end{smalldes}
\item[y-scale] (integer denoting factor)
@@ -3125,15 +3768,16 @@ implicitly use or set are listed below.
\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
+ \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.
+ \item[Set by] \etx or \mtx files.
+ \item[Used by] The \cvpl writer. Defaults to $0$ if not set.
\end{smalldes}
-\end{list}
+\end{itemize}
+% \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
+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.
@@ -3160,8 +3804,8 @@ 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,
+\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
@@ -3282,7 +3926,7 @@ 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
+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
@@ -3361,8 +4005,8 @@ the fonts it operates on. The syntax of |\reglyphfont| is
\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
+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
@@ -3490,7 +4134,7 @@ Observe that it is located in the file \texttt{finstmsc.sty}, not
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{center}
\begin{tabular}{ll}
|\input finstmsc.sty|& |%| Input command definitions\\
\meta{general settings} & |%| See below\\
@@ -3500,9 +4144,9 @@ structure (comments not necessary, of course):
|\donedrivers|& |%| Close output file(s), tidy up\\
|\bye|& |%| Quit
\end{tabular}
-\end{quote}
+\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
+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
@@ -3520,7 +4164,7 @@ 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
+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
@@ -3536,15 +4180,15 @@ 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.
+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
@@ -3554,20 +4198,20 @@ 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
+ \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
+ \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
+ \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
+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
@@ -3575,7 +4219,7 @@ file, and therefore it writes `\texttt{??????}' for the postscript name.
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
+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|.
@@ -3609,8 +4253,8 @@ 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
+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
@@ -3630,7 +4274,7 @@ 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
+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
@@ -3648,7 +4292,7 @@ accent in the \texttt{ohungarumlaut} glyph:
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
+you want to change. Create an \mtx file containing the code
\begin{quote}
|\for(pos){250}{750}{50}|\\
| \setglyph{ohungarumlaut\strint{pos}}|\\
@@ -3663,7 +4307,7 @@ This will set eleven glyphs \texttt{ohungarumlaut250},
\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
+encoding that contains them. Therefore create an \etx file which
contains the code
\begin{quote}
|\relax\encoding|\\
@@ -3677,8 +4321,8 @@ contains the code
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
+ |,|\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
@@ -3742,7 +4386,7 @@ 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
+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;
@@ -3755,10 +4399,10 @@ font metric files which together build up a \emph{glyph base}
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
+\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
+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.
@@ -3800,11 +4444,11 @@ command, but here the spaces are mandatory. The currently defined
\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
+ 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
+ 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}
@@ -3813,13 +4457,13 @@ command, but here the spaces are mandatory. The currently defined
% % 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
+% 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
+% 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
+% 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.
@@ -3835,15 +4479,15 @@ command, but here the spaces are mandatory. The currently defined
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
+ |\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
+ 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
+ a new font, but is inferior to installation using proper \etx
files since one for example cannot specify any ligatures in
- MTX files.
+ \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
@@ -3911,7 +4555,7 @@ is from \texttt{msbrc8r} (SabonMT-SCOSF) but everything else is from
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.
+\etx file seems not worth the trouble.
\begin{verbatim}
\installrawfont{psyr}{psyr,\metrics
\setint{xheight}{\height{alpha}}
@@ -3924,14 +4568,14 @@ 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
+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
+\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
+\texttt{psyr.mtx} reinterpreted as an \etx file sets slots but no
fontdimens, these complement each other nicely.
@@ -3986,135 +4630,11 @@ The command for setting the bounding box of a glyph is
-\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
+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,
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
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex
index 0e7c485ab6c..0e7c485ab6c 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/manual/intro98.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps b/Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps
index 8ca14df79de..8ca14df79de 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps
+++ b/Master/texmf-dist/doc/fonts/fontinst/manual/roadmap.eps
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf
index 8d6c2b593c7..8d6c2b593c7 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf
+++ b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tables.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf
index 4ae8a1eeb75..4ae8a1eeb75 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf
+++ b/Master/texmf-dist/doc/fonts/fontinst/talks/et99-font-tutorial.pdf
Binary files 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/base/test/comparemetrics.sty b/Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty
index 7864da89731..7864da89731 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/comparemetrics.sty
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex b/Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex
index a735a34ed79..a735a34ed79 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/comparepls.tex
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/base/test/testsc.tex b/Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex
index c54452d45e1..c54452d45e1 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/testsc.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx
index 624a39bf81d..624a39bf81d 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.mtx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex
index 81a6218f679..81a6218f679 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1901test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex
index 7274fb76597..7274fb76597 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1902test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex
index 47117acc5fb..47117acc5fb 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1905test.tex
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 <Thierry.Bouche@ujf-grenoble.fr>
+% 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 <Thierry.Bouche@ujf-grenoble.fr> 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/base/test/v1906test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx
index 94306a07b32..94306a07b32 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.mtx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex
index 92ed6281198..92ed6281198 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1906test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex
index b9382cdf898..b9382cdf898 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1913test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex
index 73b271b986c..73b271b986c 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex
index 9b1921bbc8d..9b1921bbc8d 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testmap.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex
index bd7a957b0a8..bd7a957b0a8 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1914testshow.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex
index b60946a402b..c889464e444 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1915test.tex
@@ -18,8 +18,8 @@
\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!
+% 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/test/v1915testmap.tex
index 7e83526cd40..7e83526cd40 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1915testmap.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx
index 1829c79d02d..1829c79d02d 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.mtx
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex
index 56f26a51b0f..56f26a51b0f 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex
index 8cc954f2615..8cc954f2615 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1916test2.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex
index ede00d90444..ede00d90444 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1923test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex
index b21f16bf60e..b21f16bf60e 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1927test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex
index 8242cc3438c..8242cc3438c 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test.tex
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex
index c9b099e643c..c9b099e643c 100644
--- a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex
+++ b/Master/texmf-dist/doc/fonts/fontinst/test/v1928test2.tex
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 <cc-pl.enc <padr8a.pfa " encpcr ReEncodeFont "
+% % padro6z AGaramond-Regular <cc-pl.enc <padr8a.pfa " encpcr ReEncodeFont 0.25 SlantFont "
+
+
+%2
+
+\specifypsfont{AGaramond-Regular}{\fulldownload{gdrg____.pfb}}
+\declarepsencoding{cc-pl-test}{encpcr}{\encodingdownload{cc-pl.enc}}
+
+\adddriver{dvips}{v1931test.map}
+\input v1931test.recs
+\donedrivers
+
+% Expected results in v1931test.map:
+%
+% padr6z AGaramond-Regular <[cc-pl.enc <<gdrg____.pfb " encpcr ReEncodeFont "
+% padro6z AGaramond-Regular <[cc-pl.enc <<gdrg____.pfb " encpcr ReEncodeFont 0.25 SlantFont "
+
+
+
+\bye
+
diff --git a/Master/texmf-dist/source/fontinst/base/CHANGES b/Master/texmf-dist/source/fontinst/base/CHANGES
index 481d5f3a34d..1c6155ecb8c 100644
--- a/Master/texmf-dist/source/fontinst/base/CHANGES
+++ b/Master/texmf-dist/source/fontinst/base/CHANGES
@@ -1,6 +1,10 @@
--- CHANGES ---
-This is the changes log for the fontinst font installation package.
+This is the old changes log for the fontinst font installation package.
+As of v1.9, changes in the core are recorded using the \changes
+mechanism of the doc package, and appear as a section in the typeset form
+of the source (fisource.dvi). Changes to supporting files are typically
+recorded in each file, at the end.
Feb 4 1993, v0.01: Created the file, wrote an afm and enc parser,
started on a vpl writer.
diff --git a/Master/texmf-dist/source/fontinst/base/fibasics.dtx b/Master/texmf-dist/source/fontinst/base/fibasics.dtx
index 56515e55140..eb8bc1b7a1a 100644
--- a/Master/texmf-dist/source/fontinst/base/fibasics.dtx
+++ b/Master/texmf-dist/source/fontinst/base/fibasics.dtx
@@ -1,10 +1,11 @@
-% \CheckSum{1512}
+% \CheckSum{1505}
% \iffalse meta-comment
%
% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey,
% hacked and maintained 1997, 1998 Sebastian Rahtz,
-% copyright 1998, 1999, 2000, 2001 the fontinst maintenance team and any
-% individual authors listed elsewhere in this file. All rights reserved.
+% copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+% the fontinst maintenance team and any individual authors listed
+% elsewhere in this file. All rights reserved.
%
% This file is part of the fontinst system version 1.9.
% -----------------------------------------------------
@@ -64,7 +65,7 @@
% stuff any earlier than this. Note that |\fontinstversion| is not
% just used for indentification but also in |\needsfontinstversion|.
% \begin{macrocode}
-%<pkg|doc>\def\fontinstversion{1.929}
+%<pkg|doc>\def\fontinstversion{1.933}
% \end{macrocode}
% \end{macro}
%
@@ -86,7 +87,7 @@
%<doc>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%<doc>\ProvidesPackage{fontdoc}
%<pkg>\ProvidesPackage{fontinst}
-%<pkg|doc>[2005/02/05 v\fontinstversion\space
+%<pkg|doc>[2007/01/23 v\fontinstversion\space
%<doc> fontinst documentation package]
%<pkg> fontinst installation package]
% \end{macrocode}
@@ -439,24 +440,20 @@
\mathchardef\max_mathchardef="7FFF
\mathchardef\two_thousand=2000
\newdimen\half_point \half_point=0.5pt
+%</pkg>
% \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
-%</pkg>
-% \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
}
%</pkg>
% \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}}}
+%</map>
+% \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}
+%<pkg>\let\declarepsencoding=\gobble_three
+%<*doc>
+\def\declarepsencoding#1#2#3{\comment{%
+ This file corresponds to the \FD@typeset@string{#2} encoding vector.}}
+%</doc>
+% \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
+}
+%</map>
+%<pkg>\let\providepsencoding=\gobble_three
+%<doc>\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
--- a/Master/texmf-dist/source/fontinst/base/fisource.dvi
+++ b/Master/texmf-dist/source/fontinst/base/fisource.dvi
Binary files 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}
+%</driver>
+% \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
+%</pkg>
+% \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}
+% <slot commands>
+% \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}
+% <slot commands>
+% \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}{<else-code>}
+%
+% and expands to nothing if this \setslot will be active, but to
+% <else-code> 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'.