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

  
 
  

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

NAME
     otftotfm - create TeX font metrics from OpenType fonts

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

DESCRIPTION
     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	resulting  font,
     and  say which OpenType features should be turned on.  Then otftotfm gener-
     ates and installs the corresponding TeX-related metric  files  (".tfm"  TeX
     font metrics, ".vf" virtual fonts, and ".enc" encoding 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 di-
     rectory.

     After running "otftotfm fontfile texname" and installing the results (manu-
     ally 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 EXAMPLE  sec-
     tion  for	more;  check the DIAGNOSTICS and FREQUENTLY ASKED QUESTIONS sec-
     tions 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 ligatures; "-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 below for more.	 The  otfinfo(1)
     program  will  report which features a font supports; run "otfinfo -f font-
     file".

     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  punctuation  marks
     with small-capital versions.

   Automatic Mode
     Automatic	mode, triggered by the -a/--automatic option, installs font met-
     rics 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
     (http://www.tug.org/tds/), such as most Unix TeX installations.

     Automatic mode should run seamlessly out of the box.  Otftotfm will install
     metrics files, encodings, map files, and Type 1 fonts into $HOME/.texmf-var
     or  any  other  writable  TEXMF  directory, and run updmap(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 installations, 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 accessible from LaTeX or ConTeXt.  See the DIAG-
     NOSTICS 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 fol-
     lows:
     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/	    vendor.map
		 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-fla-
     vored 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  provide  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 options
     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 executable file called
     TEXMF/dvips/updmap  exists, this file is executed (from the TEXMF/dvips di-
     rectory) rather than the global updmap.  This is so you can write	a  fast,
     customized version of updmap if desired.

EXAMPLE
     This  section  uses MinionPro to show one way to install OpenType fonts for
     LaTeX.  We  begin	with  six  fonts:  "MinionPro-Regular.otf",  "MinionPro-
     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	"texnansx.enc"	encoding
     file, so we will supply otftotfm with the "-e texnansx" 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 using 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 "-fk-
     ern -fliga" options, which access pair kerns and the default "f" ligatures.

	 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  invocation
     -- and, to reduce confusion, append "--fonum" to the font metric names.

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

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

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

	 \usepackage[LY1]{fontenc}
	 \renewcommand{\rmdefault}{MinionPro}
	 \renewcommand{\bfdefault}{b}

     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 "Min-
     ionPro.fd" file.

OPTIONS
     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 sys-
	  tem 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 correspond to  font
	  behaviors, such as kerning or small-capitals.  Examples include "liga"
	  (default  ligatures),  "dlig" (discretionary ligatures), "kern" (kern-
	  ing), and "c2sc" (replacing capitals with small capitals).  Give  this
	  option  multiple  times  to  apply multiple 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 se-
	  lected 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" option will apply the
	  small-caps  feature only to letters, meaning characters with the "Let-
	  ter" Unicode property.

     --subs-filter pattern
     --include-subs pattern
     --exclude-subs pattern
     --clear-subs
	  Limit the characters that otftotfm will substitute.	Substitution  is
	  allowed  on an input character if it matches at least one of the --in-
	  clude patterns, and none of the --exclude patterns.  Each pattern  ap-
	  plies 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, punc-
	  tuation).  The "salt" feature can still substitute any character.
	      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.

     --math-spacing[=skewchar]
	  Ignore  the  font's claimed character widths, deriving horizontal met-
	  rics 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  char-
	  acter, 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  "\skew-
	  char\font=skewchar".

     -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.

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

     --design-size=size
	  Set the output font's design size to size,  a  value	in  TeX  points.
	  This	value  is mostly just documentation, since LaTeX essentially ig-
	  nores fonts' design sizes, but plain TeX may occasionally use the  de-
	  sign	size  to  decide how large a font should be.  (Loading a font in
	  TeX "at" a particular size effectively ignores the design size;  load-
	  ing  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.

     --fixed-width
	  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.

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

     --x-height=val
	  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 information.

     --boundary-char=char
	  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 de-
	  fault is taken from the encoding.

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

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

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

     --altselector-feature=feature
	  Activate the feature named feature for the  --altselector-char  mecha-
	  nism.   Give this option multiple times to activate multiple features.
	  This option activates features only for use  with  --altselector-char;
	  use  the  --feature option to activate features globally.  Defaults to
	  the salt and dlig features.

     --alternates-filter=pattern
     --include-alternates=pattern
     --exclude-alternates=pattern
     --clear-alternates
	  Limit the alternate characters that otftotfm will select.   An  alter-
	  nate is used if it matches at least one of the --include patterns, and
	  none of the --exclude patterns.  Each pattern applies to all following
	  features,  except  that the --clear option clears any accumulated pat-
	  terns.  The --alternates-filter pattern option acts  like  --clear-al-
	  ternates  followed  by --include-alternates pattern.	For pattern syn-
	  tax, 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-Reg-
	  ular	 has  five  alternates,  "ordfeminine",  "Asmall",  "asuperior",
	  "a.end", and "orn.013".  The --altselector-char option 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  in-
	  terested  in	".end"	variants,  you might supply an '--include-alter-
	  nates="*.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 ...

     --ligkern=command
	  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.

     --position=command
	  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 ENCODINGS, below.

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

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

     --no-default-ligkern
	  Don't include otftotfm's default LIGKERN commands.

     --coding-scheme=scheme
	  Add a CODINGSCHEME to the encoding.  See ENCODINGS, below.

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

     --literal-encoding=encoding
	  Select  the  dvips(1)  encoding used for the font.  No glyph substitu-
	  tions will be permitted, so the output encoding will equal  the  input
	  encoding (and otftotfm will not generate an output encoding).

     --base-encodings=file
	  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 --lit-
	  eral-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 op-
	  tions 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.

     --typeface=typeface
	  Set  the  font typeface name, which is used to locate files within the
	  TDS.	Defaults to the current font's family name with unsuiable  char-
	  acters removed.

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

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

     --no-truetype
	  Do not install TrueType-flavored fonts.

     --type42
	  Install TrueType-flavored fonts in translated Type 42 format.

     --no-updmap
	  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 features you se-
	  lected.

     -p, --pl
	  Output human-readable PL and VPL metrics, not binary TFM and	VF  met-
	  rics.   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).

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

     --no-encoding
	  Do not generate an encoding file.

     --output-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 ar-
	  gument is supplied.

     --no-map
	  Do not generate a font map line for the font.

   File Location Options
     --tfm-directory=dir
     --pl-directory=dir
     --vf-directory=dir
     --vpl-directory=dir
     --encoding-directory=dir
     --type1-directory=dir
     --truetype-directory=dir
     --type42-directory=dir
     --directory=dir
	  Set the directory used for various output types.  Each  directory  may
	  be  set by an environment variable, and defaults to a TDS directory in
	  automatic mode, or to "." otherwise.	Environment variable  names  and
	  default  TDS	locations  are	described  in the Automatic Mode section
	  above.  The --directory option sets the default directory for all out-
	  put types.

     --map-file=filename
	  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/vendor.map" (or "TEXMF/dvips/vendor/ven-
	  dor.map" on older installations) in automatic mode.

   Miscellaneous Options
     --glyphlist=file
	  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.

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

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

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

     --kpathsea-debug=flags
	  Set  path  searching debugging flags.  See the Kpathsea manual for de-
	  tails.

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

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

ENCODINGS
     Otftotfm  interprets  encoding files as Unicode.  For example, say an input
     encoding has "/dotlessi" at position 10.  Otftotfm detects that position 10
     should contain Unicode character U+0131 LATIN SMALL LETTER DOTLESS  I,  and
     uses  the	font's glyph for that character (possibly modified by any active
     features).  The selected glyph might not be named "dotlessi"; only the Uni-
     code 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 re-
     quired; and each UNICODING line can contain multiple commands, 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  encod-
     ing.   For  instance, this erases any f-ligature characters from the encod-
     ing:
	 % UNICODING ff =: ; fi =: ; fl =: ; ffi =: ; ffl =: ;
     The slots are available for otftfm's own use, for example for other charac-
     ters 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 'emptyslot'  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  unused
     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 pre-
     serve  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 inhibit-
     ing 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}" inhibit
     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 com-
     mands, 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	override
     these defaults, or supply the --no-default-ligkern option to turn them off.

     The POSITION command shifts a glyph within its bounding box.  The syntax 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 containing no
     parentheses, that classifies the encoding for TeX's purposes.  Sample  cod-
     ing  schemes  include "TEX TEXT", "TEX MATH ITALIC", and "EXTENDED TEX FONT
     ENCODING - LATIN".  For example:
	 % CODINGSCHEME EXTENDED TEX FONT ENCODING - LATIN
     Most tools ignore the coding scheme; fontinst is  an  exception.	Otftotfm
     uses the encoding's PostScript name for the default coding scheme.

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

     The --unicoding, --ligkern, --position, --coding-scheme, and --warn-missing
     options  add UNICODING, LIGKERN/LIGKERNX, POSITION, CODINGSCHEME, and WARN-
     MISSING commands to an encoding, and can override commands in the	encoding
     itself.   Some  common  encoding files have commands 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 op-
     tion 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  pos-
     sible.   If  the  encoding  doesn't  have	enough space for all new glyphs,
     shorter ligatures composed of unaccented letters get precedence.

   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"

GLYPH PATTERNS
     The  --include-subs  and  --include-alternates options, and their --exclude
     and --*-filter variants, accept the following types of pattern.

     *	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 glyph.

     *	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".

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

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

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

FEATURE DIRECTORY
     This section lists features common to Western OpenType fonts and  describes
     how otftotfm handles them for common fonts.  Please send the author mail if
     otftotfm does not handle a feature you need, or you believe it handles some
     feature incorrectly.

     aalt, Access All Alternates
	  Lets the user choose between all available alternate forms for a char-
	  acter.   This includes things like superscript and subscript variants,
	  different styles (swash, for example), and even ornaments.  The --alt-
	  selector-feature=aalt option can help  an  --altselector-char  provide
	  useful access to alternates, but the aalt feature isn't usually useful
	  on its own.  Try the salt and calt features 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 letter,  in  which  case
	  the  user should be able to select among them.  TeX can't support com-
	  plex contextual alternates, or alternate selection, but otftotfm  sup-
	  ports  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 figures with  lin-
	  ing  figures,  and  accent marks with forms more appropriate for capi-
	  tals.  Supported.
     cpsp, Capital Spacing
	  Adds a bit of space on either side of each capital letter.  Supported.
	  (However, the OpenType tag registry suggests that cpsp be  on  by  de-
	  fault, but applying to all-caps text only; TeX cannot easily 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  supports  some  fonts  quite
	  well.   The  input  encoding should have lots of empty space for swash
	  variants, and it should specify a boundary character.  See  also  calt
	  and swsh.
     dlig, Discretionary Ligatures
	  Activates  uncommon  ligatures, such as "c_t", "s_p", and "s_t".  Sup-
	  ported.
     dnom, Denominators
	  Replaces digits and some punctuation marks with smaller forms  sitting
	  on the baseline, intended for fraction denominators.	Supported.
     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 include punctuation too.
	  See cswh for selecting swash variants active 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 sup-
	  ported, and you should probably turn it on.  As a special case,  "-fk-
	  ern"	can  also read kerning information from the "kern" table in con-
	  ventional 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 tnum.
     numr, Numerators
	  Replaces digits and some punctuation marks with smaller, raised  forms
	  intended for fraction numerators.  Supported, but not usually 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	sequence
	  "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 ornaments, from
	  which the user can choose.  Partially supported: TeX can handle alpha-
	  betic 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  charac-
	  ter.	 The --altselector-char mechanism provides useful access to this
	  feature.  If you turn on salt globally, otftotfm takes the  first  al-
	  ternate 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.  Compare
	  c2sc.
     ss01-ss20, Stylistic Sets 1-20
	  Replaces characters with a uniform set of stylistic alternates.   Dif-
	  fers	from  features	like salt in that a Stylistic Set is uniform: an
	  ssXX feature should never involve selection from a set of possible al-
	  ternate 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  letters
	  with smaller, raised forms intended for superscripts.  Supported.
     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  inac-
	  cessible.   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 onum.
     zero, Slashed Zero
	  Replaces the zero character with a slashed zero.  Supported.

DIAGNOSTICS AND TROUBLESHOOTING
     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  direc-
	  tory?   If  so,  run the command "kpsewhich --expand-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 different kinds of quotes; on my machine, this ex-
	  pands to '{!!/home/kohler/texmf,!!$TEXMFMAIN}').

     '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 en-
	  coding.   This might be due to a misspelling in the LIGKERN command or
	  the encoding file, or it might be an oversight.  Either fix the encod-
	  ing file or ignore the warning.

     can't map 'char' to Unicode
	  Another encoding file problem: One of the glyph names in an  UNICODING
	  block  could	not  be converted to Unicode.  This is problematic 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 liga-
	  tures 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  ex-
	  plain  its  behavior.   Note that by default, otftotfm will not re-in-
	  stall files already present in your system's TeX search paths (in  the
	  current  directory, for instance).  Use '--force' to override this be-
	  havior.

FREQUENTLY ASKED QUESTIONS
     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 you.

     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 vec-
	  tors, 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  conventions,  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 unambiguously, 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'.

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

SEE ALSO
     pltotf(1),  tftopl(1),   vptovf(1),   afm2tfm(1),	 dvips(1),   cfftot1(1),
     otfinfo(1), t1dotlessj(1), t1testpage(1), ttftotype42(1), kpsewhich(1), up-
     dmap(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, http://www.tug.org/tds/

     Kpathsea: A library for path searching, http://www.tug.org/kpathsea/

     Sivan   Toledo,   Exploiting   Rich    Fonts,    TUGboat	 21(2),    2000,
     http://www.tug.org/TUGboat/Articles/tb21-2/tb67tole.pdf

     Michel Goossens, Frank Mittelbach, and Alexander Samarin, The LaTeX Compan-
     ion (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.  http://part-
     ners.adobe.com/public/developer/opentype/index_glyph.html

AUTHOR
     Eddie Kohler (ekohler@gmail.com)

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

Version 2.110			 LCDF Typetools 		     OTFTOTFM(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=otftotfm&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help