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.  The --directory option sets the default
	    directory for all output types.

	    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.108			LCDF Typetools			   OTFTOTFM(1)


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

home | help