Easy font substitution
- Copyright:
- © 2010 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 any later version. 
- Identification:
- \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{substitutefont} [2023-08-13 v0.1.6 combine font families (obsolete)]
Abstract
Provide the \substitutefont macro for defining substitute fonts for specified font encodings.
- Changelog:
- 2010-11-04 - 0.1 - initial version - 2012-04-30 - 0.1.1 - documentation update, upload to CTAN - 2012-07-05 - 0.1.2 - documentation/example update - 2012-07-07 - 0.1.3 - bugfix (comment usage example) - 2013-11-04 - 0.1.4 - documentation update - 2023-08-13 - 0.1.5 - declare obsolete, update documentation and tests - 2023-08-17 - 0.1.6 - documentation fixes 
Usage
The macro \substitutefont{<encoding>}{<family>}{<new-family>} selects the font <new-family> as replacement for <family> if the font encoding is <encoding> in the variants “normal”, “italic”, “slanted”, and “small-caps” and the shapes “medium”, “bold”, and “bold-extended”.
Implementation
\begingroup
\nfss@catcodes
\newcommand*{\substitutefont}[3]{%
 \DeclareFontFamily{#1}{#2}{}
 \DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}
 \DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}
 \DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}
 \DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}
 \DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/b/n}{}
 \DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/b/it}{}
 \DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/b/sl}{}
 \DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/b/sc}{}
 \DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}
 \DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}
 \DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}
 \DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}
}
\global\let\substitutefont\substitutefont
\endgroup