summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-04-20 21:15:45 +0000
committerKarl Berry <karl@freefriends.org>2020-04-20 21:15:45 +0000
commitd26de696d3d8f68cd84422f6f64629e693c86223 (patch)
treeeb415f277dcb65b803674329a1c92e08ffcfd58c /Master/texmf-dist
parented3c99cf16da62222e34fc96e0b743b87f2dcd0f (diff)
pkfix-helper (20apr20)
git-svn-id: svn://tug.org/texlive/trunk@54817 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/man/man1/pkfix-helper.1151
-rw-r--r--Master/texmf-dist/doc/man/man1/pkfix-helper.man1.pdfbin22697 -> 49370 bytes
-rw-r--r--Master/texmf-dist/doc/support/pkfix-helper/README2
-rw-r--r--Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.pdfbin653290 -> 603227 bytes
-rw-r--r--Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.tex71
-rwxr-xr-xMaster/texmf-dist/scripts/pkfix-helper/pkfix-helper435
6 files changed, 429 insertions, 230 deletions
diff --git a/Master/texmf-dist/doc/man/man1/pkfix-helper.1 b/Master/texmf-dist/doc/man/man1/pkfix-helper.1
index c0c170fdbe8..648be2b5b3b 100644
--- a/Master/texmf-dist/doc/man/man1/pkfix-helper.1
+++ b/Master/texmf-dist/doc/man/man1/pkfix-helper.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
+.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -38,27 +38,36 @@
. ds PI \(*p
. ds L" ``
. ds R" ''
+. ds C`
+. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
..
-. nr % 0
-. rr F
-.\}
-.el \{\
-. de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -124,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKFIX-HELPER 1"
-.TH PKFIX-HELPER 1 "2011-06-11" "v1.4" " "
+.TH PKFIX-HELPER 1 "2020-04-19" "v1.5" " "
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -237,14 +246,23 @@ program's internal operations.
.IP "\fB\-f\fR \fIname\fR=\fIfontspec\fR, \fB\-\-force\fR=\fIname\fR=\fIfontspec\fR" 4
.IX Item "-f name=fontspec, --force=name=fontspec"
Force \fBpkfix-helper\fR to associate a specific font with a given font
-name appearing the document. \fIname\fR is a two-character \fBdvips\fR font
-name such as \f(CW\*(C`Fa\*(C'\fR. \fIfontspec\fR is a font specification such as
-\&\f(CW\*(C`cmmi8\*(C'\fR or \f(CW\*(C`cmsy10\ @\ 1.1X\*(C'\fR. An asterisk used in the name of the
-base font (e.g.,\ \f(CW\*(C`cmti*\*(C'\fR) will automatically try all integral test
-font sizes from 5 to 17 points (\f(CW\*(C`cmti5\*(C'\fR, \f(CW\*(C`cmti6\*(C'\fR,\ ...,
-\&\f(CW\*(C`cmti17\*(C'\fR). An asterisk used as a scale value (e.g.,\ \f(CW\*(C`cmsy10\ @\ *\*(C'\fR) will be replaced by the scale value that gives the best match to
-the original font's metrics. The \fB\-\-force\fR option can be specified
-repeatedly on the command line.
+name appearing the document. \fIname\fR is a (usually) two-character
+\&\fBdvips\fR font name such as \f(CW\*(C`Fa\*(C'\fR. \fIfontspec\fR is a font specification
+that comprises a font name and an optional scale: "\fIfont\fR [\f(CW\*(C`@\*(C'\fR\ \fIscale\fR]". Some examples of \fIfontspec\fRs are \f(CW\*(C`cmmi8\*(C'\fR and
+\&\f(CW\*(C`cmsy10\ @\ 1.1X\*(C'\fR.
+.Sp
+An asterisk used in the name of the font (e.g.,\ \f(CW\*(C`cmti*\*(C'\fR) will be
+replaced by all integers from 5 to 17 (\f(CW\*(C`cmti5\*(C'\fR, \f(CW\*(C`cmti6\*(C'\fR,\ ...,
+\&\f(CW\*(C`cmti17\*(C'\fR). The scale can be written as a multiple of the design size
+(\f(CW\*(C`X\*(C'\fR) or as an absolute size in either TeX points (\f(CW\*(C`pt\*(C'\fR) or
+PostScript \*(L"big\*(R" points (\f(CW\*(C`bp\*(C'\fR). Hence, \f(CW\*(C`cmsy8\ @\ 1.5X\*(C'\fR, \f(CW\*(C`cmsy8\ @\ 12pt\*(C'\fR, and \f(CW\*(C`cmsy8\ @\ 11.96bp\*(C'\fR all represent the \fIComputer
+Modern Math Symbols 8 Point\fR font scaled to 12 TeX points/11.96
+PostScript points. Instead of specifying an explicit scale, an
+asterisk can be used (as in \f(CW\*(C`cmsy8\ @\ *\*(C'\fR) to request that
+\&\fBpkfix-helper\fR find the scale that best matches the original font's
+metrics.
+.Sp
+The \fB\-\-force\fR option can be specified repeatedly on the command line.
.IP "\fB\-p\fR \fIfilename.ps\fR, \fB\-\-ps\fR=\fIfilename.ps\fR" 4
.IX Item "-p filename.ps, --ps=filename.ps"
Create a PostScript file called \fIfilename.ps\fR that shows the \fBdvips\fR
@@ -254,8 +272,26 @@ name and a font sample of every font used by the input document.
Create a Plain TeX file called \fIfilename.tex\fR that shows the \fBdvips\fR
name and a font sample of every font that \fBpkfix-helper\fR used in the
output document.
-.SS "Infrequently Used Options"
-.IX Subsection "Infrequently Used Options"
+.IP "\fB\-k\fR \fIfontspec\fR, \fB\-\-keep\fR=\fIfontspec\fR" 4
+.IX Item "-k fontspec, --keep=fontspec"
+Do not substitute a vector font for bitmapped font \fIfontspec\fR (\f(CW\*(C`Fa\*(C'\fR,
+\&\f(CW\*(C`Fb\*(C'\fR, etc.). This is useful when converting documents that use
+obscure bitmapped fonts for which there is no vector equivalent. For
+example, it was somewhat common in the past to include graphics such
+as university or corporate logos into a document by converting the
+bitmapped image into a single-character font and using that font in
+LaTeX. \fB\-\-keep\fR prevents such fonts from being replaced. The
+\&\fB\-\-keep\fR option can be specified repeatedly on the command line.
+.IP "\fB\-1\fR, \fB\-\-no\-repeats\fR" 4
+.IX Item "-1, --no-repeats"
+Prevent \fBpkfix-helper\fR from associating the same \fIfontspec\fR with
+more than one \fBdvips\fR font name.
+.SS "Less-frequently Used Options"
+.IX Subsection "Less-frequently Used Options"
+.IP "\fB\-q\fR, \fB\-\-quiet\fR" 4
+.IX Item "-q, --quiet"
+Instruct \fBpkfix-helper\fR to produce no output during its run except
+for error and warning messages.
.IP "\fB\-C\fR \fIfilename\fR, \fB\-\-cache\fR=\fIfilename\fR" 4
.IX Item "-C filename, --cache=filename"
Speed up \s-1TFM\s0 file processing by caching character metrics into file
@@ -268,14 +304,6 @@ which \fB\-\-cache\fR=\fIfilename\fR is specified, \fBpkfix-helper\fR reads the
previously extracted metrics from \fIfilename\fR, going through the
\&\fItftopl\fR\-based process only for \s-1TFM\s0 files that were not previously
encountered.
-.IP "\fB\-q\fR, \fB\-\-quiet\fR" 4
-.IX Item "-q, --quiet"
-Instruct \fBpkfix-helper\fR to produce no output during its run except
-for fatal error messages.
-.IP "\fB\-1\fR, \fB\-\-no\-repeats\fR" 4
-.IX Item "-1, --no-repeats"
-Prevent \fBpkfix-helper\fR from associating the same \fIfontspec\fR with
-more than one \fBdvips\fR font name.
.IP "\fB\-i\fR \fIfontspec\fR, \fB\-\-include\fR=\fIfontspec\fR" 4
.IX Item "-i fontspec, --include=fontspec"
Add \fIfontspec\fR to the list of font specifications against which
@@ -288,22 +316,6 @@ repeatedly on the command line.
Remove all font specifications matching regular expression \fIregexp\fR
from \fBpkfix-helper\fR's list of known fonts. The \fB\-\-exclude\fR option
can be specified repeatedly on the command line.
-.IP "\fB\-k\fR \fIfontspec\fR, \fB\-\-keep\fR=\fIfontspec\fR" 4
-.IX Item "-k fontspec, --keep=fontspec"
-Do not substitute a vector font for bitmapped font \fIfontspec\fR (\f(CW\*(C`Fa\*(C'\fR,
-\&\f(CW\*(C`Fb\*(C'\fR, etc.). This is useful when converting documents that use
-obscure bitmapped fonts for which there is no vector equivalent. For
-example, it was somewhat common in the past to include graphics such
-as university or corporate logos into a document by converting the
-bitmapped image into a single-character font and using that font in
-LaTeX. \fB\-\-keep\fR prevents such fonts from being replaced. The
-\&\fB\-\-keep\fR option can be specified repeatedly on the command line.
-.IP "\fB\-a\fR, \fB\-\-any\-scale\fR" 4
-.IX Item "-a, --any-scale"
-Allow any value to be used to scale a font when "\f(CW\*(C`*\*(C'\fR" is specified as
-the scale factor. Normally, \fBpkfix-helper\fR considers only integer
-multiples of 0.1 that are greater than or equal to 1.0 (i.e.,
-\&\fIfontname\fR\f(CW@1X\fR, \f(CW\*(C`@1.1X\*(C'\fR, \f(CW\*(C`@1.2X\*(C'\fR, \f(CW\*(C`@1.3X\*(C'\fR, etc.).
.IP "\fB\-s\fR, \fB\-\-spp\fR" 4
.IX Item "-s, --spp"
Specify the number of font samples per page to print to the files
@@ -311,7 +323,7 @@ indicated using the \fB\-\-ps\fR and \fB\-\-tex\fR options. The default
value,\ 25, should work well in most circumstances.
.SH "DIAGNOSTICS"
.IX Header "DIAGNOSTICS"
-.ie n .IP """Best match for \f(CIname\f(CW is rather poor""" 4
+.ie n .IP """Best match for \fIname\fP is rather poor""" 4
.el .IP "\f(CWBest match for \f(CIname\f(CW is rather poor\fR" 4
.IX Item "Best match for name is rather poor"
The best font \fBpkfix-helper\fR found for \fBdvips\fR font name \fIname\fR has
@@ -320,6 +332,13 @@ is the sum of the squares of the difference between the character
widths of a document font and a potential replacement font.) Use the
\&\fB\-\-force\fR option to designate an alternative replacement font or
scaling amount.
+.ie n .IP """\fIname\fP uses characters that don\*(Aqt appear in any candidate font""" 4
+.el .IP "\f(CW\f(CIname\f(CW uses characters that don\*(Aqt appear in any candidate font\fR" 4
+.IX Item "name uses characters that dont appear in any candidate font"
+None of the fonts considered for a match include all of the characters
+in font \fIname\fR. The user should use the \fB\-\-force\fR option to inform
+\&\fBpkfix-helper\fR which font to use or the \fB\-\-keep\fR option to retain
+the original, bitmapped font.
.SH "EXAMPLES"
.IX Header "EXAMPLES"
For the purpose of the following examples, assume that \fIoldfile.ps\fR
@@ -466,21 +485,12 @@ The name of the Ghostscript interpreter (default: \fIgs\fR)
.IX Item "TFTOPL"
The name of a utility for converting \fI.tfm\fR files to \fI.pl\fR files
(default: \fItftopl\fR)
-.SH "BUGS"
-.IX Header "BUGS"
-Even when \fBpkfix-helper\fR finds a perfect match (i.e.,\ the correct
-font in the correct size) the mismatch value is still typically
-nonzero. The same error is probably what causes \fBpkfix-helper\fR
-sometimes to consider the wrong font as being a better match than the
-correct font. Suggestions for fixing these bugs are welcome.
.SH "RESTRICTIONS"
.IX Header "RESTRICTIONS"
\&\fBpkfix-helper\fR works only with PostScript files produced by \fBdvips\fR,
-not with arbitrary PostScript files. The program has not been tested
-with output from versions of \fBdvips\fR older than v5.490 (ca.\ 1992);
-output from older versions may or may not work. Only bitmapped fonts
-loaded by \fBdvips\fR can be analyzed, not bitmapped fonts loaded by
-embedded graphics.
+not with arbitrary PostScript files. Only bitmapped fonts loaded by
+\&\fBdvips\fR can be analyzed, not bitmapped fonts loaded by embedded
+graphics.
.PP
\&\fBpkfix-helper\fR works by comparing character widths, not the actual
glyphs. Consequently, it is misled by sets of fonts with similar
@@ -488,25 +498,38 @@ character widths (at least for those characters used by a given
document). As an extreme example, all Computer Modern Teletype fonts
of a given design size (e.g., \f(CW\*(C`cmtt10\*(C'\fR, \f(CW\*(C`cmsltt10\*(C'\fR, and \f(CW\*(C`cmitt10\*(C'\fR)
use exactly the same widths for all characters. Human assistance is
-generally needed to guide \fBpkfix-helper\fR's font-matching procedures.
+generally needed to guide \fBpkfix-helper\fR's font-matching procedures,
+especially for fonts for which relatively few characters appear in the
+document.
+.PP
+There is an astonishing variety of \fBdvips\fR output. Different
+versions of the program and different command-line options can result
+in PostScript files with a completely different structure.
+\&\fBpkfix-helper\fR works hard to find font information buried in numerous
+output-file variants, but it is not uncommon for a PostScript file
+produced by a sufficiently old version of \fBdvips\fR or with
+sufficiently obscure command-line options to utterly confuse
+\&\fBpkfix-helper\fR. In this case, please send your problematic
+PostScript files to the author of \fBpkfix-helper\fR (see \*(L"\s-1AUTHOR\*(R"\s0
+below), who may be able to enhance \fBpkfix-helper\fR to handle them.
.SH "NOTES"
.IX Header "NOTES"
Files produced using the \fB\-\-tex\fR option are Plain TeX files and
-therefore must be compiled with \fItex\fR (or a variation such as
-\&\fIpdftex\fR, \fIluatex\fR, etc.), \fInot\fR with \fIlatex\fR.
+therefore must be compiled with \fBtex\fR (or a variant such as
+\&\fBpdftex\fR, \fBluatex\fR, \fBxetex\fR, etc.), \fInot\fR with \fBlatex\fR.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
-\&\fIpkfix\fR\|(1), \fIdvips\fR\|(1), \fItex\fR\|(1), \fIgs\fR\|(1)
+\&\fBpkfix\fR\|(1), \fBdvips\fR\|(1), \fBtex\fR\|(1), \fBgs\fR\|(1)
.PP
PostScript Language Reference, Third Edition.
-Published by Addison-Wesley, \s-1ISBN\s0 0\-201\-37922\-8,
+Published by Addison-Wesley, \s-1ISBN 0\-201\-37922\-8,\s0
<http://www.adobe.com/products/postscript/pdfs/PLRM.pdf>.
.SH "AUTHOR"
.IX Header "AUTHOR"
Scott Pakin, \fIscott+pkfh@pakin.org\fR
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
-Copyright (C) 2011, Scott Pakin
+Copyright (C) 2009\-2020, Scott Pakin
.PP
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/Master/texmf-dist/doc/man/man1/pkfix-helper.man1.pdf b/Master/texmf-dist/doc/man/man1/pkfix-helper.man1.pdf
index cc8001d7d9c..84eb009162e 100644
--- a/Master/texmf-dist/doc/man/man1/pkfix-helper.man1.pdf
+++ b/Master/texmf-dist/doc/man/man1/pkfix-helper.man1.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/pkfix-helper/README b/Master/texmf-dist/doc/support/pkfix-helper/README
index 7682a6ccad0..1e2e106e723 100644
--- a/Master/texmf-dist/doc/support/pkfix-helper/README
+++ b/Master/texmf-dist/doc/support/pkfix-helper/README
@@ -46,7 +46,7 @@ is neither completely automatic nor completely intuitive.
Copyright and license
=====================
-Copyright (C) 2011, Scott Pakin
+Copyright (C) 2009-2020, Scott Pakin
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.pdf b/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.pdf
index 3c73e8870b8..36155d9aca4 100644
--- a/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.pdf
+++ b/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.tex b/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.tex
index 70032dd3acc..f0fd515543c 100644
--- a/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.tex
+++ b/Master/texmf-dist/doc/support/pkfix-helper/encoding-samples.tex
@@ -1,8 +1,7 @@
\documentclass{article}
-\usepackage[compat2]{geometry}
+\usepackage[margin=1in]{geometry}
\usepackage{array}
\usepackage{multicol}
-\usepackage{dblfloatfix}
\usepackage{textcomp}
\usepackage{microtype}
\usepackage{hyperref}
@@ -57,8 +56,8 @@ following encodings are represented:
\item \LaTeX\ symbols (e.g.,~\fname{lasy10})
\item \TeX\ math extension (e.g.,~\fname{cmex10})
\item \TeX\ base~1 encoding (e.g.,~\fname{ptmr8r})
- \item Adobe standard encoding (e.g.,~\fname{rptmr})
- \item Adobe symbol encoding (e.g.,~\fname{rpsyr})
+ \item Adobe standard encoding (e.g.,~\fname{ptmr})
+ \item Adobe symbol encoding (e.g.,~\fname{psyr})
\item \TeX\ extended ASCII (e.g.,~\fname{cmtex10})
\item extended \TeX\ font encoding (e.g.,~\fname{ecrm1000})
\item \TeX\ text companion symbols (e.g.,~\fname{tcrm1000})
@@ -152,8 +151,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
\setrawfont{cmex10} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
\setrawfont{ptmr8r} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
- \setrawfont{rptmr} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
- \setrawfont{rpsyr} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
+ \setrawfont{ptmr} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
+ \setrawfont{psyr} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
\setrawfont{cmtex10} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
\setrawfont{ecrm1000} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
\setrawfont{tcrm1000} & \char0 & \char1 & \char2 & \char3 & \char4 & \char5 & \char6 & \char7 & \char8 & \char9 & \char10 & \char11 & \char12 & \char13 & \char14 & \char15 \\
@@ -173,8 +172,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
\setrawfont{cmex10} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
\setrawfont{ptmr8r} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
- \setrawfont{rptmr} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
- \setrawfont{rpsyr} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
+ \setrawfont{ptmr} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
+ \setrawfont{psyr} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
\setrawfont{cmtex10} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
\setrawfont{ecrm1000} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
\setrawfont{tcrm1000} & \char16 & \char17 & \char18 & \char19 & \char20 & \char21 & \char22 & \char23 & \char24 & \char25 & \char26 & \char27 & \char28 & \char29 & \char30 & \char31 \\
@@ -199,8 +198,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
\setrawfont{cmex10} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
\setrawfont{ptmr8r} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
- \setrawfont{rptmr} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
- \setrawfont{rpsyr} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
+ \setrawfont{ptmr} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
+ \setrawfont{psyr} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
\setrawfont{cmtex10} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
\setrawfont{ecrm1000} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
\setrawfont{tcrm1000} & \char32 & \char33 & \char34 & \char35 & \char36 & \char37 & \char38 & \char39 & \char40 & \char41 & \char42 & \char43 & \char44 & \char45 & \char46 & \char47 \\
@@ -220,8 +219,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
\setrawfont{cmex10} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
\setrawfont{ptmr8r} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
- \setrawfont{rptmr} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
- \setrawfont{rpsyr} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
+ \setrawfont{ptmr} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
+ \setrawfont{psyr} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
\setrawfont{cmtex10} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
\setrawfont{ecrm1000} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
\setrawfont{tcrm1000} & \char48 & \char49 & \char50 & \char51 & \char52 & \char53 & \char54 & \char55 & \char56 & \char57 & \char58 & \char59 & \char60 & \char61 & \char62 & \char63 \\
@@ -246,8 +245,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
\setrawfont{cmex10} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
\setrawfont{ptmr8r} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
- \setrawfont{rptmr} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
- \setrawfont{rpsyr} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
+ \setrawfont{ptmr} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
+ \setrawfont{psyr} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
\setrawfont{cmtex10} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
\setrawfont{ecrm1000} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
\setrawfont{tcrm1000} & \char64 & \char65 & \char66 & \char67 & \char68 & \char69 & \char70 & \char71 & \char72 & \char73 & \char74 & \char75 & \char76 & \char77 & \char78 & \char79 \\
@@ -267,8 +266,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
\setrawfont{cmex10} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
\setrawfont{ptmr8r} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
- \setrawfont{rptmr} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
- \setrawfont{rpsyr} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
+ \setrawfont{ptmr} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
+ \setrawfont{psyr} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
\setrawfont{cmtex10} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
\setrawfont{ecrm1000} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
\setrawfont{tcrm1000} & \char80 & \char81 & \char82 & \char83 & \char84 & \char85 & \char86 & \char87 & \char88 & \char89 & \char90 & \char91 & \char92 & \char93 & \char94 & \char95 \\
@@ -293,8 +292,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
\setrawfont{cmex10} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
\setrawfont{ptmr8r} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
- \setrawfont{rptmr} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
- \setrawfont{rpsyr} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
+ \setrawfont{ptmr} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
+ \setrawfont{psyr} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
\setrawfont{cmtex10} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
\setrawfont{ecrm1000} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
\setrawfont{tcrm1000} & \char96 & \char97 & \char98 & \char99 & \char100 & \char101 & \char102 & \char103 & \char104 & \char105 & \char106 & \char107 & \char108 & \char109 & \char110 & \char111 \\
@@ -314,8 +313,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
\setrawfont{cmex10} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
\setrawfont{ptmr8r} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
- \setrawfont{rptmr} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
- \setrawfont{rpsyr} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
+ \setrawfont{ptmr} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
+ \setrawfont{psyr} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
\setrawfont{cmtex10} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
\setrawfont{ecrm1000} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
\setrawfont{tcrm1000} & \char112 & \char113 & \char114 & \char115 & \char116 & \char117 & \char118 & \char119 & \char120 & \char121 & \char122 & \char123 & \char124 & \char125 & \char126 & \char127 \\
@@ -340,8 +339,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
\setrawfont{cmex10} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
\setrawfont{ptmr8r} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
- \setrawfont{rptmr} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
- \setrawfont{rpsyr} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
+ \setrawfont{ptmr} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
+ \setrawfont{psyr} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
\setrawfont{cmtex10} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
\setrawfont{ecrm1000} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
\setrawfont{tcrm1000} & \char128 & \char129 & \char130 & \char131 & \char132 & \char133 & \char134 & \char135 & \char136 & \char137 & \char138 & \char139 & \char140 & \char141 & \char142 & \char143 \\
@@ -361,8 +360,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
\setrawfont{cmex10} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
\setrawfont{ptmr8r} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
- \setrawfont{rptmr} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
- \setrawfont{rpsyr} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
+ \setrawfont{ptmr} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
+ \setrawfont{psyr} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
\setrawfont{cmtex10} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
\setrawfont{ecrm1000} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
\setrawfont{tcrm1000} & \char144 & \char145 & \char146 & \char147 & \char148 & \char149 & \char150 & \char151 & \char152 & \char153 & \char154 & \char155 & \char156 & \char157 & \char158 & \char159 \\
@@ -387,8 +386,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
\setrawfont{cmex10} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
\setrawfont{ptmr8r} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
- \setrawfont{rptmr} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
- \setrawfont{rpsyr} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
+ \setrawfont{ptmr} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
+ \setrawfont{psyr} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
\setrawfont{cmtex10} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
\setrawfont{ecrm1000} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
\setrawfont{tcrm1000} & \char160 & \char161 & \char162 & \char163 & \char164 & \char165 & \char166 & \char167 & \char168 & \char169 & \char170 & \char171 & \char172 & \char173 & \char174 & \char175 \\
@@ -408,8 +407,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
\setrawfont{cmex10} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
\setrawfont{ptmr8r} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
- \setrawfont{rptmr} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
- \setrawfont{rpsyr} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
+ \setrawfont{ptmr} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
+ \setrawfont{psyr} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
\setrawfont{cmtex10} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
\setrawfont{ecrm1000} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
\setrawfont{tcrm1000} & \char176 & \char177 & \char178 & \char179 & \char180 & \char181 & \char182 & \char183 & \char184 & \char185 & \char186 & \char187 & \char188 & \char189 & \char190 & \char191 \\
@@ -434,8 +433,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
\setrawfont{cmex10} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
\setrawfont{ptmr8r} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
- \setrawfont{rptmr} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
- \setrawfont{rpsyr} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
+ \setrawfont{ptmr} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
+ \setrawfont{psyr} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
\setrawfont{cmtex10} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
\setrawfont{ecrm1000} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
\setrawfont{tcrm1000} & \char192 & \char193 & \char194 & \char195 & \char196 & \char197 & \char198 & \char199 & \char200 & \char201 & \char202 & \char203 & \char204 & \char205 & \char206 & \char207 \\
@@ -455,8 +454,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
\setrawfont{cmex10} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
\setrawfont{ptmr8r} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
- \setrawfont{rptmr} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
- \setrawfont{rpsyr} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
+ \setrawfont{ptmr} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
+ \setrawfont{psyr} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
\setrawfont{cmtex10} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
\setrawfont{ecrm1000} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
\setrawfont{tcrm1000} & \char208 & \char209 & \char210 & \char211 & \char212 & \char213 & \char214 & \char215 & \char216 & \char217 & \char218 & \char219 & \char220 & \char221 & \char222 & \char223 \\
@@ -481,8 +480,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
\setrawfont{cmex10} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
\setrawfont{ptmr8r} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
- \setrawfont{rptmr} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
- \setrawfont{rpsyr} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
+ \setrawfont{ptmr} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
+ \setrawfont{psyr} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
\setrawfont{cmtex10} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
\setrawfont{ecrm1000} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
\setrawfont{tcrm1000} & \char224 & \char225 & \char226 & \char227 & \char228 & \char229 & \char230 & \char231 & \char232 & \char233 & \char234 & \char235 & \char236 & \char237 & \char238 & \char239 \\
@@ -502,8 +501,8 @@ the font size and/or scale factor. \end{multicols}
\setrawfont{lasy10} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
\setrawfont{cmex10} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
\setrawfont{ptmr8r} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
- \setrawfont{rptmr} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
- \setrawfont{rpsyr} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
+ \setrawfont{ptmr} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
+ \setrawfont{psyr} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
\setrawfont{cmtex10} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
\setrawfont{ecrm1000} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
\setrawfont{tcrm1000} & \char240 & \char241 & \char242 & \char243 & \char244 & \char245 & \char246 & \char247 & \char248 & \char249 & \char250 & \char251 & \char252 & \char253 & \char254 & \char255 \\
diff --git a/Master/texmf-dist/scripts/pkfix-helper/pkfix-helper b/Master/texmf-dist/scripts/pkfix-helper/pkfix-helper
index 35782931203..6e70c44f25a 100755
--- a/Master/texmf-dist/scripts/pkfix-helper/pkfix-helper
+++ b/Master/texmf-dist/scripts/pkfix-helper/pkfix-helper
@@ -17,7 +17,7 @@ use strict;
# Define some global variables.
my $progname = basename $0; # Name of this program
-our $VERSION = "1.4"; # Version number of this program
+our $VERSION = "1.5"; # Version number of this program
my %name2chars; # Map from a font name to a character list
my $GS = $ENV{"GS"} || "gs"; # Name of the Ghostscript interpreter
my $TFTOPL = $ENV{"TFTOPL"} || "tftopl"; # Name of the TFM to PL converter
@@ -46,7 +46,6 @@ my $sample_file_tex; # Name of a TeX file of font samples to write
my $single_font_use = 0; # 1=one use per font; 0=allow repetitions
my $samples_per_page = 25; # Number of font samples to print per page
my $tfm_cache_file; # Name of a file in which to cache font metrics
-my $any_scale = 0; # 0=1X, 1.1X, 1.2X, ...; 1=any scale is allowed
###########################################################################
@@ -189,11 +188,6 @@ sub optimal_scale ($$)
}
return 1.0 if $tfm_dot_tfm == 0.0; # Handle TFM characters that all have zero width.
my $optscale = $doc_dot_tfm / $tfm_dot_tfm;
- unless ($any_scale) {
- # Allow only values >= 1.0 and only multiples of 0.1.
- return 1.0 if $optscale < 1.0;
- $optscale = int($optscale*10 + 0.5) / 10;
- }
return $optscale;
}
@@ -206,12 +200,21 @@ sub compare_maps ($$;$)
my %docmap = %{$_[0]}; # Map for a document font
my %tfmmap = %{$_[1]}; # Map for a TFM font
my $scale = $_[2] || 1.0; # Scale for each TFM width
+ my @sqdiffs; # List of squares of differences
my $sqdiff = 0; # Sum of squares of differences
+ # Compute the per-character squared difference.
while (my ($char, $docwidth) = each %docmap) {
my $tfmwidth = $tfmmap{$char};
return 10**9 if !defined $tfmwidth; # Match is impossible.
- $sqdiff += ($docwidth - $tfmwidth*$scale) ** 2;
+ push @sqdiffs, ($docwidth - $tfmwidth*$scale) ** 2;
+ }
+
+ # Sort the list of squared differences in decreasing order (for
+ # floating-point stability), add it up, and return the sum.
+ @sqdiffs = sort {$b <=> $a} @sqdiffs;
+ foreach my $s (@sqdiffs) {
+ $sqdiff += $s;
}
return $sqdiff;
}
@@ -339,6 +342,24 @@ sub unique_items (@)
return keys %item_hash;
}
+
+# Collapse repeated whitespace instances into a single space character.
+sub collapse_spaces ($)
+{
+ my $simply_spaced = $_[0];
+ $simply_spaced =~ s/\s+/ /gs;
+ return $simply_spaced;
+}
+
+# Combine a list of strings with commas and "and".
+sub join_string_list (@)
+{
+ my @items = @_;
+ return $items[0] if $#items == 0;
+ return "$items[0] and $items[1]" if $#items == 1;
+ return join(", ", @items[0..$#items-1]) . ", and $items[$#items]";
+}
+
###########################################################################
# Parse the command line.
@@ -355,7 +376,6 @@ GetOptions ("h|help" => \$wanthelp,
"p|ps=s" => \$sample_file_ps,
"s|spp=i" => \$samples_per_page,
"C|cache=s" => \$tfm_cache_file,
- "a|any-scale!" => \$any_scale,
"1|no-repeats" => \$single_font_use) || pod2usage(2);
if ($wantversion) {
print "pkfix-helper $VERSION\n";
@@ -395,27 +415,37 @@ foreach my $mapstr (@forced_fonts) {
# should be in order of decreasing likelihood. Each entry in the list
# is of the form {full name, scale factor}.
@exclude_res = ('^\s*$') if $#exclude_res == -1;
-foreach my $size_scale ([10, 1.0],
- [12, 1.0],
- [10, 1.1],
- [17, 1.0],
+foreach my $size_scale (# The following are the most common sizes found in
+ # old LaTeX documents.
+ [10, 1.0], # 10 pt.
+ [12, 1.0], # 12 pt.
+ [10, 1.095], # 11 pt. -- really 10*sqrt(1.2) pt.
+ [17, 17.28/17], # 17 pt. -- really 10*1.2^3 pt.
[ 9, 1.0],
[ 8, 1.0],
[ 7, 1.0],
[ 6, 1.0],
[ 5, 1.0],
- [10, 1.2],
- # The following are common cmbx12 section headings.
+ # As 10 pt. is LaTeX's most generic font size, LaTeX
+ # sometimes needs to scale up a 10 pt. font to make up
+ # for no other size being available.
+ [10, 1.2], # 12 pt.
+ [10, 1.44], # 14 pt. -- really 10*1.2^2 pt.
+ [10, 1.728], # 17 pt. -- really 10*1.2^3 pt.
+ [10, 2.074], # 20 pt. -- really 10*1.2^4 pt.
+ [10, 2.488], # 25 pt. -- really 10*1.2^5 pt.
+ # While not particularly common, the following are
+ # sometimes encountered with cmbx12 for section
+ # headings.
[12, 14.40/12],
[12, 17.28/12],
[12, 20.74/12],
[12, 24.88/12]) {
my ($pointsize, $scale) = @$size_scale;
FONTLOOP:
- foreach my $basefont (qw (cmr cmb cmtt cmbsy cmbx cmbxsl cmbxti
- cmcsc cmex cmitt cmmi cmmib cmsl cmsltt
- cmss cmssbx cmssi cmsy cmti lasy lasyb
- msam msbm cmssdc cmtcsc)) {
+ foreach my $basefont (qw (cmr cmbx cmtt cmbsy cmbxsl cmcsc cmex cmitt cmmi
+ cmmib cmss cmssbx cmssi cmsy cmsl cmsltt cmti cmb
+ lasy lasyb msam msbm cmbxti cmssdc cmtcsc)) {
my $friendly_name = sprintf "%s%d \@ %.5gX", $basefont, $pointsize, $scale;
foreach my $regexp (@exclude_res) {
next FONTLOOP if $friendly_name =~ $regexp;
@@ -441,8 +471,26 @@ my $entirefile;
}
print STDERR "done.\n" if $verbose;
+# Preprocess the input file to make it easier to parse.
+print STDERR "Preprocessing ... " if $verbose >= 2;
+$entirefile =~ s/[\n\r]+/\n/g; # Normalize line endings to Unix-style.
+$entirefile =~ s/TeXDict\s+begin\s+\%\%Begin(\w+).*?\%\%End\1.*?\n/$&end\nTeXDict begin /gs; # Remove blocks of code between "TeXDict begin" and the first number.
+$entirefile =~ s/TeXDict\s+begin\s+\d+\s+\d+\s+\d+.*?\@/collapse_spaces($&)/gse; # Normalize "TeXDict begin" spacing.
+print STDERR "done.\n" if $verbose >= 2;
+
+# Determine the number of dots per inch used to generate the bitmaps.
+if ($entirefile =~ /dpi=(\d+)/i
+ || $entirefile =~ /Resolution (\d+)dpi/i
+ || $entirefile =~ /\%Feature: \*Resolution (\d+)/) {
+ $dpi = $1 + 0;
+ printf STDERR "Bitmapped fonts are typeset at $dpi DPI.\n" if $verbose;
+}
+else {
+ warn "${progname}: Could not determine the target printer resolution; assuming $dpi DPI\n";
+}
+
# Rename the fonts in each subdocument (figure).
-my @fontrenames;
+my @fig_font_renames; # List of {old text, new text, TeX dictionary} triplets
my $fignum = 1;
my $numrenamed = 0;
while ($entirefile =~ /(\%\%BeginDocument: (.*?)\n.*?\%\%EndDocument)/gs) {
@@ -451,14 +499,14 @@ while ($entirefile =~ /(\%\%BeginDocument: (.*?)\n.*?\%\%EndDocument)/gs) {
my $figname = $2;
if ($verbose >= 2) {
if ($fignum == 1) {
- print STDERR "Renaming all fonts encountered in included documents:\n";
+ print STDERR "Renaming all fonts encountered in figures and other included documents:\n";
}
print STDERR " $figname\n";
}
- while ($figure =~ m|/(\S+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) {
+ while ($figure =~ m|/([^()<>\[\]{}\/\%]+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) {
my $fontname = $1; # Name of current font (e.g., "Fa")
$newfigure =~ s,(?<=/)$fontname\b,${fontname}_$fignum,gs;
- $newfigure =~ s,\b$fontname(?=\(),${fontname}_$fignum,gs;
+ $newfigure =~ s,\b$fontname(?=[^()]*\(),${fontname}_$fignum,gs;
$numrenamed++;
if ($verbose >= 2) {
printf STDERR " %s --> %s_%d\n", $fontname, $fontname, $fignum;
@@ -475,29 +523,84 @@ while ($entirefile =~ /(\%\%BeginDocument: (.*?)\n.*?\%\%EndDocument)/gs) {
else {
warn "${progname}: Failed to extract a font-defining TeXDict from $figname\n";
}
- push @fontrenames, [$figure, $newfigure, $texdict];
+ push @fig_font_renames, [$figure, $newfigure, $texdict];
}
$fignum++;
}
if ($verbose && $entirefile =~ /\%\%BeginDocument:/s) {
print STDERR "Number of Type 3 fonts encountered in included documents: $numrenamed\n";
}
-foreach my $ren (@fontrenames) {
+foreach my $ren (@fig_font_renames) {
my ($before, $after, $notused) = @$ren;
$entirefile =~ s/\Q$before\E/$after/gs;
}
-# If the document contains a subdocument with (now renamed) font
-# definitions, hoist those definitions adjacent to the main document's
-# font definitions so pkfix can find them.
-if (@fontrenames) {
- if ($entirefile =~ /(TeXDict begin (\d+) (\d+) (\d+) (\d+) (\d+) \(.*?\)\s+\@start.*?)(?=end)/s) {
- my $fontdict = $1;
+# Rename the fonts in each section.
+my @sections = $entirefile =~ /(?<=\n)\%DVIPSBeginSection.*?\%DVIPSEndSection\n/gs;
+my @sdoc_font_renames; # List of {old text, new text, TeX dictionary} triplets
+if ($#sections > 0) {
+ printf STDERR "Renaming the fonts in %d dvips sections:\n", 1+$#sections if $verbose >= 2;
+ my $numrenamed = 0;
+ foreach my $secnum (0 .. $#sections) {
+ printf STDERR " Section %d\n", 1+$secnum if $verbose >= 2;
+ my $oldsection = $sections[$secnum];
+ my $newsection = $oldsection;
+ while ($oldsection =~ m|/([^()<>\[\]{}\/\%]+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) {
+ my $fontname = $1; # Name of current font (e.g., "Fa")
+ my $newfontname = sprintf "%s_S%02d", $fontname, 1+$secnum;
+ $newsection =~ s,(?<=/)$fontname\b,$newfontname,gs;
+ $newsection =~ s,\b$fontname\b(?=[^()]*\(),$newfontname,gs;
+ $numrenamed++;
+ if ($verbose >= 2) {
+ printf STDERR " %s --> %s\n", $fontname, $newfontname;
+ }
+ }
+ if ($oldsection ne $newsection) {
+ # Remove the font-defining dictionary from the the section
+ # as it may confuse pkfix. Store it so we can later
+ # reinsert it into the main document's font-defining
+ # dictionary.
+ my $texdict = "";
+ if ($newsection =~ s/(TeXDict begin \d+ \d+ \d+ \d+ \d+(?: \([^\)]*\))?\s+\@start bos)\s+(.*?)(?=\%DVIPSSectionPage)/$1\n/gs) {
+ $texdict = $2;
+ }
+ else {
+ warn "${progname}: Failed to extract a font-defining TeXDict from dvips section @{[1+$secnum]}\n";
+ }
+ push @sdoc_font_renames, [$oldsection, $newsection, $texdict];
+ }
+ }
+ if ($verbose) {
+ printf STDERR "Number of Type 3 fonts encountered in %d dvips sections: %d\n", 1+$#sections, $numrenamed;
+ }
+}
+foreach my $ren (@sdoc_font_renames) {
+ my ($before, $after, $notused) = @$ren;
+ $entirefile =~ s/\Q$before\E/$after/gs;
+}
+
+# If the document contains a section or subdocument with (now renamed)
+# font definitions, hoist those definitions to where pkfix can find
+# them.
+if (@sdoc_font_renames || @fig_font_renames) {
+ if ($entirefile =~ /(TeXDict begin \d+ \d+ \d+ \d+ \d+(?: \([^\)]*\))?\s+\@start)(.*?)(?=end)/s) {
+ # Construct the PostScript code to add.
+ my $texdict_header = $1;
+ my $texdict_body = $2;
my $morefonts = "";
- foreach my $ren (@fontrenames) {
+ foreach my $ren (@sdoc_font_renames, @fig_font_renames) {
$morefonts .= $ren->[2];
}
- $entirefile =~ s/(\Q$fontdict\E)/$1$morefonts/s;
+
+ # Insert the code at a suitable location.
+ if ($entirefile =~ /\%\%EndProlog/s) {
+ # First choice: In a ProcSet right before the %%EndProlog
+ $entirefile =~ s/(\%\%EndProlog)/\%\%BeginProcSet: ${progname}-fonts.pro\n$texdict_header\n$morefonts\nend\n\%\%EndProcSet\n$1\n\%DVIPSParameters: dpi=$dpi/;
+ }
+ else {
+ # Second choice: Within the first TeXDict usage
+ $entirefile =~ s/(\Q$texdict_header$texdict_body\E)/$1$morefonts/s;
+ }
}
else {
warn "${progname}: Failed to find a font-defining TeXDict\n";
@@ -506,12 +609,13 @@ if (@fontrenames) {
# Construct a mapping from each document font name to a list of valid
# characters in that font.
-while ($entirefile =~ m|/(\S+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) {
+while ($entirefile =~ m|/([^()<>\[\]{}\/\%]+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) {
my $fontname = $1; # Name of current font (e.g., "Fa")
my $fontbody = $2; # List of character definitions as hexadecimal strings
my $charnum = 0; # Current character number
my @charlist = (); # List of valid characters in PostScript-friendly format
+ warn "${progname}: Font $fontname is multiply defined\n" if defined $name2chars{$fontname};
while ($fontbody =~ /<[0-9A-F\s]+>(.*?[DI])/gs) {
# Put the current character number in $charnum then append the
# corresponding character to @charlist.
@@ -532,22 +636,12 @@ if ($verbose) {
printf STDERR "Total number of Type 3 fonts encountered: %d\n", 1+$#sortedfontnames;
if ($verbose >= 2) {
foreach my $fontname (@sortedfontnames) {
- printf STDERR " %-5.5s -- %3d character(s)\n", $fontname, 1+$#{$name2chars{$fontname}};
+ printf STDERR " %s -- %3d character(s)\n", $fontname, 1+$#{$name2chars{$fontname}};
}
}
}
die "${progname}: No Type 3 fonts were encountered in the input file\n" if $#sortedfontnames==-1;
-# Determine the number of dots per inch used to generate the bitmaps.
-if ($entirefile =~ /dpi=(\d+)/i
- || $entirefile =~ /Resolution (\d+)dpi/i) {
- $dpi = $1 + 0;
- printf STDERR "Bitmapped fonts are typeset at $dpi DPI.\n" if $verbose;
-}
-else {
- warn "${progname}: Could not determine the target printer resolution; assuming $dpi DPI\n";
-}
-
# Insert some helper code after the tex.pro ProcSet.
my $output_width_ps = $entirefile; # PostScript code to output character widths
my $showfontnamecode = <<"SHOWFONTNAME";
@@ -616,7 +710,7 @@ ENDDISPLAYCODE
;
# Replace the bulk of the PostScript file with the display code.
-if ($output_width_ps !~ s/\%\%Page:.*(\%\%Trailer)/$displaycode$1/s) {
+if ($output_width_ps !~ s/(?:\%\%Page|\%DVIPSSectionPage):.*(\%\%Trailer|\%DVIPSSectionTrailer)/$displaycode$1/s) {
print STDERR 'No %%Page and/or %%Trailer comments were found. We have to guess where to inject PostScript code.', "\n" if $verbose >= 3;
die "${progname}: Unable to inject display code\n" if $output_width_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop.*eop\s+end/\n$displaycode\n/s;
}
@@ -632,11 +726,12 @@ close $psfile;
undef $output_width_ps;
my %fontwidth; # Map from font name to character number to character width
my @previnfo = ("", 0.0); # Previous font name and final character position
-my $gscmd = "$GS -q -dNOPAUSE -dBATCH -dNODISPLAY $psfilename";
+my $gscmd = "$GS -dNOPAUSE -dBATCH -dNODISPLAY $psfilename";
print STDERR "Finding character widths ... " if $verbose >= 1;
print STDERR "\n Invoking: $gscmd\n" if $verbose >= 2;
print STDERR "done.\n" if $verbose >= 1;
open (GSCMD, "$gscmd|") || die "${progname}: failed to fork ($!)\n";
+my @gs_output; # Ghostscript diagnostic messages, to output on error
while (my $oneline = <GSCMD>) {
if ($oneline =~ /FONT: (\S+)\s*CHAR: (\d+)\s*XPOS: (\S+)/o) {
my ($fontname, $charnum, $xpos) = ($1, $2, $3);
@@ -649,8 +744,16 @@ while (my $oneline = <GSCMD>) {
$dvips_xscale = $1 * 1.0;
$dvips_yscale = $2 * -1.0;
}
+ else {
+ push @gs_output, $oneline;
+ }
}
-close GSCMD || die "${progname}: failed to run $GS ($!)\n";
+close GSCMD || do {
+ foreach my $ln (@gs_output) {
+ print STDERR $ln;
+ }
+ die "${progname}: failed to run $GS ($!)\n";
+};
unlink $psfilename;
die "${progname}: No character-width information was found\n" if !%fontwidth;
@@ -723,9 +826,13 @@ write_tfm_cache_file() if defined $tfm_cache_file;
# characters utilized) to every TFM file (in increasing order of
# obscurity).
print STDERR "Matching fonts:\n" if $verbose;
+my %already_used_tfms; # Set of TFM files already assigned to a document font, empty unless --no-repeats was specified
foreach my $fontname (@sortedfontnames) {
- my @besttfms; # Best matching TFM file(s), sizes, and scales
- my $bestmatch = 10**9; # Best matching value
+ my $no_match = 10**9; # Sentinel indicating no match was found
+ my @besttfms; # Best matching TFM file(s), sizes, and scales
+ my $bestmatch = $no_match; # Best matching value
+ my @besttfms_rep; # Best matching but repeated TFM file(s), sizes, and scales
+ my $bestmatch_rep = $no_match; # Best matching repeated value
# Don't substitute the font if we were told not to.
if (defined $retained_t3s{$fontname}) {
@@ -767,14 +874,30 @@ foreach my $fontname (@sortedfontnames) {
my $scale = $tfminfo->{"scale"};
printf STDERR " Comparing %s and %s \@ %.5gX ... ", $fontname, $tfm, $scale if $verbose >= 2;
my $match = compare_maps $fontwidth{$fontname}, $tfmfontwidth{$tfm}, $scale;
- if ($bestmatch > $match) {
- # We found a closer match than what we had before.
- $bestmatch = $match;
- @besttfms = ($tfminfo);
+ if (defined $already_used_tfms{$tfm}->{$scale}) {
+ # Repeated TFM (and --no-repeats was specified) -- not eligible for
+ # best TFM.
+ if ($bestmatch_rep > $match) {
+ # We found a closer match than what we had before.
+ $bestmatch_rep = $match;
+ @besttfms_rep = ($tfminfo);
+ }
+ elsif ($bestmatch_rep == $match) {
+ # We found an equal match to what we had before.
+ push @besttfms_rep, $tfminfo;
+ }
}
- elsif ($bestmatch == $match) {
- # We found an equal match to what we had before.
- push @besttfms, $tfminfo;
+ else {
+ # Non-repeated TFM -- eligible for best TFM.
+ if ($bestmatch > $match) {
+ # We found a closer match than what we had before.
+ $bestmatch = $match;
+ @besttfms = ($tfminfo);
+ }
+ elsif ($bestmatch == $match) {
+ # We found an equal match to what we had before.
+ push @besttfms, $tfminfo;
+ }
}
printf STDERR "done (mismatch=%.5f).\n", $match if $verbose >= 2;
}
@@ -784,38 +907,79 @@ foreach my $fontname (@sortedfontnames) {
my $besttfminfo = $fontmatch{$fontname};
my $besttfm = $besttfminfo->{"tfm"};
my $bestscale = $besttfminfo->{"scale"};
+
+ # Report how good or bad the match is and what other close matches the user
+ # might consider instead.
if ($verbose >= 2) {
- if ($#besttfms == 0) {
- # Single winner
- printf STDERR " Best match for %s is %s \@ %.5gX with mismatch=%.5f.\n\n",
+ if ($#besttfms == 0 || $bestmatch == $no_match) {
+ # There was either a single winner or no match was found.
+ printf STDERR " Best match for %s is %s \@ %.5gX with mismatch=%.5f.\n",
$fontname, $besttfm, $bestscale, $bestmatch;
}
else {
- # Tie for first place
- printf STDERR " Best match for %s is %s \@ %.5gX (tied among %s) with mismatch=%.5f.\n\n",
- $fontname, $besttfm, $bestscale,
- join("/", map {sprintf "%s\@%.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms),
- $bestmatch;
+ # There was a tie for first place.
+ my $preposition = $#besttfms == 1 ? "between" : "among";
+ printf STDERR " Best match for %s is %s \@ %.5gX (tied %s %s) with mismatch=%.5f.\n",
+ $fontname, $besttfm, $bestscale, $preposition,
+ join_string_list(map {sprintf "%s \@ %.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms),
+ $bestmatch;
+ }
+ if ($bestmatch_rep < $bestmatch ||
+ ($bestmatch < $no_match && $bestmatch_rep <= $bestmatch)) {
+ # A repeated font would have matched equally well (excluding
+ # failures to match at all) or better.
+ printf STDERR " Ignored repeated %s %s with mismatch=%.5f.\n",
+ $#besttfms_rep == 0 ? "font" : "fonts",
+ join_string_list(map {sprintf "%s \@ %.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms_rep),
+ $bestmatch_rep;
}
}
elsif ($verbose == 1) {
- printf STDERR "done (%s \@ %.5gX, mismatch=%.5f).\n", $besttfm, $bestscale, $bestmatch;
+ printf STDERR "done (%s \@ %.5gX with mismatch=%.5f", $besttfm, $bestscale, $bestmatch;
+ if ($#besttfms > 0 && $bestmatch != $no_match) {
+ # There was a tie for first place.
+ printf STDERR ", tied with %s",
+ join_string_list(map {sprintf "%s \@ %.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms[1..$#besttfms]);
+ }
+ if ($bestmatch_rep < $bestmatch ||
+ ($bestmatch < $no_match && $bestmatch_rep <= $bestmatch)) {
+ # A repeated font would have matched equally well (excluding
+ # failures to match at all) or better.
+ printf STDERR "; ignored %s %s with mismatch=%.5f",
+ $#besttfms_rep == 0 ? "repeat" : "repeats",
+ join_string_list(map {sprintf "%s \@ %.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms_rep),
+ $bestmatch_rep;
+ }
+ print STDERR ").\n";
+ }
+ if ($bestmatch == $no_match) {
+ warn "${progname}: ${fontname} uses characters that don't appear in any candidate font\n";
}
- warn "${progname}: Best match for $fontname is rather poor\n" if $bestmatch>=1.0;
+ elsif ($bestmatch >= 1.0) {
+ warn "${progname}: Best match for $fontname is rather poor\n";
+ }
+ printf STDERR "\n" if $verbose >= 2; # Warnings should precede the inter-font newline character.
- # Optionally remove the font from @goodtfmlist.
+ # If --no-repeats was specified, mark the font as having been used.
if ($single_font_use) {
- @tfmlist = grep {$_->{"tfm"} ne $besttfm
- || $_->{"scale"} != $bestscale} @tfmlist;
+ $already_used_tfms{$besttfm}->{$bestscale} = 1;
}
}
+# Merge all sections into a single section to avoid confusing pkfix.
+if ($#sections > 0) {
+ my $numreplacements = 0;
+ $entirefile =~ s/(TeXDict begin)\s+(\d+ \d+ \d+ \d+ \d+(?: \([^\)]*\))?\s+\@start\s+bos)/$numreplacements++ ? "" : "$1\n$2"/gse;
+ $entirefile =~ s/eos\s+end//gs;
+ $entirefile =~ s/(.*)(\%DVIPSEndSection)/$1eos end\n$2/s;
+}
+
# Insert %DVIPSBitmapFont comments around every Type 3 font definition.
my $commented_ps = $entirefile;
my $infilename_ps = $infilename; # PostScript version of $infilename
$infilename_ps =~ s/([\(\)\\])/\\$1/g;
$commented_ps =~ s|^\%(End)?DVIPSBitmapFont.*$||gm; # Remove existing comments (if any)
-$commented_ps =~ s|/(\S+)\s+\d+\s+\d+\s+df.*?>[^<]*?[DI]\s+E|write_comments($1, $&)|gse;
+$commented_ps =~ s|/([^()<>\[\]{}\/\%]+)\s+\d+\s+\d+\s+df.*?>[^<]*?[DI]\s+E|write_comments($1, $&)|gse;
if ($commented_ps !~ /\%\%EndProlog/) {
# pkfix fails silently if it doesn't see an %%EndProlog.
print STDERR "No %%EndProlog comment was found. Adding one.\n" if $verbose >= 3;
@@ -888,7 +1052,7 @@ end
\%\%EndProcSet
SHOWFONTNAME
;
- if ($sample_ps !~ s/\%\%BeginProcSet: tex\w*\.pro.*\%\%EndProcSet/$&\n$showfontnamecode/s) {
+ if ($sample_ps !~ s/\%\%BeginProcSet: tex\w*\.pro.*?\%\%EndProcSet/$&\n$showfontnamecode/s) {
print STDERR "No tex.pro ProcSet was found. We have to guess where to inject PostScript code.\n" if $verbose >= 3;
die "${progname}: Unable to inject prologue code\n" if $sample_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop/\n$showfontnamecode\n$&/s;
}
@@ -1023,11 +1187,12 @@ TEX_BOILERPLATE
my $samplestring = texify @{$name2chars{$fontname}};
my $yoffset = ($fontnum-$firstfontnum)*$yinc + $init_yinc;
printf SAMPLE_TEX "\\put(0, %d){\\timesbXII %s:}%%\n", $yoffset, $fontname;
+ next if !defined $fontmatch{$fontname};
my $tfm = $fontmatch{$fontname}->{"tfm"};
my $scale = $fontmatch{$fontname}->{"scale"};
my $size = $tfm2size{$tfm};
printf SAMPLE_TEX "\\font\\somefont=%s%s\\somefont\n",
- $tfm, $scale==1.0 ? "" : sprintf(" at %.5gbp", $scale*$size);
+ $tfm, $scale==1.0 ? "" : sprintf(" at %.5gpt", $scale*$size);
printf SAMPLE_TEX "\\put(%d, %d){%s}%%\n", $xinc, $yoffset, $samplestring;
if ($fontnum % $samples_per_page == $samples_per_page-1) {
@@ -1168,15 +1333,25 @@ program's internal operations.
=item B<-f> I<name>=I<fontspec>, B<--force>=I<name>=I<fontspec>
Force B<pkfix-helper> to associate a specific font with a given font
-name appearing the document. I<name> is a two-character B<dvips> font
-name such as C<Fa>. I<fontspec> is a font specification such as
-C<cmmi8> or S<C<cmsy10 @ 1.1X>>. An asterisk used in the name of the
-base font S<(e.g., C<cmti*>)> will automatically try all integral test
-font sizes from 5 to 17 points (C<cmti5>, S<C<cmti6>, ...,>
-C<cmti17>). An asterisk used as a scale value S<(e.g., C<cmsy10 @
-*>)> will be replaced by the scale value that gives the best match to
-the original font's metrics. The B<--force> option can be specified
-repeatedly on the command line.
+name appearing the document. I<name> is a (usually) two-character
+B<dvips> font name such as C<Fa>. I<fontspec> is a font specification
+that comprises a font name and an optional scale: "I<font> S<[C<@>
+I<scale>]>". Some examples of I<fontspec>s are C<cmmi8> and
+S<C<cmsy10 @ 1.1X>>.
+
+An asterisk used in the name of the font S<(e.g., C<cmti*>)> will be
+replaced by all integers from 5 to 17 (C<cmti5>, S<C<cmti6>, ...,>
+C<cmti17>). The scale can be written as a multiple of the design size
+(C<X>) or as an absolute size in either TeX points (C<pt>) or
+PostScript "big" points (C<bp>). Hence, S<C<cmsy8 @ 1.5X>>, S<C<cmsy8
+@ 12pt>>, and S<C<cmsy8 @ 11.96bp>> all represent the I<Computer
+Modern Math Symbols 8 Point> font scaled to 12 TeX points/11.96
+PostScript points. Instead of specifying an explicit scale, an
+asterisk can be used (as in S<C<cmsy8 @ *>>) to request that
+B<pkfix-helper> find the scale that best matches the original font's
+metrics.
+
+The B<--force> option can be specified repeatedly on the command line.
=item B<-p> I<filename.ps>, B<--ps>=I<filename.ps>
@@ -1189,12 +1364,33 @@ Create a Plain TeX file called I<filename.tex> that shows the B<dvips>
name and a font sample of every font that B<pkfix-helper> used in the
output document.
+=item B<-k> I<fontspec>, B<--keep>=I<fontspec>
+
+Do not substitute a vector font for bitmapped font I<fontspec> (C<Fa>,
+C<Fb>, etc.). This is useful when converting documents that use
+obscure bitmapped fonts for which there is no vector equivalent. For
+example, it was somewhat common in the past to include graphics such
+as university or corporate logos into a document by converting the
+bitmapped image into a single-character font and using that font in
+LaTeX. B<--keep> prevents such fonts from being replaced. The
+B<--keep> option can be specified repeatedly on the command line.
+
+=item B<-1>, B<--no-repeats>
+
+Prevent B<pkfix-helper> from associating the same I<fontspec> with
+more than one B<dvips> font name.
+
=back
-=head2 Infrequently Used Options
+=head2 Less-frequently Used Options
=over 4
+=item B<-q>, B<--quiet>
+
+Instruct B<pkfix-helper> to produce no output during its run except
+for error and warning messages.
+
=item B<-C> I<filename>, B<--cache>=I<filename>
Speed up TFM file processing by caching character metrics into file
@@ -1208,16 +1404,6 @@ previously extracted metrics from I<filename>, going through the
F<tftopl>-based process only for TFM files that were not previously
encountered.
-=item B<-q>, B<--quiet>
-
-Instruct B<pkfix-helper> to produce no output during its run except
-for fatal error messages.
-
-=item B<-1>, B<--no-repeats>
-
-Prevent B<pkfix-helper> from associating the same I<fontspec> with
-more than one B<dvips> font name.
-
=item B<-i> I<fontspec>, B<--include>=I<fontspec>
Add I<fontspec> to the list of font specifications against which
@@ -1232,24 +1418,6 @@ Remove all font specifications matching regular expression I<regexp>
from B<pkfix-helper>'s list of known fonts. The B<--exclude> option
can be specified repeatedly on the command line.
-=item B<-k> I<fontspec>, B<--keep>=I<fontspec>
-
-Do not substitute a vector font for bitmapped font I<fontspec> (C<Fa>,
-C<Fb>, etc.). This is useful when converting documents that use
-obscure bitmapped fonts for which there is no vector equivalent. For
-example, it was somewhat common in the past to include graphics such
-as university or corporate logos into a document by converting the
-bitmapped image into a single-character font and using that font in
-LaTeX. B<--keep> prevents such fonts from being replaced. The
-B<--keep> option can be specified repeatedly on the command line.
-
-=item B<-a>, B<--any-scale>
-
-Allow any value to be used to scale a font when "C<*>" is specified as
-the scale factor. Normally, B<pkfix-helper> considers only integer
-multiples of 0.1 that are greater than or equal to 1.0 (i.e.,
-I<fontname>C<@1X>, C<@1.1X>, C<@1.2X>, C<@1.3X>, etc.).
-
=item B<-s>, B<--spp>
Specify the number of font samples per page to print to the files
@@ -1272,6 +1440,13 @@ widths of a document font and a potential replacement font.) Use the
B<--force> option to designate an alternative replacement font or
scaling amount.
+=item C<I<name> uses characters that don't appear in any candidate font>
+
+None of the fonts considered for a match include all of the characters
+in font I<name>. The user should use the B<--force> option to inform
+B<pkfix-helper> which font to use or the B<--keep> option to retain
+the original, bitmapped font.
+
=back
@@ -1421,23 +1596,12 @@ The name of a utility for converting F<.tfm> files to F<.pl> files
=back
-=head1 BUGS
-
-Even when B<pkfix-helper> finds a perfect match S<(i.e., the> correct
-font in the correct size) the mismatch value is still typically
-nonzero. The same error is probably what causes B<pkfix-helper>
-sometimes to consider the wrong font as being a better match than the
-correct font. Suggestions for fixing these bugs are welcome.
-
-
=head1 RESTRICTIONS
B<pkfix-helper> works only with PostScript files produced by B<dvips>,
-not with arbitrary PostScript files. The program has not been tested
-with output from versions of B<dvips> older than v5.490 S<(ca. 1992)>;
-output from older versions may or may not work. Only bitmapped fonts
-loaded by B<dvips> can be analyzed, not bitmapped fonts loaded by
-embedded graphics.
+not with arbitrary PostScript files. Only bitmapped fonts loaded by
+B<dvips> can be analyzed, not bitmapped fonts loaded by embedded
+graphics.
B<pkfix-helper> works by comparing character widths, not the actual
glyphs. Consequently, it is misled by sets of fonts with similar
@@ -1445,14 +1609,27 @@ character widths (at least for those characters used by a given
document). As an extreme example, all Computer Modern Teletype fonts
of a given design size (e.g., C<cmtt10>, C<cmsltt10>, and C<cmitt10>)
use exactly the same widths for all characters. Human assistance is
-generally needed to guide B<pkfix-helper>'s font-matching procedures.
+generally needed to guide B<pkfix-helper>'s font-matching procedures,
+especially for fonts for which relatively few characters appear in the
+document.
+
+There is an astonishing variety of B<dvips> output. Different
+versions of the program and different command-line options can result
+in PostScript files with a completely different structure.
+B<pkfix-helper> works hard to find font information buried in numerous
+output-file variants, but it is not uncommon for a PostScript file
+produced by a sufficiently old version of B<dvips> or with
+sufficiently obscure command-line options to utterly confuse
+B<pkfix-helper>. In this case, please send your problematic
+PostScript files to the author of B<pkfix-helper> (see L</AUTHOR>
+below), who may be able to enhance B<pkfix-helper> to handle them.
=head1 NOTES
Files produced using the B<--tex> option are Plain TeX files and
-therefore must be compiled with F<tex> (or a variation such as
-F<pdftex>, F<luatex>, etc.), I<not> with F<latex>.
+therefore must be compiled with B<tex> (or a variant such as
+B<pdftex>, B<luatex>, B<xetex>, etc.), I<not> with B<latex>.
=head1 SEE ALSO
@@ -1471,7 +1648,7 @@ Scott Pakin, I<scott+pkfh@pakin.org>
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2011, Scott Pakin
+Copyright (C) 2009-2020, Scott Pakin
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license