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

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




Free and Open Source Software


Free Software Video

Useful Programs

Free Online Courses

Open Opportunity

Open Business