substitutefont
Combine font families
- Copyright:
- © 2010 Günter Milde <milde@users.sf.net>
- 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.
- Abastract:
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.
- News:
The package is obsoleted by the NFSS command \DeclareFontFamilySubstitution added to the LaTeX kernel in the 2020-02 release [ltnews31].
- Source:
-
The literate source was converted with PyLit to reStructuredText and with Docutils to the HTML documentation substitutefont.sty.html.
Usage
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. 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.
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].
Tests/Examples
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: greek-times-artemisia.tex, greek-times-artemisia.pdf (see also package txfontsb)
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
References
Frank Mittelbach, Robin Fairbairns, Werner Lemberg, LaTeX3 Project Team, LaTeX font encodings: https://mirrors.ctan.org/macros/latex/doc/encguide.pdf.
LaTeX3 Project Team, LaTeX 2e font selection: https://mirrors.ctan.org/macros/latex/doc/fntguide.pdf.
LaATeX News, Issue 31, February 2020, p. 3: https://www.latex-project.org/news/latex2e-news/ltnews31.pdf.