The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
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[@]metanet.ch.

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.