diff docs/_latex/my-doc-fonts.sty @ 299:11f4f4d2ec03 default tip

Update to latest Sphinx customizations
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 06 Jun 2026 12:12:06 +0200
parents 0052d12ec437
children
line wrap: on
line diff
--- a/docs/_latex/my-doc-fonts.sty	Tue Jun 02 12:33:54 2026 +0200
+++ b/docs/_latex/my-doc-fonts.sty	Sat Jun 06 12:12:06 2026 +0200
@@ -13,7 +13,7 @@
 %
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{my-doc-fonts}[%
-  2026/06/02 rv:c7ae4cfc2c5c (Franz Glasner) Fonts for Sphinx generated PDFs]
+  2026/06/06 rv:ddd6d2bb4fdb (Franz Glasner) Fonts for Sphinx generated PDFs]
 \RequirePackage{xkeyval}
 \RequirePackage{fontspec}
 \IfFileExists{xcolor.sty}{%
@@ -23,6 +23,18 @@
     \RequirePackage{color}
 }
 
+\def\if@mdf@optionequalTF#1#2{%
+  \begingroup
+  \edef\@mdf@tmpa{#1}
+  \def\@mdf@tmpb{#2}
+  \ifx\@mdf@tmpa\@mdf@tmpb
+    \aftergroup\@firstoftwo
+  \else
+    \aftergroup\@secondoftwo
+  \fi
+  \endgroup%
+}
+
 \newif\if@mdf@mono@dejavusansmono\@mdf@mono@dejavusansmonofalse
 \newif\if@mdf@mono@cmmono\@mdf@mono@cmmonofalse
 \newif\if@mdf@mono@robotomono\@mdf@mono@robotomonofalse
@@ -48,50 +60,37 @@
 \newif\if@mdf@UseUnicodeMath\@mdf@UseUnicodeMathtrue
 \DeclareOptionX{nomath}{\@mdf@UseUnicodeMathfalse}
 
+\newcommand*{\@mdf@externalname}{}
+\DeclareOptionX{externalname}[custom]{\renewcommand*{\@mdf@externalname}{#1}}
+
+\newcommand*{\@mdf@linespread}{}
+\DeclareOptionX{linespread}[]{\renewcommand*{\@mdf@linespread}{#1}}
+
 \newif\if@mdf@NeedUprightUnicodeMath\@mdf@NeedUprightUnicodeMathfalse
 
-\newif\if@mdf@WithDejaVuSansMono
-\newif\if@mdf@WithCM
-\newif\if@mdf@WithIBMPlex
-\newif\if@mdf@WithIBMPlexDejaVuSansMono
-\newif\if@mdf@WithAdobeSourcePro
-\newif\if@mdf@WithSpectral
-\newif\if@mdf@WithCharter
-\newif\if@mdf@WithLibertinus
-\newif\if@mdf@WithGaramond
-\newif\if@mdf@WithTufte
-\newif\if@mdf@WithTufteHack
-\newif\if@mdf@WithTufteFiraMono
-\newif\if@mdf@WithPalatino
-\newif\if@mdf@WithPalatinoKB
-\newif\if@mdf@WithPalatinoRosario
-\newif\if@mdf@WithCrimson
-\newif\if@mdf@WithCrimsonCabin
-\newif\if@mdf@WithDejaVu
-\newif\if@mdf@WithMerriweather
-\newif\if@mdf@WithLiterata
-\newif\if@mdf@WithLiterataFiraMono
-\newif\if@mdf@WithLiterataRobotoMono
-\newif\if@mdf@WithVollkorn
-\newif\if@mdf@WithErewhon
-\newif\if@mdf@WithGentium
-\newif\if@mdf@WithZillaSlab
-\newif\if@mdf@WithAleo
-\newif\if@mdf@WithLora
-\newif\if@mdf@WithStix
-\newif\if@mdf@WithBaskerville
+% Reset all option related font selection flags
+\def\@mdf@reset@all@font@options{
+  \@mdf@NeedUprightUnicodeMathfalse
+}
+
+
+\gdef\@mdf@option@fonts{}% The original option value
+\gdef\@mdf@option@fonts@selection{}% The effective selection "flag"
 
 % A key compatible with options processing as option "fonts" but choices.
 \define@choicekey*{my-doc-fonts.sty}{fonts}[\val\nr]{%
   % do not change anything: just deactivate the default "dejavusansmono"
   default,
+  external,        % Load font settings from external style files
   % almost no augmentation needed: all characters available
   dejavusansmono,  % use DejaVu Sans Mono as monospaced font
   % the fonts below are augmented for missing characters
   cm,              % assume CM fonts and just fix missing characters
   ibmplex, plex,   % use the IBM Plex family (incl. Math)
+  ibmplex-sans, plex-sans,  % Like ibmplex but switch to sans body
   plex-dejavusansmono,  % use IBM Plex Serif/Sans and DejaVu Sans Mono
   adobesourcepro, adobesource,  % Use Adobe Source Serif/Sans/Mono
+  adobesourcepro-sans, adobesource-sans,  % Like adobesourcepro but sans body
   spectral,        % use Spectral, Source Sans Pro and Source Code Pro
   charter,         % use XCharter (with XCharter Math), Lato and Inconsolata
   libertinus,      % use Libertinus family (incl. Math)
@@ -106,130 +105,123 @@
   crimson-cabin,   % Crimson Pro, Cabin and Source Code Pro (Erewhon Math)
   dejavu,          % All DejaVu fonts (Serif, Sans, Mono)
   merriweather,    % Merriweather, Merriweather Sans, Hack (Concrete Math)
+  merriweather-light, % Merriweather Light, Merriweather Sans Light, DejaVu Sans Mono (Concrete Math)
+  merriweather-sans, % Merriweather, Merriweather Sans, Cascadia Code (Lete Sans Math)
+  merriweather-sans-light, % Merriweather Light, Merriweather Sans Light, Cascadia Code Light (Asana Math)
   literata,            % Literata, Inter, IBM Plex Mono (Concrete Math)
   literata-firamono,   % Literata, Inter, Fira Mono Medium (Concrete Math)
   literata-robotomono, % Literata, Cabin, Roboto Mono (Concrete Math)
-  vollkorn,        % Vollkorn, Jost, Red Hat Mono (STIX 2 Math)
-  erewhon, utopia, % Erewhon, Rosario, XXX, (Erewhon Math)
+  vollkorn,        % Vollkorn, Jost, Cascadia Code (STIX 2 Math)
+  erewhon, utopia, % Erewhon, Rosario, Hack, (Erewhon Math)
   gentium,         % Gentium, Alegreya Sans, JetBrains Mono, (Euler Math)
   zillaslab,       % Zilla Slab, Metropolis, IBM Plex Mono Text, (Concrete Math)
   aleo,            % Aleo, Lato, IBM Plex Mono Text, (Euler Math)
+  lato,            % Lato, Aleo, IBM Plex Mono Text, (Lete Sans Math)
   lora,            % Lora, Libre Franklin, Go Mono, (Asana Math)
   stix,            % STIX 2 Text, Inter, CMU Typewriter Text, (STIX 2 Math)
   baskerville,     % Libre Baskerville, Metropolis Medium, CMU Typewriter Text, (Euler Math)
+  opensans,        % Crimson Pro, Open Sans, IBM Plex Mono, (Erewhon Math)
+  firasans,        % Merriweather, Fira Sans, Fira Mono, (Fira Math)
   }{%
-  % Not used for now : store the normalized option value (global and expanded)
-  \xdef\@mdf@fonts{\val}%
+  % Not used for now : store the gioven option value (global and expanded)
+  \xdef\@mdf@option@fonts{\val}%
+  % Not used for now : store the effective option value (global and expanded)
+  \xdef\@mdf@option@fonts@selection{\val}%
   % Reset all option related font selection flags
-  \@mdf@NeedUprightUnicodeMathfalse
-  \@mdf@WithDejaVuSansMonofalse
-  \@mdf@WithCMfalse
-  \@mdf@WithIBMPlexfalse
-  \@mdf@WithIBMPlexDejaVuSansMonofalse
-  \@mdf@WithAdobeSourceProfalse
-  \@mdf@WithSpectralfalse
-  \@mdf@WithCharterfalse
-  \@mdf@WithLibertinusfalse
-  \@mdf@WithGaramondfalse
-  \@mdf@WithTuftefalse
-  \@mdf@WithTufteHackfalse
-  \@mdf@WithTufteFiraMonofalse
-  \@mdf@WithPalatinofalse
-  \@mdf@WithPalatinoKBfalse
-  \@mdf@WithPalatinoRosariofalse
-  \@mdf@WithCrimsonfalse
-  \@mdf@WithCrimsonCabinfalse
-  \@mdf@WithDejaVufalse
-  \@mdf@WithMerriweatherfalse
-  \@mdf@WithLiteratafalse
-  \@mdf@WithLiterataFiraMonofalse
-  \@mdf@WithLiterataRobotoMonofalse
-  \@mdf@WithVollkornfalse
-  \@mdf@WithErewhonfalse
-  \@mdf@WithGentiumfalse
-  \@mdf@WithZillaSlabfalse
-  \@mdf@WithAleofalse
-  \@mdf@WithLorafalse
-  \@mdf@WithStixfalse
-  \@mdf@WithBaskervillefalse
+  \@mdf@reset@all@font@options
   % Now set the needed font selection flag
   \ifcase\nr\relax
-    \relax
+    \relax% default
   \or
-    \@mdf@WithDejaVuSansMonotrue
+    \relax% external
   \or
-    \@mdf@WithCMtrue
+    \relax% dejavusansmono
   \or
-    \@mdf@WithIBMPlextrue
+    \relax% cm
+  \or
+    \relax % ibmplex
   \or
-    \@mdf@WithIBMPlextrue
-    % Normalize the stored string
-    \gdef\@mdf@fonts{ibmplex}
+    \gdef\@mdf@option@fonts@selection{ibmplex}% plex
+  \or
+    \gdef\@mdf@option@fonts@selection{ibmplex}% ibmplex-sans
+  \or
+    \gdef\@mdf@option@fonts@selection{ibmplex}% plex-sans
   \or
-    \@mdf@WithIBMPlexDejaVuSansMonotrue
+    \relax% plex-dejavusansmono
   \or
-    \@mdf@WithAdobeSourceProtrue
+    \relax% adobesourcepro
+  \or
+    \gdef\@mdf@option@fonts@selection{adobesourcepro}% adobesource
   \or
-    \@mdf@WithAdobeSourceProtrue
-    % Normalize the stored string
-    \gdef\@mdf@fonts{adobesourcepro}
+    \gdef\@mdf@option@fonts@selection{adobesourcepro}% adobesourcepro-sans
+  \or
+    \gdef\@mdf@option@fonts@selection{adobesourcepro}% adobesource-sans
+  \or
+    \relax% spectral
   \or
-   \@mdf@WithSpectraltrue
+    \relax% charter
   \or
-    \@mdf@WithChartertrue
+    \relax% libertinus
   \or
-    \@mdf@WithLibertinustrue
+    \relax% garamond
   \or
-    \@mdf@WithGaramondtrue
+    \relax% tufte
   \or
-    \@mdf@WithTuftetrue
+    \relax% tufte-hack
   \or
-    \@mdf@WithTufteHacktrue
+    \relax% tufte-firamono
   \or
-    \@mdf@WithTufteFiraMonotrue
+    \relax% palatino
   \or
-    \@mdf@WithPalatinotrue
+    \relax% palatino-kb
   \or
-    \@mdf@WithPalatinoKBtrue
+    \relax% palatino-rosario
   \or
-    \@mdf@WithPalatinoRosariotrue
+    \relax% crimson
   \or
-    \@mdf@WithCrimsontrue
+    \relax% crimson-cabin
   \or
-    \@mdf@WithCrimsonCabintrue
+    \relax% dejavu
   \or
-    \@mdf@WithDejaVutrue
+    \relax% merriweather
+  \or
+    \relax% merriweather-light
   \or
-    \@mdf@WithMerriweathertrue
+    \relax% merriweather-sans
   \or
-    \@mdf@WithLiteratatrue
+    \relax% merriweather-sans-light
+  \or
+    \relax% literata
   \or
-    \@mdf@WithLiterataFiraMonotrue
+    \relax% literata-firamono
   \or
-    \@mdf@WithLiterataRobotoMonotrue
+    \relax% literata-robotomono
   \or
-    \@mdf@WithVollkorntrue
+    \relax% vollkorn
   \or
-    \@mdf@WithErewhontrue
+    \relax% erewhon
+  \or
+    \gdef\@mdf@option@fonts@selection{erewhon}% utopia
+  \or
+    \@mdf@NeedUprightUnicodeMathtrue% gentium
   \or
-    \@mdf@WithErewhontrue
-    % Normalize the stored string
-    \gdef\@mdf@fonts{erewhon}
+    \relax% zillaslab
   \or
-    \@mdf@WithGentiumtrue
-    \@mdf@NeedUprightUnicodeMathtrue
+    \@mdf@NeedUprightUnicodeMathtrue% aleo
+  \or
+    \relax% lato
   \or
-    \@mdf@WithZillaSlabtrue
+    \relax% lora
   \or
-    \@mdf@WithAleotrue
-    \@mdf@NeedUprightUnicodeMathtrue
+    \relax% stix
+  \or
+    \@mdf@NeedUprightUnicodeMathtrue% baskerville
   \or
-    \@mdf@WithLoratrue
+    \relax% opensans
   \or
-    \@mdf@WithStixtrue
-  \or
-    \@mdf@WithBaskervilletrue
-    \@mdf@NeedUprightUnicodeMathtrue
+    \relax% firasans
+  \else
+    \PackageError{my-doc-fonts}{Inconsistent font selection!}{}
   \fi
 }
 
@@ -237,9 +229,15 @@
 % By default use the safe option dejavusansmono because is contains
 % all characters without any hacks.
 %
-\ExecuteOptionsX{fonts=dejavusansmono}
+\ExecuteOptionsX{fonts=dejavusansmono,externalname}
 \ProcessOptionsX\relax
 
+%
+% Provide a command (to be redefined if needed) to customize central
+% mono font features
+%
+\newcommand{\@mfd@extra@mono@features}{}
+
 \if@mdf@UseUnicodeMath
   \if@mdf@GlobalUnicodeMath
     \if@mdf@NeedUprightUnicodeMath
@@ -250,18 +248,57 @@
   \fi
 \fi
 
-\if@mdf@WithDejaVuSansMono
+%
+% An command to load DejaVuSans fonts for character substitution
+%
+\def\@mdf@provide@dejavu@mono@families{%
+  \ifdefined\DejaVuSansMono%
+    \relax%
+  \else%
+    \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
+      UprightFont = *,
+      BoldFont = * Bold,
+      ItalicFont = * Oblique,
+      BoldItalicFont = * Bold Oblique,
+      \@mfd@extra@mono@features
+    ]
+  \fi
+  \ifdefined\DejaVuSansCondensed%
+    \relax%
+  \else%
+    \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
+      UprightFont = *,
+      BoldFont = * Bold,
+      ItalicFont = * Oblique,
+      BoldItalicFont = * Bold Oblique,
+      \@mfd@extra@mono@features
+    ]
+  \fi
+}
+
+% Apply a custom lineapread -- if any
+\ifx\@mdf@linespread\@empty\relax\else\linespread{\@mdf@linespread}\fi
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{external}{%
+  \InputIfFileExists{\@mdf@externalname.fonts}{%
+    \PackageInfo{my-doc-fonts}{Loading \@mdf@externalname.fonts font style file}
+  }{%
+    \PackageError{my-doc-fonts}{Style file \@mdf@externalname.fonts not found}{Provide it or change the file}
+  }
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{dejavusansmono}{%
   % default but with DejaVu Sans Mono as monospaced font
   %\RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf}
   %\RequirePackage[mono=true,serif=false,sans=false,math=false]{dejavu-otf}  % all symbols are available
   \@mdf@mono@dejavusansmonotrue
-  \fi
+}{}
 
-\if@mdf@WithCM
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{cm}{%
   \@mdf@mono@cmmonotrue
-\fi
+}{}
 
-\if@mdf@WithIBMPlex
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{ibmplex}{%
   \if@mdf@UseUnicodeMath
     \RequirePackage[%
       DefaultFeatures={Scale=0.92},
@@ -303,9 +340,9 @@
       math=false]{plex-otf}
   \fi
   \@mdf@augment@ibmplexmonotrue
-\fi
+}{}
 
-\if@mdf@WithIBMPlexDejaVuSansMono
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{plex-dejavusansmono}{%
   \if@mdf@UseUnicodeMath
     \RequirePackage[%
       DefaultFeatures={Scale=0.92},
@@ -345,9 +382,9 @@
       math=false]{plex-otf}
   \fi
   \@mdf@mono@dejavusansmonotrue
-\fi
+}{}
 
-\if@mdf@WithAdobeSourcePro
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{adobesourcepro}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Source Serif Pro}[
@@ -368,10 +405,11 @@
       Scale = MatchLowercase,
     ]
   \fi
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 0.97,}
   \@mdf@mono@sscodetrue
-\fi
+}{}
 
-\if@mdf@WithSpectral
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{spectral}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Spectral}[
@@ -389,10 +427,11 @@
   \if@mdf@UseUnicodeMath
     \setmathfont{STIX Two Math}[Scale=MatchLowercase]
   \fi
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 0.98,}
   \@mdf@mono@sscodetrue
-\fi
+}{}
 
-\if@mdf@WithCharter
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{charter}{%
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \RequirePackage{xcharter-otf}% ALWAYS loads also XCharter Math
   \defaultfontfeatures{}% Reset from package
@@ -406,9 +445,9 @@
     Ligatures = TeX,
   ]
   \@mdf@mono@inconsolatatrue
-\fi
+}{}
 
-\if@mdf@WithLibertinus
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{libertinus}{%
   \RequirePackage{newunicodechar}
   \if@mdf@UseUnicodeMath
     \RequirePackage[lining,tabular]{libertinus-otf}
@@ -419,9 +458,9 @@
     \RequirePackage[lining,tabular,nomath]{libertinus-otf}
   \fi
   \@mdf@augment@libertinusmonotrue
-\fi
+}{}
 
-\if@mdf@WithGaramond
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{garamond}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \RequirePackage[lining,tabular]{ebgaramond}
   \defaultfontfeatures{}% Reset from package
@@ -431,10 +470,11 @@
     \setmathfont{Garamond-Math}[range={},Scale=MatchLowercase]
   \fi
   \setsansfont{Libre Franklin}[Scale=MatchLowercase,Ligatures=TeX,Numbers={Lining,Tabular}]
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 1.02,}
   \@mdf@mono@inconsolatatrue
-\fi
+}{}
 
-\if@mdf@WithTufteHack
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{tufte-hack}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{ETbb}
@@ -445,9 +485,9 @@
     \setmathfont{Libertinus Math}[range={},Scale=MatchLowercase]
   \fi
   \@mdf@mono@hackmonotrue
-\fi
+}{}
 
-\if@mdf@WithTufteFiraMono
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{tufte-firamono}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{ETbb}
@@ -458,9 +498,9 @@
     \setmathfont{Libertinus Math}[range={},Scale=MatchLowercase]
   \fi
   \@mdf@mono@firamonotrue
-\fi
+}{}
 
-\if@mdf@WithTufte
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{tufte}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{ETbb}
@@ -471,11 +511,11 @@
     \setmathfont{Libertinus Math}[range={},Scale=MatchLowercase]
   \fi
   \@mdf@mono@dejavusansmonotrue
-\fi
+}{}
 
-\if@mdf@WithPalatino
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{palatino}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
-  \linespread{1.06}
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{TeXGyrePagellaX}
   \setsansfont{Inter}[Scale=MatchLowercase]
@@ -488,11 +528,11 @@
   \fi
   %\@mdf@mono@sscodetrue
   \@mdf@mono@libertinusmonotrue
-\fi
+}{}
 
-\if@mdf@WithPalatinoKB
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{palatino-kb}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
-  \linespread{1.06}
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{TeXGyrePagellaX}
   \setsansfont{Lato}[%
@@ -509,28 +549,29 @@
     \setmathfont{TeX Gyre Pagella Math}[range={},Scale=MatchLowercase]
   \fi
   \@mdf@mono@inconsolatatrue
-\fi
+}{}
 
-\if@mdf@WithPalatinoRosario
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{palatino-rosario}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
-  \linespread{1.06}
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
   \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX}
   \setmainfont{TeXGyrePagellaX}
-  \defaultfontfeatures{Scale=MatchLowercase}
   \setsansfont{Rosario}[%
+    Scale=MatchLowercase,
     UprightFont = * Regular,
     BoldFont = * Bold,
     ItalicFont = * Italic,
     BoldItalicFont = * Bold Italic,
   ]
-  \setmonofont{CMU Typewriter Text}
+  \setmonofont{CMU Typewriter Text}[Scale=MatchLowercase]
   \if@mdf@UseUnicodeMath
-    \setmathfont{Asana Math}[Scale=MatchLowercase]
+    \defaultfontfeatures{Scale=MatchLowercase}
+    \setmathfont{Asana Math}
   \fi
   \@mdf@augment@cmutypewritertexttrue
-\fi
+}{}
 
-\if@mdf@WithCrimson
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{crimson}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}}
   \setmainfont{Crimson Pro}[%
@@ -548,9 +589,9 @@
   %\@mdf@mono@sscodetrue
   %\@mdf@mono@inconsolatatrue
   \@mdf@mono@robotomonotrue
-\fi
+}{}
 
-\if@mdf@WithCrimsonCabin
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{crimson-cabin}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}}
   \setmainfont{Crimson Pro}[%
@@ -566,9 +607,45 @@
   \fi
   %\@mdf@mono@sscodetrue
   \@mdf@mono@inconsolatatrue
-\fi
+}{}
 
-\if@mdf@WithDejaVu
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{opensans}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  \ifx\@mdf@linespread\@empty\linespread{1.05}\fi
+  \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}}
+  \setmainfont{Open Sans}
+  \setmainfont{Crimson Pro}[%
+    Scale = MatchLowercase,
+    SmallCapsFont = Erewhon Regular,
+    SmallCapsFeatures = {Letters=SmallCaps, Scale=MatchLowercase},
+    BoldFeatures = {SmallCapsFont = Erewhon Bold},
+    ItalicFeatures = {SmallCapsFont = Erewhon Italic},
+  ]
+  \setsansfont{Open Sans}[
+    SmallCapsFont = {Montserrat Regular},
+    SmallCapsFeatures = {Letters = SmallCaps, Scale = MatchLowercase, ScaleAgain = 0.99},
+    ItalicFeatures = {SmallCapsFont = {Montserrat Italic}},
+    BoldFeatures = {SmallCapsFont = {Montserrat Bold}},
+    BoldItalicFeatures = {SmallCapsFont = {Montserrat Bold Italic}},
+  ]
+  \setmonofont{IBMPlexMonoText}[%
+    Scale = MatchLowercase,
+    ScaleAgain = 0.96,
+    Extension = .otf,
+    UprightFont= IBMPlexMono-Regular,
+    BoldFont = IBMPlexMono-Bold,
+    ItalicFont = IBMPlexMono-Italic,
+    BoldItalicFont = IBMPlexMono-BoldItalic,
+    SlantedFont = IBMPlexMono-TextItalic,
+  ]
+  \@mdf@augment@ibmplexmonotrue
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{}% Erewhon Math needs this here!
+    \setmathfont{Erewhon Math}[Scale=MatchLowercase]
+  \fi
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{dejavu}{%
   \RequirePackage{newunicodechar}
   % automatically applied with Scale=MatchLowercase,...
   \if@mdf@UseUnicodeMath
@@ -582,6 +659,7 @@
         BoldItalicFeatures = {SmallCapsFont = {XCharter-BoldItalic.otf}},%
       },%
       SS={Scale = 0.92},%
+      TT={Scale=MatchLowercase,FakeStretch=0.98,ScaleAgain=1.02},%
       mono=true,serif=true,sans=true,math=true]{dejavu-otf}
       \setmathfont{XCharter Math}[range={"2713,"2AB7},Scale=MatchLowercase]
       \setmathfont{DejaVu Math TeX Gyre}[range={},Scale=MatchLowercase]
@@ -592,12 +670,13 @@
       RM={%
         Scale = 0.92,% as in dejavu-otf
         SmallCapsFont = {XCharter-Roman.otf},%
-        SmallCapsFeatures={Letters=SmallCaps, Scale=MatchLowercase, ScaleAgain=1.12}},%
+        SmallCapsFeatures={Letters=SmallCaps, Scale=MatchLowercase, ScaleAgain=1.12},%
         ItalicFeatures = {SmallCapsFont = {XCharter-Italic.otf}},%
         BoldFeatures = {SmallCapsFont = {XCharter-Bold.otf}},%
         BoldItalicFeatures = {SmallCapsFont = {XCharter-BoldItalic.otf}},%
       },%
       SS={Scale = 0.92},%
+      TT={Scale=MatchLowercase,FakeStretch=0.98,ScaleAgain=1.02},%
       mono=true,serif=true,sans=true,math=false]{dejavu-otf}
   \fi
   \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
@@ -611,11 +690,11 @@
   \if@mdf@UseUnicodeMath
     \setoperatorfont\symup
   \fi
-\fi
+}{}
 
-\if@mdf@WithMerriweather
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{merriweather}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
-  \linespread{1.06}
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
   \defaultfontfeatures{%
     Scale = 0.92,
     Ligatures = TeX,
@@ -639,9 +718,137 @@
     \RequirePackage[no-text]{concmath-otf}% for concmath-otf
   \fi
   \@mdf@mono@hackmonotrue
-\fi
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{merriweather-light}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
+  \defaultfontfeatures{%
+    Scale = 0.92,
+    Ligatures = TeX,
+    Numbers = {Lining,Tabular},
+    Extension = .otf,
+  }
+  \setmainfont{Merriweather}[%
+    UprightFont = *-Light ,
+    ItalicFont = *-LightItalic ,
+    BoldFont = *-Regular ,
+    BoldItalicFont = *-Italic
+  ]
+  \setsansfont{MerriweatherSans}[%
+    UprightFont = *-Light ,
+    ItalicFont = *-LightItalic ,
+    BoldFont = *-Regular ,
+    BoldItalicFont = *-Italic
+  ]
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{Scale=MatchLowercase}
+    \RequirePackage[no-text]{concmath-otf}% for concmath-otf
+  \fi
+  %\@mdf@mono@hackmonotrue
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 0.98,}
+  \@mdf@mono@dejavusansmonotrue
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{merriweather-sans}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
+  \defaultfontfeatures{%
+    Scale = 0.92,
+    Ligatures = TeX,
+    Numbers = {Lining,Tabular},
+    Extension = .otf,
+  }
+  \setmainfont{Merriweather}[%
+    UprightFont = *-Regular ,
+    ItalicFont = *-Italic ,
+    BoldFont = *-Bold ,
+    BoldItalicFont = *-BoldItalic
+  ]
+  \setsansfont{MerriweatherSans}[%
+    UprightFont = *-Regular ,
+    ItalicFont = *-Italic ,
+    BoldFont = *-Bold ,
+    BoldItalicFont = *-BoldItalic
+  ]
+  \defaultfontfeatures{Ligatures = TeX, Numbers = {Lining,Tabular}}
+  \setmonofont{CascadiaCode}[Scale=MatchLowercase, ScaleAgain=0.98]
+  \@mdf@augment@cascadiacodetrue
+
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{Scale=MatchLowercase}
+    \RequirePackage{lete-sans-math}
+  \fi
+%  \@mdf@mono@hackmonotrue
+}{}
 
-\if@mdf@WithLiterata
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{merriweather-sans-light}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
+  \defaultfontfeatures{%
+    Scale = 0.92,
+    Ligatures = TeX,
+    Numbers = {Lining,Tabular},
+    Extension = .otf,
+  }
+  \setmainfont{Merriweather}[%
+    UprightFont = *-Light ,
+    ItalicFont = *-LightItalic ,
+    BoldFont = *-Regular ,
+    BoldItalicFont = *-Italic
+  ]
+  \setsansfont{MerriweatherSans}[%
+    UprightFont = *-Light ,
+    ItalicFont = *-LightItalic ,
+    BoldFont = *-Regular ,
+    BoldItalicFont = *-Italic ,
+  ]
+  \defaultfontfeatures{Ligatures = TeX, Numbers = {Lining,Tabular}}
+  \setmonofont{CascadiaCode}[
+    Scale = MatchLowercase,
+    ScaleAgain = 0.97,
+    UprightFont = *-Light,
+    ItalicFont = *-LightItalic,
+    BoldFont = *-Regular,
+    BoldItalicFont = *-Italic]
+  \@mdf@augment@cascadiacodetrue
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{}
+    \setmathfont{Asana Math}[Scale=MatchLowercase]
+  \fi
+%  \@mdf@mono@hackmonotrue
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{firasans}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  \defaultfontfeatures{%
+    Ligatures = TeX,
+    Numbers = {Lining,Tabular},
+  }
+  \setmainfont{Fira Sans}
+  %\setmainfont{Andada Pro}[Scale=MatchLowercase]
+  \setmainfont{Merriweather}[%
+    Extension = .otf,
+    Scale = MatchLowercase,
+    UprightFont = *-Regular ,
+    ItalicFont = *-Italic ,
+    BoldFont = *-Bold ,
+    BoldItalicFont = *-BoldItalic
+  ]
+  \setsansfont{Fira Sans}[Scale=MatchLowercase]
+  %\setmonofont{JetBrains Mono}[Scale=MatchLowercase, ScaleAgain=0.98]
+  %\@mdf@augment@jetbrainsmonotrue
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain=0.98}
+  \@mdf@mono@firamonotrue
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{Scale=MatchLowercase}
+    \setmathfont{Fira Math}
+    \setmathfont{Lete Sans Math}[range={"22D0,"2713,"2A04,"2AB7}]
+    \setmathfont{Fira Math}[range={}]
+  \fi
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{literata}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{%
     Ligatures = TeX,
@@ -651,6 +858,7 @@
   \setsansfont{Inter}[Scale=MatchLowercase]
   \setmonofont{IBMPlexMono}[%
     Scale = MatchLowercase,
+    ScaleAgain = 0.98,
     Extension = .otf,
     UprightFont= *-Regular,
     BoldFont = *-Bold,
@@ -663,9 +871,9 @@
     \RequirePackage[no-text]{concmath-otf}
   \fi
   \@mdf@augment@ibmplexmonotrue
-\fi
+}{}
 
-\if@mdf@WithLiterataFiraMono
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{literata-firamono}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{%
     Ligatures = TeX,
@@ -678,10 +886,11 @@
     \defaultfontfeatures{Scale=MatchLowercase}
     \RequirePackage[no-text]{concmath-otf}% for concmath-otf
   \fi
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 0.98,}
   \@mdf@mono@firamonomediumtrue
-\fi
+}{}
 
-\if@mdf@WithLiterataRobotoMono
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{literata-robotomono}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{%
     Ligatures = TeX,
@@ -693,10 +902,11 @@
     \defaultfontfeatures{Scale=MatchLowercase}
     \RequirePackage[no-text]{concmath-otf}% for concmath-otf
   \fi
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain = 0.985,}
   \@mdf@mono@robotomonotrue
-\fi
+}{}
 
-\if@mdf@WithVollkorn
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{vollkorn}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Vollkorn}[
@@ -712,15 +922,15 @@
     ItalicFont = * Italic,
     BoldItalicFont = * Bold Italic,
   ]
-  \setmonofont{CascadiaMono}[Scale=MatchLowercase]
+  \setmonofont{Cascadia Code}[Scale=MatchLowercase]
   \if@mdf@UseUnicodeMath
     \defaultfontfeatures{Scale=MatchLowercase}
     \setmathfont{STIX Two Math}
   \fi
   \@mdf@augment@cascadiacodetrue
-\fi
+}{}
 
-\if@mdf@WithErewhon
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{erewhon}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Erewhon}[
@@ -741,9 +951,9 @@
     \setmathfont{Erewhon Math}
   \fi
   \@mdf@mono@hackmonotrue
-\fi
+}{}
 
-\if@mdf@WithGentium
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{gentium}{%
   \if@mdf@UseUnicodeMath\RequirePackage[math-style=upright]{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Gentium}[
@@ -770,9 +980,9 @@
     %\renewcommand{\rho}{\mbfsansrho}
   \fi
   \@mdf@augment@jetbrainsmonotrue
-\fi
+}{}
 
-\if@mdf@WithZillaSlab
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{zillaslab}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Zilla Slab}[
@@ -808,9 +1018,9 @@
     \RequirePackage[no-text]{concmath-otf}% for concmath-otf
   \fi
   %\@mdf@augment@jetbrainsmonotrue
-\fi
+}{}
 
-\if@mdf@WithAleo
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{aleo}{%
   \if@mdf@UseUnicodeMath\RequirePackage[math-style=upright]{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{Aleo}[
@@ -852,12 +1062,59 @@
     \setmathfont{XCharter Math}[range={"03F1,"1D71A},Scale=MatchLowercase]
     \setmathfont{Euler Math}[range={},Scale=MatchLowercase]
   \fi
-\fi
+}{}
 
-\if@mdf@WithLora
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{lato}{%
+  \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
+  % Normal procecure because no size adjustments are needed
+  \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
+  \setmainfont{Aleo}[
+    Extension = .ttf,
+    UprightFont = {Aleo-VariableFont_wght} ,
+    UprightFeatures = {Instance = Regular} ,
+    ItalicFont = {Aleo-Italic-VariableFont_wght} ,
+    ItalicFeatures = {Instance = Italic} ,
+    BoldFont = {Aleo-VariableFont_wght} ,
+    BoldFeatures = {Instance = Bold} ,
+    BoldItalicFont = {Aleo-Italic-VariableFont_wght} ,
+    BoldItalicFeatures = {Instance = {Bold Italic}} ,
+    SmallCapsFont = {ZillaSlab-Medium.otf} ,
+    SmallCapsFeatures = {Letters=SmallCaps, Scale=MatchLowercase, ScaleAgain=1.1} ,
+    ItalicFeatures = {SmallCapsFont = {ZillaSlab-MediumItalic.otf}} ,
+    BoldFeatures = {SmallCapsFont = {ZillaSlab-Bold.otf}} ,
+  ]
+  \setsansfont{Lato}[%
+    UprightFont = * Regular,
+    BoldFont = * Bold,
+    ItalicFont = * Italic,
+    BoldItalicFont = * Bold Italic,
+    SmallCapsFont = {Raleway Medium},
+    SmallCapsFeatures = {Letters = SmallCaps, Scale = MatchLowercase, ScaleAgain = 1.015},
+    ItalicFeatures = {SmallCapsFont = {Raleway Medium Italic}},
+    BoldFeatures = {SmallCapsFont = {Raleway Bold}},
+  ]
+  \setmonofont{IBMPlexMonoText}[%
+    Scale = MatchLowercase,
+    ScaleAgain = 0.97,
+    Extension = .otf,
+    UprightFont= IBMPlexMono-Text,
+    BoldFont = IBMPlexMono-Bold,
+    ItalicFont = IBMPlexMono-TextItalic,
+    BoldItalicFont = IBMPlexMono-BoldItalic,
+    SlantedFont = IBMPlexMono-TextItalic,
+  ]
+  \@mdf@augment@ibmplexmonotrue
+
+  \if@mdf@UseUnicodeMath
+    \defaultfontfeatures{}
+    \RequirePackage{lete-sans-math}
+  \fi
+}{}
+
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{lora}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
-  \linespread{1.02}
+  \ifx\@mdf@linespread\@empty\linespread{1.04}\fi
   \setmainfont{Lora}[%
     Scale = 0.98,
     UprightFont = * Regular,
@@ -876,13 +1133,14 @@
     \setmathfont{Asana Math}
   \fi
   %\@mdf@mono@libertinusmonotrue
+  \renewcommand{\@mfd@extra@mono@features}{ScaleAgain  = 0.95,}
   \@mdf@mono@gomonotrue
-\fi
+}{}
 
-\if@mdf@WithBaskerville
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{baskerville}{%
   \if@mdf@UseUnicodeMath\RequirePackage[math-style=upright]{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
-  \linespread{1.02}
+  \ifx\@mdf@linespread\@empty\linespread{1.06}\fi
   \setmainfont{Libre Baskerville}[%
     Scale=0.92,
     UprightFont = * Regular,
@@ -918,9 +1176,9 @@
     \setmathfont{Euler Math}[range={}]
   \fi
   \@mdf@augment@cmutypewritertexttrue
-\fi
+}{}
 
-\if@mdf@WithStix
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{stix}{%
   \if@mdf@UseUnicodeMath\RequirePackage{unicode-math}\fi
   \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}}
   \setmainfont{STIX Two Text}[%
@@ -930,13 +1188,13 @@
     BoldItalicFont = * Bold Italic,
   ]
   \setsansfont{Inter}[Scale=MatchLowercase]
-  \setmonofont{CMU Typewriter Text}[Scale=MatchLowercase]
+  \setmonofont{CMU Typewriter Text}[Scale=MatchLowercase, ScaleAgain=0.97]
   \if@mdf@UseUnicodeMath
     \defaultfontfeatures{Scale=MatchLowercase}
     \setmathfont{STIX Two Math}
   \fi
   \@mdf@augment@cmutypewritertexttrue
-\fi
+}{}
 
 %
 % MONO
@@ -952,28 +1210,19 @@
 \if@mdf@mono@dejavusansmono
   \RequirePackage{newunicodechar}
   % automatically applied with Scale=MatchLowercase,...
-  \defaultfontfeatures{%
-    Ligatures=TeX,
-    Numbers={Lining,Tabular}
-  }
-  \RequirePackage[mono=true,serif=false,sans=false,math=false]{dejavu-otf}  % almost all symbols are available
+%  \defaultfontfeatures{%
+%    Ligatures=TeX,
+%    Numbers={Lining,Tabular},
+%    Scale=MatchLowercase,
+%    \@mfd@extra@mono@features
+%  }
+  \RequirePackage[DefaultFeatures={Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase},mono=true,serif=false,sans=false,math=false,TT={\@mfd@extra@mono@features}]{dejavu-otf}  % almost all symbols are available
   \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
 \fi
 
 \if@mdf@mono@cmmono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1017,19 +1266,9 @@
     BoldFont = * Bold,
     ItalicFont = * Italic,
     BoldItalicFont = * Bold Italic,
-  ]
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
+    \@mfd@extra@mono@features
   ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
   \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5
   \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6
@@ -1067,19 +1306,9 @@
     BoldFont = * Bold,
     ItalicFont = * Italic,
     BoldItalicFont = * Bold Italic,
-  ]
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
+    \@mfd@extra@mono@features
   ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
   \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5
@@ -1116,19 +1345,9 @@
     BoldFont = * Bold,
     ItalicFont = * Italic,
     BoldItalicFont = * Bold Italic,
-  ]
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
+    \@mfd@extra@mono@features
   ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1165,19 +1384,8 @@
 
 \if@mdf@mono@hackmono
   \RequirePackage{newunicodechar}
-  \setmonofont{Hack}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \setmonofont{Hack}[\@mfd@extra@mono@features]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{␣}{{\DejaVuSansMono ␣}}% U+2423
   \newunicodechar{⌃}{{\DejaVuSansMono ⌃}}% U+2303
   \newunicodechar{⎈}{{\DejaVuSansMono ⎈}}% U+2388
@@ -1200,6 +1408,7 @@
     ItalicFont = * Oblique,
     BoldFont = * Bold,
     BoldItalicFont = * Bold Oblique,
+    \@mfd@extra@mono@features
   ]
   \@mdf@augment@firamonotrue
 \fi
@@ -1210,6 +1419,7 @@
     ItalicFont = * Medium Oblique,
     BoldFont = * Bold,
     BoldItalicFont = * Bold Oblique,
+    \@mfd@extra@mono@features
   ]
   \@mdf@augment@firamonotrue
 \fi
@@ -1232,12 +1442,15 @@
     BoldItalicFont = *-Regular,
     BoldItalicFeatures={FakeSlant=0.2,RawFeature={embolden=3}},
     Extension      = .otf,
+    \@mfd@extra@mono@features
   ]
   \@mdf@augment@libertinusmonotrue
 \fi
 
 \if@mdf@mono@gomono
-  \setmonofont{Go Mono}[ScaleAgain  = 0.95]
+  \setmonofont{Go Mono}[%
+    \@mfd@extra@mono@features
+  ]
   \@mdf@augment@gomonotrue
 \fi
 
@@ -1252,20 +1465,14 @@
   Numbers={Lining,Tabular}
 }
 
+\if@mdf@optionequalTF{\@mdf@option@fonts@selection}{external}{%
+  \InputIfFileExists{\@mdf@externalname.augment}{%
+  \PackageInfo{my-doc-fonts}{Loading \@mdf@externalname.augment font style file}}{}
+}{}
+
 \if@mdf@augment@ibmplexmono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1304,18 +1511,7 @@
 
 \if@mdf@augment@libertinusmono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1360,18 +1556,7 @@
 
 \if@mdf@augment@redhatmono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1411,18 +1596,7 @@
 
 \if@mdf@augment@cascadiacode
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5
   \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6
   \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7
@@ -1454,18 +1628,7 @@
 
 \if@mdf@augment@jetbrainsmono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{≙}{{\DejaVuSansMono ≙}}% U+2259
   \newunicodechar{⎈}{{\DejaVuSansMono ⎈}}% U+2388
   \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
@@ -1480,18 +1643,7 @@
 
 \if@mdf@augment@firamono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1525,18 +1677,7 @@
 
 \if@mdf@augment@cmutypewritertext
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1572,18 +1713,7 @@
 
 \if@mdf@augment@gomono
   \RequirePackage{newunicodechar}
-  \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
-  \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
-    UprightFont = *,
-    BoldFont = * Bold,
-    ItalicFont = * Oblique,
-    BoldItalicFont = * Bold Oblique,
-  ]
+  \@mdf@provide@dejavu@mono@families
   \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
   \newunicodechar{▹}{{\DejaVuSansMono ▹}}% U+25B9
   \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
@@ -1624,7 +1754,7 @@
 \defaultfontfeatures{}
 
 \def\testmdf{
-  Normalized: \@mdf@fonts\newline
+  Normalized: \@mdf@option@fonts\newline
 }
 
 \endinput