substitutefont -------------- Combine font families ********************* :Copyright: © 2010, 2023 Günter Milde :Contributor: Special thanks to Ulrike Fischer who provided the indirect definition with active ``\nfss@catcodes``. :Licence: This work may be distributed and/or modified under the conditions of the `LaTeX Project Public License`_, either version 1.3 of this license or (at your option) any later version. .. admonition:: Obsolete: The package is obsoleted by the LaTeX kernel command ``\DeclareFontFamilySubstitution`` added in the 2020-02 LaTeX release [ltnews31]_. Existing documents can be updated by removing ``\usepackage{substitutefont}`` and replacing all uses of ``\substitutefont`` with ``\DeclareFontFamilySubstitution``. Description =========== In traditional 8-bit LaTeX, fonts are restricted to 256 glyphs per file. To support different languages and scripts, the New Font Selection Scheme uses a set of TeX `font encodings` [encguide]_. Many Latin TeX fonts do not support Greek or Cyrillic, while many non-Latin fonts are extensions of a Latin font family but use a different family name due to license reasons or the creators preference. The `substitutefont` package facilitated the task to set up a font family as substitute for another one in a specified font encoding. It is obsoleted by the standard LaTeX kernel command ``\DeclareFontFamilySubstitution``. Usage ===== The macro ``\DeclareFontFamilySubstitution{}{}{}`` selects the font family as replacement for in the font encoding [fntguide]_. The substitution must be defined before the first use of the specified font encoding, preferably in the document preamble. [#]_ The ```` is one of the LaTeX `font encodings`, e.g., T1 for Latin, T2A for Cyrillic(Russian), or LGR for Greek [encguide]_. For ```` and ````, use the «TeX names» of the font. They are defined by a TeX font package's ``*.fd`` or ``*.sty`` file(s). LaTeX stores the default family names for Roman, Sans-Serif, and Teletype fonts in the ``\rmdefault``, ``\sfdefault``, and ``\ttdefault`` macros respectively. .. [#] In contrast to the deprecated ``\substitutefontfamily`` macro provided by Babel_, ``\substitutefont`` and ``\DeclareFontFamilySubstitution`` do not write auxiliary files. Examples ======== Set the font family to Palatino using the standard package `mathpazo` for Latin and `GFS Didot`_ for Greek. Using the obsolete `substitutefont` package:: \usepackage[sc,slantedGreek]{mathpazo} \usepackage{substitutefont} \substitutefont{LGR}{\rmdefault}{udidot} Using the standard command:: \usepackage[sc,slantedGreek]{mathpazo} \DeclareFontFamilySubstitution{LGR}{\rmdefault}{udidot} Example documents: * Palatino with Greek from `GFS Didot`_: ``__, ``__ * Times/Helvetica/Courier (newtx_) with `GFS Artemisia`_, `GFS Neohellenic`_, and teletype from the CB_ fonts: ``__, ``__ (see also package txfontsb_) * Latin Modern with Cyrillic from `CM LGC`_: ``__, ``__ * Times/Helvetica/Courier (TeX Gyre) with Cyrillic ParaType_ fonts: ``__, ``__ * Simple test with Latin fonts: ``__, ``__ Source ====== ``_ The literate source was converted with PyLit_ to reStructuredText_ and with Docutils_ to the HTML documentation ``__. References ========== .. [encguide] Frank Mittelbach, Robin Fairbairns, Werner Lemberg, LaTeX3 Project Team, `LaTeX font encodings`: https://mirrors.ctan.org/macros/latex/doc/encguide.pdf. .. [fntguide] LaTeX3 Project Team, `LaTeX 2e font selection`: https://mirrors.ctan.org/macros/latex/doc/fntguide.pdf. .. [ltnews31] `LaATeX News`, Issue 31, February 2020, p. 3: https://www.latex-project.org/news/latex2e-news/ltnews31.pdf. .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt .. _Babel: https://ctan.org/pkg/babel .. _CM LGC: https://ctan.org/pkg/cm-lgc .. _CB: https://ctan.org/pkg/cbgreek-complete .. _GFS Artemisia: https://ctan.org/pkg/gfsartemisia .. _GFS Didot: https://ctan.org/pkg/gfsdidot .. _GFS Neohellenic: https://ctan.org/pkg/gfsneohellenic .. _mathpazo: https://ctan.org/pkg/mathpazo .. _newtx: https://ctan.org/pkg/newtx .. _txfontsb: https://ctan.org/pkg/txfontsb .. _ParaType: https://ctan.org/pkg/paratype .. _PyLit: https://pypi.org/project/pylit/ .. _reStructuredText: http://docutils.sourceforge.net/rst.html .. _Docutils: http://docutils.sourceforge.net/rst.html