Special thanks to Ulrike Fischer who provided the indirect definition with active \nfss@catcodes.
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.
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 facilitates the task to set up a font family as substitute for another one in a specified font encoding.
2013-11-04 Documentation/Test fixes.
The literate source was converted with PyLit to reStructuredText and with Docutils to the HTML documentation substitutefont.sty.html.
The macro \substitutefont{<encoding>}{<family>}{<new-family>} selects the font family <new-family> as replacement for <family> in the font encoding <encoding>. The substitution must be defined before the first use of the specified font encoding, preferably in the document preamble. In contrast to the (deprecated) \substitutefontfamily macro provided by Babel, \substitutefont does not write auxiliary files.
The <encoding> is one of the LaTeX font encodings [encguide], e.g., T1 for Latin, T2A for Cyrillic(Russian), or LGR for Greek.
For <family> and <new-family>, use the «TeX names» of the font. There 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.
Example: Set the font family to Palatino using the standard package mathpazo for Latin and GFS Didot for Greek:
\usepackage[sc,slantedGreek]{mathpazo} \usepackage{substitutefont} \substitutefont{LGR}{\rmdefault}{udidot}
For details on LaTeX font selection, see [encguide] and [fntguide].
Simple test with Latin fonts: substitutefont-test.tex, substitutefont-test.pdf
Palatino with Greek from GFS Didot: greek-palatino-didot.tex, greek-palatino-didot.pdf
Times/Helvetica/Courier (newtx) with GFS Artemisia, GFS Neohellenic, and teletype from the CB fonts: txfontsb greek-times-artemisia.tex, greek-times-artemisia.pdf
Latin Modern with Cyrillic from CM LGC: cyrillic-lm-lgc.tex, cyrillic-lm-lgc.pdf
Times/Helvetica/Courier (TeX Gyre) with Cyrillic ParaType fonts: cyrillic-paratype.tex, cyrillic-paratype.pdf
Frank Mittelbach, Robin Fairbairns, Werner Lemberg, LaTeX3 Project Team, LaTeX font encodings: http://mirror.ctan.org/macros/latex/doc/encguide.pdf.
LaTeX3 Project Team, LaTeX 2e font selection: http://mirror.ctan.org/macros/latex/doc/fntguide.pdf.