Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
OTFTOTFM(1)		    General Commands Manual		   OTFTOTFM(1)

       otftotfm	- create TeX font metrics from OpenType	fonts

       otftotfm	[-a] [options] fontfile	[texname]

       Otftotfm	 creates the font metric and encoding files required to	use an
       OpenType	font with TeX.	You supply an OpenType ".otf" or  ".ttf"  font
       file,  a	base ".enc" encoding, and a TeX	name "texname" for the result-
       ing font, and say which OpenType	features should	be  turned  on.	  Then
       otftotfm	 generates  and	 installs the corresponding TeX-related	metric
       files (".tfm" TeX font metrics, ".vf" virtual fonts, and	".enc"	encod-
       ing files).  It works on	both PostScript-flavored and TrueType-flavored
       OpenType	fonts, although	TrueType-flavor	support	will only work	easily
       with pdftex.

       The  easiest  way  to use otftotfm is with the -a option; see Automatic
       Mode below.  Without -a,	otftotfm writes	all its	output	files  to  the
       current directory.

       After  running  "otftotfm  fontfile texname" and	installing the results
       (manually or with -a), you can use the OpenType font in plain TeX  with
       a command like this:

	   \font\myfont=texname	at 10pt
	   {\myfont This text uses the OpenType	font.}

       LaTeX  users  will  generally  make a ".fd" input file so that commands
       like "\renewcommand{\rmdefault}{TeXName}" work correctly.  See the  EX-
       AMPLE  section  for  more;  check  the DIAGNOSTICS and FREQUENTLY ASKED
       QUESTIONS sections if you have trouble.

   OpenType Features
       OpenType	fonts support optional features	that change their  appearance.
       Use  the	-f option to turn on selected features.	 For example, "-fsmcp"
       replaces	lower-case letters with	the corresponding small	 capitals,  in
       fonts that support this.

       You'll  generally  provide  at least the	"-fkern" and "-fliga" options,
       which activate pair kerns and f-ligatures.  Other interesting  features
       include	"-fcpsp",  for	capital	 spacing; "-fdlig", for	optional liga-
       tures; "-flnum",	"-fonum", "-fpnum", and	 "-ftnum",  to	control	 digit
       glyphs; "-fsmcp", for small capitals; "-fswsh", for swash variants; and
       "-fcswh", for contextual	swash.	See the	FEATURE	DIRECTORY section  be-
       low for more.  The otfinfo(1) program will report which features	a font
       supports; run "otfinfo -f fontfile".

       Feature options can also	apply a	feature	to a subset of	characters  in
       the  font.   For	 example, "--lf	smcp" only replaces letters with small
       capitals, whereas "-fsmcp" might	additionally replace digits and	 punc-
       tuation marks with small-capital	versions.

   Automatic Mode
       Automatic  mode,	 triggered by the -a/--automatic option, installs font
       metrics and encoding files where	TeX can	find  them,  and  additionally
       installs	 a  Type 1 font	and mapping for	dvips(1).  This	requires a TeX
       installation  that  follows  the	 TeX  Directory	  Structure   standard
       (, such as most Unix TeX	installations.

       Automatic mode should run seamlessly out	of the box.  Otftotfm will in-
       stall metrics files, encodings,	map  files,  and  Type	1  fonts  into
       $HOME/.texmf-var	 or  any  other	 writable TEXMF	directory, and run up-
       dmap(1) to update the global lists of installed fonts.  (On older teTeX
       installations,  you may first need to copy the system's updmap.cfg file
       to $HOME/texmf/web2c and	run mktexlsr(1).  On newer  TeXLive  installa-
       tions, you may need to set the TEXMFVAR environment variable.)  You can
       then run	"otftotfm -a fontfile texname" and immediately	refer  to  the
       font  in	 TeX  using the	texname	you supplied.  Again, you will have to
       write ".fd" files and/or	typescripts to make the	font conveniently  ac-
       cessible	 from  LaTeX  or  ConTeXt.  See	the DIAGNOSTICS	section	if you
       have problems with these	instructions.

       In automatic mode, otftotfm searches your $TEXMFVAR or $TEXMF path  for
       a  writable directory, then installs files under	that directory tree as

       File type   Directory			      Filename
       TFM	   TEXMF/fonts/tfm/vendor/typeface/   texname[--base].tfm
       VF	   TEXMF/fonts/vf/vendor/typeface/    texname.vf
       PL	   TEXMF/fonts/pl/vendor/typeface/    texname[--base].pl
       VPL	   TEXMF/fonts/vpl/vendor/typeface/   texname.vpl
       encoding	   TEXMF/fonts/enc/dvips/vendor/      a_signature.enc
		   or TEXMF/dvips/vendor/
       font map	   TEXMF/fonts/map/dvips/vendor/
		   or TEXMF/dvips/vendor/

       "TEXMF" stands for the writable TEXMF directory.	 Texname is  the  font
       name  supplied  as otftotfm's second argument.  The vendor and typeface
       strings are required by TDS; they default to "lcdftools"	and the	font's
       family name, respectively, but see the --vendor and --typeface options.
       Signature is an opaque 6-character encoding signature.

       Otftotfm	also installs a	font file suitable for printing.   PostScript-
       flavored	 OpenType  fonts are translated	to Type	1 format and installed
       as PFB fonts.  TrueType-flavored	fonts are normally  installed  as  is,
       since  pdftex  and pdflatex can read TrueType directly; but if you pro-
       vide the	--type42 option, otftotfm will	translate  TrueType  fonts  to
       Type  42	 format, which dvips understands.  Otftotfm does not overwrite
       existing	font files.

       The installation	paths are as follows, where PSname is the font's Post-
       Script name.

       PFB	  TEXMF/fonts/type1/vendor/typeface/	  PSname.pfb
       TrueType	  TEXMF/fonts/truetype/vendor/typeface/	  fontfile
       Type 42	  TEXMF/fonts/type42/vendor/typeface/	  PSname.t42

       You  can	 override these	directories with environment variables and op-
       tions as	follows.  Options take precedence over environment variables.

       File type   Environment variable	  Option
       TFM	   TFMDESTDIR		  --tfm-directory
       VF	   VFDESTDIR		  --vf-directory
       PL	   PLDESTDIR		  --pl-directory
       VPL	   VPLDESTDIR		  --vpl-directory
       encoding	   ENCODINGDESTDIR	  --encoding-directory
       PFB	   T1DESTDIR		  --type1-directory
       TrueType	   TRUETYPEDESTDIR	  --truetype-directory
       Type 42	   T42DESTDIR		  --type42-directory
       font map	   -			  --map-file

       Otftotfm	will update the	TEXMF/ls-R file	when  installing  files	 under
       TEXMF.	It  will  also	run the	updmap(1) program after	changing a map
       file, unless the	--no-updmap option was supplied.  However, if an  exe-
       cutable	file  called  TEXMF/dvips/updmap exists, this file is executed
       (from the TEXMF/dvips directory)	rather than the	global	updmap.	  This
       is so you can write a fast, customized version of updmap	if desired.

       This  section  uses MinionPro to	show one way to	install	OpenType fonts
       for LaTeX.  We begin with six fonts: "MinionPro-Regular.otf",  "Minion-
       Pro-It.otf",    "MinionPro-Semibold.otf",   "MinionPro-SemiboldIt.otf",
       "MinionPro-Bold.otf", and "MinionPro-BoldIt.otf".

       Our first task is to decide how to encode  the  fonts.	The  "encoding
       scheme"	is  used  by  TeX to decide how	to typeset accents and symbols
       like "$".  The "LY1" encoding scheme has	reasonable accent support  and
       is a good choice	for many OpenType fonts.  LY1 corresponds to the "tex-
       nansx.enc" encoding file, so we will supply otftotfm with the "-e  tex-
       nansx" option.

	      Expert  note:  Strictly  speaking,  LY1 corresponds to the "tex-
	      nansi.enc" encoding  file.   Since  the  "texnansx.enc"  version
	      omits  duplicate	characters, it has more	room for font-specific
	      glyphs and is generally a	better choice; but if you plan to type
	      characters  like "ae" directly into your editor, rather than us-
	      ing TeX commands like \ae, you should use	"texnansi.enc".

       Next, we	decide on a naming scheme for the font	metric	files.	 Let's
       use  the	 OpenType font names as	a base.	 (There's generally no need to
       follow the six-character	"Karl Berry" naming scheme.)  Just in case  we
       come  back  later  and  add  a different	encoding scheme, we'll prepend
       "LY1--" to each name.

       We're now ready to run otftotfm for the first set of fonts.   Note  the
       "-fkern	-fliga"	 options,  which access	pair kerns and the default "f"

	   otftotfm -a -e texnansx MinionPro-Regular.otf \
		   -fkern -fliga LY1--MinionPro-Regular
	   otftotfm -a -e texnansx MinionPro-It.otf \
		   -fkern -fliga LY1--MinionPro-It
	   otftotfm -a -e texnansx MinionPro-Semibold.otf \
		   -fkern -fliga LY1--MinionPro-Semibold
	   otftotfm -a -e texnansx MinionPro-SemiboldIt.otf \
		   -fkern -fliga LY1--MinionPro-SemiboldIt
	   otftotfm -a -e texnansx MinionPro-Bold.otf \
		   -fkern -fliga LY1--MinionPro-Bold
	   otftotfm -a -e texnansx MinionPro-BoldIt.otf	\
		   -fkern -fliga LY1--MinionPro-BoldIt

       The small-caps fonts are	generated with an additional "-fsmcp"  option.
       We  append  "--fsmcp" to	the font metric	names as well, differentiating
       them from the regular fonts.  Although MinionPro's italic fonts support
       small-caps,  the	 LaTeX font selection scheme can't access them easily,
       so we've	left them off.

	   otftotfm -a -e texnansx MinionPro-Regular.otf \
		   -fkern -fliga -fsmcp	LY1--MinionPro-Regular--fsmcp
	   otftotfm -a -e texnansx MinionPro-Semibold.otf \
		   -fkern -fliga -fsmcp	LY1--MinionPro-Semibold--fsmcp
	   otftotfm -a -e texnansx MinionPro-Bold.otf \
		   -fkern -fliga -fsmcp	LY1--MinionPro-Bold--fsmcp

       To get old-style	numerals, just add the "-fonum"	option to each invoca-
       tion  --	 and, to reduce	confusion, append "--fonum" to the font	metric

       At this point, all our font metric files	are installed,	and  it's  fi-
       nally  time  to create the ".fd"	file.  (The ".fd" format is documented
       in The LaTeX Companion.)	 Let's call the	LaTeX font family "MinionPro".
       Then the	".fd" file is "LY1MinionPro.fd", and it	contains:

		   { <-> LY1--MinionPro-Regular	}{}
	   \DeclareFontShape{LY1}{MinionPro}{m}{it}{ <-> LY1--MinionPro-It }{}
		   { <-> LY1--MinionPro-Regular--fsmcp }{}
		   { <-> LY1--MinionPro-Semibold }{}
		   { <-> LY1--MinionPro-SemiboldIt }{}
		   { <-> LY1--MinionPro-Semibold--fsmcp	}{}
	   \DeclareFontShape{LY1}{MinionPro}{b}{n}{ <->	LY1--MinionPro-Bold }{}
		   { <-> LY1--MinionPro-BoldIt }{}
		   { <-> LY1--MinionPro-Bold--fsmcp }{}
		   { <-> ssub *	MinionPro/b/n }{}
		   { <-> ssub *	MinionPro/b/it }{}
		   { <-> ssub *	MinionPro/b/sc }{}

       We're  now ready	to use MinionPro in LaTeX, with	lines like this	in the
       document	preamble:


       Of course, we're	free at	any time to add	more MinionPro	variants  with
       otftotfm;  they'll  become  accessible  to LaTeX	as soon	as we edit the
       "MinionPro.fd" file.

       With long options, you need type	only as	many characters	as  will  make
       the option unique.

   Font	Feature	and Transformation Options
       -s script[.lang], --script=script[.lang]
	    Apply  features  suitable to the script system script and language
	    system lang.  Scripts and language systems are  two-to-four-letter
	    names  assigned  by	 Microsoft and Adobe.  Examples	include	"latn"
	    (Latin script), "grek" (Greek script),  and	 "yi.YIC"  (Yi	script
	    with classic characters).  If lang is not specified, otftotfm will
	    use	the default language system for	that  script.	You  can  give
	    this option	multiple times.	 Run "otfinfo -s font" to see the list
	    of scripts and languages a font supports.  Defaults	to "latn".

       -f feature, --feature=feature
	    Activate the feature  named	 feature.   Features  are  four-letter
	    names  assigned  by	 Microsoft and Adobe; they are meant to	corre-
	    spond to font behaviors, such as kerning or	small-capitals.	 Exam-
	    ples  include  "liga"  (default  ligatures), "dlig"	(discretionary
	    ligatures),	"kern" (kerning), and "c2sc" (replacing	capitals  with
	    small  capitals).  Give this option	multiple times to apply	multi-
	    ple	features.  Run "otfinfo	-f [--script option] font" to see  the
	    list of features a font supports for a specified script.  Defaults
	    to any features required by	the selected scripts.

       --lf feature, --letter-feature=feature
	    Activate the feature named feature,	but only for letters.  For in-
	    stance,  the "-f smcp" option will apply the small-caps feature to
	    all	characters in the encoding; this  may  result  in  changes  to
	    punctuation	 and  numbers as well as letters.  The "--lf smcp" op-
	    tion will apply the	small-caps feature only	 to  letters,  meaning
	    characters with the	"Letter" Unicode property.

       --subs-filter pattern
       --include-subs pattern
       --exclude-subs pattern
	    Limit  the characters that otftotfm	will substitute.  Substitution
	    is allowed on an input character if	it matches at least one	of the
	    --include patterns,	and none of the	--exclude patterns.  Each pat-
	    tern applies to all	following features, except  that  the  --clear
	    option clears any accumulated patterns.  The --subs-filter pattern
	    option acts	like --clear-subs followed by --include-subs  pattern.
	    For	pattern	syntax,	see GLYPH PATTERNS, below.

	    In	the  command line below, the '<Number>'	pattern	will force the
	    "onum" feature to substitute only numbers (and not,	 for  example,
	    punctuation).  The "salt" feature can still	substitute any charac-
		otftotfm -fsalt	--include-subs="<Number>" -fonum ...

       -E fac, --extend=fac
	    Widen, or extend, the font by a factor of fac.  Like  afm2tfm(1)'s
	    -e option.

       -S amt, --slant=amt
	    Oblique, or	slant, the font	by amt.	 Like afm2tfm(1)'s -s option.

       -L amt, --letterspacing=amt
	    Letterspace	 each  character by amt	units, where 1000 units	equals
	    one	em.  The width of each character increases by amt,  with  half
	    the	 space	distributed  to	 each sidebearing.  Boundary-character
	    kerns are added to maintain	alignment at the ends of lines.

	    Ignore the font's claimed character	 widths,  deriving  horizontal
	    metrics  from  bounding  boxes  instead.   This results in similar
	    spacing as the Computer Modern Math	Italic	font,  with  increased
	    sidebearings for letters like f and	j.

	    If	you  provide  skewchar,	a number between 0 and 255 or a	single
	    character, then otftotfm adds heuristically-derived	kerns  to  the
	    font  that	may improve accent positions in	math mode.  To get the
	    benefits, you must tell TeX	about the skewchar with	a command like

       -k N, --min-kern=N
	    Only  output  kerning  pairs  whose	absolute value is N or larger.
	    Larger minimum kerns make kerning less  precise,  but  shrink  the
	    output TFM file.  The default minimum kern is 2.0, or 0.002	em.

	    Scale the width of the inter-word space by a factor	of fac.

	    Set	 the output font's design size to size,	a value	in TeX points.
	    This value is mostly just documentation, since  LaTeX  essentially
	    ignores  fonts'  design  sizes, but	plain TeX may occasionally use
	    the	design size to decide how large	a font should be.  (Loading  a
	    font  in TeX "at" a	particular size	effectively ignores the	design
	    size; loading a font plain or "scaled" by a	given factor uses  the
	    design  size.)  The	default	is taken from the input	font's optical
	    size feature, or 10pt if it	has no such feature.

	    Set	the font to fixed-width	(its  space  character	will  have  no
	    stretch or shrink).	 Normally you won't need this option; the font
	    will tell otftotfm whether it is fixed  width.   The  opposite  of
	    --fixed-width is --proportional-width.

	    Set	 the  output font's default italic angle to angle, a number of
	    degrees.  This value is used by TeX	to position accents.  Normally
	    you	won't need this	option;	the font will tell otftotfm its	italic

	    Set	the output font's x-height to val.  This value is used by  TeX
	    to position	accents. Normally you won't need this option.  Val may
	    be a number	expressed in font units; `x', which uses the height of
	    the	 font's	lowercase x; or	`font',	which uses the font's declared
	    x-height metric.

   Encoding Options
       -e encoding, --encoding=encoding
	    Select the output metrics's	base dvips(1) encoding.	 Otftotfm will
	    search  for	 encoding[.enc]	 the same way that dvips would,	so you
	    may	not need to give a full	pathname.  Say -e - to start with  the
	    font's  default encoding.  See ENCODINGS, below, for more informa-

	    Set	the font's boundary character to char, which should either  be
	    a  single non-digit	character, or a	number between -1 and 255. The
	    default is taken from the encoding.

	    Set	the font's alternate selector character	to char, which	should
	    either be a	single non-digit character, or a number	between	-1 and
	    255.  Alternate selectors let TeX authors  explicitly  choose  be-
	    tween  versions  of	 a  character.	For instance, the '--altselec-
	    tor-char="*"' option turns the "*" character into a	special	switch
	    that  cycles  between alternates.  For instance, the TeX input "A"
	    would produce the normal version of	 the  "A"  Unicode  character,
	    "A*"  would	 produce  the first alternate, "A**" would produce the
	    second alternate, and so forth.  Furthermore, "s*t"	will  activate
	    any	discretionary "s_t" ligature in	the font.

	    The	 --altselector-char  mechanism	uses the features specified by
	    --altselector-feature options.

	    The	alternate-selector character may also be specified in the  en-
	    coding; see	ENCODINGS, below.  See Sivan Toledo's article cited in
	    the	SEE ALSO section for more information.

	    Activate the feature  named	 feature  for  the  --altselector-char
	    mechanism.	 Give  this option multiple times to activate multiple
	    features.  This option activates features only for use with	--alt-
	    selector-char; use the --feature option to activate	features glob-
	    ally.  Defaults to the salt	and dlig features.

	    Limit the alternate	characters that	otftotfm will select.  An  al-
	    ternate  is	 used if it matches at least one of the	--include pat-
	    terns, and none of the --exclude patterns.	Each  pattern  applies
	    to	all  following features, except	that the --clear option	clears
	    any	accumulated patterns.  The --alternates-filter pattern	option
	    acts like --clear-alternates followed by --include-alternates pat-
	    tern.  For pattern syntax, see GLYPH PATTERNS, below.

	    OpenType fonts can have many alternates  per  character,  most  of
	    which  aren't  interesting.	  For  example,	 the  character	"a" in
	    WarnockPro-Regular has five	alternates,  "ordfeminine",  "Asmall",
	    "asuperior",  "a.end",  and	"orn.013".  The	--altselector-char op-
	    tion lets you cycle	through	these alternates, but it's  better  to
	    leave  out	the  ones you don't want, to avoid overfull encodings.
	    Thus, if you were only interested in ".end"	 variants,  you	 might
	    supply an '--include-alternates="*.end"' option.

	    In	the  command  line  below,  the	 '*.end' pattern will apply to
	    "aalt" alternates, but not to "salt" alternates.
		otftotfm -fsalt	--include-alternates="*.end" -faalt ...

	    Add	a LIGKERN command to the encoding.  For	example, '--ligkern "T
	    {L}	 h"'  suppresses any T_h ligature in the font.	You can	supply
	    multiple --ligkern options.	 See ENCODINGS,	below.

	    Add	a POSITION command to the encoding.  For example,  '--position
	    "T	10  0  20"'  adds ten units of space to	either side of the "T"
	    character.	You can	supply multiple	--position options.   See  EN-
	    CODINGS, below.

	    Add	 a UNICODING command to	the encoding.  For example, '--unicod-
	    ing	"pi1 =:	uni03D6"' tells	otftotfm to encode  "/pi1"  as	U+03D6
	    GREEK  PI  SYMBOL.	 You  can supply multiple --unicoding options.
	    See	ENCODINGS, below.

	    Ignore any LIGKERN and/or UNICODING	commands in the	encoding file.

	    Don't include otftotfm's default LIGKERN commands.

	    Add	a CODINGSCHEME to the encoding.	 See ENCODINGS,	below.

	    Warn about encoded characters not supported	by the font.  See  the
	    WARNMISSING	command	in ENCODINGS, below.

	    Select  the	dvips(1) encoding used for the font.  No glyph substi-
	    tutions will be permitted, so the output encoding will  equal  the
	    input  encoding  (and  otftotfm will not generate an output	encod-

	    Experts only.  Allow the output font to refer to  existing	"base"
	    fonts.  This can greatly reduce the	number of base fonts generated
	    by otftotfm.  Each line in the file	argument contains a  TeX  font
	    name (as for --name) and a corresponding literal encoding file (as
	    for	--literal-encoding); for example:
		WarnoProReg--eka eka
		WarnoProReg--exp1 exp1
	    The	named fonts must have been created by prior runs  of  otftotfm
	    on	the  same  input  OpenType  font,  with	 the same --extend and
	    --slant options as the current run.	 The current output font  will
	    refer  to  glyphs from the named base fonts	when possible.	If the
	    base fonts cover all glyphs	required by the	output font,  otftotfm
	    won't generate any new base	fonts at all.  The file	can also refer
	    to dotless-J fonts using the following syntax:
		WarnoProReg--lcdfj - dotlessj

   Automatic Mode Options
       -a, --automatic
	    Select automatic mode.

       -v vendor, --vendor=vendor
	    Set	the font vendor	name, which is used to locate files within the
	    TDS.  Defaults to "lcdftools".

	    In	automatic  mode,  TeX and friends will generally find required
	    font files independently of	the vendor you select.

	    Set	the font typeface name,	which is used to locate	 files	within
	    the	 TDS.	Defaults  to  the  current font's family name with un-
	    suiable characters removed.

	    Do not use cfftot1(1) to create Type 1 fonts corresponding to  the
	    OpenType input fonts.

	    Do	not  use t1dotlessj(1) to create a special dotless-j font when
	    the	input font doesn't have	dotless-j.

	    Do not install TrueType-flavored fonts.

	    Install TrueType-flavored fonts in translated Type 42 format.

	    Do not run an updmap(1) program.  This can be useful if you're in-
	    stalling  a	 bunch of fonts; it is much faster to run updmap once,
	    at the end,	than to	run it once per	font.

   Output Options
       -n texname, --name=texname
	    Set	the TeX	name of	the output font, which is  used	 in  font  map
	    files  and,	 in  automatic	mode, to generate the output filename.
	    The	default	is derived from	the OpenType font's name and the  fea-
	    tures you selected.

       -p, --pl
	    Output  human-readable  PL	and VPL	metrics, not binary TFM	and VF
	    metrics.  Note: Otftotfm's PL and VPL output files are legal,  but
	    the	 fontinst program may not accept them (it has a	picky parser).
	    Make sure to supply	a --coding-scheme; if that doesn't  help,  run
	    the	TFM output through tftopl(1).

	    Do	not generate virtual fonts (VFs	and VPLs).  Otftotfm will warn
	    if the selected font features cannot be implemented	 without  vir-
	    tual fonts.

	    Do not generate an encoding	file.

	    Only  generate an encoding file; do	not generate any other output.
	    The	encoding file is written to file, or to	standard output	if  no
	    file argument is supplied.

	    Do not generate a font map line for	the font.

   File	Location Options
	    Set	 the  directory	used for various output	types.	Each directory
	    may	be set by an environment variable, and defaults	to a  TDS  di-
	    rectory in automatic mode, or to "." otherwise.  Environment vari-
	    able names and default TDS locations are described	in  the	 Auto-
	    matic Mode section above.

	    Set	 file  in  which  otftotfm  will write a font map line for the
	    font.  The default is the standard	output	in  manual  mode,  and
	    "TEXMF/fonts/map/dvips/vendor/"	(or  "TEXMF/dvips/ven-
	    dor/" on older installations) in automatic mode.

   Miscellaneous Options
	    Use	file as	a Adobe	glyph list, which helps	translate glyph	 names
	    to Unicode code points.  Give multiple options to include multiple
	    files.  See	ENCODINGS, below, for more information.

       -V, --verbose
	    Write progress messages to standard	error.

	    Do not create or modify any	files.	Instead, write messages	 about
	    the	program's hypothetical progress	to standard error.

	    Generate all files,	even if	it looks like versions are already in-

       -q, --quiet
	    Do not generate any	error messages.

	    Set	path searching debugging flags.	 See the Kpathsea  manual  for

       -h, --help
	    Print usage	information and	exit.

	    Print  the	version	number and some	short non-warranty information
	    and	exit.

       Otftotfm	interprets encoding files as Unicode.  For example, say	an in-
       put encoding has	"/dotlessi" at position	10.  Otftotfm detects that po-
       sition 10 should	contain	Unicode	character U+0131  LATIN	 SMALL	LETTER
       DOTLESS I, and uses the font's glyph for	that character (possibly modi-
       fied by any active features).  The selected glyph might	not  be	 named
       "dotlessi"; only	the Unicode value matters.

       Otftotfm	 assigns Unicode values	to glyph names using a table published
       by Adobe	(SEE ALSO has a	reference), with extensions for	TeX.  For more
       fine-grained  control,  add  UNICODING  commands	 to the	input encoding
       file.  These commands have the following	format:
	   % UNICODING glyph =:	choice1	[choice2 ...] ;
       This tells otftotfm that	the glyph  named  glyph	 translates  into  the
       first  Unicode  value  in  the  choice list that	has a character	in the
       font.  Glyph and	the choices are	PostScript glyph  names;  the  initial
       "%" sign	is required; and each UNICODING	line can contain multiple com-
       mands, separated	by spaced semicolons.  For example,
	   % UNICODING pi1 =: uni03D6 ;
       encodes the character "/pi1" as U+03D6 GREEK PI SYMBOL, and
	   % UNICODING Delta =:	uni0394	uni2206	;
       makes U+0394 GREEK CAPITAL LETTER DELTA preferred to  U+2206  INCREMENT
       as an encoding for "/Delta".  You can also supply glyph names:
	   % UNICODING Delta =:	Deltagreek Delta ;
       A  mapping with no Unicode values removes that glyph from the input en-
       coding.	For instance, this erases any f-ligature characters  from  the
	   % UNICODING ff =: ; fi =: ; fl =: ; ffi =: ;	ffl =: ;
       The  slots  are	available  for otftfm's	own use, for example for other
       characters required by the font.	 (If the  f-ligatures  themselves  are
       required	 by the	font, for instance by a	'liga' feature,	then they will
       be stored into their old	slots when possible.)  Map a glyph to 'emptys-
       lot'  if	 you  don't  want otftotfm to use the slot.  For example, this
       will leave the 'ff' slot	unused if the font has no 'ff' glyph:
	   % UNICODING ff =: ff	emptyslot ;
       (Note that most OpenType	fonts provide a	visible	representation for un-
       used encoding slots, namely a box with an X inside.)

       LIGKERN	comments  in the encoding can add ligatures and	inhibit	kerns,
       as in afm2tfm(1).  To add a ligature, say:
	   % LIGKERN glyph1 glyph2 =: result ;
       The "=:"	operator indicates a normal ligature,  where  both  the	 input
       glyphs  are  removed and	replaced by result.  To	preserve the left-hand
       glyph, for an effect like "glyph1 glyph2	=: glyph1 result",  use	 "|=:"
       instead;	 to  preserve  the right-hand glyph, use "=:|".	 To remove all
       kerns between two characters, say:
	   % LIGKERN glyph1 {} glyph2 ;
       A "*" matches any character, so
	   % LIGKERN a {} * ;
       removes all kerns with "a" as the left-hand character, and
	   % LIGKERN * {} * ;
       removes all kerns.

       Otftotfm	also supports extended syntax for setting kern values and  in-
       hibiting	ligatures.  To add an n-unit kern between two glyphs, say:
	   % LIGKERNX glyph1 {n} glyph2	;
       where n is an integer.  This:
	   % LIGKERNX glyph1 {L} glyph2	;
       inhibits	any ligature between glyph1 and	glyph2.	 "{LK}"	and "{KL}" in-
       hibit both ligatures and	kerns.

       You can set the --boundary-char and --altselector-char from an encoding
       file with commands like this:
	   % LIGKERN ||	= boundarychar ;
	   % LIGKERNX ^^ = altselectorchar ;
       As  with	 UNICODING, each LIGKERN or LIGKERNX line can contain multiple
       commands, separated by spaced semicolons.

       Otftotfm	has a default set of eight ligatures, namely:
	   space l =: lslash ; space L =: Lslash ;
	   question quoteleft =: questiondown ;	exclam quoteleft =: exclamdown ;
	   hyphen hyphen =: endash ; endash hyphen =: emdash ;
	   quoteleft quoteleft =: quotedblleft ;
	   quoteright quoteright =: quotedblright
       LIGKERN commands	in the encoding	file and --ligkern options  can	 over-
       ride  these defaults, or	supply the --no-default-ligkern	option to turn
       them off.

       The POSITION command shifts a glyph within its bounding box.  The  syn-
       tax is
	   % POSITION glyph pdx	pdy adx	;
       This  will  add pdx units of space to glyph's left edge;	raise it up by
       pdy units; and add adx units to its width.   For	 example,  to  add  10
       units of	space to either	side of	the "T"	glyph, supply
	   % POSITION T	10 0 20
       To move the "degree" symbol up by 20 units, supply
	   % POSITION degree 0 20 0

       The  CODINGSCHEME  command  specifies the coding	scheme for fonts using
       this encoding.  This is a string, less than 40 characters long and con-
       taining	no  parentheses,  that	classifies the encoding	for TeX's pur-
       poses.  Sample coding schemes include "TEX TEXT",  "TEX	MATH  ITALIC",
       and "EXTENDED TEX FONT ENCODING - LATIN".  For example:
       Most  tools  ignore  the	 coding	 scheme;  fontinst  is	an  exception.
       Otftotfm	uses the encoding's PostScript name  for  the  default	coding

       Finally,	 the WARNMISSING command makes any glyphs not supported	by the
       input font appear as black boxes.  The  dvips(1)	 processor  will  also
       print a warning when encountering these glyphs.	For example:

       The    --unicoding,   --ligkern,	  --position,	--coding-scheme,   and
       --warn-missing options add UNICODING, LIGKERN/LIGKERNX, POSITION,  COD-
       INGSCHEME,  and	WARNMISSING  commands to an encoding, and can override
       commands	in the encoding	itself.	 Some common encoding files have  com-
       mands  that are inappropriate for OpenType fonts; for example, "t1.enc"
       hard-codes f-ligatures, which can cause problems	with small-cap	fonts.
       Supply  the  --no-encoding-commands  option to ignore all commands from
       the encoding file.  Commands from options like --ligkern	are  processed
       in any case.

   New Glyphs
       New  glyphs,  such as ligatures and contextual substitutions, are added
       to the encoding in any empty spaces,  using  their  original  locations
       when  possible.	 If the	encoding doesn't have enough space for all new
       glyphs, shorter ligatures composed of  unaccented  letters  get	prece-

   Synthetic Glyphs
       Otftotfm	 can  synthesize some glyphs using virtual font	manipulations,
       if a required glyph is not available in the input  font.	 Specifically,
       it will synthesize:

       cwm		     TeX's  compound  word  mark (a zero-width "strut"
			     rule with height equal to the font's x-height)
       ascendercompwordmark  "cwm" with	height equal to	the font's ascenders
       capitalcompwordmark   "cwm" with	height equal to	the font's capitals
       visualspace	     A square cup used to represent spaces
       dotlessj		     A dotless "j", synthesized	with t1dotlessj(1)
       dblbracketleft	     Kerned version of "[["
       dblbracketright	     Kerned version of "]]"
       bardbl		     The parallel symbol "||"
       asteriskmath	     Vertically-centered "*"
       ringfitted	     Ring accent centered on the width of "A"
       twelveudash	     2/3-em-wide dash
       threequartersemdash   3/4-em-wide dash
       centigrade	     "(degrees)C"
       interrobang	     Combined "?!" symbol
       interrobangdown	     Inverted interrobang
       pertenthousand	     Per-ten-thousand sign (% with two extra 0s)
       IJ		     "IJ" ligature
       ij		     "ij" ligature
       Germandbls	     "SS" (a capital sharp-s)
       SSsmall		     Small-capital version of "SS"
       FFsmall		     Small-capital version of "FF"
       FIsmall		     Small-capital version of "FI"
       FLsmall		     Small-capital version of "FL"
       FFIsmall		     Small-capital version of "FFI"
       FFLsmall		     Small-capital version of "FFL"

       The --include-subs and --include-alternates options,  and  their	 --ex-
       clude and --*-filter variants, accept the following types of pattern.

       o  Glyph	names.	Example: "Aacute".  For	PostScript-flavored fonts, use
	  otfinfo(1)'s -g option to see	a font's  glyph	 names,	 and  "cfftot1
	  font.otf  |  t1testpage"  to generate	a PostScript file showing each

       o  Glyph	name patterns using the	shell-style glob-matching  rules:  "*"
	  matches  any number of characters, "?" matches any single character,
	  and "[...]"  matches any character in	a set.	Example: "*.end".

       o  Unicode category properties in  angle	 brackets.   Examples:	"<Let-
	  ter>", "<UppercaseLetter>", "<Lu>".  The complete list of both short
	  and long names:  Letter/L,  UppercaseLetter/Lu,  LowercaseLetter/Ll,
	  TitlecaseLetter/Lt,	ModifierLetter/Lm,  OtherLetter/Lo;  Number/N,
	  DecimalNumber/Nd,  LetterNumber/Nl,  OtherNumber/No;	Punctuation/P,
	  ConnectorPunctuation/Pc,   DashPunctuation/Pd,   OpenPunctuation/Ps,
	  ClosePunctuation/Pe,	 InitialPunctuation/Pi,	  FinalPunctuation/Pf,
	  OtherPunctuation/Po;	 Symbol/S,  MathSymbol/Sm,  CurrencySymbol/Sc,
	  ModifierSymbol/Sk, OtherSymbol/So; Mark/M,  SpacingMark/Mc,  Enclos-
	  ingMark/Me, NonspacingMark/Mn; Separator/Z, SpaceSeparator/Zs, Line-
	  Separator/Zl,	 ParagraphSeparator/Zp;	 Other/C,  Surrogate/Cs,  For-
	  mat/Cf,  Control/Cc,	PrivateUse/Co, Unassigned/Cn.  Category	values
	  current as of	Unicode	4.0.

       o  Unicode ranges.  Example: "U+007f-U+008C".

       The "!" prefix negates a	pattern, and you can  separate	multiple  pat-
       terns by	spaces.

       This  section  lists  features common to	Western	OpenType fonts and de-
       scribes how otftotfm handles them for common fonts.   Please  send  the
       author  mail if otftotfm	does not handle	a feature you need, or you be-
       lieve it	handles	some feature incorrectly.

       aalt, Access All	Alternates
	    Lets the user choose between all available alternate forms	for  a
	    character.	 This  includes	 things	like superscript and subscript
	    variants, different	styles (swash, for example),  and  even	 orna-
	    ments.  The	--altselector-feature=aalt option can help an --altse-
	    lector-char	provide	useful access to alternates, but the aalt fea-
	    ture  isn't	usually	useful on its own.  Try	the salt and calt fea-
	    tures instead.
       c2sc, Small Capitals From Capitals
	    Replaces capital letters with small	capitals: a sort  of  converse
	    of	the  more conventional smcp feature, which replaces lower-case
	    letters with small capitals.  Supported.
       calt, Contextual	Alternates
	    Lets the user choose between context-appropriate swash  forms  for
	    each  character.   For example, given the word "DREW" in a cursive
	    typeface, the "R E W" might	be translated to calmer	forms than the
	    initial  "D".   There may be more than one choice for a given let-
	    ter, in which case the user	should be able to select  among	 them.
	    TeX	 can't support complex contextual alternates, or alternate se-
	    lection, but otftotfm supports some	fonts quite well.   The	 input
	    encoding  should  have  lots  of  empty space for variants,	and it
	    should specify a boundary character.  See also cswh.
       case, Case-Sensitive Forms
	    Shifts punctuation marks up	to a position  that  works  well  with
	    all-capital-letter	sequences.  For	example, the hyphen character,
	    which generally centers vertically on the x-height,	is  raised  up
	    to center vertically on a capital letter.  Also replaces text fig-
	    ures with lining figures, and accent marks with forms more	appro-
	    priate for capitals.  Supported.
       cpsp, Capital Spacing
	    Adds  a  bit of space on either side of each capital letter.  Sup-
	    ported.  (However, the OpenType tag	registry suggests that cpsp be
	    on by default, but applying	to all-caps text only; TeX cannot eas-
	    ily	implement that contextual intelligence.)
       cswh, Contextual	Swash
	    Lets the user choose between context-appropriate swash  forms  for
	    each  character.  For example, in the words	"Ab AC", the first "A"
	    might be translated	to a swash form, while the second  might  not.
	    There  may	be  more  than one choice for a	given letter, in which
	    case the user should be able to select among them.	Otftotfm  sup-
	    ports  some	fonts quite well.  The input encoding should have lots
	    of empty space for swash variants, and it should specify a	bound-
	    ary	character.  See	also calt and swsh.
       dlig, Discretionary Ligatures
	    Activates  uncommon	 ligatures,  such  as "c_t", "s_p", and	"s_t".
       dnom, Denominators
	    Replaces digits and	some punctuation marks with smaller forms sit-
	    ting  on  the  baseline, intended for fraction denominators.  Sup-
       fina, Terminal Forms
	    Substitutes	appropriate forms for letters occurring	at the ends of
	    words.   This feature doesn't select swash variants; it's intended
	    for	normal use, and	the specification recommends that it be	on  by
	    default.   Partially  supported: TeX will only treat spaces	as the
	    ends of words, where a correct implementation would	 probably  in-
	    clude  punctuation too.  See cswh for selecting swash variants ac-
	    tive at the	ends of	words.
       frac, Fractions
	    Replaces simple sequences like "1/2" with nice-looking  fractions.
	    Supported,	but beware: many fonts will translate "11/32" into "1"
	    + "1/3" + "2".
       hist, Historical	Forms
	    Replaces characters	with historical	variants.  Usually, this means
	    at least translating regular "s" to	long "s".  Supported.
       kern, Kerning
	    Adjusts  the  space	 between characters (pair kerning).  Generally
	    supported, and you should probably turn it on.  As a special case,
	    "-fkern"  can  also	read kerning information from the "kern" table
	    in conventional TrueType fonts.
       liga, Standard Ligatures
	    Activates common ligatures,	such as	"f_f", "f_i", "f_f_j", and (in
	    some  Adobe	 fonts)	 "T_h".	  Generally  supported,	and you	should
	    probably turn it on.
       lnum, Lining Figures
	    Uses lining	figures, the set of digits that	are all	about as  high
	    as	capital	 letters.  Supported.  Compare onum; see also pnum and
       numr, Numerators
	    Replaces digits and	some punctuation marks	with  smaller,	raised
	    forms  intended  for fraction numerators.  Supported, but not usu-
	    ally useful.
       onum, Oldstyle Figures
	    Uses old-style figures, also known as text figures.	 This  is  the
	    set	 of  digits that have ascenders	and descenders like lower-case
	    letters.  Supported.  Compare lnum;	see also pnum and tnum.
       ordn, Ordinals
	    Designed for Spanish and French.  Replaces ordinal	numbers,  such
	    as "2.o", with forms where the "o" is raised, and replaces the se-
	    quence "No"	with an	integrated glyph.  Supported.
       ornm, Ornaments
	    Replaces some alphabetic characters	in the	font  with  ornaments,
	    and	 links	the bullet character to	a set of all bullet-like orna-
	    ments, from	which the user can choose.  Partially  supported:  TeX
	    can	handle alphabetic substitutions, but not bullet	choice.
       pnum, Proportional Figures
	    Digits  will have different	widths.	 Supported.  Compare tnum; see
	    also lnum and onum.
       salt, Stylistic Alternates
	    Lets the user choose between stylistic alternate forms for a char-
	    acter.  The	--altselector-char mechanism provides useful access to
	    this feature.  If you turn on salt globally,  otftotfm  takes  the
	    first  alternate  form whenever there's more than one choice.  See
	    also aalt and ss01;	salt is	generally more useful  than  aalt  for
	    TeX, since it refers exclusively to	stylistic alternates.
       sinf, Scientific	Inferiors
	    Replaces  digits  and some punctuation marks with smaller, lowered
	    forms intended for subscripts.  Supported.	Compare	subs.
       size, Optical Size
	    This feature stores	information about the range of	optical	 sizes
	    for	 which	the font was intended.	There is no point in selecting
	    it with otftotfm, since it should not change the font's appearance
	    in any way.
       smcp, Small Capitals
	    Replaces lower-case	letters	with small capitals.  Supported.  Com-
	    pare c2sc.
       ss01-ss20, Stylistic Sets 1-20
	    Replaces characters	with a uniform set  of	stylistic  alternates.
	    Differs  from  features  like salt in that a Stylistic Set is uni-
	    form: an ssXX feature should never involve selection from a	set of
	    possible alternate characters.  Supported.
       subs, Subscript
	    Replaces  characters with smaller, lowered forms intended for sub-
	    scripts.  Supported.  Compare sinf;	some fonts  support  sinf  but
	    not	subs.
       sups, Superscript
	    Replaces  digits, some punctuation marks, and some lower-case let-
	    ters with smaller, raised forms intended for  superscripts.	  Sup-
       swsh, Swash
	    Activates  all  swash  forms for each character. There may be more
	    than one swash form, in which case otftotfm	will  pick  the	 first
	    one	 listed.  Supported, except that swash variants	other than the
	    first are inaccessible.  Note that some fonts with swash  variants
	    support the	cswh feature exclusively.
       tnum, Tabular Figures
	    All	 digits	 will have the same width, so that tables and the like
	    will align visually.  Supported.  Compare pnum; see	also lnum  and
       zero, Slashed Zero
	    Replaces the zero character	with a slashed zero.  Supported.

       no writable directory found in $TEXMF
	    Otftotfm  could not	find a writable	directory in your $TEXMFVAR or
	    $TEXMF path.  Did you create a $HOME/.texmf-var or $HOME/texmf di-
	    rectory?	 If    so,    run   the	  command   "kpsewhich	 --ex-
	    pand-path='$TEXMF'"	to verify that directory is not	 being	found.
	    You	  may	need  to  set  your  TEXMF  environment	 variable,  to
	    '{!!'"$HOME"'/texmf,!!$TEXMFMAIN}',	for instance (note the differ-
	    ent	  kinds	  of   quotes;	 on   my   machine,  this  expands  to

       'char' has no encoding, ignoring	kern removal
       (or ligature removal, lig/kern removal, or ligature)
	    These messages indicate a slight problem with your encoding	 file:
	    one	of the LIGKERN commands	referred to a character	not present in
	    the	encoding.  This	might be due to	a misspelling in  the  LIGKERN
	    command or the encoding file, or it	might be an oversight.	Either
	    fix	the encoding file or ignore the	warning.

       can't map 'char'	to Unicode
	    Another encoding file problem: One of the glyph names in  an  UNI-
	    CODING  block could	not be converted to Unicode.  This is problem-
	    atic since UNICODING exists	wholly to translate glyph  names  into
	    Unicode.  Fix the encoding file or ignore the warning.

       not enough room in encoding, ignoring N glyph(s)	...
	    There  wasn't space	in the encoding	for all	the glyphs referred to
	    by the features you	selected.  For example,	 maybe	the  font  had
	    more  ligatures  than there	were empty slots in the	encoding.  Fix
	    this warning by selecting fewer features, or by using an  encoding
	    with  more	empty  slots,  such as the 7t.enc encoding distributed
	    with otftotfm.

       The '-a'	option did not install my font correctly.
	    Try	again with the '--verbose' option, which  causes  otftotfm  to
	    explain its	behavior.  Note	that by	default, otftotfm will not re-
	    install files already present in your system's  TeX	 search	 paths
	    (in	 the current directory,	for instance).	Use '--force' to over-
	    ride this behavior.

       How can I get a small-caps "SS" in place	of the German sharp-S?
	    Supply the option '--unicoding "germandbls =: SSsmall"'.

       How can I prevent f-ligatures from forming in a small-caps font?
	    This should	happen automatically, but  some	 overzealous  encoding
	    files  add	f-ligatures  even  when	the font doesn't request them.
	    Try	the "--no-encoding-commands" option if this is a  problem  for

       Otftotfm	seems to take a	long time.
	    Use	 the  -V  option to see	what it's doing.  Often	the culprit is
	    the	updmap(1) program; if you're planning to run otftotfm multiple
	    times, give	it the --no-updmap option and run updmap manually when
	    you're done.

       How can I refer to the different	forms of phi?
	    Otftotfm follows TeX practice and widely-distributed TeX  encoding
	    vectors,  so  "/phi"  in  an input encoding	vector should map to a
	    "straight" phi and "/phi1" should map to a "loopy" phi.  Note that
	    TeX	 practice  differs from	the PostScript standard	naming conven-
	    tions, in which "/phi" is "loopy" and "/phi1" is "straight";  this
	    means  that	otftotfm may map "/phi"	in an input encoding vector to
	    a font's "/phi1" glyph, and	vice versa.   Perhaps  most  unambigu-
	    ously,  you	 can  use  "/uni03D5"  for  the	 "straight"  form  and
	    "/uni03C6" for the "loopy" form.

       How can I get lining figures (that is, normal line-height digits)  with
       small caps ('-fsmcp')?
	    Many fonts use old-style figures by	default	with small caps. Since
	    the	default	is not	specified,  it's  wise	to  explicitly	supply
	    '-flnum' or	'-fonum'.

       See  the	 documentation	for  --pl  above  if you have problems running
       otftotfm's output through fontinst.

       pltotf(1),  tftopl(1),  vptovf(1),  afm2tfm(1),	dvips(1),  cfftot1(1),
       otfinfo(1), t1dotlessj(1), t1testpage(1), ttftotype42(1), kpsewhich(1),

       Adobe Type 1 Font Format

       Adobe Technical Notes #5176, The	Compact	Font Format Specification, and
       #5177, The Type 2 Charstring Format

       OpenType	Specification, Version 1.4

       A Directory Structure for TeX Files,

       Kpathsea: A library for path searching,

       Sivan   Toledo,	 Exploiting   Rich   Fonts,   TUGboat	21(2),	 2000,

       Michel Goossens,	Frank Mittelbach, and  Alexander  Samarin,  The	 LaTeX
       Companion (for information on the .fd file format)

       Adobe  Systems, "Unicode	and Glyph Names".  Refers to the glyphlist.txt
       file  used  to  translate  glyph	 names	 to   Unicode	code   points.

       Eddie Kohler (

       Thanks  to  Karl	 Berry,	 Marco	Kuhlmann, Adam Lindsay,	Bruce D'Arcus,
       Thomas Esser, Claire Connelly, Nelson H.F. Beebe, and Ryuji Suzuki  for
       suggestions, bug	reports, and help.  Particular thanks to Achim Blumen-
       sath and	Michael	Zedler for suggestions and patches, some of  them  ex-

Version	2.106			LCDF Typetools			   OTFTOTFM(1)


Want to link to this manual page? Use this URL:

home | help