Man Linux: Main Page and Category List

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  generates  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 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
       EXAMPLE  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
       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 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
       punctuation 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
       (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 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
       follows:

       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-
       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
       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
       PostScript 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 directory) 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
              "texnansi.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
       "-fkern -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 LaTeX 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
       document 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
       "MinionPro.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
            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
            correspond  to  font behaviors, such as kerning or small-capitals.
            Examples include "liga" (default ligatures), "dlig" (discretionary
            ligatures),  "kern" (kerning), 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 selected scripts.

       --lf feature, --letter-feature=feature
            Activate  the  feature  named  feature, but only for letters.  For
            instance, 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 "Letter" 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
            --include patterns, and none  of  the  --exclude  patterns.   Each
            pattern 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
            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
            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
            "\skewchar\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
            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.

       --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
            degrees.  This value is used by TeX to position accents.  Normally
            you won’t need this option; the font will tell otftotfm its italic
            angle.

   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
            default is taken from the encoding.

       --altselector-char=char
            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
            between    versions   of   a   character.    For   instance,   the
            ’--altselector-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
            encoding;  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
            mechanism.   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
            alternate  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 patterns.  The --alternates-filter  pattern
            option     acts     like     --clear-alternates     followed    by
            --include-alternates  pattern.   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
            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 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 ...

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

       --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 characters 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
            installing 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 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).

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

       --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/vendor.map"   on   older   installations)   in
            automatic mode.

   Miscellaneous Options
       --glyphlist=file
            Use  file  as  the  Adobe  glyph list, which helps translate glyph
            names to Unicode code points.   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
            installed.

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

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

       -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 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
       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
       encoding.  For instance, this erases any f-ligature characters from the
       encoding:
           % 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
       ’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 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
       inhibiting 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
       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
       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 coding 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
       input  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 WARNMISSING 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  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
       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"
       FFIsmall              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,      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,    EnclosingMark/Me,
          NonspacingMark/Mn; Separator/Z, SpaceSeparator/Zs, LineSeparator/Zl,
          ParagraphSeparator/Zp; Other/C, Surrogate/Cs, Format/Cf, Control/Cc,
          PrivateUse/Co, Unassigned/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
            character.  This includes things like  superscript  and  subscript
            variants,   different   styles  (swash,  for  example),  and  even
            ornaments.  The  --altselector-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  complex  contextual  alternates,   or
            alternate  selection, 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
            figures  with  lining  figures,  and  accent marks with forms more
            appropriate for capitals.  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 default, 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".
            Supported.
       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
            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
            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 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
            character.   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.
            Compare 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
            uniform: 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
            subscripts.  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 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
            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
            directory?      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  expands  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 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
            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  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
            override this behavior.

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
            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
            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),
       updmap(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
       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.
       http://partners.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
       suggestions,  bug  reports,  and  help.   Particular  thanks  to  Achim
       Blumensath and Michael Zedler for suggestions and patches, some of them
       extensive.