The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Easy font substitution

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”.

Example:

Palatino with the standard package mathpazo for Latin and GFS Didot for Greek:

\usepackage[sc,slantedGreek]{mathpazo}
\usepackage{substitutefont}
\substitutefont{LGR}{\rmdefault}{udidot}

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

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.