manpagez: man pages & more
man otftotfm(1)
Home | html | info | man
otftotfm(1)                                                        otftotfm(1)


       otftotfm - create TeX font metrics from OpenType fonts


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


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

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

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

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

       LaTeX  users  will  generally  make a ".fd" input file so that commands
       like  "\renewcommand{\rmdefault}{TeXName}"  work  correctly.   See  the
       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 liga-
       tures; "-flnum", "-fonum", "-fpnum", and  "-ftnum",  to  control  digit
       glyphs; "-fsmcp", for small capitals; "-fswsh", for swash variants; and
       "-fcswh", for contextual swash.   See  the  FEATURE  DIRECTORY  section
       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  punc-
       tuation marks with small-capital versions.

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

       Automatic  mode  should  run  seamlessly out of the box.  Otftotfm will
       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  conve-
       niently  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

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

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

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

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

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

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

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

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


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

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

              Expert note: Strictly speaking, LY1  corresponds  to  the  "tex-
              nansi.enc"  encoding  file.   Since  the  "texnansx.enc" version
              omits duplicate characters, it has more room  for  font-specific
              glyphs and is generally a better choice; but if you plan to type
              characters like "ae" directly  into  your  editor,  rather  than
              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"

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

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

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

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

       At  this  point,  all  our  font  metric  files are installed, and it's
       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:

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

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


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


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

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

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

       --lf feature, --letter-feature=feature
            Activate  the  feature  named  feature, but only for letters.  For
            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
            Limit the characters that otftotfm will substitute.   Substitution
            is allowed on an input character if it matches at least one of the
            --include patterns, and none of the --exclude patterns.  Each pat-
            tern  applies  to  all following features, except that the --clear
            option clears any accumulated patterns.  The --subs-filter pattern
            option  acts like --clear-subs followed by --include-subs pattern.
            For pattern syntax, see GLYPH PATTERNS, below.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            OpenType fonts can have many alternates  per  character,  most  of
            which  aren't  interesting.   For  example,  the  character "a" in
            WarnockPro-Regular has five alternates,  "ordfeminine",  "Asmall",
            "asuperior",   "a.end",  and  "orn.013".   The  --altselector-char
            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 ...

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

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

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

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

            Don't include otftotfm's default LIGKERN commands.

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

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

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

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

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

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

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

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

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

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

            Do not install TrueType-flavored fonts.

            Install TrueType-flavored fonts in translated Type 42 format.

            Do  not  run  an  updmap(1) program.  This can be useful if you're
            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 fea-
            tures you selected.

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

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

            Do not generate an encoding file.

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

            Do not generate a font map line for the font.

   File Location Options
            Set the directory used for various output types.   Each  directory
            may  be  set  by  an  environment  variable, and defaults to a TDS
            directory in automatic mode, or  to  "."  otherwise.   Environment
            variable  names  and  default  TDS  locations are described in the
            Automatic Mode section above.  The  --directory  option  sets  the
            default directory for all output types.

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

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

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

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

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

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

            Set path searching debugging flags.  See the Kpathsea  manual  for

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

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


       Otftotfm interprets encoding files as Unicode.   For  example,  say  an
       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 modi-
       fied by any active features).  The selected glyph might  not  be  named
       "dotlessi"; only the Unicode value matters.

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

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

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

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

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

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

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

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


       The  --include-subs  and  --include-alternates   options,   and   their
       --exclude  and  --*-filter variants, accept the following types of pat-

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

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

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

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

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


       This section lists  features  common  to  Western  OpenType  fonts  and
       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 orna-
            ments.  The --altselector-feature=aalt option can help an --altse-
            lector-char provide useful access to alternates, but the aalt fea-
            ture isn't usually useful on its own.  Try the salt and calt  fea-
            tures instead.
       c2sc, Small Capitals From Capitals
            Replaces  capital  letters with small capitals: a sort of converse
            of the more conventional smcp feature, which  replaces  lower-case
            letters with small capitals.  Supported.
       calt, Contextual Alternates
            Lets  the  user choose between context-appropriate swash forms for
            each character.  For example, given the word "DREW" in  a  cursive
            typeface, the "R E W" might be translated to calmer forms than the
            initial "D".  There may be more than one choice for a  given  let-
            ter,  in  which case the user should be able to select among them.
            TeX can't support  complex  contextual  alternates,  or  alternate
            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 fig-
            ures  with lining figures, and accent marks with forms more appro-
            priate for capitals.  Supported.
       cpsp, Capital Spacing
            Adds a bit of space on either side of each capital  letter.   Sup-
            ported.  (However, the OpenType tag registry suggests that cpsp be
            on by default, but applying to all-caps text only; TeX cannot eas-
            ily implement that contextual intelligence.)
       cswh, Contextual Swash
            Lets  the  user choose between context-appropriate swash forms for
            each character.  For example, in the words "Ab AC", the first  "A"
            might  be  translated to a swash form, while the second might not.
            There may be more than one choice for a  given  letter,  in  which
            case  the user should be able to select among them.  Otftotfm sup-
            ports some fonts quite well.  The input encoding should have  lots
            of  empty space for swash variants, and it should specify a bound-
            ary character.  See also calt and swsh.
       dlig, Discretionary Ligatures
            Activates uncommon ligatures, such as  "c_t",  "s_p",  and  "s_t".
       dnom, Denominators
            Replaces digits and some punctuation marks with smaller forms sit-
            ting on the baseline, intended for  fraction  denominators.   Sup-
       fina, Terminal Forms
            Substitutes appropriate forms for letters occurring at the ends of
            words.  This feature doesn't select swash variants; it's  intended
            for  normal use, and the specification recommends that it be on by
            default.  Partially supported: TeX will only treat spaces  as  the
            ends  of  words,  where  a  correct  implementation would probably
            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
       numr, Numerators
            Replaces  digits  and  some punctuation marks with smaller, raised
            forms intended for fraction numerators.  Supported, but  not  usu-
            ally useful.
       onum, Oldstyle Figures
            Uses  old-style  figures, also known as text figures.  This is the
            set of digits that have ascenders and descenders  like  lower-case
            letters.  Supported.  Compare lnum; see also pnum and tnum.
       ordn, Ordinals
            Designed  for  Spanish and French.  Replaces ordinal numbers, such
            as "2.o", with forms where the "o" is  raised,  and  replaces  the
            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  orna-
            ments,  from  which the user can choose.  Partially supported: TeX
            can handle alphabetic substitutions, but not bullet choice.
       pnum, Proportional Figures
            Digits will have different widths.  Supported.  Compare tnum;  see
            also lnum and onum.
       salt, Stylistic Alternates
            Lets the user choose between stylistic alternate forms for a char-
            acter.  The --altselector-char mechanism provides useful access to
            this  feature.   If  you turn on salt globally, otftotfm takes the
            first alternate form whenever there's more than one  choice.   See
            also  aalt  and  ss01; salt is generally more useful than aalt for
            TeX, since it refers exclusively to stylistic alternates.
       sinf, Scientific Inferiors
            Replaces digits and some punctuation marks with  smaller,  lowered
            forms intended for subscripts.  Supported.  Compare subs.
       size, Optical Size
            This  feature  stores information about the range of optical sizes
            for which the font was intended.  There is no point  in  selecting
            it with otftotfm, since it should not change the font's appearance
            in any way.
       smcp, Small Capitals
            Replaces lower-case letters with small capitals.  Supported.  Com-
            pare c2sc.
       ss01-ss20, Stylistic Sets 1-20
            Replaces  characters  with  a uniform set of stylistic alternates.
            Differs from features like salt in that a Stylistic  Set  is  uni-
            form: an ssXX feature should never involve selection from a set of
            possible alternate characters.  Supported.
       subs, Subscript
            Replaces characters with smaller, lowered forms intended for  sub-
            scripts.   Supported.   Compare  sinf; some fonts support sinf but
            not subs.
       sups, Superscript
            Replaces digits, some punctuation marks, and some lower-case  let-
            ters  with  smaller, raised forms intended for superscripts.  Sup-
       swsh, Swash
            Activates all swash forms for each character. There  may  be  more
            than  one  swash  form, in which case otftotfm will pick the first
            one listed.  Supported, except that swash variants other than  the
            first  are inaccessible.  Note that some fonts with swash variants
            support the cswh feature exclusively.
       tnum, Tabular Figures
            All digits will have the same width, so that tables and  the  like
            will  align visually.  Supported.  Compare pnum; see also lnum and
       zero, Slashed Zero
            Replaces the zero character with a slashed zero.  Supported.


       no writable directory found in $TEXMF
            Otftotfm could not find a writable directory in your $TEXMFVAR  or
            $TEXMF  path.   Did  you  create a $HOME/.texmf-var or $HOME/texmf
            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 differ-
            ent  kinds  of  quotes;   on   my   machine,   this   expands   to

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

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

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

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


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

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

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

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

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


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


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

       Adobe Type 1 Font Format

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

       OpenType Specification, Version 1.4

       A Directory Structure for TeX Files,

       Kpathsea: A library for path searching,

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

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

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


       Eddie Kohler (

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

Version 2.107                   LCDF Typetools                     otftotfm(1)

lcdf-typetools 2.107 - Generated Sun Mar 4 06:59:32 CST 2018
© 2000-2021
Individual documents may contain additional copyright information.