summaryrefslogtreecommitdiff
path: root/Build/source/texk/ttf2pk2/ttf2tfm.1
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/ttf2pk2/ttf2tfm.1
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff)
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/ttf2pk2/ttf2tfm.1')
-rw-r--r--Build/source/texk/ttf2pk2/ttf2tfm.11097
1 files changed, 1097 insertions, 0 deletions
diff --git a/Build/source/texk/ttf2pk2/ttf2tfm.1 b/Build/source/texk/ttf2pk2/ttf2tfm.1
new file mode 100644
index 00000000000..e6fa0aca4b3
--- /dev/null
+++ b/Build/source/texk/ttf2pk2/ttf2tfm.1
@@ -0,0 +1,1097 @@
+.\" man page for ttf2tfm
+.
+.TH TTF2TFM 1 27-Jun-2013 "FreeType2 version"
+.SH NAME
+ttf2tfm \- build TeX metric files from a TrueType font
+.SH SYNOPSIS
+.na
+.nh
+.B ttf2tfm
+'in +\n(.ku
+.I ttffile\c
+.RB [ .ttf | .ttc ]
+[\c
+.BI \-c \ \%caps-height-factor\c
+]
+[\c
+.BI \-e \ \%extension-factor\c
+]
+[\c
+.BI \-E \ \%encoding-id\^\c
+]
+[\c
+.BI \-f \ \%font-index\c
+]
+[\c
+.B \-l\c
+]
+[\c
+.B \-L\ \c
+.IR \%ligature-file [ .sfd ]\c
+]
+[\c
+.B \-n\c
+]
+[\c
+.B \-N\c
+]
+[\c
+.B \-O\c
+]
+[\c
+.B \-p\ \c
+.IR \%inencfile [ .enc ]\c
+]
+[\c
+.BI \-P \ \%platform-id\^\c
+]
+[\c
+.B \-q\c
+]
+[\c
+.BI \-r \ \%old-glyphname\ \%new-glyphname\c
+]
+[\c
+.B \-R\ \c
+.IR \%replacement-file [ .rpl ]\c
+]
+[\c
+.BI \-s \ \%slant-factor\c
+]
+[\c
+.B \-t\ \c
+.IR \%outencfile [ .enc ]\c
+]
+[\c
+.B \-T\ \c
+.IR \%inoutencfile [ .enc ]\c
+]
+[\c
+.B \-u\c
+]
+[\c
+.B \-v\ \c
+.IR \%vplfile [ .vpl ]\c
+]
+[\c
+.B \-V\ \c
+.IR \%scvplfile [ .vpl ]\c
+]
+[\c
+.B \-w\c
+]
+[\c
+.B \-x\c
+]
+[\c
+.BI \-y \ \%vertical-shift-factor\c
+]
+[\c
+.IR \%tfmfile [ .tfm ]\c
+]
+.br
+.in
+.B "ttf2tfm \-\^\-version"
+|
+.B \-\^\-help
+.ad
+.hy
+.
+.
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX L\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\*(TX
+.el .ds LX L\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2\fC\\$3\fP\\$4
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2\\$3\\$4
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH DESCRIPTION
+This program extracts the metric and kerning information of a TrueType
+font and converts it into metric files usable by \*(TX
+(quite similar to
+.B afm2tfm
+which is part of the
+.B dvips
+package; please consult its info files for more details on the various
+parameters (especially encoding files).
+.PP
+Since a TrueType font often contains more than 256\ glyphs, some means
+are necessary to map a subset of the TrueType glyphs onto a \*(TX
+font.
+To do this, two mapping tables are needed: the first (called `input' or
+`raw' encoding) maps the TrueType font to a raw \*(TX font (this mapping
+table is used by both
+.B ttf2tfm
+and
+.BR ttf2pk ),
+and the second (called `output' or `virtual' encoding) maps the raw \*(TX
+font to another (virtual) \*(TX
+font, providing all kerning and ligature information needed by \*(TX.
+.PP
+This two stage mapping has the advantage that one raw font can be
+accessed with various \*(LX
+encodings (e.g.\ T1 and OT1) via the virtual font mechanism, and just
+one
+.C PK
+file is necessary.
+.PP
+For CJKV (Chinese/Japanese/Korean/old Vietnamese) fonts, a different
+mechanism is provided (see
+.B "SUBFONT DEFINITION FILES"
+below).
+.
+.
+.SH PARAMETERS
+Most of the command line switch names are the same as in
+.B afm2tfm
+for convenience.
+One or more space characters between an option and its value is mandatory;
+options can't be concatenated.
+For historical reasons, the first parameter can
+.I not
+be a switch but must be the font name.
+.TP
+.BI \-c \ caps-height-factor
+The height of small caps made with the
+.B \-V
+switch.
+Default value of this real number is\ 0.8 times the height of uppercase
+glyphs.
+.IP
+Will be ignored in subfont mode.
+.TP
+.BI \-e \ extension-factor
+The extension factor to stretch the characters horizontally.
+Default value of this real number is\ 1.0; if less than\ 1.0, you get a
+condensed font.
+.TP
+.BI \-E \ encoding-id
+The TrueType encoding ID.
+Default value of this non-negative integer is\ 1.
+.IP
+Will be ignored if
+.B \-N
+is used.
+.TP
+.BI \-f \ font-index
+The font index in a TrueType Collection.
+Default is the first font (index\ 0).
+[TrueType collections are usually found in some CJK fonts; e.g.\ the first
+font index specifies glyphs and metrics for horizontal writing, and the
+second font index does the same for vertical writing.
+TrueType collections usually have the extension `\c
+.C \&.ttc '.]
+.IP
+Will be ignored for ordinary TrueType fonts.
+.TP
+.B \-l
+Create ligatures in subfonts between first and second bytes of all the
+original character codes.
+Example: Character code\ 0xABCD maps to character position\ 123 in
+subfont\ 45.
+Then a ligature in subfont\ 45 between position 0xAB and\ 0xCD pointing
+to character\ 123 will be produced.
+The fonts of the Korean H\*(LX
+package use this feature.
+Note that this option generates correct ligatures only for TrueType fonts
+where the input cmap is identical to the output encoding.
+In case of H\*(LX, TTFs must have platform ID\ 3 and encoding ID\ 5.
+.IP
+Will be ignored if not in subfont mode.
+.TP
+.BI \-L \ ligature-file
+Same as
+.BR \-l ,
+but character codes for ligatures are specified in
+.IR \%ligature-file .
+For example, `\c
+.C \-L\ \%KS-HLaTeX '
+generates correct ligatures for the Korean H\*(LX
+package regardless of the platform and encoding ID of the used TrueType
+font (the file
+.C KS-HLaTeX.sfd
+is part of the ttf2pk package).
+.IP
+Ligature files have the same format and extension as
+.C SFD
+files.
+This option will be ignored if not in subfont mode.
+.TP
+.B \-n
+Use PS names (of glyphs) of the TrueType font.
+Only glyphs with a valid entry in the selected cmap are used.
+.IP
+Will be ignored in subfont mode.
+.TP
+.B \-N
+Use only PS names of the TrueType font.
+No cmap is used, thus the switches
+.B \-E
+and
+.B \-P
+have no effect, causing a warning message.
+.IP
+Will be ignored in subfont mode.
+.TP
+.B \-O
+Use octal values for all character codes in the
+.C VPL
+file rather than names; this is useful for symbol or CJK fonts where
+character names such as `A' are meaningless.
+.TP
+.BI \-p \ inencfile
+The input encoding file name for the TTF\(->raw\ \*(TX
+mapping.
+This parameter has to be specified in a map file
+(default:
+.C \%ttfonts.map )
+recorded in
+.C \%ttf2pk.cfg
+for successive
+.B ttf2pk
+calls.
+.IP
+Will be ignored in subfont mode.
+.TP
+.BI \-P \ platform-id
+The TrueType platform ID.
+Default value of this non-negative integer is\ 3.
+.IP
+Will be ignored if
+.B \-N
+is used.
+.TP
+.B \-q
+Make
+.B ttf2tfm
+quiet.
+It suppresses any informational output except warning and error
+messages.
+For CJK fonts, the output can get quite large if you don't specify
+this switch.
+.TP
+.BI \-r \ old-glyphname\ new-glyphname
+Replaces
+.I \%old-glyphname
+with
+.IR \%new-glyphname .
+This switch is useful if you want to give an unnamed glyph (i.e., a glyph
+which can be represented with `.gXXX' or `.cXXX' only) a name or if you want
+to rename an already existing glyph name.
+You can't use the `.gXXX' or `.cXXX' glyph name constructs for
+.IR \%new-glyphname ;
+multiple occurrences of
+.B \-r
+are possible.
+.IP
+If in subfont mode or if no encoding file is specified, this switch is
+ignored.
+.TP
+.BI \-R \ replacement-file
+Use this switch if you have many replacement pairs; they can be collected
+in a file which should have `\c
+.C \&.rpl '
+as extension.
+The syntax used in such replacement files is simple: Each non-empty
+line must contain a pair `\c
+.IR "\%old-glyphname \%new-glyphname" '
+separated by whitespace (without the quotation marks).
+A percent sign starts a line comment; you can continue a line on the next
+line with a backslash as the last character.
+.IP
+If in subfont mode or if no encoding file is specified, this switch is
+ignored.
+.TP
+.BI \-s \ slant-factor
+The obliqueness factor to slant the font, usually much smaller than\ 1.
+Default of this real number is\ 0.0; if the value is larger than zero,
+the characters slope to the right, otherwise to the left.
+.TP
+.BI \-t \ outencfile
+The output encoding file name for the virtual font(s).
+Only characters in the raw \*(TX
+font are used.
+.IP
+Will be ignored in subfont mode.
+.TP
+.BI \-T \ inoutencfile
+This is equivalent to
+.RB ` \-p
+.I inoutencfile
+.B \-t
+.IR inoutencfile '.
+.IP
+Will be ignored in subfont mode.
+.TP
+.B \-u
+Use only those characters specified in the output encoding, and no
+others.
+By default,
+.B ttf2tfm
+tries to include all characters in the virtual font, even those not
+present in the encoding for the virtual font (it puts them into
+otherwise-unused positions, rather arbitrarily).
+.IP
+Will be ignored in subfont mode.
+.TP
+.BI \-v \ vplfile
+Output a
+.C VPL
+file in addition to the
+.C TFM
+file.
+If no output encoding file is specified,
+.B ttf2tfm
+uses a default font encoding (cmtt10).
+.B Note:
+Be careful to use different names for the virtual font and the raw font!
+.IP
+Will be ignored in subfont mode.
+.TP
+.BI \-V \ scvplfile
+Same as
+.BR \-v ,
+but the virtual font generated is a pseudo small caps font obtained by
+scaling uppercase letters by\ 0.8 (resp. the value specified with
+.BR \-c )
+to typeset lowercase.
+This font handles accented letters and retains proper kerning.
+.IP
+Will be ignored in subfont mode.
+.TP
+.B \-w
+Generate PostScript encoding vectors containing glyph indices, primarily
+used to embed TrueType fonts in pdf\*(TX.
+.B ttf2tfm
+takes the
+.C TFM
+names and replaces the suffix with
+.C \&.enc ;
+that is, for files
+.C foo01.tfm ,
+.C foo02.tfm ,\ \&.\|.\|.\&
+it creates
+.C foo01.enc ,
+.C foo02.enc ,\ \&.\|.\|.\|\&
+at the same place.
+.IP
+Will be ignored if not in subfont mode.
+.TP
+.B \-x
+Rotate all glyphs by 90 degrees counter-clockwise.
+If no
+.B \-y
+parameter is given, the rotated glyphs are shifted down vertically
+by\ 0.25em.
+.IP
+Will be ignored if not in subfont mode.
+.TP
+.BI \-y \ vertical-shift-factor
+Shift down rotated glyphs by the given amount (the unit is
+.IR em ).
+.IP
+Ignored if not in subfont mode or glyphs are not rotated.
+.TP
+.B \-\^\-version
+Shows the current version of
+.B ttf2tfm
+and the used file search library (e.g.
+.BR kpathsea ).
+.TP
+.B \-\^\-help
+Shows usage information.
+.PP
+If no
+.C TFM
+file name is given, the name of the
+.C TTF
+file is used, including the full path and replacing the extension with `\c
+.C \&.tfm '.
+.
+.
+.SH CMAPS
+Contrary to Type\ 1 PostScript fonts (but similar to the new CID
+PostScript font format), most TrueType fonts have more than one native
+mapping table, also called `cmap', which maps the (internal) TTF glyph
+indices to the (external) TTF character codes.
+Common examples are a mapping table to Unicode encoded character
+positions, and the standard Macintosh mapping.
+
+To specify a TrueType mapping table, use the options
+.B \-P
+and
+.BR \-E .
+With
+.B \-P
+you specify the platform ID; defined values are:
+.PP
+.TS
+l l.
+\fIplatform\fP \fIplatform ID (pid)\fP
+_
+Apple Unicode 0
+Macintosh 1
+ISO 2
+Microsoft 3
+.TE
+.PP
+The encoding ID depends on the platform.
+For pid=0, we ignore the
+.B \-E
+parameter (setting it to zero) since the mapping table is always
+Unicode version\ 2.0.
+For pid=1, the following table lists the defined values:
+.PP
+.RS
+platform ID = 1
+.RE
+.TS
+l l.
+\fIscript\fP \fIencoding ID (eid)\fP
+_
+Roman 0
+Japanese 1
+Chinese 2
+Korean 3
+Arabic 4
+Hebrew 5
+Greek 6
+Russian 7
+Roman Symbol 8
+Devanagari 9
+Gurmukhi 10
+Gujarati 11
+Oriya 12
+Bengali 13
+Tamil 14
+Telugu 15
+Kannada 16
+Malayalam 17
+Sinhalese 18
+Burmese 19
+Khmer 20
+Thai 21
+Laotian 22
+Georgian 23
+Armenian 24
+Maldivian 25
+Tibetan 26
+Mongolian 27
+Geez 28
+Slavic 29
+Vietnamese 30
+Sindhi 31
+Uninterpreted 32
+.TE
+.PP
+Here are the ISO encoding IDs:
+.PP
+.RS
+platform ID = 2
+.RE
+.TS
+l l.
+\fIencoding\fP \fIencoding ID (eid)\fP
+ASCII 0
+ISO 10646 1
+ISO 8859-1 2
+.TE
+.PP
+And finally, the Microsoft encoding IDs:
+.PP
+.RS
+platform ID = 3
+.RE
+.TS
+l l.
+\fIencoding\fP \fIencoding ID (eid)\fP
+Symbol 0
+Unicode 2.0 1
+Shift JIS 2
+GB 2312 (1980) 3
+Big 5 4
+KS X 1001 (Wansung) 5
+KS X 1001 (Johab) 6
+UCS-4 10
+.TE
+.PP
+The program will abort if you specify an invalid platform/encoding ID
+pair.
+It will then show the possible pid/eid pairs.
+Please note that most fonts have at most two or three cmaps, usually
+corresponding to the pid/eid pairs (1,0), (3,0), or (3,1) in case of
+Latin based fonts.
+Valid Microsoft fonts should have a (3,1) mapping table, but some
+fonts exist (mostly Asian fonts) which have a (3,1) cmap not encoded
+in Unicode.
+The reason for this strange behavior is the fact that some old
+MS\ Windows versions will reject fonts having a non-(3,1) cmap (since
+all non-Unicode Microsoft encoding IDs are for Asian MS\ Windows
+versions).
+.PP
+The
+.B \-P
+and
+.B \-E
+options of
+.B ttf2tfm
+must be equally specified for
+.BR ttf2pk ;
+the corresponding parameters in a map file are `Pid' and `Eid',
+respectively.
+.PP
+The default pid/eid pair is (3,1).
+.PP
+Similarly, an
+.B \-f
+option must be specified as `Fontindex' parameter in a map file.
+.PP
+If you use the
+.B \-N
+switch, all cmaps are ignored, using only the PostScript names in the
+TrueType font.
+The corresponding option in a map file is \%`PS=Only'.
+If you use the
+.B \-n
+switch, the default glyph names built into
+.B ttf2tfm
+are replaced with the PS glyph names found in the font.
+In many cases this is not what you want because the glyph names in the
+font are often incorrect or non-standard.
+The corresponding option in a map file is \%`PS=Yes'.
+.PP
+Single replacement glyph names specified with
+.B \-r
+must be given directly as `\c
+.IR "old-glyphname new-glyphname" '
+in a map file;
+.B \-R
+is equivalent to the `Replacement' option.
+.
+.
+.SH INPUT AND OUTPUT ENCODINGS
+You must specify the encoding vectors from the TrueType font to the
+raw \*(TX
+font and from the raw \*(TX
+font to the virtual \*(TX
+font exactly as with
+.BR afm2tfm ,
+but you have more possibilities to address the character codes.
+[With `encoding vector' a mapping table with 256\ entries in form of a
+PostScript vector is meant; see the file
+.C \%T1-WGL4.enc
+of this package for an example.]
+With
+.BR afm2tfm ,
+you must access each glyph with its Adobe glyph name, e.g.\ \c
+\%`/quotedsingle' or \%`/Acircumflex'.
+This has been extended with
+.BR ttf2tfm ;
+now you can (and sometimes must) access the code points and/or glyphs
+directly, using the following syntax for specifying the character position
+in decimal, octal, or hexadecimal notation:
+`/.c\c
+.IR <decimal-number> ',
+`/.c0\c
+.IR <octal-number> ',
+or `/.c0x\c
+.IR <hexadecimal-number> '.
+Examples: \%`/.c72', \%`/.c0646', \%`/.c0x48'.
+To access a glyph index directly, use the character `g' instead of `c' in
+the just introduced notation.
+Example: \%`/.g0x32'.
+[Note: The `.cXXX' notation makes no sense if
+.B \-N
+is used.]
+.PP
+For pid/eid pairs (1,0) and (3,1), both
+.B ttf2tfm
+and
+.B ttf2pk
+recognize built-in default Adobe glyph names; the former follows the names
+given in Appendix\ E of the book `Inside Macintosh', volume\ 6, the latter
+uses the names given in the TrueType Specification (WGL4, a Unicode subset).
+Note that Adobe names for a given glyph are often not unique and do
+sometimes differ, e.g., many PS fonts have the glyph `mu', whereas this
+glyph is called `mu1' in the WGL4 character set to distinguish it from the
+real Greek letter mu.
+Be also aware that OpenType (i.e. TrueType\ 2.0) fonts use an updated WGL4
+table; we use the data from the latest published TrueType specification
+(1.66).
+You can find those mapping tables in the source code file
+.C \%ttfenc.c .
+.PP
+On the other hand, the switches
+.B \-n
+and
+.B \-N
+makes
+.B ttf2tfm
+read in and use the PostScript names in the TrueType font itself (stored
+in the `post' table) instead of the default Adobe glyph names.
+.PP
+Use the
+.B \-r
+switch to remap single glyph names and
+.B \-R
+to specify a file containing replacement glyph name pairs.
+.PP
+If you don't select an input encoding, the first 256\ glyphs of the
+TrueType font with a valid entry in the selected cmap will be mapped
+to the \*(TX
+raw font (without the
+.B \-q
+option,
+.B ttf2tfm
+prints this mapping table to standard output), followed by all glyphs
+not yet addressed in the selected cmap.
+However, some code points for the (1,0) pid/eid pair are omitted since
+they do not represent glyphs useful for \*(TX:
+0x00 (null), 0x08 (backspace), 0x09 (horizontal tabulation), 0x0d
+(carriage return), and 0x1d (group separator).
+The `invalid character' with glyph index\ 0 will be omitted too.
+.PP
+If you select the
+.B \-N
+switch, the first 256\ glyphs of the TrueType font with a valid PostScript
+name will be used in case no input encoding is specified.
+Again, some glyphs are omitted: `.notdef', `.null', and
+`nonmarkingreturn'.
+.PP
+If you don't select an output encoding,
+.B ttf2tfm
+uses the same mapping table as
+.B afm2tfm
+would use (you can find it in the source code file
+.C \%texenc.c );
+it corresponds to \*(TX
+typewriter text.
+Unused positions (either caused by empty code points in the mapping
+table or missing glyphs in the TrueType font) will be filled (rather
+arbitrarily) with characters present in the input encoding but not
+specified in the output encoding (without the
+.B \-q
+option
+.B ttf2tfm
+prints the final output encoding to standard output).
+Use the
+.B \-u
+option if you want only glyphs in the virtual font which are defined
+in the output encoding file, and nothing more.
+.PP
+One feature missing in
+.B afm2tfm
+has been added which is needed by \*(LX's T1 encoding:
+.B ttf2tfm
+will construct the glyph `Germandbls' (by simply concatenating two `S'
+glyphs) even for normal fonts if possible.
+It appears in the glyph list as the last item, marked with an asterisk.
+Since this isn't a real glyph it will be available only in the virtual
+font.
+.PP
+For both input and output encoding, an empty code position is
+represented by the glyph name \%`/.notdef'.
+.PP
+In encoding files, you can use `\\' as the final character of a line to
+indicate that the input is continued on the next line.
+The backslash and the following newline character will be removed.
+.PP
+.
+.
+.SH SUBFONT DEFINITION FILES
+CJKV (Chinese/Japanese/Korean/old Vietnamese) fonts usually contain
+several thousand glyphs; to use them with \*(TX
+it is necessary to split such large fonts into subfonts.
+Subfont definition files (usually having the extension `\c
+.C \&.sfd ')
+are a simple means to do this smoothly.
+.PP
+A subfont file name usually consists of a prefix, a subfont infix, and
+a postfix (which is empty in most cases), e.g.
+.PP
+.in +2m
+ntukai23 \(-> prefix: ntukai, infix: 23, postfix: (empty)
+.PP
+Here the syntax of a line in an
+.C SFD
+file, describing one subfont:
+.in +2m
+.TP
+.I <whitespace> <infix> <whitespace> <ranges> <whitespace>
+.sp
+.TP
+.IR <infix> \ :=
+anything except whitespace.
+It is best to use only alphanumerical characters.
+.TP
+.IR <whitespace> \ :=
+space, formfeed, carriage return, horizontal and vertical tabs -- no
+newline characters.
+.TP
+.IR <ranges> \ :=
+.IR "<ranges> <whitespace> <codepoint>" \ |
+.br
+.IR "<ranges> <whitespace> <range>" \ |
+.br
+.I <ranges> <whitespace> <offset> <whitespace> <range>
+.TP
+.IR <codepoint> \ :=
+.I <number>
+.br
+.TP
+.IR <range> \ :=
+.IR <number> \ `_' \ <number>
+.br
+.TP
+.IR <offset> \ :=
+.IR <number> \ `:'
+.TP
+.IR <number> \ :=
+hexadecimal (prefix `0x'), decimal, or octal (prefix `0')
+.PP
+A line can be continued on the next line with a backslash ending the line.
+The ranges must not overlap; offsets have to be in the range 0-255.
+.PP
+Example:
+.PP
+.in +2m
+The line
+.PP
+.in +4m
+.C "03 10: 0x2349 0x2345_0x2347"
+.PP
+.in +2m
+assigns to the code positions 10, 11, 12, and\ 13 of the subfont
+having the infix `03' the character codes 0x2349, 0x2345, 0x2346, and
+0x2347 respectively.
+.PP
+The
+.C SFD
+files in the distribution are customized for the CJK package for
+\*(LX.
+.PP
+You have to embed the
+.C SFD
+file name into the
+.C TFM
+font name (at the place where the infix will appear) surrounded by two
+`@' signs, on the command line resp.\ a map file;
+both
+.B ttf2tfm
+and
+.B ttf2pk
+switch then to subfont mode.
+.PP
+It is possible to use more than a single
+.C SFD
+file by separating them with commata and no whitespace; for a given
+subfont, the first file is scanned for an entry, then the next file,
+and so on.
+Later entries override entries found earlier (possibly only partially).
+For example, the first
+.C SFD
+file sets up range 0x10-0xA0, and the next one modifies entries
+0x12 and 0x25.
+As can be easily seen, this algorithm allows for adding and replacing,
+but not for removing entries.
+.PP
+Subfont mode disables the options
+.BR \-n ,
+.BR \-N ,
+.BR \-p ,
+.BR \-r ,
+.BR \-R ,
+.BR \-t ,
+.BR \-T ,
+.BR \-u ,
+.BR \-v ,
+.BR \-V
+and
+.B \-w
+for
+.BR ttf2tfm ;
+similarly, no `Encoding' or `Replacement' parameter is allowed in
+a map file.
+Single replacement glyph names are ignored too.
+.PP
+.B ttf2tfm
+will create all subfont
+.C TFM
+files specified in the
+.C SFD
+files (provided the subfont contains glyphs) in one run.
+.PP
+Example:
+.PP
+.in +2m
+The call
+.PP
+.in +4m
+.C "ttf2tfm ntukai.ttf ntukai@Big5,Big5-supp@"
+.PP
+.in +2m
+will use
+.C Big5.sfd
+and
+.C Big5-supp.sfd ,
+producing
+.I all
+subfont files
+.C ntukai01.tfm ,
+.C ntukai02.tfm ,
+etc.
+.
+.
+.SH "RETURN VALUE"
+ttf2tfm returns 0 on success and 1 on error; warning and error
+messages are written to standard error.
+.
+.
+.SH "SOME NOTES ON FILE SEARCHING"
+Both
+.B ttf2pk
+and
+.B ttf2tfm
+use either the
+.BR kpathsea ,
+.BR emtexdir ,
+or
+.B MiK\*(TX
+library for searching files
+.RB ( emtexdir
+will work only on operating systems which have an MS-DOSish background, i.e.
+MS-DOS, OS/2, Windows;
+.B Mik\*(TX
+is specific to MS Windows).
+.PP
+As a last resort, both programs can be compiled without a search library;
+the searched files must be then in the current directory or specified with a
+path.
+Default extensions will be appended also (with the exception that only `\c
+.C \&.ttf '
+is appended and not `\c
+.C \&.ttc ').
+.
+.
+.SS kpathsea
+The actual version of kpathsea is displayed on screen if you call
+either
+.B ttf2pk
+or
+.B ttf2tfm
+with the
+.B \-\^\-version
+command line switch.
+.PP
+Here is a table of the file type and the corresponding
+.B kpathsea
+variables.
+.C TTF2PKINPUTS
+and
+.C TTF2TFMINPUTS
+are program specific environment variables introduced in
+.B kpathsea
+version\ 3.2:
+.PP
+.RS
+.TS
+l l.
+\&.ttf and .ttc TTFONTS
+ttf2pk.cfg TTF2PKINPUTS
+\&.map TTF2PKINPUTS
+\&.enc TTF2PKINPUTS, TTF2TFMINPUTS
+\&.rpl TTF2PKINPUTS, TTF2TFMINPUTS
+\&.tfm TFMFONTS
+\&.sfd TTF2PKINPUTS, TTF2TFMINPUTS
+.TE
+.RE
+
+.PP
+Please consult the info files of
+.B kpathsea
+for details on these variables.
+.PP
+You should set the
+.C TEXMFCNF
+variable to the directory where your
+.C texmf.cnf
+configuration file resides.
+.PP
+Here is the proper command to find out to which value a
+.B kpathsea
+variable is set (we use
+.C TTFONTS
+as an example).
+This is especially useful if a variable isn't set in
+.C texmf.cnf
+or in the environment, thus pointing to the default value which is
+hard-coded into the
+.B kpathsea
+library.
+.PP
+.RS
+.C "kpsewhich -progname=ttf2tfm -expand-var='$TTFONTS'"
+.RE
+.PP
+We select the program name also since it is possible to specify
+variables which are searched only for a certain program -- in our
+example it would be
+.C TTFONTS.ttf2tfm .
+.PP
+A similar but not identical method is to say
+.PP
+.in +2m
+.C "kpsewhich -progname=ttf2tfm -show-path='truetype fonts'"
+.PP
+[A full list of format types can be obtained by saying `\c
+.C "kpsewhich --help" '
+on the command line prompt.]
+This is exactly how
+.B ttf2tfm
+(and
+.BR ttf2pk )
+searches for files; the disadvantage is that all variables are expanded
+which can cause very long strings.
+.
+.
+.SS emtexdir
+Here the list of suffixes and their related environment variables to be
+set in
+.C autoexec.bat
+(resp. in
+.C config.sys
+for OS/2):
+.PP
+.RS
+.TS
+l l.
+\&.ttf and .ttc TTFONTS
+ttf2pk.cfg TTFCFG
+\&.map TTFCFG
+\&.enc TTFCFG
+\&.rpl TTFCFG
+\&.tfm TEXTFM
+\&.sfd TTFCFG
+.TE
+.RE
+.PP
+If one of the variables isn't set, a warning message is emitted.
+The current directory will always be searched.
+As usual, one exclamation mark appended to a directory path causes
+subdirectories one level deep to be searched, two exclamation marks cause
+all subdirectories to be searched.
+Example:
+.PP
+.in +2m
+.C TTFONTS=c:\\\\fonts\\\\truetype!!;d:\\\\myfonts\\\\truetype!
+.PP
+Constructions like `\c
+.C c:\\\\fonts!!\\\\truetype '
+aren't possible.
+.
+.
+.SS MiK\*(TX
+Both
+.B ttf2tfm
+and
+.B ttf2pk
+have been fully integrated into
+.BR MiK\*(TX .
+Please refer to the documentation of
+.B MiK\*(TX
+for more details on file searching.
+.
+.
+.SH PROBLEMS
+Many
+.B vptovf
+implementations allow only 100\ bytes for the
+.C TFM
+header (the limit is 1024 in the
+.C TFM
+file format itself): 8\ bytes for checksum and design size, 40\ bytes for the
+family name, 20\ bytes for the encoding, and 4\ bytes for a face byte.
+There remain only 28\ bytes for some additional information which is used by
+.B ttf2tfm
+for an identification string (which is essentially a copy of the command
+line), and this limit is always exceeded.
+
+The optimal solution is to increase the value of
+.I \%max_header_bytes
+in the file
+.C vptovf.web
+(and probably
+.C pltotf.web
+too) to, say,\ 400
+and recompile
+.B vptovf
+(and
+.BR pltotf ).
+Otherwise you'll get some (harmless) error messages like
+.PP
+.in +2m
+.C "This HEADER index is too big for my present table size"
+.PP
+which can be safely ignored.
+.
+.
+.SH "SEE ALSO"
+.BR ttf2pk (1),
+.BR afm2tfm (1),
+.BR vptovf (1),
+.br
+the info pages for
+.B dvips
+and
+.B kpathsea
+.
+.
+.SH AVAILABILITY
+.B ttf2tfm
+is part of the FreeType\ 1 package, a high quality TrueType rendering
+library.
+.
+.
+.SH AUTHORS
+Werner LEMBERG
+.C <wl@gnu.org>
+.br
+Fr\('ed\('eric LOYER
+.C <loyer@ensta.fr>