texlive[60913] Master/texmf-dist: microtype (31oct21)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 31 22:08:53 CET 2021


Revision: 60913
          http://tug.org/svn/texlive?view=revision&revision=60913
Author:   karl
Date:     2021-10-31 22:08:53 +0100 (Sun, 31 Oct 2021)
Log Message:
-----------
microtype (31oct21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/microtype/README.md
    trunk/Master/texmf-dist/doc/latex/microtype/microtype.pdf
    trunk/Master/texmf-dist/doc/latex/microtype/test-microtype.tex
    trunk/Master/texmf-dist/source/latex/microtype/microtype-utf.dtx
    trunk/Master/texmf-dist/source/latex/microtype/microtype.dtx
    trunk/Master/texmf-dist/source/latex/microtype/microtype.ins
    trunk/Master/texmf-dist/tex/latex/microtype/letterspace.sty
    trunk/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def
    trunk/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def
    trunk/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def
    trunk/Master/texmf-dist/tex/latex/microtype/microtype.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/microtype.lua
    trunk/Master/texmf-dist/tex/latex/microtype/microtype.sty
    trunk/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-EBGaramond.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-Palatino.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf
    trunk/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
    trunk/Master/texmf-dist/tex/latex/microtype/mt-NewComputerModern.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-basic.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/latex/microtype/mt-FontAwesome.cfg
    trunk/Master/texmf-dist/tex/latex/microtype/mt-Lato.cfg

Modified: trunk/Master/texmf-dist/doc/latex/microtype/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/microtype/README.md	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/doc/latex/microtype/README.md	2021-10-31 21:08:53 UTC (rev 60913)
@@ -4,7 +4,7 @@
 
 **Subliminal refinements towards typographical perfection**
 
-  (v2.8c -- 2021/03/14)
+  (v3.0 -- 2021/10/31)
 
 
 Overview
@@ -33,7 +33,8 @@
 provides the user commands for letterspacing only, omitting support for all
 other extensions.
 
-The documentation can be found in `microtype.pdf`.
+The documentation can be found in `microtype.pdf` (User manual) and
+`microtype-code.pdf` (Implementation).
 
 
 Installation
@@ -55,7 +56,10 @@
   and move all generated files into a directory where LaTeX will find them,
   e.g., `TEXMF/tex/latex/microtype/`.
 
+- To use the latest development version, clone the github repository at
+  `https://github.com/schlcht/microtype` and run `make`.
 
+
 License
 -------
 
@@ -65,11 +69,12 @@
 http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 of all distributions of LaTeX version 2005/12/01 or later.
 
-This work has the LPPL maintenance status 'author-maintained'.
+This work has the LPPL maintenance status 'maintained'.
 
-This work consists of the files `microtype.dtx` and `microtype.ins` and the
-derived files `microtype.sty`, `microtype-pdftex.def`, `microtype-luatex.def`,
-`microtype-xetex.def`, `microtype.lua` and `letterspace.sty`.
+This work consists of the files `microtype.dtx`, `microtype-utf.dtx` and
+`microtype.ins` and the derived files `microtype.sty`, `microtype-pdftex.def`,
+`microtype-luatex.def`, `microtype-xetex.def`, `microtype.lua`, `letterspace.sty`
+and `microtype-show.sty`.
 
 Modified versions of the configuration files (`*.cfg`) may be distributed
 provided that: (1) the original copyright statement is not removed, and

Added: trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf	2021-10-31 21:08:53 UTC (rev 60913)

Property changes on: trunk/Master/texmf-dist/doc/latex/microtype/microtype-code.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/microtype/microtype.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/microtype/test-microtype.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/microtype/test-microtype.tex	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/doc/latex/microtype/test-microtype.tex	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,122 +18,69 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This file might be useful to test protrusion settings for a font.
-%%   You can do whatever you want with it.
+%%   You may do with it whatever you want.
 %% ------------------------------------------------------------------------ 
 %%
 \documentclass{article}
+%% options are passed through to microtype
+\usepackage[stretch=50]{microtype-show}
 
-%% Here you can specify the font you want to test, using
-%% the commands \fontfamily, \fontseries and \fontshape.
-%% Make sure to end all lines with a comment character!
-\newcommand*\TestFont{%
-  \fontfamily{ppl}%
-%%  \fontseries{b}%
-%%  \fontshape{it}% sc, sl
-}
+%% options for microtype-show
+\ShowGlyphIndextrue
+\ShowMissingGlyphstrue
+\def\GlyphScaleFactor{2}
 
-\usepackage{ifthen}
-\usepackage[T1]{fontenc}
-\usepackage[latin1]{inputenc}
-\usepackage[verbose,expansion=alltext,stretch=50]{microtype}
+%% load any required font packages:
+\ifpdftex
+ \usepackage[T1]{fontenc}
+\else
+ \usepackage{fontspec}
+\fi
 
-\pagestyle{empty}
-\setlength{\parindent}{0pt}
-\newcommand*\crulefill{\cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill}
-\newcommand*\testprotrusion[2][]{%
-  \ifthenelse{\equal{#1}{r}}{}{#2}%
-  lorem ipsum dolor sit amet,
-    \ifthenelse{\equal{#1}{r}}{\crulefill}{\leftarrowfill} #2
-    \ifthenelse{\equal{#1}{l}}{\crulefill}{\rightarrowfill}
-  you know the rest%
-  \ifthenelse{\equal{#1}{l}}{}{#2}%
-  \linebreak
-  {\fontencoding{\encodingdefault}%
-  \fontseries{\seriesdefault}%
-  \fontshape{\shapedefault}%
-  \selectfont
-  Here is the beginning of a line, \dotfill and here is its end}\linebreak
-}
-\newcommand*\showTestFont{\expandafter\stripprefix\meaning\TestFont}
-\def\stripprefix#1>{}
-\newcount\charcount
 \begin{document}
-
 \microtypesetup{expansion=false}
 
-{\centering The font in this document is called by:\\
- \texttt{\showTestFont}\par}\bigskip
+%% load your font here:
 
-\TestFont\selectfont
- This line intentionally left empty\linebreak
-%% A -- Z
-\charcount=65
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 91 \repeat
-%% a -- z
-\charcount=97
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 123 \repeat
-%% 0 -- 9
-\charcount=48
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 58 \repeat
-%%
- \testprotrusion[r]{,}
- \testprotrusion[r]{.}
- \testprotrusion[r]{;}
- \testprotrusion[r]{:}
- \testprotrusion[r]{?}
- \testprotrusion[r]{!}
- \testprotrusion[l]{\textexclamdown}
- \testprotrusion[l]{\textquestiondown}
- \testprotrusion[r]{)}
- \testprotrusion[l]{(}
- \testprotrusion{/}
- \testprotrusion{\char`\\}
- \testprotrusion{-}
- \testprotrusion{\textendash}
- \testprotrusion{\textemdash}
- \testprotrusion{\textquoteleft}
- \testprotrusion{\textquoteright}
- \testprotrusion{\textquotedblleft}
- \testprotrusion{\textquotedblright}
- \testprotrusion{\quotesinglbase}
- \testprotrusion{\quotedblbase}
- \testprotrusion{\guilsinglleft}
- \testprotrusion{\guilsinglright}
- \testprotrusion{\guillemotleft}
- \testprotrusion{\guillemotright}
+\ShowCharacterInheritance
 
 \newpage
-The following displays the current font stretched by 5\%,
-normal, and shrunk by 5\%:
+\ShowProtrusion
 
-\bigskip
+\newpage
+%% show single glyphs
+ %\ShowDummyLine
+ %\ShowProtrusionLineGlyph{A}
+ %\ShowProtrusionLineIndex{27}
+
+%% loop through all glyphs of the font;
+%% protrusion values are shown in 1000th of 1em
+ \ShowProtrusionDefined
+
+ %\ShowProtrusionMissing
+
+ %\ShowProtrusionAll
+
+\newpage %% -------------------------------------------------------------------
+This is the current font stretched by 5\%, normal, and shrunk by 5\%:
+
 \newlength{\MTln}
 \newcommand*\teststring
-  {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789}
+  {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}
 \settowidth{\MTln}{\teststring}
 \microtypesetup{expansion=true}
 
-\parbox{1.05\MTln}{\teststring\linebreak\\
-                   \teststring}\par\bigskip
-\parbox{0.95\MTln}{\teststring}
-
+\bigskip\noindent\parbox{1.05\MTln}{\teststring\linebreak\\\teststring}\par
+\bigskip\noindent\parbox{0.95\MTln}{\teststring}
 \end{document}
 \endinput
 %%

Modified: trunk/Master/texmf-dist/source/latex/microtype/microtype-utf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/microtype/microtype-utf.dtx	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/source/latex/microtype/microtype-utf.dtx	2021-10-31 21:08:53 UTC (rev 60913)
@@ -1,7 +1,5 @@
 %\iffalse meta-comment
-% !Mode:: "TeX:DTX:UK"
-% !smartQuote:: "English"
-% !DTXversion:: "2.8b"
+%
 % ------------------------------------------------------------------------
 %                       The `microtype' package
 %         Subliminal refinements towards typographical perfection
@@ -13,11 +11,12 @@
 % http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 % of all distributions of LaTeX version 2005/12/01 or later.
 %
-% This work has the LPPL maintenance status `author-maintained'.
+% This work has the LPPL maintenance status `maintained'.
 %
-% This work consists of the files microtype.dtx and microtype.ins and the
-% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-% microtype-xetex.def, microtype.lua and letterspace.sty.
+% This work consists of the files microtype.dtx, microtype-utf.dtx and
+% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+% and microtype-show.sty.
 %
 % Modified versions of the configuration files (*.cfg) may be distributed
 % provided that: (1) the original copyright statement is not removed, and
@@ -24,15 +23,18 @@
 % (2) the identification string is changed.
 % ------------------------------------------------------------------------
 %
+%<*!EBGaramond>
 \ProvidesFile
+%</!EBGaramond>
 %<*driver>
-    {\jobname.dtx}[2021/03/14 v2.8c]
+    {\jobname.dtx}[2021/10/31 v3.0]
 %</driver>
 %<CharisSIL>  {mt-CharisSIL.cfg}[2017/07/07 v1.1 microtype config. file: Charis SIL (RS)]
 %<LatinModernRoman>  {mt-LatinModernRoman.cfg}[2021/02/21 v1.1 microtype config. file: Latin Modern Roman (RS)]
+%<NewComputerModern>  {mt-NewComputerModern.cfg}[2021/08/08 v1.0 microtype config. file: New Computer Modern (AT)]
 %<Palatino>  {mt-Palatino.cfg}[2012/03/10 v1.0 microtype config. file: Palatino and similar fonts (LBD)]
-%<Lato>  {mt-Lato.cfg}[2021/02/22 v1.0 microtype config. file: Lato (RS)]
-%<FontAwesome>  {mt-FontAwesome.cfg}[2021/02/22 v1.0 microtype config. file: Font Awesome (RS)]
+%<TU-basic>  {mt-TU-basic.cfg}[2021/06/22 v1.1 microtype config. file: fonts with basic glyph set (RS)]
+%<TU-empty>  {mt-TU-empty.cfg}[2021/06/22 v1.1 microtype config. file: fonts with nonstandard glyph set (RS)]
 %<*driver>
 \documentclass[10pt,a4paper]{ltxdoc}
 \usepackage{fontspec}
@@ -44,12 +46,15 @@
 \usepackage{microtype-doc}
 \luatexbase at directlua{luatexbase.remove_from_callback('process_input_buffer', 'luainputenc.fake_utf_read')}
  \def\setmacrofont#1{\par\def\macro at font{#1}\footnotesize}
+ \defaultfontfeatures{RawFeature={notdef=false},WordSpace=2}
+ \def\normalwordspace{\fontdimen2\font=.5\fontdimen2\font}
  \newfontface\LMR{Latin Modern Roman}
+ \newfontface\NCM{NewCM10-Book.otf}[WordSpace=1]
  \newfontface\CharisSIL{Charis SIL}
  \newfontface\Palatino{TeX Gyre Pagella}
+ \newfontface\EBGaramond{EBGaramond-Regular}
 % \newfontface\Palatino[RawFeature={fallback=charisfallback}]{TeX Gyre Pagella}
 % \directlua{luaotfload.add_fallback("charisfallback",{"CharisSIL:color=F70A12;mode=harf;"})}
- \newfontface\Lato{Lato}
 \usepackage{luacode}
 \tracinglostchars2
 % we replace any missing characters (in Palatino) with CharisSIL
@@ -96,7 +101,7 @@
       lastfont = currfont
       if not characters[char] then
         head = node.insert_before(head,n,node.copy(color_push))
-	node.remove(head,node.next(n)) -- remove .notdef char (new in luaotfload 2.98)
+    --  node.remove(head,node.next(n)) -- remove .notdef char (new in luaotfload 2.98)
         node.insert_after(head,n,node.copy(color_pop))
         n.font = fallbackfont
         if not fontcharacters[fallbackfont][char] then -- not even in Charis SIL
@@ -109,6 +114,36 @@
 end
 luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missing glyphs")
 \end{luacode}
+% communicate counters and bookmarks in microtype-utf.tmp
+% (via aux file to get page numbers right)
+\let\UTF at bookmarks\@gobble
+\def\addto at UTF@bookmarks#1{\edef\UTF at bookmarks{\UTF at bookmarks,#1}}
+\def\MT at rempt#1.#2\@nil{#1}
+\def\addtoUTFbookmarks#1{%
+  \protected at write\@auxout{}{%
+    \string\addto at UTF@bookmarks{% page,section,level,heading,label
+      \string\number\numexpr\thepage-\startpage,%
+      \expandafter\MT at rempt\@currentHref\@nil,%
+      \the\c at section@level,\@currentlabelname,#1}}}
+\AddToHook{enddocument/afteraux}{
+  \begingroup
+    \def\setcounter#1#2{\expandafter\ifnum\csname c@#1\endcsname=#2 \else\@tempswatrue\fi}
+    \def\UTF at setbookmarks#1{\MT at ifstreq{#1}{\UTF at bookmarks}\relax\@tempswatrue}
+    \InputIfFileExists{microtype-utf.tmp}\@tempswafalse\@tempswatrue
+    \if at tempswa % only write file if anything has changed
+      \newwrite\utftmp
+      \immediate\openout \utftmp=microtype-utf.tmp
+      \immediate\write   \utftmp{\string\setcounter{CodelineNo}{\the\c at CodelineNo}}
+      \immediate\write   \utftmp{\string\setcounter{footnote}{\the\c at footnote}}
+      \immediate\write   \utftmp{\string\UTF at setbookmarks{\UTF at bookmarks}}
+      \immediate\closeout\utftmp
+    \fi
+  \endgroup}
+\AddToHook{begindocument}{
+  \InputIfFileExists{microtype-code.tmp}\relax\relax
+  \edef\startpage{\thepage}
+  \stepcounter{page}}
+\CodelineIndex
 \DisableCrossrefs
 \RecordChanges
 \begin{document}
@@ -128,25 +163,20 @@
 %\changes{v2.5a}{2013/05/15}{include OpenType configuration files}
 %\changes{v2.6}{2015/12/07}{missing characters printed with Charis <SIL>}
 %\ImplementationSettings
-%\InputIfFileExists{microtype-utf.tmp}\relax\relax
-%\edef\startpage{\thepage}
-%\stepcounter{page}
 %
-%\newwrite\utftmp
-%\immediate\openout\utftmp=microtype.tmp
-%
 %\section{OpenType configuration files}
+%\addtoUTFbookmarks{sec:OpenType}
 %
 % These are the configuration files for the following OpenType fonts:\footnote{This is file \file{\jobname.dtx}.}
 %
 %\begin{itemize}
-%   \item {\LMR
-%           Latin Modern Roman}
-%   \item {\CharisSIL
-%           Charis <SIL>}\footnote{Available at \url{http://software.sil.org/charis}.}
-%   \item {\Palatino
-%           Palatino}\footnote{These settings have been contributed by
-%                              \contributor Loren B. Davis <davislo\at eecs.oregonstate.edu>.}
+%   \item {\LMR\normalwordspace Latin Modern Roman}
+%   \item {\NCM New Computer Modern}\footnote{These settings have been contributed by
+%                              \contributor Antonis Tsolomitis <antonis.tsolomitis\at gmail.com>.}
+%   \item {\CharisSIL\normalwordspace Charis <SIL>}
+%   \item {\EBGaramond\normalwordspace <EB> Garamond}
+%   \item {\Palatino Palatino}\footnote{These settings have been contributed by
+%                              \contributor Loren~B. Davis <davislo\at eecs.oregonstate.edu>.}
 %\end{itemize}
 %
 %\noindent
@@ -154,8 +184,7 @@
 %
 %\subsection{Character inheritance}
 %\GeneralChanges{Inheritance}
-%\edef\x{\string\def\string\utfsectioni{\number\numexpr\thepage-\startpage\relax}}
-%\immediate\write\expandafter\utftmp\expandafter{\x}
+%\addtoUTFbookmarks{sub:OT-inheritance}
 %
 % OpenType fonts may differ considerably in how complete their arsenal of glyphs is.
 % Therefore, each font family should have their own inheritance settings.
@@ -167,16 +196,26 @@
 %%% INHERITANCE
 
 %% for xetex (EU1) and luatex (EU2), resp. both (TU)
-%<*LatinModernRoman>
+%    \end{macrocode}
+%\subsubsection{Latin Modern Roman/New Computer Modern}
+%\addtoUTFbookmarks{subsub:OT-inh-LMR}
+%    \begin{macrocode}
+%<*LatinModernRoman|NewComputerModern>
 \DeclareCharacterInheritance
    { encoding = {EU1,EU2,TU},
-     family   = Latin Modern Roman }
+%<LatinModernRoman>     family   = Latin Modern Roman }
+%<NewComputerModern>     family   = {New Computer Modern} }
 %    \end{macrocode}
 %\changes{v2.8a}{2021/02/21}{specify `ff' ligature as Unicode instead of glyph name}
-%{\setmacrofont\LMR
+%\changes{v3.0}{2021/08/08}{settings for New Computer Modern (provided by
+%                           \contributor Antonis Tsolomitis <antonis.tsolomitis\at gmail.com>)}
+%{\setmacrofont\NCM
 %    \begin{macrocode}
-   { A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ,
-          Α},  % Greek
+   {
+     A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ,
+%<LatinModernRoman>           Α  % Greek
+%<NewComputerModern>           Α,Ά,ᾼ,Ά,Ᾰ,Ᾱ  % Ἁ,Ἂ,Ἃ,Ἄ,Ἅ,Ἆ,Ἇ,ᾈ,ᾉ,ᾊ,ᾋ,ᾌ,ᾍ,ᾎ,ᾏ,Ὰ,  % Greek
+         },
      Æ = {Ǽ},
      B = {฿,
           Β},  % Greek
@@ -184,11 +223,19 @@
      D = {Ð,Ď,Đ,Ḍ,Ḏ},
      E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ȅ,Ẹ,Ẻ,Ẽ,Ề,Ế,Ễ,Ể,Ệ,
           Ε},  % Greek
+%<NewComputerModern>  (l)E = {Έ,Ἐ,Ἑ,Ἒ,Ἓ,Ἔ,Ἕ,Ὲ,Έ}, % Greek accents fully protruded left
      G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ},
      H = {Ĥ,Ħ,Ḥ,Ḧ,Ḫ,
-          Η},  % Greek
+%<LatinModernRoman>           Η  % Greek
+%<NewComputerModern>           Η,ῌ  % Greek
+          },
+%<NewComputerModern>   (l)H = {Ἠ,Ἡ,Ἢ,Ἣ,Ἤ,Ἥ,Ἦ,Ἧ,ᾘ,ᾙ,ᾚ,ᾛ,ᾜ,ᾝ,ᾞ,ᾟ}, % Greek accents fully protruded left
+%<NewComputerModern>  %(l)/uni1FCC.alt = {/uni1F98.alt},
      I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ȉ,Ỉ,Ị,
-          Ι},  % Greek
+%<LatinModernRoman>          Ι  % Greek
+%<NewComputerModern>          Ι,Ῐ,Ῑ  % Greek
+          },
+%<NewComputerModern>  (l)I = {Ἰ,Ἱ,Ἲ,Ἳ,Ἴ,Ἵ,Ἶ,Ἷ,Ὶ,Ί}, % Greek
      J = {Ĵ},
      K = {Ķ,
           Κ},  % Greek
@@ -198,7 +245,9 @@
           Ν},  % Greek
      O = {Ò,Ó,Ô,Õ,Ö,Ø,Ō,Ŏ,Ő,Ọ,Ơ,Ǫ,Ǿ,Ȍ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ỡ,Ở,Ợ,
           Ο},  % Greek
+%<NewComputerModern>  (l)O = {Ό,Ὀ,Ὁ,Ὂ,Ὃ,Ὄ,Ὅ,Ὸ}, % Greek accents except Ό that has indep. protrusion numbers (below)
      P = {Ρ},  % Greek
+%<NewComputerModern>  (l)P = {Ῥ}, % Greek accents fully protruded left
      R = {Ŕ,Ŗ,Ř,Ȑ,Ṛ,Ṙ,Ṝ},
      S = {Ś,Ŝ,Ş,Š,Ș,Ṣ},
      T = {Ţ,Ť,Ț,Ṭ,Ṯ,
@@ -207,6 +256,8 @@
      W = {Ŵ,Ẁ,Ẃ,Ẅ},
      X = {Χ},  % Greek
      Y = {Ý,Ŷ,Ÿ,Ỵ,Ỷ,Ỹ},
+%<NewComputerModern>     Υ = {Ϋ,Ῠ,Ῡ},
+%<NewComputerModern>  (l)Υ = {Ύ,Ὺ,Ύ,Ὑ,Ὓ,Ὕ,Ὗ},
      Z = {Ź,Ż,Ž,Ẓ,
           Ζ},  % Greek
      a = {à,á,â,ã,ä,å,ā,ă,ą,ǻ,ȁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ},
@@ -214,7 +265,7 @@
      c = {ç,ć,ĉ,ċ,č},
      d = {đ,ḍ,ḏ},
      e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ},
-     f = {ff}, % Unicode 64256, glyph name in Latin Modern: /f_f ; in New Computer Modern: /ff
+     f = {ff}, % Unicode 64256, glyph name in Latin Modern Roman: /f_f ; in New Computer Modern: /ff
      g = {ĝ,ğ,ġ,ģ,ǧ,ǵ},
      h = {ĥ,ħ,ḥ,ḧ,ḫ},
      i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ȉ,ỉ,ị},
@@ -222,7 +273,9 @@
      k = {ķ},
      l = {ĺ,ļ,ł,ḷ,ḹ}, % ľ,l·
      n = {ñ,ń,ņ,ň,ṅ,ṇ},
-     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ},
+     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ
+%<NewComputerModern>         ,ο,ό,ὀ,ὁ,ὂ,ὃ,ὄ,ὅ,ὸ,ό % Greek
+         },
      r = {ŕ,ŗ,ř,ȑ,ṛ,ṙ,ṝ},
      s = {ś,ŝ,ş,š,ș,ṣ},
      t = {ţ,ț,ṭ,ṯ,ẗ}, % ť
@@ -230,11 +283,24 @@
      w = {ŵ,ẁ,ẃ,ẅ},
      y = {ý,ŷ,ÿ,ỳ,ỵ,ỷ,ỹ},
      z = {ź,ż,ž,ẓ},
+%<*NewComputerModern>
+     α = {ἁ,ἂ,ἃ,ἄ,ἅ,ἆ,ἇ,ᾀ,ᾁ,ᾂ,ᾃ,ᾄ,ᾅ,ᾆ,ᾇ,ὰ},
+     ε = {έ,ἐ,ἑ,ἒ,ἓ,ἔ,ἕ,ὲ,έ},
+     η = {ἠ,ἡ,ἢ,ἣ,ἤ,ἥ,ἦ,ἧ,ᾐ,ᾑ,ᾒ,ᾓ,ᾔ,ᾕ,ᾖ},
+     ι = {ἰ,ἱ,ὶ,ί,ῐ,ῑ,ϊ,ΐ},
+     ϊ = {ἲ,ἳ,ἴ,ἵ,ἶ,ἷ,ῐ,ῑ,ΐ},
+     υ = {ύ,ὺ,ύ,ὑ,ὓ,ὕ,ὗ,ϋ,ῠ,ῡ,ϋ,ΰ},
+     ω = {ώ,ὠ,ὡ,ὢ,ὣ,ὤ,ὥ,ὦ,ὧ,ᾠ,ᾡ,ᾢ,ᾣ,ᾤ,ᾥ,ᾦ},
+%</NewComputerModern>
    }
 %    \end{macrocode}
 %}
 %    \begin{macrocode}
-%</LatinModernRoman>
+%</LatinModernRoman|NewComputerModern>
+%    \end{macrocode}
+%\subsubsection{Charis SIL}
+%\addtoUTFbookmarks{subsub:OT-inh-Charis}
+%    \begin{macrocode}
 %<*CharisSIL>
 \DeclareCharacterInheritance
    { encoding = {EU1,EU2,TU},
@@ -359,13 +425,233 @@
      ү = {ұ},
      Г = {Γ}, % Greek
      П = {Π}, % Greek
+   % missing: tipa, math, symbols, ...
    }
-
-   % missing: tipa, math, symbols, ...
 %    \end{macrocode}
 %}
 %    \begin{macrocode}
 %</CharisSIL>
+%    \end{macrocode}
+%\subsubsection{EB Garamond}
+%\addtoUTFbookmarks{subsub:OT-inh-EBGaramond}
+%\changes{v3.0}{2021/08/08}{settings for <EB> Garamond (OpenType)}
+%    \begin{macrocode}
+%<*EBGaramond>
+\DeclareCharacterInheritance
+   { encoding = {TU,EU1,EU2},
+     family   = EBGaramond }
+%    \end{macrocode}
+%{\setmacrofont\EBGaramond
+%    \begin{macrocode}
+   {
+     A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǎ,Ǟ,Ǡ,Ǻ,Ȁ,Ȃ,Ȧ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ẵ,Ặ,Å,/Adieresis.deu,
+          А,Ӑ,Ӓ,                % Cyrillic
+          Α,Ά,Ἀ,Ἁ,Ἂ,Ἃ,Ἄ,Ἅ,Ἆ,Ἇ,ᾈ,ᾉ,ᾊ,ᾋ,ᾌ,ᾍ,ᾎ,ᾏ,Ᾰ,Ᾱ,Ὰ,Ά,ᾼ}, % Greek
+% (l)Α   {Ά,Ἀ,Ἁ,Ἂ,Ἃ,Ἄ,Ἅ,Ἆ,Ἇ,ᾈ,ᾉ,ᾊ,ᾋ,ᾌ,ᾍ,ᾎ,ᾏ,Ᾰ,Ᾱ,Ὰ,Ά,ᾼ}, % (accents not protruded)
+     B = {Ḃ,Ḅ,Ḇ,
+          В,                    % Cyrillic
+          Β},                   % Greek
+     C = {Ç,Ć,Ĉ,Ċ,Č,Ḉ,
+          Ϲ,С,Ҫ,                % Cyrillic
+          Ⅽ},                   % Roman numeral
+     D = {Ď,Đ,Ð,Ḋ,Ḍ,Ḏ,Ḑ,Ḓ,
+          Ɖ,Ɗ,                  % Cyrillic
+          Ⅾ},                   % Roman numeral
+     E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ḕ,Ḗ,Ȩ,Ḙ,Ḛ,Ḝ,Ẹ,Ẻ,Ẽ,Ế,Ề,Ể,Ễ,Ệ,Ȅ,Ȇ,
+          Ѐ,Ё,Ӗ,Е,              % Cyrillic
+          Ε},                   % Greek
+  (l)Ε = {Έ,Ἐ,Ἑ,Ἒ,Ἓ,Ἔ,Ἕ,Ὲ,Έ},   % Greek (accents protruded)
+     F = {Ḟ},
+     G = {Ĝ,Ğ,Ġ,Ģ,Ǥ,Ǧ,Ǵ,Ḡ},
+     H = {Ĥ,Ħ,Ȟ,Ḣ,Ḥ,Ḧ,Ḩ,Ḫ,ῌ,Ⱨ,
+          Н,Ң,Ӊ,Ӈ,  %  Ҥ        % Cyrillic
+          Η},                   % Greek
+  (l)Η = {Ή,Ἠ,Ἡ,Ἢ,Ἣ,Ἤ,Ἥ,Ἦ,Ἧ,Ὴ,Ή,ᾘ,ᾙ,ᾚ,ᾛ,ᾜ,ᾝ,ᾞ,ᾟ},
+     I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ǐ,Ȉ,Ȋ,Ḭ,Ḯ,Ỉ,Ị,
+          І,Ї,Ӏ,                % Cyrillic
+          Ι,                    % Greek
+          Ⅰ,Ⅱ,Ⅲ},               % Roman numeral
+  (l)Ι = {Ί,Ϊ,Ἰ,Ἱ,Ἲ,Ἳ,Ἴ,Ἵ,Ἶ,Ἷ,Ῐ,Ῑ,Ὶ,Ί}, % Greek
+     J = {Ĵ,
+          Ј},                   % Cyrillic
+     K = {Ķ,Ǩ,Ḱ,Ḳ,Ḵ,Ⱪ,
+          Κ,K},                 % Greek
+     L = {Ĺ,Ļ,Ľ,Ŀ,Ł,Ḷ,Ḹ,Ḻ,Ḽ,Ⱡ,Ɫ,
+          Ⅼ},                   % Roman numeral
+     M = {Ḿ,Ṁ,Ṃ,
+          М,Ӎ,                  % Cyrillic
+          Μ,                    % Greek
+          Ⅿ},                   % Roman numeral
+     N = {Ñ,Ń,Ņ,Ň,Ŋ,Ǹ,Ṅ,Ṇ,Ṉ,Ṋ,
+          Ν},                    % Greek
+     O = {Ò,Ó,Ô,Õ,Ö,Ø,Ō,Ŏ,Ő,Ǒ,Ǫ,Ǭ,Ǿ,Ȍ,Ȏ,Ȫ,Ȭ,Ȯ,Ȱ,Ṍ,Ṏ,Ṑ,Ṓ,Ọ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ở,Ỡ,Ợ,Ơ,/Odieresis.deu,
+          О,Ӧ,Ө,Ӫ,              % Cyrillic
+          Ο,Ό,Ὀ,Ὁ,Ὂ,Ὃ,Ὄ,Ὅ,Ὸ,Ό}, % Greek
+% (l)Ο = {Ό,Ὀ,Ὁ,Ὂ,Ὃ,Ὄ,Ὅ,Ὸ,Ό}, % (accents not protruded)
+     P = {Ṕ,Ṗ,Ᵽ,
+          Р,Ҏ,                  % Cyrillic
+          Ρ},                   % Greek
+  (l)Ρ = {Ῥ},                   % Greek
+     Q = {Ԛ},                   % Cyrillic
+     R = {Ŕ,Ŗ,Ř,Ȑ,Ȓ,Ṙ,Ṛ,Ṝ,Ṟ,Ɽ,},
+     S = {Ś,Ŝ,Ş,Š,Ș,Ṡ,Ṣ,Ṥ,Ṧ,Ṩ,
+          Ѕ},                   % Cyrillic
+     T = {Ţ,Ť,Ŧ,Ț,Ṫ,Ṭ,Ṯ,Ṱ,
+          Т,Ҭ,                  % Cyrillic
+          Τ},                   % Greek
+     U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ǔ,Ǖ,Ǘ,Ǚ,Ǜ,Ȕ,Ȗ,Ṳ,Ṵ,Ṷ,Ṹ,Ṻ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự}, % /Udieresis.deu ?
+     V = {Ṽ,Ṿ,/U.LAT,
+          Ⅴ},                   % Roman numeral
+     W = {Ŵ,Ẁ,Ẃ,Ẅ,Ẇ,Ẉ,
+          Ԝ},                   % Cyrillic
+     X = {Ẋ,Ẍ,
+          Х,Ҳ,Ӽ,Ӿ,              % Cyrillic
+          Χ,                    % Greek
+          Ⅹ},                   % Roman numeral
+     Y = {Ý,Ŷ,Ÿ,Ȳ,Ẏ,Ỳ,Ỵ,Ỷ,Ỹ,
+          Ү,Ұ},  % Cyrillic
+     Z = {Ź,Ż,Ž,Ẑ,Ẓ,Ẕ,Ⱬ,
+          Ζ},                   % Greek
+     a = {à,á,â,ã,ä,å,ā,ă,ą,ǎ,ǟ,ǡ,ǻ,ȁ,ȃ,ȧ,ḁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ,ặ,ẚ,
+          а,ӑ,ӓ},               % Cyrillic
+     b = {ḃ,ḅ,ḇ},
+     c = {ç,ć,ĉ,ċ,č,ḉ,
+          с,ҫ,                  % Cyrillic
+          ⅽ},                   % Roman numeral
+     d = {ď,đ,ḋ,ḍ,ḏ,ḑ,ḓ,
+          ⅾ},                   % Roman numeral
+     e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȩ,ḕ,ḗ,ḙ,ḛ,ḝ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ,ȅ,ȇ,
+          е,ѐ,ё,ӗ},             % Cyrillic
+     f = {ḟ,ff,/f.long,/f.DEU,/f_f},
+     fl = {ffl,/longs_l,/longs_longs_l,/f_l},
+     fi = {ffi,/longs_i,/longs_longs_i,/f_i},
+     /f.short = {/f_f.short},
+     g = {ĝ,ğ,ġ,ģ,ḡ,ǥ,ǧ,ǵ},
+     h = {ĥ,ħ,ḣ,ḥ,ḧ,ḩ,ḫ,ẖ,ȟ,ⱨ,
+          ԧ,ԧ},                 % Cyrillic
+     i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ǐ,ȉ,ȋ,ḭ,ỉ,ị,ḯ,/i.TRK,
+          і,ї,                  % Cyrillic
+          ⅰ,ⅱ,ⅲ},               % Roman numeral
+     j = {ĵ,ǰ,
+          ј},                   % Cyrillic
+     k = {ķ,ǩ,ḱ,ḳ,ḵ,ⱪ},
+     l = {ĺ,ļ,ľ,ŀ,ł,ḷ,ḹ,ḻ,ḽ,ⱡ,
+          ӏ,                    % palochka
+          ⅼ},                   % Roman numeral
+     m = {ḿ,ṁ,ṃ,
+          ⅿ},                   % Roman numeral
+     n = {ñ,ń,ņ,ň,ŋ,ṅ,ṇ,ṉ,ṋ,ǹ}, % ʼn
+     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ǒ,ǫ,ǭ,ǿ,ȍ,ȏ,ȫ,ȭ,ȯ,ȱ,ṍ,ṏ,ṑ,ṓ,ọ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ở,ỡ,ợ,
+          о,ӧ},                 % Cyrillic
+     p = {ṕ,ṗ,
+          р,ҏ},                 % Cyrillic
+     q = {ԛ},                   % Cyrillic
+     r = {ŕ,ŗ,ř,ȑ,ȓ,ṙ,ṛ,ṝ,ṟ},
+     s = {ś,ŝ,ş,š,ș,ṡ,ṣ,ṥ,ṧ,ṩ,
+          ѕ},                   % Cyrillic
+     t = {ţ,ť,ŧ,ț,ṫ,ṭ,ṯ,ṱ,ẗ},
+     u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ǔ,ǖ,ǘ,ǚ,ǜ,ȕ,ȗ,ṳ,ṵ,ṷ,ṹ,ṻ,ụ,ủ,ứ,ừ,ử,ữ,ự,/u.LATmedi},
+     v = {ṽ,ṿ,
+          ⅴ},                   % Roman numeral
+     w = {ŵ,ẁ,ẃ,ẅ,ẇ,ẉ,ẘ,
+          ԝ},                   % Cyrillic
+     x = {ẋ,ẍ,
+          х,ҳ,                  % Cyrillic
+          ⅹ},                   % Roman numeral
+     y = {ý,ÿ,ŷ,ȳ,ẏ,ẙ,ỳ,ỵ,ỷ,ỹ,
+          у,ӯ,ӱ,ӳ,ў},           % Cyrillic
+     z = {ź,ż,ž,ⱬ,ẑ,ẓ,ẕ},
+     Æ = {Ǣ,Ǽ,
+          Ӕ},                   % Cyrillic
+     æ = {ǣ,ǽ,
+          ӕ},                   % Cyrillic
+     DZ = {DŽ},
+     Dz = {Dž},
+     dz = {dž},
+   % Smallcaps
+     /a.sc = {/A.sc},
+     /ae.sc = {/AE.sc},
+     /d.sc = {/D.sc},
+     /f.sc = {/F.sc},
+     /g.sc = {/G.sc},
+     /j.sc = {/J.sc},
+     /l.sc = {/L.sc},
+     /o.sc = {/O.sc},
+     /oe.sc = {/OE.sc},
+     /q.sc = {/Q.sc},
+     /r.sc = {/R.sc},
+     /t.sc = {/T.sc},
+     /y.sc = {/Y.sc},
+   % Cyrillic
+     Г = {Ґ,Ғ,Ѓ,Ӷ},
+     Ж = {Җ,Ӝ,Ӂ,Ѫ},
+     З = {Ҙ,Ӟ},
+     И = {Й,Ҋ,Ӣ,Ӥ,Ѝ},
+     К = {Қ,Ҝ,Ҟ,Ҡ,Ќ,Ӄ},
+     Л = {Ӆ,Ԓ,Ԯ},
+     П = {Ԥ},
+     У = {Ӯ,Ӱ,Ӳ,Ў},
+     Ц = {Ҵ,Џ},
+     Ч = {Ҷ,Ҹ,Ӌ,Ӵ},
+     Ш = {Щ},
+     Ы = {Ӹ},
+     Ь = {Ҍ},
+     Э = {Ӭ},
+     Ѵ = {Ѷ},
+     Ҽ = {Ҿ},
+     Ә = {Ӛ},
+     г = {ѓ,ґ,ғ,ӷ},
+     ж = {җ,ӂ,ӝ,ѫ},
+     з = {ҙ,ӟ},
+     и = {й,ѝ,ҋ,ӣ,ӥ},
+     к = {ќ,қ,ҝ,ӄ}, % ҟ,ҡ
+     л = {ӆ,ԓ,ԯ},
+     м = {ӎ},
+     н = {ң,ӈ,ӊ,ԩ}, %  ҥ
+     п = {ԥ},
+     т = {ҭ},
+     ц = {ҵ},
+     ч = {ҷ,ҹ,ӌ,ӵ},
+     ш = {щ},
+     ы = {ӹ},
+     э = {ӭ},
+     ѳ = {ө,ӫ},
+     ѵ = {ѷ},
+     ү = {ұ},
+     ҽ = {ҿ},
+     ә = {ӛ},
+   % Greek
+     Υ = {Ϋ,ϒ,ϔ,Ῠ,Ῡ},
+  (l)Υ = {Ύ,ϓ,Ὑ,Ὓ,Ὕ,Ὗ,Ὺ,Ύ},
+  (l)Ω = {Ώ,Ὠ,Ὡ,Ὢ,Ὣ,Ὤ,Ὥ,Ὦ,Ὧ,ᾨ,ᾩ,ᾪ,ᾫ,ᾬ,ᾭ,ᾮ,ᾯ,Ὼ,Ώ},
+     Ω = {ῼ,Ω}, % math
+     Δ = {∆}, % math
+     Π = {∏}, % math
+     α = {ά,ἀ,ἁ,ἂ,ἃ,ἄ,ἅ,ἆ,ἇ,ὰ,ά,ᾀ,ᾁ,ᾂ,ᾃ,ᾄ,ᾅ,ᾆ,ᾇ,ᾰ,ᾱ,ᾲ,ᾳ,ᾴ,ᾶ,ᾷ},
+     ε = {έ,ἐ,ἑ,ἒ,ἓ,ἔ,ἕ,ὲ,έ},
+     η = {ή,ἠ,ἡ,ἢ,ἣ,ἤ,ἥ,ἦ,ἧ,ὴ,ή,ῂ,ῃ,ῄ,ῆ,ῇ,ᾐ,ᾑ,ᾒ,ᾓ,ᾔ,ᾕ,ᾖ,ᾗ},
+     ι = {ί,ϊ,ἰ,ἱ,ἲ,ἳ,ἴ,ἵ,ἶ,ἷ,ὶ,ί,ῐ,ῑ,ῒ,ΐ,ῖ,ῗ,ΐ},
+     ο = {ό,ϙ,ὀ,ὁ,ὂ,ὃ,ὄ,ὅ,ὸ,ό},
+     ρ = {ῤ,ῥ},
+     υ = {ΰ,ϋ,ύ,ὐ,ὑ,ὒ,ὓ,ὔ,ὕ,ὖ,ὗ,ὺ,ύ,ῠ,ῡ,ῢ,ΰ,ῦ,ῧ},
+     ω = {ώ,ὠ,ὡ,ὢ,ὣ,ὤ,ὥ,ὦ,ὧ,ὼ,ώ,ᾠ,ᾡ,ᾢ,ᾣ,ᾤ,ᾥ,ᾦ,ᾧ,ῲ,ῳ,ῴ,ῶ,ῷ},
+   % other
+     ⑴  = {⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇},
+     ⒜  = {⒝,⒞,⒟,⒠,⒡,⒢,⒣,⒤,⒥,⒦,⒧,⒨,⒩,⒪,⒫,⒬,⒭,⒮,⒯,⒰,⒱,⒲,⒳,⒴,⒵},
+     🇦  = {🇧,🇨,🇩,🇪,🇫,🇬,🇭,🇮,🇯,🇰,🇱,🇲,🇳,🇴,🇵,🇶,🇷,🇸,🇹,🇺,🇻,🇼,🇽,🇾,🇿},
+     ! = {‼},
+     ? = {⁇},
+     . = {/onedotenleader},
+     /endash = {/figuredash},
+   }
+%    \end{macrocode}
+%}
+%    \begin{macrocode}
+%</EBGaramond>
+%    \end{macrocode}
+%\subsubsection{Palatino}
+%\addtoUTFbookmarks{subsub:OT-inh-Palatino}
+%    \begin{macrocode}
 %<*Palatino>
 \DeclareCharacterInheritance
    { encoding = {EU1,EU2,TU},
@@ -374,7 +660,7 @@
 % Unfortunately, I don't have a Palatino variant containing all of the following
 % glyphs. The settings are typeset in \TeX\ Gyre Pagella;
 % missing glyphs, printed in red, are taken from Charis <SIL>;
-% glyphs missing even in Charis <SIL> appear as `\char"FFFD@'.
+% glyphs missing even in Charis <SIL> appear as `\char"FFFD'.
 % To see the real settings, consult \file{mt-Palatino.cfg}.
 %{\setmacrofont\Palatino
 %    \begin{macrocode}
@@ -434,62 +720,69 @@
 %    \begin{macrocode}
 %</Palatino>
 %    \end{macrocode}
-% Less characters in the Lato font \dots
+%\subsubsection{Basic glyph set}
+%\addtoUTFbookmarks{subsub:OT-inh-basic}
+% There are quite a few fonts out there that don't even fill the <T1> glyph set.
+% To prevent a plethora of warnings, they may be aliased to the surrogate font
+% |TU-basic|. Examples of such fonts are: Lato, Fontin and Bergamo.
 %\changes{v2.8b}{2021/02/21}{settings for the Lato font (\file{mt-Lato.cfg})
 %                            (reported by \contributor dsedivec <@\at @>)}
 %                            ^^A https://tex.stackexchange.com/questions/380812/microtype-warning-unknown-slot-number-of-character-with-lato-font
+%\changes{v3.0}{2021/06/22}{generalise basic inheritance settings}
 %    \begin{macrocode}
-%<*Lato>
+%<*TU-basic>
 \DeclareCharacterInheritance
    { encoding = {TU,EU1,EU2},
-     family   = {Lato} }
-%    \end{macrocode}
-%{\setmacrofont\Lato
-%    \begin{macrocode}
-   { A = {À,Á,Â,Ã,Ä,Å,Ą},
-     a = {à,á,â,ã,ä,å,ą},
-     C = {Ć,Ç},
-     c = {ć,ç},
+     family   = {TU-basic} }
+   { A = {À,Á,Â,Ã,Ä,Å},
+     a = {à,á,â,ã,ä,å},
+     C = {Ç},
+     c = {ç},
      D = {Ð},
-     E = {È,É,Ê,Ë,Ę},
-     e = {è,é,ê,ë,ę},
+     E = {È,É,Ê,Ë},
+     e = {è,é,ê,ë},
      I = {Ì,Í,Î,Ï},
      i = {ì,í,î,ï,ı},
      L = {Ł},
      l = {ł},
-     N = {Ń,Ñ},
-     n = {ń,ñ},
+     N = {Ñ},
+     n = {ñ},
      O = {Ø,Ò,Ó,Ô,Õ,Ö},
      o = {ø,ò,ó,ô,õ,ö},
-     S = {Ś,Š},
-     s = {ś,š},
+     S = {Š},
+     s = {š},
      U = {Ù,Ú,Û,Ü},
      u = {ù,ú,û,ü},
      Y = {Ý,Ÿ},
+%    \end{macrocode}
+% For some reason, the \"y in the next line comes out as \ss.
+% Don't worry, there's really a |y diaeresis| in the source.
+%    \begin{macrocode}
      y = {ý,ÿ},
-     Z = {Ź,Ż,Ž},
-     z = {ź,ż,ž}
+     Z = {Ž},
+     z = {ž}
    }
+%</TU-basic>
 %    \end{macrocode}
-%}
-%    \begin{macrocode}
-%</Lato>
-%    \end{macrocode}
-% \dots\ and even less in the self-professedly awesone Font Awesome font.
+%\subsubsection{Empty glyph set}
+%\addtoUTFbookmarks{subsub:OT-inh-empty}
+% Other fonts, \eg, the self-professedly awesone Font Awesome font,
+% have no meaningful glyph arsenal at all, and should therefore be
+% aliased so that empty settings are applied.
 %\changes{v2.8b}{2021/02/21}{dummy settings for the Font Awesome font (\file{mt-FontAwesome.cfg})}
+%\changes{v3.0}{2021/06/22}{generalise empty settings}
 %    \begin{macrocode}
-%<*FontAwesome>
+%<*TU-empty>
 \DeclareCharacterInheritance
   { encoding = {TU,EU1,EU2},
-    family   = {FontAwesome} }
+    family   = {TU-empty} }
   { }
-%</FontAwesome>
+%</TU-empty>
 %    \end{macrocode}
 %
 %\subsection{Character protrusion}
 %\GeneralChanges{Protrusion}
-%\edef\x{\string\def\string\utfsectionii{\number\numexpr\thepage-\startpage\relax}}
-%\immediate\write\expandafter\utftmp\expandafter{\x}
+%\addtoUTFbookmarks{sub:OT-protrusion}
 %
 %    \begin{macrocode}
 
@@ -496,14 +789,23 @@
 %%% -----------------------------------------------------------------------
 %%% PROTRUSION
 
-%<*LatinModernRoman>
+%    \end{macrocode}
+%\subsubsection{Latin Modern Roman/New Computer Modern}
+%\addtoUTFbookmarks{subsub:OT-prot-LMR}
+%\changes{v3.0}{2021/08/08}{settings for New Computer Modern (provided by
+%                           \contributor Antonis Tsolomitis <antonis.tsolomitis\at gmail.com>)}
+%\changes{v3.0}{2021/08/13}{fix quotation marks in <LMR>}
+%    \begin{macrocode}
+%<*LatinModernRoman|NewComputerModern>
 \SetProtrusion
-   [ name     = LMR-default ]
+%<LatinModernRoman>   [ name     = LMR-default ]
+%<NewComputerModern>   [ name     = NCM-default ]
    { encoding = {EU1,EU2,TU},
-     family   = Latin Modern Roman }
+%<LatinModernRoman>     family   = Latin Modern Roman }
+%<NewComputerModern>     family   = {New Computer Modern} }
    {
 %    \end{macrocode}
-%{\setmacrofont\LMR
+%{\setmacrofont\NCM
 %    \begin{macrocode}
      A = {50,50},
      Æ = {50,  },
@@ -516,8 +818,14 @@
      W = {50,50},
      X = {50,50},
      Y = {50,50},
+%<NewComputerModern>     /a.end = {,330},
+%<NewComputerModern>     /e.end = {,350},
      k = {  ,50},
+%<NewComputerModern>     /k.alt = { ,50},
      r = {  ,50},
+%<NewComputerModern>     /r.end = {,300},
+%<NewComputerModern>     /m.end = {,200},
+%<NewComputerModern>     /n.end = {,300},
      t = {  ,70},
      v = {50,50},
      w = {50,50},
@@ -551,8 +859,8 @@
      / = {200,300},
     /backslash    = {200,300},
      ' = {300,400}, % /quotesingle
-     ‘ = {500,700},  ’ = {500,600},
-     “ = {500,300},  ” = {200,600},
+     ‘ = {300,400},  ’ = {300,400},
+     “ = {300,300},  ” = {300,300},
      ‚ = {400,400},  „ = {400,400},
      ‹ = {400,400},  › = {300,500},
      « = {300,200},  » = {100,400},
@@ -587,17 +895,106 @@
     /three.oldstyle = { 30, 80},
     /four.oldstyle  = { 50, 50},
     /seven.oldstyle = { 50, 80},
+%<*NewComputerModern>
+     Ά = {50,50},   % /Alphatonos
+     Ὰ = {120,50},  %
+     Ἀ = {120,50},  %
+     Ἁ = {80,50},  %
+     Ἂ = {220,50}, %
+     Ἃ = {220,50}, %
+     Ἄ = {170,50}, %
+     Ἅ = {170,50}, %
+     Ἆ = {190,50}, %
+     Ἇ = {190,50}, %
+     ᾈ = {150,50}, %
+     ᾉ = {80,50},  %
+     ᾊ = {220,50}, %
+     ᾋ = {220,50}, %
+     ᾌ = {170,50}, %
+     ᾍ = {170,50}, %
+     ᾎ = {210,50}, %
+     ᾏ = {210,50}, %
+     /uni1FBC.alt = {,205}, % Alpha prosgegrammeni
+     /uni1F88.alt = {50,190}, %Alpha psili prosgegrammeni
+     /uni1F89.alt = {,200}, %Alpha dasia prosgegrammeni
+     /uni1F8A.alt = {130,180}, %Alpha psili baria prosgegrammeni
+     /uni1F8B.alt = {130,190}, %Alpha dasia baria prosgegrammeni
+     /uni1F8C.alt = {100,190}, %Alpha psili oxia prosgegrammeni
+     /uni1F8D.alt = {70,190}, %Alpha dasia oxia prosgegrammeni
+     /uni1F8E.alt = {120,190}, %Alpha psili perispomeni prosgegrammeni
+     /uni1F8F.alt = {120,190}, %Alpha dasia perispomeni prosgegrammeni
+   %
+     /uni1FCC.alt = {,205}, % Eta prosgegrammeni
+     /uni1F98.alt = {185,170}, %Eta psili prosgegrammeni
+     /uni1F99.alt = {185,170}, %Eta dasia prosgegrammeni
+     /uni1F9A.alt = {220,170}, %Eta psili baria prosgegrammeni
+     /uni1F9B.alt = {220,170}, %Eta dasia baria prosgegrammeni
+     /uni1F9C.alt = {220,170}, %Eta psili oxia prosgegrammeni
+     /uni1F9D.alt = {220,170}, %Eta dasia oxia prosgegrammeni
+     /uni1F9E.alt = {255,170}, %Eta psili perispomeni prosgegrammeni
+     /uni1F9F.alt = {255,170}, %Eta dasia perispomeni prosgegrammeni
+   %
+     Ό = {95,50}, %
+%</NewComputerModern>
      Γ = {   ,180}, % /Gamma
-     Δ = {100,100}, % /Delta
+%<LatinModernRoman>     Δ = {100,100}, % /Delta
+%<NewComputerModern>     Δ = {50,50}, % /Delta
      Θ = { 50, 50}, % /Theta
-     Λ = {100,100}, % /Lambda
+%<LatinModernRoman>     Λ = {100,100}, % /Lambda
+%<NewComputerModern>     Λ = {50,50}, % /Lambda
 %    Ξ = {,},       % /Xi
 %    Π = {,},       % /Pi
      Σ = { 50, 50}, % /Sigma
-     Υ = {100,100}, % /Upsilon
+%<LatinModernRoman>     Υ = {100,100}, % /Upsilon
+%<NewComputerModern>     Υ = {80,80}, % /Upsilon
      Φ = { 50, 50}, % /Phi
      Ψ = { 50, 50}, % /Psi
-%    Ω = {,},       % /Omega
+%<*NewComputerModern>
+     Ω = { 20, 30}, % /Omega
+     Ώ = {150,30},
+     Ὠ = {220,30},
+     Ὡ = {205,30},
+     Ὢ = {285,30},
+     Ὣ = {285,30},
+     Ὤ = {270,30},
+     Ὥ = {270,30},
+     Ὦ = {310,30},
+     Ὧ = {310,30},
+     ᾨ = {205,30},
+     ᾩ = {205,30},
+     ᾪ = {285,30},
+     ᾫ = {285,30},
+     ᾬ = {270,30},
+     ᾭ = {270,30},
+     ᾮ = {310,30},
+     ᾯ = {310,30},
+     /uni1FFC.alt = {,230}, % Omega prosgegrammeni
+     /uni1FA8.alt = {185,190}, %Omega psili prosgegrammeni
+     /uni1FA9.alt = {185,190}, %Omega dasia prosgegrammeni
+     /uni1FAA.alt = {220,190}, %Omega psili baria prosgegrammeni
+     /uni1FAB.alt = {220,190}, %Omega dasia baria prosgegrammeni
+     /uni1FAC.alt = {220,190}, %Omega psili oxia prosgegrammeni
+     /uni1FAD.alt = {220,190}, %Omega dasia oxia prosgegrammeni
+     /uni1FAE.alt = {255,190}, %Omega psili perispomeni prosgegrammeni
+     /uni1FAF.alt = {255,190}, %Omega dasia perispomeni prosgegrammeni
+   %
+     α = {,50},
+     γ = {50,50},
+     ζ = {,50},
+     θ = {30,40},
+     ι = {,50},
+     ϊ = {-20,-30},
+     κ = {50,50},
+     λ = {50,50},
+     ν = {50,25},
+     π = {50,50},
+     σ = {,50},
+     ς = {,50},
+     τ = {50,50},
+     χ = {50,50},
+     ψ = {50,50},
+%     /uni1F98.alt = {,},
+%</NewComputerModern>
 %    \end{macrocode}
 %}
 %    \begin{macrocode}
@@ -604,13 +1001,15 @@
    }
 
 \SetProtrusion
-   [ name     = LMR-it ]
+%<LatinModernRoman>   [ name     = LMR-it ]
+%<NewComputerModern>   [ name     = NCM-it ]
    { encoding = {EU1,EU2,TU},
-     family   = Latin Modern Roman,
+%<LatinModernRoman>     family   = Latin Modern Roman,
+%<NewComputerModern>     family   = {New Computer Modern},
      shape    = {it,sl}       }
    {
 %    \end{macrocode}
-%{\setmacrofont\LMR
+%{\setmacrofont\NCM
 %    \begin{macrocode}
      A = {125,100},
      Æ = {125,-55},
@@ -668,6 +1067,14 @@
      x = {65,-40},
      y = {130,-20},
      z = {110,-80},
+%<*NewComputerModern>
+     /a.end = {,330}, %Fix
+     /e.end = {,350}, %Fix
+     /k.alt = {  ,50}, %Fix
+     /r.end = {,300}, %Fix
+     /m.end = {,200}, %Fix
+     /n.end = {,300}, %Fix
+%</NewComputerModern>
      0 = {170,-85},
      1 = {230,110},
      2 = {130,-70},
@@ -738,19 +1145,115 @@
      Γ = {100,120}, % /Gamma
      Δ = {120,100}, % /Delta
      Θ = {120, 50}, % /Theta
-     Λ = {130,100}, % /Lambda
+%<LatinModernRoman>     Λ = {130,100}, % /Lambda
+%<NewComputerModern>     Λ = {160,100}, % /Lambda
      Ξ = {100,},    % /Xi
      Π = {100,},    % /Pi
      Σ = {100, 50}, % /Sigma
-     Υ = {180,100}, % /Upsilon
+%<LatinModernRoman>     Υ = {180,100}, % /Upsilon
+%<NewComputerModern>     Υ = {260,100}, % /Upsilon
      Φ = {130, 70}, % /Phi
      Ψ = {130, 50}, % /Psi
      Ω = { 50,},    % /Omega
+%<*NewComputerModern>
+     Ὰ = {190,50},  %
+     Ἀ = {220,50},  %
+     Ἁ = {200,50},  %
+     Ἂ = {300,50}, %
+     Ἃ = {300,50}, %
+     Ἄ = {300,50}, %
+     Ἅ = {300,50}, %
+     Ἆ = {320,50}, %
+     Ἇ = {320,50}, %
+     ᾈ = {200,50}, %
+     ᾉ = {200,50},  %
+     ᾊ = {300,50}, %
+     ᾋ = {300,50}, %
+     ᾌ = {300,50}, %
+     ᾍ = {300,50}, %
+     ᾎ = {320,50}, %
+     ᾏ = {320,50}, %
+     /uni1FBC.alt = {,205}, % Alpha prosgegrammeni
+     /uni1F88.alt = {50,190}, %Alpha psili prosgegrammeni
+     /uni1F89.alt = {,200}, %Alpha dasia prosgegrammeni
+     /uni1F8A.alt = {130,180}, %Alpha psili baria prosgegrammeni
+     /uni1F8B.alt = {130,190}, %Alpha dasia baria prosgegrammeni
+     /uni1F8C.alt = {100,190}, %Alpha psili oxia prosgegrammeni
+     /uni1F8D.alt = {70,190}, %Alpha dasia oxia prosgegrammeni
+     /uni1F8E.alt = {120,190}, %Alpha psili perispomeni prosgegrammeni
+     /uni1F8F.alt = {120,190}, %Alpha dasia perispomeni prosgegrammeni
+   %
+     /uni1FCC.alt = {,205}, % Eta prosgegrammeni
+     /uni1F98.alt = {185,170}, %Eta psili prosgegrammeni
+     /uni1F99.alt = {185,170}, %Eta dasia prosgegrammeni
+     /uni1F9A.alt = {220,170}, %Eta psili baria prosgegrammeni
+     /uni1F9B.alt = {220,170}, %Eta dasia baria prosgegrammeni
+     /uni1F9C.alt = {220,170}, %Eta psili oxia prosgegrammeni
+     /uni1F9D.alt = {220,170}, %Eta dasia oxia prosgegrammeni
+     /uni1F9E.alt = {255,170}, %Eta psili perispomeni prosgegrammeni
+     /uni1F9F.alt = {255,170}, %Eta dasia perispomeni prosgegrammeni
+   %
+     Ό = {95,50}, %
+     Ω = {120, 30}, % /Omega
+     Ώ = {160,30},
+     Ὠ = {250,30},
+     Ὡ = {250,30},
+     Ὢ = {300,30},
+     Ὣ = {300,30},
+     Ὤ = {300,30},
+     Ὥ = {300,30},
+     Ὦ = {330,30},
+     Ὧ = {330,30},
+     ῼ = {30,30},
+     ᾨ = {230,30},
+     ᾩ = {230,30},
+     ᾪ = {300,30},
+     ᾫ = {300,30},
+     ᾬ = {300,30},
+     ᾭ = {300,30},
+     ᾮ = {330,30},
+     ᾯ = {330,30},
+     /uni1FFC.alt = {,230}, % Omega prosgegrammeni
+     /uni1FA8.alt = {185,190}, %Omega psili prosgegrammeni
+     /uni1FA9.alt = {185,190}, %Omega dasia prosgegrammeni
+     /uni1FAA.alt = {220,190}, %Omega psili baria prosgegrammeni
+     /uni1FAB.alt = {220,190}, %Omega dasia baria prosgegrammeni
+     /uni1FAC.alt = {220,190}, %Omega psili oxia prosgegrammeni
+     /uni1FAD.alt = {220,190}, %Omega dasia oxia prosgegrammeni
+     /uni1FAE.alt = {255,190}, %Omega psili perispomeni prosgegrammeni
+     /uni1FAF.alt = {255,190}, %Omega dasia perispomeni prosgegrammeni
+   %
+     α = {50,50},
+     γ = {100,50},
+     δ = {30,50},
+     ε = {30,},
+     ζ = {20,50},
+     θ = {30,40},
+     ι = {,50},
+     ϊ = {-20,-30},
+     κ = {50,50},
+     λ = {-20,50},
+     ν = {50,25},
+     ο ={40,},
+     π = {50,50},
+     σ = {40,50},
+     ς = {20,50},
+     τ = {50,50},
+     υ = {80,},
+     φ = {80,},
+     χ = {20,},
+     ψ = {80,},
+%    /uni1F98.alt = {,},
+%</NewComputerModern>
 %    \end{macrocode}
 %}
 %    \begin{macrocode}
    }
-%</LatinModernRoman>
+%</LatinModernRoman|NewComputerModern>
+%    \end{macrocode}
+%\subsubsection{Charis SIL}
+%\addtoUTFbookmarks{subsub:OT-prot-Charis}
+%    \begin{macrocode}
 %<*CharisSIL>
 \SetProtrusion
    [ name     = Charis-default ]
@@ -1091,10 +1594,7 @@
      family   = Charis SIL,
      shape    = {sc}  }
    {
-%    \end{macrocode}
-%{\setmacrofont\CharisSIL
-%    \begin{macrocode}
-    % ᴀ = {100,100}, % etc., doesn't work with \textsc
+%     ᴀ = {100,100}, % etc., doesn't work with \textsc
      /a.\MT at CHARIS@SC = {100,100},
      /c.\MT at CHARIS@SC = {50,  },
      /d.\MT at CHARIS@SC = {  ,50},
@@ -1113,11 +1613,303 @@
      /w.\MT at CHARIS@SC = {50,50},
      /x.\MT at CHARIS@SC = {50,50},
      /y.\MT at CHARIS@SC = {50,50}
+   }
+%</CharisSIL>
 %    \end{macrocode}
+%\subsubsection{EB Garamond}
+%\addtoUTFbookmarks{subsub:OT-prot-EBGaramond}
+%\changes{v3.0}{2021/10/25}{settings for <EB> Garamond (OpenType)}
+%    \begin{macrocode}
+%<*EBGaramond>
+\SetProtrusion
+  [ name     = EBGaramond-TU,
+    load     = EBGaramond-T1-LF ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond }
+  {
+   /one.tosf   = {150,150},
+   /two.tosf   = {50,50},
+   /three.tosf = {50,50},
+   /four.tosf  = {50,50},
+   /five.tosf  = {50,50},
+   /six.tosf   = {50,50},
+   /seven.tosf = {50,80},
+   /eight.tosf = {50,50},
+   /nine.tosf  = {50,50},
+   /one.lf     = {50,50},
+   /two.lf     = {50,50},
+   /four.lf    = {50,50},
+   /seven.lf   = {50,50},
+   /one.osf    = {50,50},
+   /two.osf    = {50,50},
+   /four.osf   = {50,50},
+   /seven.osf  = {50,50},
+%    \end{macrocode}
+%{\setmacrofont\EBGaramond
+%    \begin{macrocode}
+    Ⅳ =  {   , 35},
+    Ⅵ =  { 35,   },
+    Ⅶ  = { 30,   },
+    Ⅷ  = { 25,   },
+    Ⅸ =  {   , 35},
+    Ⅺ =  { 35,   },
+    Ⅻ =  { 30,   },
+    ⅳ =  {   , 25},
+    ⅵ =  { 25,   },
+    ⅶ  = { 20,   },
+    ⅷ  = { 20,   },
+    ⅸ =  {   , 25},
+    ⅺ =  { 25,   },
+    ⅻ  = { 20,   },
+  % textcomp
+   \textquotesingle = {400,500},
+    ˷ = {200,250},
+    ƒ = {   ,100},
+    ₡ = { 50,   },
+    † = {100,100},
+    ‡ = { 80, 80},
+    • = {   ,100},
+    · = {300,400}, % periodcentered
+   /twodotenleader = {150,200},
+   /ellipsis  = {100,150},
+    ℃ = { 80,   },
+    ° = {400,400},
+    ™ = {100,100},
+    © = {100,100},
+    ® = {100,100},
+    ª = {200,200},
+    º = {200,200},
+    ¹ = {200,200},
+    ² = {200,200},
+    ³ = {200,200},
+    ¬ = {200,   },
+    ¶ = {   ,100},
+    − = {300,300}, % minus
+    ± = {150,200},
+    × = {100,150},
+    ÷ = {150,200},
+    € = { 50,100},
+    ¥ = { 50, 50},
+  % Greek
+    Γ = {   ,150},
+    Δ = {100,100},
+    Θ = { 50, 50},
+    Λ = {100,100},
+    Ξ = { 50, 50},
+    Υ = {100,100},
+    Φ = { 50, 50},
+    Ψ = { 50, 50},
+    Ω = {   , 50},
+    ζ = {   , 50},
+    λ = { 50, 50},
+    γ = { 50, 50},
+    π = { 50, 50},
+    ρ = {   , 50},
+    σ = { 50, 50},
+    τ = { 50, 50},
+    χ = { 50, 50},
+    φ = { 50, 50},
+    ϙ = { 50, 50},
+    ψ = { 50, 50},
+  % Cyrillic
+    Г = {   ,150},
+    Д = { 50, 50},
+    Ж = { 50, 50},
+    К = {   , 50},
+    Л = { 50,   },
+    Љ = { 50, 50},
+    З = { 50, 50},
+    У = { 50,100},
+    Ф = { 50, 50},
+    Ч = { 70,   },
+    Я = { 50,   },
+    Ъ = { 50, 50},
+    Ь = {   , 50},
+    ж = { 50, 50},
+    ф = { 50, 50},
+    ъ = { 50, 50},
+    Ѱ = { 50, 50},
+    г = {   , 50},
+    Ѵ = { 50, 50},
+  % other
+    Þ = {   , 50},
+    þ = {   , 50},
+    Ʌ = {100,100},
+    ⑴  = { 35, 65},
+    ⒜  = { 30, 60},
+%    \end{macrocode}
 %}
 %    \begin{macrocode}
-   }
-%</CharisSIL>
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-it-TU,
+    load     = EBGaramond-it-T1-LF ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = it }
+  {
+   /zero.tosf  = {150,150},
+   /one.tosf   = {150,150},
+   /two.tosf   = {80,80},
+   /three.tosf = {50,80},
+   /four.tosf  = {50,80},
+   /five.tosf  = {50,80},
+   /six.tosf   = {50,50},
+   /seven.tosf = {50,100},
+   /eight.tosf = {50,50},
+   /nine.tosf  = {50,80},
+   /one.lf     = {50,50},
+   /two.lf     = {50,50},
+   /three.lf   = {80,50},
+   /four.lf    = {50,50},
+   /five.lf    = {50,50},
+   /six.lf     = {50,50},
+   /seven.lf   = {50,50},
+   /eight.lf   = {50,50},
+   /nine.lf    = {50,  },
+   /one.osf    = {50,50},
+   /two.osf    = {50,50},
+   /three.osf  = {  ,80},
+   /four.osf   = {50,50},
+   /seven.osf  = {50,50},
+%    \end{macrocode}
+%{\setmacrofont\EBGaramond
+%    \begin{macrocode}
+  % textcomp
+    \textquotesingle = {800,100},
+    − = {300,300}, % minus
+    ˷ = {200,250},
+    † = {200,100},
+    ‡ = { 80, 80},
+    • = {300,   },
+    ℃ = {200,   },
+    ƒ = {100,   },
+    ₡ = {100,   },
+    ™ = {200,   },
+    © = {200,100},
+    ® = {200,100},
+    ¬ = {300,   },
+    ° = {500,100},
+    ± = {200,150},
+    ¹ = {300,100},
+    ² = {300,   },
+    ³ = {300,   },
+    · = {300,500}, % periodcentered
+   /twodotenleader = {150,300},
+   /ellipsis  = {100,200},
+    € = {100,   },
+    × = {200,100},
+    ÷ = {200,200},
+    ¶ = {   ,100},
+    ª = {200,200},
+    º = {200,200},
+    ¥ = { 50, 50},
+  % Greek
+    Δ = {150,   },
+    Θ = { 50,   },
+    Λ = {150,   },
+    Υ = {100, 50},
+    Φ = { 50,   },
+    Χ = { 50,   },
+    Ψ = {100,   },
+    Ω = { 50,   },
+    γ = {   , 50},
+    λ = { 50,   },
+  % Cyrillic
+    Ү = { 50,   },
+    Ч = {100,   },
+    З = {100,   },
+  % other
+    Þ = { 50, 50},
+    þ = {   , 50},
+%    \end{macrocode}
+%}
+%    \begin{macrocode}
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-sc-TU,
+    load     = EBGaramond-TU ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = sc }
+  {
+%    \end{macrocode}
+%{\setmacrofont\EBGaramond
+%    \begin{macrocode}
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50},
+  % Greek
+     α = {50,50},
+     γ = {  ,50},
+     δ = {50,50},
+     λ = {50,50},
+     ο = {50,50},
+     τ = {50,50},
+     υ = {50,50},
+     ψ = {50,50},
+  % Cyrillic
+     т = {50,50},
+%    \end{macrocode}
+%}
+%    \begin{macrocode}
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-scit-TU,
+    load     = EBGaramond-it-TU ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = scit }
+  {
+%    \end{macrocode}
+%{\setmacrofont\EBGaramond
+%    \begin{macrocode}
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50},
+  % Greek
+     α = {50,50},
+     γ = {  ,50},
+     δ = {50,50},
+     λ = {50,50},
+     ο = {50,50},
+     τ = {50,50},
+     υ = {50,50},
+     ψ = {50,50},
+  % Cyrillic
+     т = {50,50},
+%    \end{macrocode}
+%}
+%    \begin{macrocode}
+  }
+%</EBGaramond>
+%    \end{macrocode}
+%\subsubsection{Palatino}
+%\addtoUTFbookmarks{subsub:OT-prot-Palatino}
+%    \begin{macrocode}
 %<*Palatino>
 \SetProtrusion
    [ name     = palatino-default ]
@@ -1352,18 +2144,26 @@
 %    \begin{macrocode}
    }
 %</Palatino>
-%<Lato> %% No settings yet.
-%<*FontAwesome>
+%    \end{macrocode}
+%\subsubsection{Basic glyph set}
+% The protrusion settings will still be loaded from \file{microtype.cfg}.
+%\addtoUTFbookmarks{subsub:OT-prot-basic}
+%    \begin{macrocode}
+%<TU-basic> %% No settings.
+%    \end{macrocode}
+%\subsubsection{Empty glyph set}
+%\addtoUTFbookmarks{subsub:OT-prot-empty}
+%    \begin{macrocode}
+%<*TU-empty>
 \SetProtrusion
    [ name = empty ]
    { encoding = {TU,EU1,EU2},
-     family   = {FontAwesome} }
+     family   = {TU-empty} }
    { }
-%</FontAwesome>
+%</TU-empty>
 
 %    \end{macrocode}
-%\immediate\write   \utftmp{\string\setcounter{CodelineNo}{\the\c at CodelineNo}}
-%\immediate\write   \utftmp{\string\setcounter{footnote}{\the\c at footnote}}
-%\immediate\closeout\utftmp
 %
 \endinput
+%
+% % vim: ts=2:sw=2:et:

Modified: trunk/Master/texmf-dist/source/latex/microtype/microtype.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/microtype/microtype.dtx	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/source/latex/microtype/microtype.dtx	2021-10-31 21:08:53 UTC (rev 60913)
@@ -1,7 +1,5 @@
 %\iffalse meta-comment
-% !Mode:: "TeX:DTX:UK"
-% !smartQuote:: "English"
-% !DTXversion:: "2.8c"
+%
 % ------------------------------------------------------------------------
 %                       The `microtype' package
 %         Subliminal refinements towards typographical perfection
@@ -13,11 +11,12 @@
 % http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 % of all distributions of LaTeX version 2005/12/01 or later.
 %
-% This work has the LPPL maintenance status `author-maintained'.
+% This work has the LPPL maintenance status `maintained'.
 %
-% This work consists of the files microtype.dtx and microtype.ins and the
-% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-% microtype-xetex.def, microtype.lua and letterspace.sty.
+% This work consists of the files microtype.dtx, microtype-utf.dtx and
+% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+% and microtype-show.sty.
 %
 % Modified versions of the configuration files (*.cfg) may be distributed
 % provided that: (1) the original copyright statement is not removed, and
@@ -24,35 +23,37 @@
 % (2) the identification string is changed.
 % ------------------------------------------------------------------------
 %
-%<package|letterspace>\NeedsTeXFormat{LaTeX2e}
+%<package|letterspace|show>\NeedsTeXFormat{LaTeX2e}
 %<*driver>
 \ProvidesFile{\jobname.dtx}
 %</driver>
-%<package|letterspace>\ProvidesPackage
-%<config|pdftex-def|luatex-def|xetex-def>\ProvidesFile
+%<package|letterspace|show>\ProvidesPackage
+%<config|pdf-|lua-|xe->\ProvidesFile
 %<package>  {microtype}
 %<letterspace>  {letterspace}
+%<show>  {microtype-show}
 %<m-t>  {microtype.cfg}
-%<pdftex-def>  {microtype-pdftex.def}
-%<luatex-def>  {microtype-luatex.def}
-%<xetex-def>  {microtype-xetex.def}
-%<*package|letterspace|m-t|pdftex-def|luatex-def|xetex-def>
-  [2021/03/14 v2.8c
+%<pdf->  {microtype-pdftex.def}
+%<lua->  {microtype-luatex.def}
+%<xe->  {microtype-xetex.def}
+%<*package|letterspace|m-t|pdf-|lua-|xe-|show>
+  [2021/10/31 v3.0
 %<package>   Micro-typographical refinements
 %<letterspace>   Robust letterspacing
+%<show>  Visual debugging for the microtype package
 %<m-t>   microtype main configuration file
-%<pdftex-def|luatex-def|xetex-def>   Definitions specific to
-%<pdftex-def>   pdftex
-%<luatex-def>   luatex
-%<xetex-def>   xetex
+%<pdf-|lua-|xe->   Definitions specific to
+%<pdf->   pdftex
+%<lua->   luatex
+%<xe->   xetex
    (RS)]
-%</package|letterspace|m-t|pdftex-def|luatex-def|xetex-def>
+%</package|letterspace|m-t|pdf-|lua-|xe-|show>
 %<luafile>microtype        = microtype or {}
 %<luafile>local microtype  = microtype
 %<luafile>microtype.module = {
 %<luafile>    name         = "microtype",
-%<luafile>    version      = "2.8c",
-%<luafile>    date         = "2021/03/14",
+%<luafile>    version      = "3.0",
+%<luafile>    date         = "2021/10/31",
 %<luafile>    description  = "microtype module.",
 %<luafile>    author       = "E. Roux, R. Schlicht and P. Gesang",
 %<luafile>    copyright    = "E. Roux, R. Schlicht and P. Gesang",
@@ -62,7 +63,7 @@
 %<bch>  {mt-bch.cfg}[2007/03/03 v1.5 microtype config. file: Bitstream Charter (RS)]
 %<blg>  {mt-blg.cfg}[2007/07/14 v1.0 microtype config. file: Bitstream Letter Gothic (RS)]
 %<cmr>  {mt-cmr.cfg}[2013/05/19 v2.2 microtype config. file: Computer Modern Roman (RS)]
-%<ebg>  {mt-EBGaramond.cfg}[2021/02/22 v1.6 microtype config. file: EB Garamond / Adobe Garamond (RS)]
+%<ebg>  {mt-EBGaramond.cfg}[2021/10/25 v2.0 microtype config. file: EB Garamond / Adobe Garamond (RS)]
 %<pmn>  {mt-pmn.cfg}[2009/11/14 v1.3 microtype config. file: Adobe Minion (HH/KK)]
 %<ppl>  {mt-ppl.cfg}[2005/11/16 v1.6 microtype config. file: Palatino (RS)]
 %<ptm>  {mt-ptm.cfg}[2006/04/20 v1.7 microtype config. file: Times (RS)]
@@ -81,17 +82,29 @@
 \documentclass[10pt,a4paper]{ltxdoc}
 \makeatletter
 %</driver>
+% Compiling microtype.dtx with the command line option
+% --jobname=microtype-code
+% will produce the document microtype-code.pdf,
+% containing only the Implementation.
+\expandafter\newif\csname ifcodedoc\endcsname
+\edef\@tempa{\jobname}
+\edef\@tempb{\detokenize{microtype-code}}
+\ifx\@tempa\@tempb
+  \codedoctrue
+\fi
+%<docsty>\codedoctrue
 % Let's abolish CM! We use Charter and Letter Gothic
 % (for the pre-built documentation on CTAN):
-\usepackage[T1]{fontenc}
+\usepackage[LGR,T1]{fontenc}
 \usepackage[charter]{mathdesign}
  \def\rmdefault{bch} % not scaled
  \def\sfdefault{SourceSansPro-TLF}
  \def\SourceSansPro at scale{1.02}
- \def\ttdefault{blg}
+\IfFileExists{t1blg.fd}
+ {\def\ttdefault{blg}}
+ {\def\ttdefault{ulg}}
  {\ttfamily\selectfont
-  \DeclareFontShape{T1}{blg}{eb}{n}{<-> ssub * blg/b/n}{}}
-\usepackage{textcomp}
+  \DeclareFontShape{T1}{\ttdefault}{eb}{n}{<-> ssub * \ttdefault/b/n}{}}
 \usepackage{iftex}
 %<*!docsty>
 \ifxetex\else
@@ -99,11 +112,11 @@
 \fi
 %</!docsty>
 \GetFileInfo{\jobname.dtx}
-\usepackage[expansion=false,kerning=true]{microtype}[\filedate]
+\usepackage{microtype}[\filedate]
  \DeclareMicrotypeSet*[protrusion]
       { doc }
       { encoding = {*, TS1, OMS},
-        family   = {rm*, tt*},
+        family   = {rm*, sf*, tt*},
         size     = {footnotesize, small, normalsize} }
  \SetProtrusion
       { encoding = OMS,
@@ -124,41 +137,23 @@
  \DisableLigatures[?,!]{encoding = *, family = rm* }
 \fi
  % Fraktur sample in section \ref{sec:lettersp}
- \IfFileExists{t1mwr.fd}
-   {\def\textfrak##1{{\fontfamily{mwr}\selectfont ##1}}
-    \ifpdf
-      \SetTracking[no ligatures={f,s,c}]{encoding=T1,family=mwr}{120}
-    \fi}
-   {\IfFileExists{yfonts.sty}
+\IfFileExists{t1mwr.fd}
+  {\def\textfrak##1{{\fontfamily{mwr}\selectfont ##1}}
+   \SetTracking[no ligatures={f,s,c}]{encoding=T1,family=mwr}{120}}
+  {\IfFileExists{yfonts.sty}
      {\usepackage{yfonts}
-      \ifpdf
-        \SetTracking[no ligatures={f,s,c}]{encoding=LY,family=yfrak}{120}
-      \fi}
+      \SetTracking[no ligatures={f,s,c}]{encoding=LY,family=yfrak}{120}}
      {\def\textfrak{\rule{.5em}{1.5ex}\@gobble}}}
-\ifpdftex\else
-  \microtypesetup{kerning=false}
+\ifpdftex
+  \microtypesetup{kerning=true}
 \fi
-\tolerance=700
+\ifluatex % microtype.dtx finally compiles with 0.35!
+  \usepackage{luatex85}
+\fi
 \ifpdf
-  \ifluatex % microtype.dtx finally compiles with 0.35!
-    \def\pdftexversion{200} % in TeX Live 2015, they let this to \luatexversion
-    \let\pdfxform                    \saveboxresource
-    \let\pdflastxform                \lastsavedboxresourceindex
-    \protected\edef\pdfminorversion  {\pdfvariable minorversion}
-    \protected\def\pdfobj            {\pdfextension obj }
-    \protected\def\pdfcatalog        {\pdfextension catalog }
-    \protected\def\pdfannot          {\pdfextension annot }
-    \protected\def\pdfoutline        {\pdfextension outline }
-    \protected\def\pdfmapline        {\pdfextension mapline }
-    \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
-    \protected\def\pdflastobj        {\numexpr\pdffeedback lastobj\relax}
-  \fi
-  \ifnum\pdftexversion<140 \else % pdftex 1.40, including textmatrix patch,
-    \microtypesetup{expansion=alltext,step=1} % hence we can activate expansion ...
-    \tolerance=300         % ... and make TeX almost as intolerant as it normally is
-    \g at addto@macro\macrocode{\microtypesetup{expansion=false}}
-    \pdfminorversion=5 % for the OCGs (default since TeX Live 2010)
-  \fi
+  \microtypesetup{expansion=alltext} % with activated expansion ...
+  \tolerance=300 %     ... we can make TeX almost as intolerant as it normally is
+  \g at addto@macro\macrocode{\microtypesetup{expansion=false}}
   % bonus material
   \InputIfFileExists{microtype-logo.dtx}\relax\relax
   \InputIfFileExists{microtype-lssample.dtx}\relax\relax
@@ -179,6 +174,7 @@
  \definecolor{theframe}  {gray}{0.75}
  \definecolor{theshade}  {gray}{0.94}
 \usepackage{graphicx}
+\usepackage{etoolbox}
 % general layout
 \frenchspacing
 \DeclareRobustCommand\textoractual[2]{\ifpdf
@@ -196,7 +192,7 @@
   \setlength\textheight{49\baselineskip}
 \else
   \let\bfdefault\bfdefault at previous % undo mathdesign's \def\bfdefault{b}
-  \def\Module#1{{\color{theblue}\textoractual{$\langle$}{<}\textit{#1}\textoractual{$\rangle$}{>}}}
+  \def\Module#1{{\color{theblue}\textoractual{$\langle$}{<}\texttt{\itshape#1}\textoractual{$\rangle$}{>}}}
   \DeclareRobustCommand\TeX{\textoractual{T\kern-.1em\lower.4ex\hbox{E}\kern-.075emX\@}{TeX}}
   \DeclareRobustCommand\LaTeX{\textoractual{L\kern-.26em{\sbox\z@ T\vbox to\ht\z@{%
      \hbox{\check at mathfonts\fontsize\sf at size\z@\math at fontsfalse\selectfont A}%
@@ -212,20 +208,11 @@
 \addtolength\textheight{\topskip}
 \setlength\topmargin{5pt}
 % sections
-%\def\@seccntformat#1{\setbox0\hbox to0pt{\hss\colorbox{theshade}{\space\color{sectioning}\csname the#1\endcsname\strut\space}\hskip\marginparsep}\ht0=0pt \dp0=0pt \box0}
 \def\@seccntformat#1{\llap{\csname the#1\endcsname\hskip\marginparsep}}
-\def\section{\@startsection {section}{1}{\z@}%
-  {-3.5ex \@plus -1ex \@minus -.2ex}%
-  {2.3ex \@plus.2ex}%
-  {\normalfont\Large\ifcmr\fontseries{bx}\else\fontseries{eb}\fi\sffamily\color{sectioning}}}
-\def\subsection{\@startsection{subsection}{2}{\z@}%
-  {-3.25ex\@plus -1ex \@minus -.2ex}%
-  {1.5ex \@plus .2ex}%
-  {\normalfont\large\ifcmr\fontseries{bx}\else\fontseries{eb}\fi\sffamily\color{sectioning}}}
-\def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
-  {-3.25ex\@plus -1ex \@minus -.2ex}%
-  {1.5ex \@plus .2ex}%
-  {\normalfont\normalsize\ifcmr\fontseries{bx}\else\fontseries{eb}\fi\sffamily\color{sectioning}}}
+\def\MTsectionfont{\ifcmr\fontseries{bx}\else\fontseries{eb}\fi\sffamily\color{sectioning}}
+\patchcmd\section      {\bfseries}{\MTsectionfont}\relax\relax
+\patchcmd\subsection   {\bfseries}{\MTsectionfont}\relax\relax
+\patchcmd\subsubsection{\bfseries}{\MTsectionfont}\relax\relax
 \def\paragraph{\@startsection{paragraph}{4}%
   {0pt}{8pt plus 2pt minus 1pt}{-1em}%
   {\normalfont\normalsize\itshape}}
@@ -232,12 +219,13 @@
 % title
 \def\@maketitle{%
   \newpage\null\vskip 2em
-  \begin{center}\let\footnote\thanks\sffamily
-    {\huge \@title\par}\vskip 1.5em
-    {\large \parbox{.33\textwidth}{\centering\@author}%
-            \parbox{.33\textwidth}{\centering\@date}}%
-  \vskip2.5em\rule{\textwidth}{.4pt}%
-  \end{center}\par\vskip1.5em}
+  \begin{center}\sffamily
+    {\huge \@title\par\vskip 1.5em}%
+    {\large\hspace{4.5em}\parbox{.33\textwidth}{\@author}%
+                         \parbox{.33\textwidth}{\@date}\par\vskip 1em
+           \textls*[-20]{\url{\githuburl}}}%
+    \vskip 2.5em\rule{\textwidth}{.4pt}%
+  \end{center}\par\vskip 1.5em}
 \def\abstractname{}
 % headers
 \headheight=15pt
@@ -255,24 +243,17 @@
 % toc
 \let\l at section@\l at section
 \def\l at section{\vskip -1.25ex\l at section@}
-\def\l at subsection{\vskip.35ex \penalty\@secpenalty \@dottedtocline{2}{1.5em}{2.7em}}
+\def\l at subsection{\vskip.35ex \penalty\@secpenalty \@dottedtocline{2}{1.5em}{2.2em}}
 \def\l at subsubsection#1#2{%
-  \leftskip 4.2em
+  \leftskip 3.7em
   \rightskip 2em plus 2em
   \parindent 0pt
   {\let\numberline\@gobble{\small #1~[#2]}}}
 \def\l at table{\@dottedtocline{1}{0pt}{1.5em}}
 \def\@pnumwidth{1.7em}
-\ifpdf
-  \let\ORIGpdfoutline\pdfoutline
-  \def\special at outlines{attr{/F 01}}
-  \def\normaloutline {\protected at write\@outlinefile{}{\let\pdfoutline \ORIGpdfoutline}}
-  \def\specialoutline{\protected at write\@outlinefile{}{\def\pdfoutline{\ORIGpdfoutline\special at outlines}}}
-  \g at addto@macro\appendix{\specialoutline}
-\fi
 \def\defspecial at toc#1#2#3{\long\def#1{%
-  \ifpdf\phantomsection\specialoutline\pdfbookmark[1]{#2}{#3}\normaloutline\fi
-  \section*{#2}\@mkboth{\textls*[70]{\MakeUppercase{#2}}}{}%
+  \ifpdf\phantomsection\bookmarksetupnext{italic}\pdfbookmark[1]{#2}{#3}\fi
+  \section*{#2}\@mkboth{\textls*[70]{\MakeUppercase{\contentsname}}}{}%
   \@starttoc{#3}}}
 \defspecial at toc\tableofcontents\contentsname{toc}
 \defspecial at toc\listoftables\listtablename{lot}
@@ -280,19 +261,19 @@
 \def\@cite#1#2{#1\if at tempswa, #2\fi}
 \def\thebibliography#1{%
   \section{\refname}%
-  \list{}{\leftmargin 0pt}%
-  \sloppy
+  \list{}{\leftmargin 0pt}% \sloppy
   \clubpenalty 4000
   \@clubpenalty \clubpenalty
   \widowpenalty 4000}
 \def\@biblabel#1{}
 % footnotes
+\def\@makefnmark{\raisebox{0.3ex}{\sffamily\footnotesize\,\@thefnmark}}
 \long\def\@makefntext#1{%
   \leftskip 0pt
   \parindent 0pt
   \everypar{\parindent 0pt}%
-  \leavevmode\llap{\@thefnmark\hskip\marginparsep}#1}
-\renewcommand\footnoterule{%
+  \leavevmode\llap{\sffamily\@thefnmark\hskip\marginparsep}#1}
+\def\footnoterule{%
   \kern-3\p@
   \hrule\@width \columnwidth
   \kern2.6\p@}
@@ -340,8 +321,7 @@
 \setlength\fboxsep{3pt}
 \setlength\arrayrulewidth{0.4pt}
 % tables
-\def\topfraction{1}
-\def\textfraction{0}
+\usepackage{tabularx}
 \setlength\tabcolsep{2pt}
 \newbox\mt at box
 \newdimen\mt at unvdimen
@@ -357,19 +337,27 @@
   \vskip-\mt at unvdimen}
 % index and change log
 \IndexPrologue{\section{Index}%
-  Numbers in upright shape refer to the page where the corresponding entry is described
-  (bold face) resp. occurs. Numbers in italics refer to the code line
-  where the corresponding entry is defined (underlined) resp. used.}
-\GlossaryPrologue{\section{Change history}\label{sec:changes}\vspace*{-\multicolsep}}
+  \ifcodedoc
+  Numbers in upright shape refer to the \textit{page} where the corresponding entry
+  is described (bold face) resp. occurs.
+  Numbers in italics refer to the \textit{code line} where the corresponding entry
+  is defined (underlined) resp. used.
+  Numbers prefixed with `U' refer to the User manual.
+  \fi
+}
+\GlossaryPrologue{\section{Change history}\label{sec:changes}%
+  \ifcodedoc \PrintHistory \par\medskip\noindent
+    Numbers prefixed with `U' refer to the User manual.\fi
+  \vspace*{-\multicolsep}}
  %\setcounter{finalcolumnbadness}{100}
  %\raggedcolumns
 \setcounter{IndexColumns}{2}
 \def\IndexMin{12\baselineskip}
 \g at addto@macro\IndexParms{%
-  \footnotesize
+  \ifcodedoc\footnotesize\else\small\fi
   \def\indexspace#1{%
     \end{multicols}
-    \vspace*{-2\baselineskip}%
+    \vspace{-20pt}%
     \begin{multicols}{2}
       \ifpdf{\let\bfseries\empty\let\hfil\empty\phantomsection\pdfbookmark[2]{#1}{#1}}\fi
       \setbox0\hbox{\sffamily\hss#1}%
@@ -392,11 +380,71 @@
         \llap{\mdseries\color{thegrey}\footnotesize
               \csname MTversiondate##2\endcsname\hskip\marginparsep}%
          Version ##2\else ##2\fi}][6\baselineskip]
+      \label{sub:changes:##2}%
       \GlossaryParms \rightskip 15pt plus 5pt
       \let\item\@idxitem
       \ignorespaces \makeatletter \scan at allowedfalse}%
   \def\subitem{\par\hangindent 15pt}%
   \def\subsubitem{\subitem\hspace*{7.5pt}}}
+% change history
+% (lots of the following stolen from Tom Bombadil's answer:
+%  https://tex.stackexchange.com/a/61251/7674)
+%<*!docsty>
+\ifcodedoc
+\usepackage{tikz,pgfcalendar}
+\usetikzlibrary{calc}
+\newcounter{MThistitem}
+\def\MThistlastnode{n-0}
+\pgfmathsetmacro{\MThistfirstyear}{2004} % v1.0 2004/09/11
+\pgfmathsetmacro{\MThistlastyear}{\year}
+\pgfmathsetmacro{\MThistyears}{\MThistlastyear-\MThistfirstyear}
+\pgfmathsetmacro{\MThistvsep}{1.75}
+\pgfmathsetmacro{\MThisthshift}{3}
+\pgfmathsetmacro{\MThistnodewidth}{3mm}
+\def\MThistprepare{%
+  \pgfmathsetmacro{\MThistnodesep}{(\textwidth+\MThisthshift cm-\MThistnodewidth-1pt)/\theMThistitem}
+  \setcounter{MThistitem}{0}
+  \node[inner sep=0pt] (n-0) at (-\MThisthshift,\MThistvsep) {}; }
+\let\MThistshow\@empty
+\def\MThist at versiondate#1#2{% count items and reverse order
+  \gpreto\MThistshow{\MT at doversion{#1}{#2}}
+  \stepcounter{MThistitem}}
+\def\MT at doversion#1#2{%
+  \stepcounter{MThistitem}
+  \node[right=\MThistnodesep,text width=\MThistnodewidth,inner sep=1pt,outer sep=0pt,fill=theshade,align=center]
+       (n-\theMThistitem) at (\MThistlastnode.west) {\hyperref[sub:changes:#1]{#1\strut}};
+  \draw (n-\theMThistitem.north west) -- (n-\theMThistitem.north east);
+  \draw (n-\theMThistitem.south west) -- (n-\theMThistitem.south east);
+  \MThist at splitdate#2\relax
+  \pgfcalendardatetojulian{\MTYear-\MTMonth-\MTDay}{\@tempcnta}
+  \pgfcalendardatetojulian{\MTYear-1-1}{\@tempcntb}
+  \advance\@tempcnta-\@tempcntb
+  \pgfmathsetmacro{\MTDate}{\MTYear-\MThistfirstyear+\@tempcnta/365}
+  \expandafter\edef\csname MThistnodetime\theMThistitem\endcsname{\MTDate}
+  \edef\MThistlastnode{n-\theMThistitem}}
+\def\MThist at splitdate#1/#2/#3\relax{\def\MTYear{#1}\def\MTMonth{#2}\def\MTDay{#3}}
+\def\MThisttimeline{%
+  \draw[very thick,-latex] (0,0) -- ($(\MThistlastnode.east)-(0,\MThistvsep)+(1,0)$) ;
+  \path (n-\theMThistitem.east); \pgfgetlastxy{\MT at tempdim}{\@tempdima};
+  \pgfmathsetmacro{\MThistxposition}{\MT at tempdim/28.452755}
+  \foreach \x in {1,...,\theMThistitem}{
+    \pgfmathsetmacro{\MThisttimeposition}{\MThistxposition/(\MThistlastyear-\MThistfirstyear)*\csname MThistnodetime\x \endcsname}
+    \draw[rounded corners=2pt] (\MThisttimeposition,0) -- (\MThisttimeposition,0.5) -- ($(n-\x.south)-(0,0.5)$) -- (n-\x.south); }
+  \foreach \x in {0,...,\MThistyears}{
+    \pgfmathsetmacro{\MThistlabelposition}{\MThistxposition/(\MThistlastyear-\MThistfirstyear)*\x}
+    \node[below] (label-\x) at (\MThistlabelposition,-0.2) {\number\numexpr\MThistfirstyear+\x};
+    \draw (label-\x.north) -- ++ (0,0.2); }}
+\def\PrintHistory{%
+  \InputIfFileExists{microtype-hist.tmp}{\let\VersionDate\MThist at versiondate\@firstofone}\@gobble
+   {\hypersetup{linkcolor=thered}%
+    \hspace{-\MThisthshift cm}%
+    \rlap{\begin{tikzpicture}[color=thegrey,font=\fontsize{4.5}{6}\selectfont]
+      \MThistprepare
+      \MThistshow
+      \MThisttimeline
+    \end{tikzpicture}}}}
+\fi
+%</!docsty>
 % macro code
 \MacroTopsep=0pt
 \MacrocodeTopsep=3pt
@@ -404,7 +452,7 @@
 \def\theCodelineNo{\reset at font\sffamily\color{thegrey}\scriptsize
   \textoractual{\arabic{CodelineNo}\ }{}}% don't copy line numbers
 \def\MacroFont{\ttfamily\small}
-\def\AltMacroFont{\ttfamily\footnotesize}
+\setcounter{StandardModuleDepth}{99}
 \def\PrintMacroName#1{\strut\MacroFont\string #1\hskip15pt}
 \def\ImplementationSettings{%
   \linespread{1}%
@@ -423,7 +471,7 @@
   \begingroup\MakePrivateLetters\Describe at Package}
 \def\Describe at Package#1{\endgroup
   \marginpar{\raggedleft\PrintDescribeOption{#1.sty}}%
-  \CatIndex{#1}{package}\@esphack\ignorespaces}
+  \CatMainIndex{#1}{package}\@esphack\ignorespaces}
 \def\DescribeValues#1#2{%
   \let\@tempa\@empty \let\Option at default\@empty
   \@for\@tempb:=#2\do{%
@@ -452,18 +500,24 @@
 \def\MaybeDefault#1{\textrm{*}\,#1}
 \def\OptionSep{{\rmfamily, }} \def\MacroSep{\,} \def\EnvironmentSep{\,}
 \def\PrintValues[#1]{{\MacroFont\expandafter\@gobble\@tempa\hfill #1}\\*[.25\baselineskip]}
-\def\CatIndex#1#2{\index{#1\actualchar{\protect\ttfamily #1} (#2)\encapchar hyperpage}}
-\def\CatIndeX#1#2#3{\index{#2\actualchar#1\ (#3)\encapchar hyperpage}}
+\def\CatIndex#1#2{\index{#1\actualchar{\protect\ttfamily #1} (#2)\encapchar \ifcodedoc\else doc\fi hyperpage}}
+\def\CatIndeX#1#2#3{\index{#2\actualchar#1\ (#3)\encapchar \ifcodedoc\else doc\fi hyperpage}}
+\def\CatMainIndex#1#2{\index{#1\actualchar{\protect\ttfamily #1} (#2)\encapchar docmain}}
 \def\SpecialOptionIndex#1{\@bsphack
   \index{\quotechar/#1% sort options as `Symbols'
-    \actualchar{\protect\ttfamily#1}\encapchar usage}%
-  \CatIndex{#1}{option}\@esphack}
+    \actualchar{\protect\ttfamily#1}\encapchar docmain}%
+  \CatMainIndex{#1}{option}\@esphack}
 \def\SpecialUsageIndex#1{\@bsphack
   \index{\quotechar1% sort commands as `Numbers'
     \actualchar\string\verb
-      \quotechar*\verbatimchar\string#1\verbatimchar\encapchar usage}%
-  {\let\special at index\index\SpecialIndex@{#1}{\encapchar usage}}\@esphack}
-\def\SpecialEnvIndex#1{\CatIndex{#1}{environment}}
+      \quotechar*\verbatimchar\string#1\verbatimchar\encapchar docmain}%
+  {\let\special at index\index\SpecialIndex@{#1}{\encapchar docmain}}\@esphack}
+\def\SpecialEnvIndex#1{\CatMainIndex{#1}{environment}}
+\def\cmd#1{\orig at cs{\expandafter\cmd at to@cs\string#1}}
+\DeclareRobustCommand\orig at cs[1]{\texttt{\char`\\#1}}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}%
+  {\let\special at index\index
+   \expandafter\SpecialIndex@\expandafter{\csname#1\endcsname}{\encapchar \ifcodedoc\else doc\fi hyperpage}}}
 %</driver|docsty>
 % microtype's index style (microtype-gind.ist):
 %<docist>actual '='
@@ -500,14 +554,8 @@
     \fcolorbox{theframe}{white}{\mdseries\small\strut\color{sectioning}%
       \,\expandafter\@gobble\@tempa\,}}}
 % ... and whistles
-{\catcode`\"\active
- \gdef\verbatim#1
-   {\catcode`\"\active \def"##1"{\colorbox{theshade}{%
-      \textrm{Text lost! Please install the \pkg{listings} package.}}}%
-    \@beginparpenalty\predisplaypenalty\@verbatim\MacroFont
-    \frenchspacing\@vobeyspaces\expandafter\@xverbatim\@gobble}}
 \usepackage{listings}
-\lstset{
+\lstdefinestyle{microtype}{
   gobble=1,columns=flexible,keepspaces,upquote,escapechar=",
   basicstyle=\MacroFont,
   keywords=[0]{\microtypesetup,\DeclareMicrotypeSet,\UseMicrotypeSet,
@@ -515,12 +563,12 @@
     \SetExtraKerning,\SetExtraSpacing,\DisableLigatures,\DeclareCharacterInheritance,
     \DeclareMicrotypeVariants,\DeclareMicrotypeAlias,\DeclareMicrotypeBabelHook,
     \LoadMicrotypeFile,\microtypecontext,\textmicrotypecontext,
-    \textls,\lsstyle,\lslig,\Microtype at Hook},
+    \textls,\lsstyle,\lslig,\leftprotrusion,\rightprotrusion,\Microtype at Hook},
   keywordstyle=[0]\color{thegreen},
-  keywords=[1]{protrusion,expansion,activate,DVIoutput,draft,final,verbose,
+  keywords=[1]{protrusion,expansion,activate,DVIoutput,disable,verbose,
     config,factor,auto,stretch,shrink,step,selected,unit,tracking,kerning,
-    spacing,letterspace,babel,context,
-   %defersetup,copyfonts,enable,disable,% undocumented
+    spacing,letterspace,babel,context,patch,nopatch,
+   %defersetup,copyfonts,deactivate,reactivate,% undocumented
     no\xA0ligatures,outer\xA0spacing,outer\xA0kerning}, % there are three \nobreakspace in this line
   keywordstyle=[1]\color{thered},
   comment=[l]\%,
@@ -529,81 +577,92 @@
   frame=single,backgroundcolor=\color{theshade},rulecolor=\color{theframe},
   framerule=\fboxrule,xleftmargin=3.4pt,xrightmargin=3.4pt,belowskip=\smallskipamount
 }
+\lstset{style=microtype}
+\lstdefinestyle{message}{deletekeywords={[1]{expansion,protrusion,auto}},
+  belowskip=-\smallskipamount,frame=none,xleftmargin=0pt,backgroundcolor=,
+  basicstyle=\MacroFont\footnotesize,delim=[is][\itshape\color{thegreen}]{<}{>}}
 \let\verbatim\relax
 \lstnewenvironment{verbatim}[1][]{\lstset{#1}}{}
-\ifpdf
-  \font\dummyspace=dummy-space
-  \pdfglyphtounicode{space}{0020}
-  \def\lst at outputspace{% copy spaces (from a font that really has a space at x20)
-    \setbox0\hbox{ }\@tempdima\wd0
-    \setbox0\hbox{\dummyspace\char"20}\advance\@tempdima-\wd0
-    \unhbox0 \kern\@tempdima}
-\fi
 \def\todo#1{\changes{zTo Do}{0000/00/00}{#1}%
-  \marginpar{\rightskip2\marginparsep plus1em\hangindent1.5em\hangafter-2
-    \smash{\rlap{\raisebox{-3.3ex}{\colorbox{thered}{\Large\color{white}!}}}}%
+  \marginpar{\rightskip2\marginparsep plus1em \hangindent1.5em \hangafter-2
+    \smash{\llap{\raisebox{-1.4ex}{\colorbox{thered}{\Large\color{white}!} }}}%
     \footnotesize\textcolor{thered}{#1}}}
 \let\todo\@gobble
-\newcommand\microtypesample[1]{\begin{quote}#1\end{quote}}
-\let\emptypdfpageresources\relax
 % fancy PDF document
 \ifpdf
-  \ifx\eTeXversion\@undefined \else % errors when not using etex (conflict with multicol)
-    \ifnum\pdftexversion < 140      % no longer required with pdftex 1.40
-      \usepackage{pdfcolmk}
-  \fi\fi
-  \usepackage[bookmarks,bookmarksopen,pdfdisplaydoctitle,
+  \usepackage{xr-hyper}
+  \usepackage[bookmarks,pdfdisplaydoctitle,
               colorlinks,linkcolor=theblue,citecolor=theblue,urlcolor=thered,
               hyperindex=false,hyperfootnotes=false]
              {hyperref}
+  \usepackage[atend]{bookmark}
+%<*!docsty>
+  \BookmarkAtEnd{%
+    \bookmark[startatroot,level=0,bold,gotor={microtype\ifcodedoc\else-code\fi.pdf}]
+             {\ifcodedoc User manual\else Implementation\fi}}
+%</!docsty>
+  \externaldocument{microtype\ifcodedoc\else-code\fi}
   \PassOptionsToPackage{nodvi}{totpages} % remove annoying log output
-  \usepackage{hyperxmp} % (hyperxmp loads totpages)
+  \usepackage{hyperxmp}                  % (hyperxmp loads totpages)
   \usepackage{attachfile}
   \usepackage{pdfpages}
   \hypersetup{
     keeppdfinfo,
-    pdftitle={The microtype package},
+    pdftitle={The microtype package\ifcodedoc\space-- Implementation\fi},
     pdfauthor={R Schlicht <w.m.l at gmx.net>},
     pdfsubject={Subliminal refinements towards typographical perfection},
     pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, XeTeX, typography, micro-typography,
       character protrusion, margin kerning, optical alignment, font expansion,
       font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures},
-    pdfcopyright={\textcopyright\ 2004--2021 R Schlicht\012%
+    pdfcopyright={\textcopyright\ 2004--2021 R Schlicht\textLF
       This work may be distributed and/or modified under the conditions
       of the LaTeX Project Public License, either version 1.3c of this
-      license or (at your option) any later version.\012%
-      This work has the LPPL maintenance status `author-maintained'.},
-    pdflicenseurl={http://www.latex-project.org/lppl/}
+      license or (at your option) any later version.\textLF
+      This work has the LPPL maintenance status `maintained'.},
+    pdflicenseurl={http://www.latex-project.org/lppl/},
+    pdflang={en-GB}
   }
-  \pdfcatalog{/Lang(en-GB)}
-  \ifnum\pdftexversion < 130 \else
-    \usepackage{hypdestopt}\fi
-  \def\usage#1{\textbf{\hyperpage{#1}}}% for indexing of \DescribeMacro ...
-  \def\changes@#1#2#3{% ... the changes ...
+  % we no longer use {hypdestopt}, as it would break the external references
+  \def\changes@#1#2#3{% recording the changes ...
     \protected at edef\@tempa{\noexpand\glossary{#1\levelchar
       \ifx\saved at macroname\@empty \space\actualchar\generalname
       \else\expandafter\@gobble\saved at macroname\actualchar
         \string\verb\quotechar*\verbatimchar\saved at macroname\verbatimchar\fi
-      :\levelchar #3\encapchar hyperpage}}%
+      :\levelchar #3\encapchar \ifcodedoc\else doc\fi hyperpage}}%
     \@tempa\endgroup\@esphack}
-  \def\theCodelineNo{% ... and everything else
+  \def\MTrmn#1{\ifrmnum{#1}{\rmntonum{#1}}{#1}}
+  % remove double entries (\dochyperpage followed by \docmain)
+  \def\dochyperpage#1{\def\MT at curr@index{#1}\@ifnextchar,\dochyperpage@{\doc at hyperpage{#1}}}
+  \def\dochyperpage@,{\@ifnextchar\docmain\dochyperpage@@\dochyperpage at x}
+  \def\dochyperpage@@\docmain#1{\MT at ifstreq{#1}{\MT at curr@index}\relax\dochyperpage at x\docmain{#1}}
+  \def\dochyperpage at x{\expandafter\doc at hyperpage\expandafter{\MT at curr@index}, }
+  % indexing user doc ...
+  \ifcodedoc
+    \def\doc at hyperpage#1{\href[page={\MTrmn{#1}}]{microtype.pdf}{U\MTrmn{#1}}}
+    \def\docmain#1{\href[page={\MTrmn{#1}}]{microtype.pdf}{\textbf{U\MTrmn{#1}}}}
+    \def\main#1{\underline{\itshape\hyperlink{L:#1}{#1}}}
+    \def\SpecialIndex#1{\@bsphack\special at index{%
+       \expandafter\@gobble\string#1\actualchar
+       \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
+       \encapchar codeline}\@esphack}
+  \else
+    % write references to the User manual intermediarily in roman numerals
+    % in order to separate them from those in the Implementation part
+    \def\@wrindex#1{\protected at write\@indexfile{\let\@roman\relax}{\string\indexentry{#1}{\@roman\thepage}}\endgroup\@esphack}
+    \def\HyInd at pagelink#1{\begingroup\toks@={}\edef\x{\MTrmn{#1} }\expandafter\HyInd at removespaces\x\@nil\endgroup}
+    \def\docmain#1{\textbf{\hyperpage{#1}}}
+    \let\doc at hyperpage\hyperpage
+  \fi
+  \def\theCodelineNo{% ... and implementation
     \reset at font\sffamily\color{thegrey}\scriptsize
     \@tempcnta\arabic{CodelineNo}\advance\@tempcnta by\@ne
     \hypertarget{L:\number\@tempcnta}
       {\textoractual{\arabic{CodelineNo}\ }{}}}% don't copy line numbers
-  \def\main#1{\underline{\itshape\hyperlink{L:#1}{#1}}}
   \def\codeline#1{{\itshape\link at sanitize#1-\@nil{#1}}}
   \def\link at sanitize#1-#2\@nil{\link@@sanitize#1,\@nil}
   \def\link@@sanitize#1,#2\@nil{\hyperlink{L:#1}}
-  \def\SpecialIndex#1{\@bsphack\special at index{\expandafter\@gobble
-      \string#1\actualchar
-      \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
-      \encapchar codeline}%
-    \@esphack}
-  \def\ctanurl#1{Available from \acronym{CTAN} at
-                 \href{http://mirror.ctan.org/#1}{\nolinkurl{/#1}}}
-  \def\ctanpkgurl#1{Available from \acronym{CTAN} at
-                    \href{https://www.ctan.org/pkg/#1}{\nolinkurl{pkg/#1}}}
+  \def\ctanurl#1{Available from \acronym{CTAN} at \href{http://mirror.ctan.org/#1}{\nolinkurl{/#1}}}
+  \def\ctanpkgurl#1{Available from \acronym{CTAN} at \href{https://www.ctan.org/pkg/#1}{\nolinkurl{pkg/#1}}}
   \DeclareRobustCommand\mailto[1]{\href{mailto:#1}{\nolinkurl{#1}}}
   \def\mailtoRS{\href % some PDF viewers don't like spaces:
     {mailto:Robert\%20Schlicht\%3cw.m.l at gmx.net\%3e?subject=[microtype\%20\fileversion]}
@@ -654,7 +713,7 @@
         /A << /S/SetOCGState /State[/Toggle \csname mt@#1 at true\endcsname
                                             \csname mt@#1 at false\endcsname] >>}
       #1 \hfill\pdfendlink & \mt at layer{#1true}{\rlap{on}}\mt at layer{#1false}{off}}
-    \renewcommand\microtypesample[1]{%
+    \long\def\microtypesample#1{%
       \begingroup
       \leftskip 15pt \rightskip 15pt
       \parskip   4pt \parindent  0pt
@@ -689,11 +748,20 @@
       \endgroup
       \edef\x{\pdfpageresources{/Properties <<\mt at resources>>}}\x}
     \def\emptypdfpageresources{\pdfpageresources{}}
+    \font\dummyspace=dummy-space
+    \pdfglyphtounicode{space}{0020}
+    \def\lst at outputspace{% copy spaces (from a font that really has a space at x20)
+      \setbox0\hbox{ }\@tempdima\wd0
+      \setbox0\hbox{\dummyspace\char"20}\advance\@tempdima-\wd0
+      \unhbox0 \kern\@tempdima}
   \fi
 \else
-  \usepackage{url}
+  \usepackage{url,xr}
+  \externaldocument{microtype\ifcodedoc\else-code\fi}
   \newcommand\hyperref[2][]{#2}
   \let\hyperpage\@firstofone
+  \let\dochyperpage\@firstofone
+  \let\docmain\main
   \let\texorpdfstring\@firstoftwo
   \def\ctanurl{Available from \acronym{CTAN} at \url}
   \let\ctanpkgurl\ctanurl
@@ -700,9 +768,11 @@
   \let\nolinkurl\url
   \let\mailto\texttt
   \def\mailtoRS{\mailto{w.m.l at gmx.net}}
-  \let\href\texttt
+  \let\href\@gobble
   \newcommand\textattachfile[3][]{#3 \textit{[File \file{#2} not attached,
         because \file{microtype.dtx} hasn't been compiled with \pdftex.]}}
+  \long\def\microtypesample#1{\begin{quote}#1\end{quote}}
+  \let\emptypdfpageresources\relax
 \fi
 \ifx\l at ukenglish\@undefined
   \hyphenation{let-ter-spac-ing let-ter-spaced let-ter-space}
@@ -731,6 +801,7 @@
 \DeclareRobustCommand\xetex{\xe\kern-.1em\TeX\CatIndeX{\xe\TeX}{xetex}{engine}}
 \DeclareRobustCommand\texlive{\TeX~Live\CatIndeX{\TeX~Live}{TeXLive}{distribution}}
 \DeclareRobustCommand\miktex{MiK\TeX\CatIndeX{MiK\TeX}{MiKTeX}{distribution}}
+\def\githuburl{https://github.com/schlcht/microtype}
 \def\microtype{{\PackageFont microtype}}
 \def\letterspace{\pkg{letterspace}}
 \def\fontdim{\cmd\fontdimen\,}
@@ -747,19 +818,31 @@
  \AtBeginDocument{\catcode`\<=\active
    \def<#1>{\acronym{#1}}
    \def\contributor#1 <#2\at#3>{\@contributor{#1}{#2@#3}}}}
-\DeclareRobustCommand\@contributor[2]{\textit{#1}}
+%\DeclareRobustCommand\@contributor[2]{\textit{#1}}
 %\DeclareRobustCommand\@contributor[2]{\href{mailto:#2}{\textit{#1}}}
-%\DeclareRobustCommand\@contributor[2]{\textit{#1}%
-%    \expandafter\index\expandafter{\@getlastname#1 \@nil\actualchar %\href{mailto:#2}{#1}
-%          #1 (contributor)\encapchar hyperpage}}
-%\def\@getlastname#1 #2\@nil{\ifx\@nil#2\@nil#1\else\@getlastname#2\@nil\fi}
+\ifcodedoc \else
+ \newwrite\@contributorsfile
+ \immediate\openout\@contributorsfile=microtype.cdx
+\fi
+\DeclareRobustCommand\@contributor[2]{\textit{#1}%
+   {\ifcodedoc\else\let\@indexfile\@contributorsfile\fi
+    \expandafter\index\expandafter{\@getlastname#1 \@nil\actualchar %\href{mailto:#2}{#1}
+        \textit{#1} (contributor)\encapchar \ifcodedoc\else doc\fi hyperpage}}}
+\def\@getlastname#1 #2\@nil{\ifx\@nil#2\@nil#1\else\@getlastname#2\@nil\fi}
 %<*driver>
 \CodelineIndex
 \EnableCrossrefs
 \RecordChanges
-%\OnlyDescription
+\ifcodedoc
+  \let\printlogo\undefined
+  \InputIfFileExists{microtype-hist.tmp}
+    {\def\VersionDate##1##2{\global\expandafter\def\csname MTversiondate##1\endcsname{##2}}}
+    \relax
+\else
+  \OnlyDescription
+\fi
 \begin{document}
-  \DocInput{\jobname.dtx}
+  \DocInput{microtype.dtx}
 \end{document}
 %</driver>
 %</driver|docsty>
@@ -767,18 +850,24 @@
 %
 % ^^A -------------------------------------------------------------------------
 %\GeneralChanges*
+%\ifcodedoc\else
 %\changes{v1.0}{2004/09/11}{Initial version}
 %\changes{v2.0}{2006/12/29}{new package \letterspace: a stripped-down version,
 %                           containing the letterspacing commands only}
+%\changes{v3.0}{2021/10/31}{move development to \href{\githuburl}{GitHub}}
 %\GeneralChanges{Documentation}
 %\changes{v1.9b}{2006/01/13}{activate expansion in the distributed <PDF>}
 %\changes{v2.2}{2007/04/01}{logo transparency and amusement}
-% ^^A Adobe Reader 8.0 had serious bugs with transparency. Fixed in 8.1.
+%\changes{v3.0}{2021/06/01}{\relax split up in User manual (\file{microtype.pdf})
+%                            and Implementation doc (\file{microtype-code.pdf})}
+%\fi
 %
-% \GetFileInfo{microtype.dtx}
+% \GetFileInfo{\jobname.dtx}
 % \title{\ifx\printlogo\undefined\else\printlogo\fi
-%        \textls[40]{The \microtype\ package}\\[.3\baselineskip]\large
-%        Subliminal refinements towards typographical perfection}
+%        \textls[40]{The \microtype\ package}%
+%        \\[6pt]\large
+%        Subliminal refinements towards typographical perfection
+%        \ifcodedoc\\[9pt]{\Large--- \textls[60]{IMPLEMENTATION} ---}\fi}%
 % \author{R Schlicht\\\mailtoRS}
 % \date{\fileversion\\\filedate}
 %
@@ -808,7 +897,7 @@
 %
 % The alternative package \letterspace, which also works with plain \TeX,
 % provides the user commands for letterspacing only, omitting support for all
-% other extensions (see section~\ref{sec:lettersp}).
+% other extensions (see section~\ref{sec:lettersp}\ifcodedoc\space of the User manual\fi).
 %
 %\bigskip\noindent
 % This package is copyright \textcopyright\ 2004\kern.09em--2021 R Schlicht.
@@ -816,18 +905,32 @@
 % \IfFileExists{lppl.tex}{\hyperref[LPPL:LPPL]}{\href{http://www.latex-project.org/lppl/}}
 %   {\LaTeX\ Project Public License},
 % either version~1.3c of this license or (at your option) any later version.
-% This work has the <LPPL> maintenance status `author-maintained'.
+% This work has the <LPPL> maintenance status `maintained'.
 %\end{abstract}
 %
 %
 %\newpage
 %\emptypdfpageresources ^^A layers of the logo
+%
 %{\sffamily\def\familydefault{\sfdefault}\ifcmr\else\DeclareFontSeriesDefault[sf]{bf}{sb}\fi
 % \tableofcontents
 % \listoftables
+% \vskip2\baselineskip
+% \Large\MTsectionfont
+% \noindent
+% \ifpdf
+%  \ifcodedoc
+%    \href{file:microtype.pdf}{User manual}
+%  \else
+%    \href{file:microtype-code.pdf}{Implementation}
+%  \fi
+%  \normalfont\normalsize (external document)
+% \fi
 %}
 %
 %
+%\ifcodedoc\else
+%
 %\newpage
 %\section{Micro-typography with \TeX}\label{sec:micro-type}
 %
@@ -912,7 +1015,7 @@
 % influence the interword space. Also, the settings shipped with \microtype\
 % are but a first approximation, and I~would highly welcome corrections and
 % improvements. I suggest reading the reasoning behind the settings in
-% section~\ref{sub:conf-spacing}.
+% the Implementation part, section~\ref{sub:conf-spacing}.
 %
 % The possibility, finally, to \emph{disable all or selected ligatures} is
 % particularly useful for typewriter fonts.
@@ -948,7 +1051,7 @@
 %  \item Enable the desired micro-typographic features, either via the
 %        respective package option or with the \cs{microtypesetup} command
 %        (section~\ref{sec:options}).
-%  \item Select the fonts to which this feature should be applied by declaring
+%  \item Select the fonts to which the features should be applied by declaring
 %        and activating `sets of fonts'. A number of sets are predefined, which may be
 %        activated directly in the package options
 %        (section~\ref{sec:font-sets}).
@@ -960,6 +1063,8 @@
 %  \item You are even countenanced to leave the path of typographic virtue and
 %        steal some sheep (section~\ref{sec:lettersp}) or trespass in other ways
 %        (section~\ref{sec:disable-ligatures}).
+%  \item For the pedantic or the perfectionist, sections \ref{sec:pedantic}
+%        and \ref{sec:contrib} are warmly recommended.
 %  \item Should you encounter any obstacles, follow the hints and caveats
 %        (section~\ref{sec:caveats}).
 %\end{itemize}
@@ -1080,7 +1185,7 @@
 % \luatex ^^A we will have to re-model kerning and spacing with \luatex
 %    & $\geq$  0.30  & <DVI>       & ! & ? & _ & _ & _ & _\\
 %    &               & <PDF>       & ! & ? & ! & _ & _ & _\\
-%    & $\geq$  0.62  & <DVI>       & ! & _ & \hskip1em\llap{(}\textcolor{theblue}{$\boxtimes$})\textsuperscript{\itshape a} & ? & _ & _\\
+%    & $\geq$  0.62  & <DVI>       & ! & _ & \hskip1em\llap{(}\textcolor{theblue}{$\boxtimes$})\raisebox{0.4ex}{\sffamily\itshape\footnotesize a} & ? & _ & _\\
 %    &               & <PDF>       & ! & _ & ! & ? & _ & _\\
 %\cmidrule(r){1-3}
 % \let\textoractual\@firstoftwo ^^A why?
@@ -1095,7 +1200,7 @@
 % ? = not enabled\quad
 % _ = not available
 %\hfill
-% \textit{a}\quad by means of variable tracking
+% {\sffamily\itshape a}\quad by means of variable tracking
 %\vskip4pt
 %\end{minipage}^^A
 %}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
@@ -1129,8 +1234,16 @@
 % more modest protrusion).
 %
 %\medskip
+%\Describe{Option}{patch}{!all,none,:list of patches}
+%\DescribeOption{nopatch}
+% These options provide control over various patches meant to fix protrusion
+% at margins other than the text block margins.
+% They are described in detail in section~\ref{sec:pedantic}.
+%
+%\pagebreak ^^A layout
+%\medskip
 %\Describe{Option}{unit}{!character,:dimension}
-% This option is described in section~\ref{sub:protrusion}, apropos the command
+% This option is described in section~\ref{sub:protrusion}, apropos of the command
 % \cs{SetProtrusion}. Use with care.
 %
 %
@@ -1194,12 +1307,13 @@
 % in case you are using a pre-1.40 \pdftex\ version, \opt{step} is by default
 % set to one fifth of the smaller value of \opt{stretch} and \opt{shrink}.
 %
+%\enlargethispage{\baselineskip} ^^A layout
 %\medskip
 %\Describe{Option}{selected}{true,!false}
 % When applying font expansion, it is possible to restrict the expansion of some
 % characters that are more sensitive to deformation than others (\eg, the `O',
 % in contrast to the `I'). This is called \emph{selected expansion}, and its
-% usage allows increasing the stretch and shrink limits (to, say, 30 instead
+% use allows increasing the stretch and shrink limits (to, say, 30 instead
 % of 20); however, the gain is limited since at the same time the average
 % stretch variance will be decreased. Therefore, this option is by default
 % set to |false|, so that all characters will be expanded by the same amount.
@@ -1206,6 +1320,7 @@
 % See section~\ref{sub:expansion} for a more detailed discussion.
 %
 %
+%\pagebreak ^^A layout
 %\subsection[Tracking]
 %           {Tracking \requires{\pdftex~1.40,\luatex~0.62}}
 %           \label{sub:options-tracking}
@@ -1219,18 +1334,20 @@
 %
 %\subsection{Miscellaneous options}\label{sub:options-misc}
 %
-%\changes{v2.0}{2006/11/28}{add remark about `\opt{draft}' option disabling \microtype\
+%\changes{v2.0}{2006/11/28}{add remark about `\opt{disable}' (previously |draft|) option disabling \microtype\
 %               (noted by \contributor Michalis Miatidis <miatidis\at informatik.rwth-aachen.de>)}
 %                                                                    ^^A private mail, 2006/11/26
-%\Describe{Option}{draft}{true,!false}
-%\DescribeOption{final}
-% If the \opt{draft} option is passed to the package, \emph{all
-% micro-typographic extensions will be disabled}, which may lead to different
-% line, and hence page, breaks. The \opt{draft} and \opt{final} options may
-% also be inherited from the class options; of course, you can override them in
-% the package options. E.g., if you are using the class option |draft| to
-% show any overfull boxes, you should load \microtype\ with the |final|
-% option.
+%\changes{v3.0}{2021/09/28}{rename option |draft| option to \opt{disable}
+%               (insistently requested by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>)}
+%                ^^A private mail, 2018/07/04
+%\Describe{Option}{disable}{true,!false,ifdraft}
+% If the \opt{disable} option is passed to the package, all
+% micro-typographic extensions will be disabled, which may lead to different
+% line, and hence even page, breaks. This option replaces the |draft| option
+% from previous versions, which could be inherited from the class options;
+% to restore the previous behaviour, you may pass the value |ifdraft|:
+% in this case, the \opt{disable} option will be set to |true| if and only if
+% the document class has been loaded with the |draft| option.
 %
 %\medskip
 %\Describe{Option}{verbose}{true,!false,errors,silent}
@@ -1266,7 +1383,7 @@
 % instead, it is recommended to just call the respective program (|latex| resp.
 % |dvilualatex|).
 %\changes{v2.8}{2020/04/02}{declare \opt{DVIoutput} option deprecated}
-% For \xetex, this option is not applicable.
+% For \xetex, this option is not applicable.\looseness=-1 ^^A layout
 %
 %\iffalse
 %\changes{v1.5}{2004/12/15}{add note about \opt{DVIoutput} option}
@@ -1322,6 +1439,8 @@
 % |compatibility| or |nocompatibility|, and \key{tracking}, \key{kerning} and
 % \key{spacing} with the admissible values |true| or |false|.
 % Passing the name of a font set is not allowed.
+% Additionally, it accepts the options \key{patch} and \key{nopatch}
+% (see section~\ref{sec:pedantic}).
 % Using this command, you could for instance temporarily disable font expansion
 % by saying:
 %\begin{verbatim}
@@ -1430,7 +1549,7 @@
 %\fcolorbox{theframe}{white}{^^A
 %\begin{minipage}{\textwidth}
 %\def\arraystretch{1.2}
-%\begin{tabular}{@{}L{65pt}L{80pt}*2{L{40pt}}L{43pt}L{67pt}@{}}
+%\begin{tabular}{@{}L{65pt}L{82pt}*2{L{41pt}}L{43pt}L{62pt}@{}}
 %      \footnotesize Set name
 %    & \multicolumn{5}{l}{\footnotesize Font attributes}\\
 %\cmidrule{2-6}
@@ -1519,7 +1638,6 @@
 %\usepackage[protrusion=allmath,tracking=smallcaps]{microtype}
 %\end{verbatim}
 %
-%\ifcmr\else\pagebreak\fi ^^A layout
 %\medskip
 %\Describe{Macro}{\UseMicrotypeSet}{?features,set name}
 % This command activates a font set previously declared by \cs{DeclareMicrotypeSet}.
@@ -1635,7 +1753,7 @@
 %       (since the value that comes last will take precedence). Font settings
 %       will be loaded recursively.
 %       The following options will affect all loaded lists, in other words,
-%       any options from the loaded lists will be ignored:\looseness=-1 ^^A layout
+%       any options from the loaded lists will be ignored:
 %\changes{v1.8}{2005/06/23}{add example for \texttt{factor} option}
 %  \item[\key{factor}] This option can be used to influence all protrusion
 %       factors of the list, overriding any global \opt{factor} setting (see
@@ -1748,7 +1866,7 @@
 %       This method of employing contexts to temporarily apply different
 %       expansion parameters only works with \pdftex\ version 1.40.4 or later,^^A
 %         \footnote{For older versions, a dirty trick is laid out in
-%                   section~\ref{sub:font-setup} on page~\pageref{exp-hack}.}
+%                   the Implementation part, section~\ref{sub:font-setup}, page~\pageref{exp-hack}.}
 %       or with \luatex.
 %       Also note that both \pdftex\ and \luatex\ prohibit the use of fonts with different expansion
 %       limits or steps (even of different fonts) within one paragraph, hence
@@ -1866,7 +1984,7 @@
 % As an
 %\else
 %\changes{v2.3}{2007/11/03}{add letterspacing illustration}
-%\medskip\noindent
+%\noindent
 % Since a picture is worth a thousand words, probably even more if, in our
 % case, it depicts a couple of letterspaced words, let's bring one to sum up
 % these somewhat confusing options. Suppose you had the following settings
@@ -2097,10 +2215,11 @@
 % list. Additionally, it accepts the \key{inputenc} key to set the input encoding
 % for this list. The font set can be declared in the usual way. The inheritance
 % lists are declared as pairs of \meta{base character}\,|=|\,\meta{list of
-% inheriting characters}. Unless you are using a different encoding or a very
-% peculiarly shaped font, there should be no need to change the default
-% character inheritance settings.
+% inheriting characters}.
 %
+% With \pdftex, there should be no need to change the default
+% character inheritance settings, unless you are using a different encoding or
+% a very peculiarly shaped font.
 % The situation is different with \luatex\ and \xetex, however: the default
 % inheritance settings only contain those glyhps that can safely be assumed to
 % exist in any font; but since OpenType fonts may contain many more glyphs for
@@ -2108,6 +2227,34 @@
 % settings are necessary, which should be specified in the font's configuration
 % file (see next section).
 %
+%\medskip\noindent
+% Additionally, this command provides the possibility to have the desired
+% protrusion amount calculated automatically based on the difference of character widths.
+% If the base character is preceded with either `|(l)|', `|(r)|' or `|(lr)|',
+% the characters in the list will not only inherit the protrusion of the base character,
+% but will be additionally protruded by the result of
+% |charwidth(|\meta{inheriting character}|)|$-$|charwidth|\allowbreak|(|\meta{base character}|)|:
+% for `|(l)|' and `|(r)|', this amount will be added to the given protrusion on
+% the respective side, for `|(lr)|' half of the amount will be added to both sides.
+% So that, \eg, with
+%\begin{verbatim}
+%\DeclareCharacterInheritance
+%  { encoding = TU, family = {GFS Porson} }
+%  {  (l)"\rlap{\sffamily H}"  = {"\fontencoding{LGR}\sffamily\~>\textEta"},
+%    (lr)I = {T}  }
+%\end{verbatim}
+% the accent before the `H' would be fully protruded into the left margin,
+% while the stem of the `T' would be aligned with that of the `I' if at either margin.
+% This feature is especially useful for Greek typography, where capital letters
+% at the beginning of a line should be placed as if they had no accent (the `H' in
+% the example above).
+% Base characters may have both unprefixed and prefixed inheritance lists;
+% characters in the latter will be implicitly added to the corresponding unprefixed one.
+% Inheriting characters may appear in both `|(l)|' and `|(r)|'-prefixed lists at the
+% same time, whereas lists prefixed with `|(l)|' or `|(r)|' and those prefixed with
+% `|(lr)|' are mutually exclusive.
+% For all other features except protrusion, these prefixed lists will be ignored.
+%\looseness=-1 ^^A layout
 %
 %
 %\subsection{Configuration files}\label{sub:config-file}
@@ -2125,11 +2272,13 @@
 % described in the current section~\ref{sec:fine-tuning}. These files will be
 % loaded automatically if you are actually using the respective fonts.
 % This package ships with configuration files for a number of font families.
-% Table~\ref{tab:fonts} lists them all.
+% They are listed in tables~\ref{tab:type1-fonts} (Type\,1 fonts) and
+% \ref{tab:ot-fonts} (OpenType fonts).
 %
 %\begin{table}[t]\small
 %\changes{v1.6a}{2005/02/02}{add table of fonts with tailored protrusion settings}
-%\caption{Fonts with tailored protrusion settings}\label{tab:fonts}
+%\caption[Type\,1 fonts with  tailored protrusion settings]
+%        {Type\,1 fonts with\\tailored protrusion settings}\label{tab:type1-fonts}
 %\setlength\fboxsep{4pt}
 %\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
 %\fcolorbox{theframe}{white}{^^A
@@ -2140,20 +2289,20 @@
 %  \leftskip 1.2em
 %  \parindent -1.2em
 %  \everypar{\parindent -1.2em}%
-%  \leavevmode\hbox to 1.2em{\@thefnmark\hss}#1}
+%  \leavevmode\hbox to 1.2em{\sffamily\@thefnmark\hss}#1}
 %\let\footnoterule\relax
-%\def\fnref#1{\textsuperscript{\itshape\ifpdf\ref*{#1}\else\ref{#1}\fi}}
-%\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*3l@{}}
+%\def\thempfootnote{{\itshape\ifnum\c at mpfootnote=10 \global\advance\c at mpfootnote 1 \fi\@alph\c at mpfootnote}}
+%\def\fnref#1{\raisebox{0.3ex}{\sffamily\itshape\footnotesize\,\ifpdf\ref*{#1}\else\ref{#1}\fi}}
+%\begin{tabularx}{\textwidth}{@{\extracolsep{\fill}}>{\leftprotrusion}Xll@{}}
 %       \footnotesize Font family (<NFSS> code)
 %      & \multicolumn{2}{l}{\footnotesize Features}\\
-%\cmidrule{1-1}\cmidrule{2-3}
-%\itshape\footnotesize Type 1 fonts
+%\cmidrule(r){2-3}
 %      & \footnotesize Encodings
 %      & \footnotesize Shapes\\
-%\cmidrule{1-1}\cmidrule{2-2}\cmidrule{3-3}
+%\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}
 % Generic
-%      & <OT1>, <T1>, <T2A>, <LY1>, <QX>, (<TS1>)\footnote{Incomplete\label{fn:incmpl}}
-%      & n, (it, sl, sc)\fnref{fn:incmpl} \\
+%      & <OT1>, <T1>, <T2A>, <LY1>, <QX>, (<TS1>)\fnref{fn:t1-incmpl}
+%      & n, (it, sl, sc)\fnref{fn:t1-incmpl} \\
 % Computer Modern Roman (|cmr|)\footnote{Aliases: Latin Modern Roman (|lmr|),
 %                                        \pkg{ae} (|aer|), \pkg{zefonts} (|zer|),
 %                                        \pkg{eco} (|cmor|), \pkg{hfoldsty} (|hfor|), \pkg{mlmodern}~(|mlmr|)}
@@ -2162,10 +2311,10 @@
 % Bitstream Charter (|bch|)\footnote{Aliases: \pkg{mathdesign}/Charter (|mdbch|),
 %                                    MicroPress's \pkg{chmath} (|chr|), \pkg{XCharter}}
 %      & <OT1>, <T1>, <T5>, <LY1>, <TS1>
-%      & n, it, (sl)\footnote{Settings inherited from italic shape\label{fn:it-sl}}, sc \\
+%      & n, it, (sl)\fnref{fn:t1-itsl}, sc \\
 % <EB> Garamond\footnote{Alias: Adobe Garamond (|pad|, |padx|, |padj|)}
 %      & <OT1>, <T1>, <LY1>, <TS1>
-%      & n, it, (sl)\fnref{fn:it-sl}, sc \\
+%      & n, it, sc, si \\
 % <URW> Garamond (|ugm|)\footnote{Aliases: \pkg{mathdesign}/<URW> Garamond (|mdugm|), \pkg{garamondx} (|zgmx|, |zgmj|)}
 %      & <OT1>, <T1>, <TS1>
 %      & n, it\\
@@ -2174,17 +2323,17 @@
 %      & n, it \\
 % Adobe Minion (|pmnx|, |pmnj|)
 %      & <OT1>, <T1>, <T2A>, <LY1>, <TS1>
-%      & n, it, (sl)\fnref{fn:it-sl}, sc, si\\
+%      & n, it, (sl)\fnref{fn:t1-itsl}, sc, si\\
 % Palatino (|ppl|, |pplx|, |pplj|)\footnote{Aliases: \pkg{pxfonts} (|pxr|),
 %                                           \pkg{qfonts}/QuasiPalatino, \TeX\ Gyre Pagella (|qpl|),
 %                                           \pkg{newpx}, <FPL> Neu (|fp9x|, |fp9j|), \pkg{domitian}}
-%      & <OT1>, <OT4>, <T1>, <LY1>, (<TS1>)\fnref{fn:incmpl}
-%      & n, it, (sl)\fnref{fn:it-sl}, sc \\
+%      & <OT1>, <OT4>, <T1>, <LY1>, (<TS1>)\fnref{fn:t1-incmpl}
+%      & n, it, (sl)\fnref{fn:t1-itsl}, sc \\
 % Times (|ptm|, |ptmx|, |ptmj|)\footnote{Aliases: \pkg{txfonts} (|txr|),
 %                                        \pkg{qfonts}/QuasiTimes, \TeX\ Gyre Termes (|qtm|),
 %                                        \pkg{newtx}, \pkg{tempora}, \pkg{step}, \pkg{stix}/\pkg{stix2}}
-%      & <OT1>, <OT4>, <T1>, <LY1>, <QX>, (<TS1>)\fnref{fn:incmpl}
-%      & n, it, (sl)\fnref{fn:it-sl}, sc \\
+%      & <OT1>, <OT4>, <T1>, <LY1>, <QX>, (<TS1>)\fnref{fn:t1-incmpl}
+%      & n, it, (sl)\fnref{fn:t1-itsl}, sc \\
 % Computer Modern math (|cmsy|, |cmm|)\footnote{Aliases: Latin Modern (|lmsy|, |lmm|), \pkg{mlmodern} (|mlmsy|, |mlmm|)}
 %      & <OML>/<OMS>
 %      & n/it \\
@@ -2196,31 +2345,60 @@
 %      & n\\
 % Euro symbols (Adobe, <ITC>, \pkg{marvosym})
 %      & <U>/<OT1>
-%      & n, it \\
-%\cmidrule{1-1}\cmidrule{2-2}\cmidrule{3-3}
-%\itshape\footnotesize OpenType fonts
-%      & \footnotesize Scripts
-%      & \footnotesize Shapes\\
-%\cmidrule{1-1}\cmidrule{2-2}\cmidrule{3-3}
+%      & n, it\phantom{^^A
+%               \footnote{Incomplete\label{fn:t1-incmpl}}
+%               \footnote{Settings inherited from italic shape\label{fn:t1-itsl}}} \\
+%\bottomrule
+%\end{tabularx}^^A
+%\end{minipage}^^A
+%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
+%\end{table}
+%
+%\begin{table}[t]\small
+%\changes{v3.0}{2021/06/16}{split up table of fonts with tailored protrusion settings}
+%\caption{OpenType fonts with tailored protrusion settings}\label{tab:ot-fonts}
+%\setlength\fboxsep{4pt}
+%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
+%\fcolorbox{theframe}{white}{^^A
+%\begin{minipage}{\textwidth}
+%\def\arraystretch{1.2}
+%\long\def\@makefntext#1{%
+%  \raggedright
+%  \leftskip 1.2em
+%  \parindent -1.2em
+%  \everypar{\parindent -1.2em}%
+%  \leavevmode\hbox to 1.2em{\sffamily\@thefnmark\hss}#1}
+%\let\footnoterule\relax
+%\def\fnref#1{\raisebox{0.3ex}{\sffamily\itshape\footnotesize\,\ifpdf\ref*{#1}\else\ref{#1}\fi}}
+%\begin{tabularx}{\textwidth}{@{\extracolsep{\fill}}>{\leftprotrusion}Xll@{}}
+%       \footnotesize Font family
+%      & \multicolumn{2}{l}{\footnotesize Features}\\
+%\cmidrule(r){2-3}
+%      & \rlap{\footnotesize Scripts}\hphantom{<OT1>, <OT4>, <T1>, <T2A>, <T5>, <LY1>, <TS1>}
+%      & \rlap{\footnotesize Shapes}\hphantom{n, it, (sl)\fnref{fn:t1-itsl}, sc, si}\\
+%\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}
 % Generic
 %      & Latin
-%      & n, (it, sl, sc)\fnref{fn:incmpl} \\
-% Latin Modern Roman\footnote{Alias: New Computer Modern}
+%      & n, (it, sl, sc)\fnref{fn:ot-incmpl} \\
+% Latin Modern Roman
+%      & Latin
+%      & n, it, (sl)\fnref{fn:ot-itsl}\\
+% New Computer Modern
 %      & Latin, Greek
-%      & n, it, (sl)\fnref{fn:it-sl}\\
+%      & n, it, (sl)\fnref{fn:ot-itsl}\\
 % Charis <SIL>
-%      & Latin, Cyrillic, Greek
+%      & Latin, Cyrillic
 %      & n, it, sc\\
-%\iffalse ^^A provided with the EB Garamond package
 % <EB> Garamond
 %      & Latin, Cyrillic, Greek
 %      & n, it, sc, si\\
-%\fi
 % Palatino\footnote{Aliases: Palatino Linotype, Palatino <LT> Std, \TeX\ Gyre Pagella, Domitian}
 %      & Latin
-%      & n, it, sc\\
+%      & n, it, sc\phantom{^^A
+%               \footnote{Incomplete\label{fn:ot-incmpl}}
+%               \footnote{Settings inherited from italic shape\label{fn:ot-itsl}}} \\
 %\bottomrule
-%\end{tabular*}^^A
+%\end{tabularx}^^A
 %\end{minipage}^^A
 %}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
 %\end{table}
@@ -2252,7 +2430,7 @@
 %\DeclareMicrotypeAlias{lmr}{cmr}
 %\end{verbatim}
 % which would make the package, whenever it encounters the font |lmr| and does
-% not find settings for it, also try the font |cmr|. In fact, you will find
+% not find settings for it, also try the font name |cmr|. In fact, you will find
 % this very line, along with some others, in the default configuration file.
 %
 %\medskip
@@ -2262,7 +2440,7 @@
 % to extend settings defined in a file that would otherwise not be loaded
 % automatically, or would be loaded too late.\footnote{
 %    Font package authors might also want to have a look at the hook
-%    \cs{Microtype at Hook}, described in the implementation part,
+%    \cs{Microtype at Hook}, described in the Implementation part,
 %     section~\ref{sub:hook}.}
 % This command will load the file `|mt-|\meta{font name}|.cfg|'.
 %
@@ -2369,7 +2547,7 @@
 %
 %\section[Letterspacing revisited]
 %        {Letterspacing revisited \requires{\pdftex~1.40,\luatex~0.62}}
-%        \label{sec:lettersp}
+%        \label{sec:lettersp} ^^A [also referenced in microtype.ins]
 %
 %\Describe{Macro}{\textls}{?amount,general text}
 % While the \opt{tracking} feature, described in section~\ref{sub:tracking},
@@ -2399,11 +2577,11 @@
 %\medskip
 %\Describe{Macro}{\lslig}{ligature}
 % Since the commands \cs{textls} and \cs{lsstyle} will also evaluate the
-% `\texttt{no ligatures}' key for the respective font, you need not worry
+% `\texttt{no ligatures}' key for the respective font, you usually need not worry
 % about protecting or breaking ligatures with most fonts. However, in certain
 % situations, there may be a conflict of ligatures beginning with the same
-% letter, where some of them should be inhibited, while others should not. When
-% letterspacing text typeset in Fraktur fonts, for example, the ligatures `ch',
+% letter, where some of them should be inhibited, while others should not. For
+% example, when letterspacing text typeset in Fraktur fonts, the ligatures `ch',
 % `ck', `tz' and `sz'~(`\textfrak{sz}') should never be broken up; you also usually
 % see the `st'~(`\textfrak{st}') ligature in letterspaced text. Furthermore, at
 % least the \pkg{yfonts} package realises the short~s~(`\textfrak{s:}') as the
@@ -2417,7 +2595,7 @@
 % (namely, `\textls{\def\!#1{\textcolor{thegreen}{\lslig{#1}}}^^A
 %                   \def\?#1{\textcolor{thered}{#1}}^^A
 %  \textfrak{Au\!{s:}\?{si}\!{ch}t\!{s:}lo\?{si}gkeit}}',
-%  with ligatures shown in green, inhibited ligatures in red).
+%  with ligatures here shown in green, inhibited ligatures in red).
 %
 %\begin{verbatim}[morekeywords={[0]{\kern}}]
 %\SetTracking[no\xA0ligatures={f}]{encoding = LY, family = yfrak}{120}
@@ -2436,7 +2614,7 @@
 % \microtype, omitting support for all the other extensions (and also omitting
 % the possibilities of the \cs{SetTracking} command -- all `|f|' ligatures will
 % be disabled, inner and outer spacing and outer kerning will be set to the
-% default values described in section~\ref{sub:tracking}). If you prefer to
+% default values described in section~\ref{sub:tracking}). If you would rather
 % forgo \microtype's specialties, you may load the \letterspace\ package
 % instead. Both packages should not be used at the same time.
 %
@@ -2476,8 +2654,152 @@
 %   ^^A Otherwise, it won't work at all
 %
 %
-%\section{Hints and caveats}\label{sec:caveats}
+%\section{Being pedantic about protrusion}\label{sec:pedantic}
 %
+% Protrusion works well in running paragraphs, but may also be desirable
+% in situations where \TeX, in contrast to human eyes, would not see a margin,^^A
+%   \footnote{Possibly because \TeX\ tends to look through its gastro-intestinal tract.}
+% \eg, in |itemize| or |tabular| environments.
+% The \microtype\ package offers two commands that may be inserted at
+% such an effective inner margin to make the first respectively last glyph
+% protrude as if it were located at a normal outer  margin:
+%
+%\medskip
+%\Describe{Macro}{\leftprotrusion}{general text}
+% This command will add left protrusion for the following text.
+% You may also just say \cs{leftprotrusion} (without an argument), and
+% \microtype\ will gather the next glyph (possibly a ligature) before
+% adding protrusion on its left hand side.
+% For instance, you could add this command to tabular cell definitions
+% (using the \pkg{array} package):
+%\begin{verbatim}
+%\begin{tabular}{l>{\leftprotrusion}p{9cm}r}
+%\end{verbatim}
+% in order to get protrusion at the beginning of the |p| cell.
+%
+%\medskip
+%\Describe{Macro}{\rightprotrusion}{general text}
+% will typeset \meta{general text} and then add protrusion on the right side.
+% (Unfortunately, \TeX\ cannot look backwards at what it has already typeset,
+% so this command requires that the text be given in the argument.)
+%
+%\medskip\noindent
+%\DescribeMacro{\noprotrusion}
+% is a command from \LaTeX\ proper, so it's just mentioned apropos.
+% When added to the beginning or end of a line, protrusion at the respective
+% margin will be prevented.
+%
+%\medskip\noindent
+% The \microtype\ package defines a number of patches in order to get protrusion
+% right (with dedicated patches for the classes and packages indicated in
+% parentheses; they may still work with other classes or packages):
+%\begingroup
+%\list{}{\labelwidth=3em \itemindent\z@ \leftmargin=\labelwidth
+%     \def\makelabel#1{\hskip\labelsep\texttt{#1}\hss}}
+%\def\MTsupp#1{\unskip\nobreak\hfil\penalty50 \hskip2em\hbox{}\nobreak\hfil
+%   {\smaller(#1)}\parfillskip=0pt \finalhyphendemerits=0
+%}
+%^^A \microtypesetup{nopatch=item}
+% \item[item]  Affects the first line of \cmd\item\kern.6pts in various environments, so that,
+%              \eg, the two\break A's here -- the one in the current line and the one in the
+%              line above -- are neatly aligned; without the patch, the first A would be
+%              slightly shifted to the right.
+%              This patch also affects environments such as |quote| or |flushleft|, which are
+%              implemented in \LaTeX\ as lists with an implicit empty item.
+%              \MTsupp{standard classes, \pkg{beamer}, \pkg{simplecv}}
+% \item[toc]   Adds protrusion at the left margin of sectioning titles in the Table of Contents
+%              and similar Lists of \meta{Things}.
+%              \MTsupp{standard classes, \pkg{memoir}}
+% \item[footnote] Protrusion for the first line of footnote text (only visible when
+%              the footnote text is set in block paragraphs, like in this document).
+%              \MTsupp{standard classes, \pkg{memoir}, <KOMA> classes}
+% \item[eqnum] Protrusion for equation numbers on either side.
+%              \MTsupp{standard classes, \pkg{amsmath}}
+%\endlist\endgroup
+%
+%\medskip\noindent
+% By default, all of the above patches will be applied. Should this not be desired,
+% or in case you are running into problems, you may prevent or undo the patches through
+% the \textcolor{thered}{\opt{patch}} and \textcolor{thered}{\opt{nopatch}} options,
+% either when loading the package:
+%\begin{verbatim}
+%\usepackage[nopatch=toc]{microtype}
+%\end{verbatim}
+% or, possibly temporarily, within the document:
+%\begin{verbatim}
+%\microtypesetup{nopatch=item}
+%\end{verbatim}
+%
+%\medskip\noindent
+%\leavevmode\llap{\itshape\color{thegrey}Help wanted!\hskip\marginparsep}^^A
+%\leftprotrusion These pedantic protrusion patches are work-in-progress. I suspect many use cases
+% where they either do not work as advertised, or worse, where they may even lead to errors.
+% Also, I am aware that there are myriads of classes and packages out there that
+% modify internal commands in their own ways, possibly rendering the patches useless.
+% Finally, there will certainly be many more situations where protrusion would be appropriate.
+% I would be happy to include more patches, or enhance the existing ones,
+% so I welcome any suggestions and problem reports you may have.
+%
+%
+%\section{Creating configurations and contributing}\label{sec:contrib} ^^A [also referencd in microtype.ins]
+%
+% I would also be glad to include configuration files for more fonts. Preparing such
+% configurations is quite a time-consuming task and requires a lot of patience.
+% To alleviate this process, \microtype\ includes the companion package
+%\DescribePackage{microtype-show}
+% \pkg{microtype-show}, which offers some tools to visually debug protrusion
+% settings. It should not be used in production contexts.
+%
+%\medskip\noindent
+%^^A don't index the commands from microtype-show as "Commands"
+%{\def\SpecialUsageIndex#1{\let\special at index\index\SpecialIndex@{#1}{\encapchar dochyperpage}}^^A
+%\DescribeMacro{\ShowCharacterInheritance}
+% These commands show all defined inheritance resp. protrusion settings
+% (the latter relative to character width, to \EM{1}, and as the effective kerning amount)
+%\DescribeMacro{\ShowProtrusion}
+% for the current font. They are most useful for consistency checks.
+%
+%\DescribeMacro{\ShowMissingGlyphstrue}
+% If the boolean \cs{ifShowMissingGlyphs} is set to true, the glyphs \textit{not}
+% included in the configuration will also be shown. Setting the switch
+%\DescribeMacro{\ShowGlyphIndextrue}
+% \cs{ifShowGlyphIndex} to true will additionally display the glyph (\pdftex)
+%\DescribeMacro{\GlyphScaleFactor}
+% respectively Unicode (\luatex) index number. Furthermore, you may alter the glyphs'
+% display size by redefining \cs{GlyphScaleFactor} (default:~|2|).
+%
+%\medskip\noindent
+%\DescribeMacro{\ShowProtrusionAll}
+% When preparing the actual protrusion settings, these commands may prove helpful.
+% Conveniently placing the glyphs at the margins, they show, respectively:
+%\DescribeMacro{\ShowProtrusionDefined}
+% all glyphs in the current font; only those with defined protrusion settings;
+%\DescribeMacro{\ShowProtrusionMissing}
+% or those without any protrusion settings.
+% (Note that here, the protrusion amounts are given in 1000ths of \EM{1}, not in
+% 1000ths of character widths).
+%^^A
+% The package also includes a test file that shows all of these commands in action
+% (\file{test-microtype.tex}).
+%}
+%
+%\medskip\noindent
+% If you have created a configuration file for another font, or if you have any
+% suggestions for enhancements in the default configuration files, I~would
+% gratefully accept them: \mailtoRS.
+%\iffalse\footnote{^^A ... OK, so nobody has any ...
+%    Should you have lots of \pkg{pdfcprot} configuration files lying around,
+%    I can also provide you with a \TeX\ conversion script. Just ask me.}
+%\fi
+%
+%\medskip\noindent
+% Development of the package takes place on GitHub, which also provides an
+% issue tracker for submitting bug reports and feature requests:
+% \url{\githuburl/issues}.
+%
+%
+%\section{Hints and caveats}\label{sec:caveats} ^^A [also referenced in: \MT at warn@unknown at once]
+%
 %\paragraph{Use settings that match your font.}
 % Although the default settings should give reasonable results for most fonts,
 % the particular font you happen to be using may have different character
@@ -2484,8 +2806,8 @@
 % shapes that necessitate more or less protrusion. In particular,
 % italic letter shapes may differ wildly in different fonts, hence I have
 % decided against providing default protrusion settings for them.
-% The file \file{test-microtype.tex} might be of some help when adjusting the
-% protrusion settings for a font.
+% See the previous section for some tools for the preparation
+% of protrusion settings.
 %
 %\paragraph{Don't use too large a value for expansion.}
 % Font expansion is a feature that is supposed to enhance the typographic
@@ -2498,6 +2820,8 @@
 % Multiple Master font, you may set expansion limits to up to 4\%.
 %
 %\changes{v2.0}{2006/12/13}{qualify hint about web documents with regard to older \pdftex\ versions}
+%\changes{v3.0}{2021/05/25}{remove hint about web documents with pre-1.40 \pdftex\ (it's been 14 years~\dots)}
+%\iffalse ^^A pdftex 1.40 was released in 2007 ...
 %\paragraph{Don't use font expansion for web documents (with older \pdftex\ versions).}
 % With \pdftex\ versions older than 1.40, each expanded instance of the font
 % will be embedded in the <PDF> file, hence the file size may increase by quite
@@ -2506,10 +2830,14 @@
 % creating files to be distributed electronically. With \pdftex\ 1.40 and \luatex, which
 % use a different technique of expansion, the increase of file size can be
 % neglected.
+%\fi
 %
 %\changes{v2.2}{2007/07/06}{add hint about extra <TOC> leader dot
 %                           (first discovered by \contributor Morten H\o gholm <morten.hoegholm\at latex-project.org>)}
 %                                                                                       ^^A private mail, 2006/08/26
+%\changes{v3.0}{2021/05/15}{remove hint about extra <TOC> leader dot
+%                           (fixed in \LaTeX)}
+%\iffalse
 %\paragraph{You might want to disable protrusion in the Table of Contents.}
 % In unfortunate situations, enabled protrusion might internally alter the line
 % length in the <TOC> and similar lists in such a way that an excess leader dot
@@ -2519,6 +2847,7 @@
 %\tableofcontents
 %\microtypesetup{protrusion=true}
 %\end{verbatim}
+%\fi
 %
 %\changes{v1.9}{2005/07/10}{add hint about \texttt{verbatim} environment}
 %\todo{option to patch \texttt{verbatim}?} ^^A for Karl
@@ -2587,11 +2916,11 @@
 %\changes{v2.7b}{2018/09/18}{update hint about non-7-bit characters
 %                            (notified by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>)}
 %                            ^^A private mail, 2018/08/14
-%  \item Even though all configuration files are still provided in legacy (7-bit)
-%        format, using multi-byte (Unicode) characters in the settings should run
+%  \item Even though most configuration files are still provided in legacy (7-bit)
+%        format, using multi-byte (Unicode) characters in the settings will run
 %        smoothly with an up-to-date \LaTeX\ system.
-%        For older systems or documents in legacy encodings, in contrast, this requires
-%        loading the \pkg{inputenc} package first.
+%        For older systems or documents in legacy encodings, in contrast,
+%        the \pkg{inputenc} package must be loaded first.
 %        Furthermore, when using multiple input encodings in a document, 8-bit characters in
 %        the settings will only work reliably if you specify the |inputenc| key.
 %\changes{v2.3a}{2008/02/25}{add hint about \pkg{babel} having to be loaded first}
@@ -2628,16 +2957,15 @@
 %\end{itemize}
 %
 %\changes{v1.8}{2005/06/23}{add hint about error messages}
-%\paragraph{Possible error messages and how to get rid of them (\textcolor{thegreen}{specs} may differ):}
+%\paragraph{Possible warning and error messages and how to get rid of them
+%           (\textcolor{thegreen}{specs} may differ):}
 %\begin{itemize}
-%\lstset{deletekeywords={[1]{expansion,auto}},belowskip=-\smallskipamount,frame=none,
-%        xleftmargin=0pt,backgroundcolor=,basicstyle=\MacroFont\footnotesize,
-%        delim=[is][\itshape\color{thegreen}]{<}{>}}
-%\changes{v1.9a}{2005/11/15}{add explanation for error message in <DVI> mode}
+%\lstset{style=message}
 %  \item
 %\begin{verbatim}
 %! Font csnameendcsname=<cmr10+20 at 10.0pt> not loadable: Metric (TFM) file not found.
 %\end{verbatim}
+%\changes{v1.9a}{2005/11/15}{add explanation for error message in <DVI> mode}
 % This error message will occur if you are trying to employ font expansion
 % while creating <DVI> output. Remember that \emph{automatic} font expansion
 % only works when running \pdftex\ or \luatex\ in <PDF> mode. Although expansion is also
@@ -2644,11 +2972,12 @@
 % possible in <DVI> mode with \pdftex, it requires that all instances of the expanded fonts
 % exist on your \TeX\ system.
 %
-%\changes{v2.2}{2007/06/13}{add hint about error message with \pdftex\ 1.40}
+%\pagebreak ^^A layout
 %  \item
 %\begin{verbatim}
 %! pdfTeX error (font expansion): auto expansion is only possible with scalable fonts.
 %\end{verbatim}
+%\changes{v2.2}{2007/06/13}{add hint about error message with \pdftex\ 1.40}
 % Automatic font expansion has been improved in \pdftex\ 1.40, in that it now
 % not only works with Type\,1 fonts but also with TrueType, OpenType and even
 % non-embedded fonts. The above error message indicates either that you are
@@ -2656,12 +2985,35 @@
 % possible, or that the font isn't found at all, \eg, because of missing map
 % entries.
 %
-%\changes{v2.0}{2006/12/13}{qualify hints about expansion error messages with
-%                           regard to older \pdftex\ versions}
 %  \item
 %\begin{verbatim}
+%Package microtype Warning: Unknown slot number of character
+%(microtype)                `<\k A>'
+%(microtype)                in font encoding `TU' in inheritance list
+%(microtype)                `microtype.cfg/406(protrusion)'.
+%\end{verbatim}
+%\changes{v3.0}{2021/06/26}{add hint about unknown slot numbers}
+% If you receive lots of warnings like the above, and you are running \luatex\
+% or \xetex, this probably means that the font you are using contains less
+% glyphs than are defined in the default protrusion and/or inheritance settings.
+% For such fonts, the \microtype\ package defines basic inheritance settings
+% to which you may alias your font (the generic protrusion settings will
+% still be loaded). Try adding the line:
+%\begin{verbatim}[style=microtype,belowskip=0pt]
+%\DeclareMicrotypeAlias{"\rmfamily\meta{your font}"}{TU-basic}
+%\end{verbatim}
+% to the preamble. For symbol fonts, you may even use the alias |TU-empty|,
+% which is, well, empty, meaning that no protrusion will be applied at all
+% to this font. Note that these aliases are just meant to provide an easy way
+% of getting rid of the warnings, while the proper solution would be to create
+% inheritance and protrusion settings specific to the font in question.
+%
+%  \item
+%\begin{verbatim}
 %Warning: pdflatex: font <ptmr8r> cannot be expanded (not an included Type1 font)
 %\end{verbatim}
+%\changes{v2.0}{2006/12/13}{qualify hints about expansion error messages with
+%                           regard to older \pdftex\ versions}
 % and the <PDF> viewer complains about a missing font, \eg, Adobe Reader thusly:
 %\begin{verbatim}[aboveskip=\smallskipamount]
 %Could not find a font in the Resources dictionary - using Helvetica instead.
@@ -2673,11 +3025,11 @@
 % distributions, this can be changed in the file \file{updmap.cfg} by setting
 % |pdftexDownloadBase14| to |true|.
 %
-%\changes{v1.9a}{2005/11/15}{add explanation for error message with non-Type\,1 fonts}
 %  \item
 %\begin{verbatim}
 %Warning: pdflatex (file <ecrm1000+20>): Font <ecrm1000+20 at 1200> not found
 %\end{verbatim}
+%\changes{v1.9a}{2005/11/15}{add explanation for error message with non-Type\,1 fonts}
 % Furthermore, \pdftex\ versions older than 1.40 require Type\,1 fonts for
 % automatic font expansion. When you receive a message like the above, you are
 % probably trying to apply font expansion to a bitmap or TrueType font. With
@@ -2684,12 +3036,12 @@
 % older \pdftex\ versions, this is only possible if you manually create
 % expanded instances of the fonts.
 %
-%\changes{v2.0}{2006/11/05}{add hint about how to increase \texttt{font\textunderscore max}
-%                            and \texttt{font\textunderscore mem\textunderscore size}}
 %  \item
 %\begin{verbatim}
 %! Font <T1/cmr/m/n/10>=<ecrm1000 at 10.0pt> not loaded: Not enough room left.
 %\end{verbatim}
+%\changes{v2.0}{2006/11/05}{add hint about how to increase \texttt{font\textunderscore max}
+%                            and \texttt{font\textunderscore mem\textunderscore size}}
 % Memory parameter `|font_mem_size|' too small.
 %  \item
 %\begin{verbatim}
@@ -2709,12 +3061,13 @@
 % for \miktex, in the file \file{miktex.ini} (2.4 or older) resp.
 % \file{pdflatex.ini} (2.5 or newer).
 %
-%\changes{v2.0}{2007/01/05}{add hint about warning when tracking \emph{and}
-%                           expansion is applied to a font}
 %  \item
-%\begin{verbatim}[deletekeywords={[1]{expansion}}]
+%\pagebreak ^^A layout
+%\begin{verbatim}
 %pdfTeX warning (font expansion): font should be expanded before its first use
 %\end{verbatim}
+%\changes{v2.0}{2007/01/05}{add hint about warning when tracking \emph{and}
+%                           expansion is applied to a font}
 % This warning will occur with \pdftex\ versions older than 1.40.4, if tracking
 % \emph{and} expansion is applied to a font. It is harmless and can be ignored.
 %\end{itemize}
@@ -2727,29 +3080,13 @@
 % \href{http://mirror.ctan.org/macros/latex/contrib/microtype/}
 %      {\acronym{CTAN}}.
 % For the source code of the logo on the title page and of the letterspacing
-% sample from section~\ref{sub:tracking}, see the appendices~\ref{sec:title-logo}
-% and \ref{sec:letterspace-ill}.
+% sample from section~\ref{sub:tracking}, see the Implementation part,
+% appendices~\ref{sec:title-logo} and \ref{sec:letterspace-ill}.
 %\changes{v2.5a}{2013/05/23}{add notes on typesetting the documentation}
 % If you want to re-typeset the documentation, read the comments at the end of
 % \file{microtype.dtx}.
 %
 %
-%\section{Contributions}
-%
-% I would be glad to include configuration files for more fonts. Preparing such
-% configurations is quite a time-consuming task and requires a lot of patience.
-% To alleviate this process, this package also includes a test file that can be
-% used to check at least the protrusion settings (\file{test-microtype.tex}).
-%^^A
-% If you have created a configuration file for another font, or if you have any
-% suggestions for enhancements in the default configuration files, I~would
-% gratefully accept them: \mailtoRS.
-%\iffalse\footnote{^^A ... OK, so nobody has any ...
-%    Should you have lots of \pkg{pdfcprot} configuration files lying around,
-%    I can also provide you with a \TeX\ conversion script. Just ask me.}
-%\fi
-%
-%
 %\section{Acknowledgments}
 %
 % This package would be pointless if
@@ -2774,8 +3111,7 @@
 % interword spacing adjustment and additional character kerning.
 %  \contributor Georg Duffner <g.duffner\at gmail.com> has patiently tested
 % \microtype\ under \xetex\ and \luatex\ with his beautiful OpenType font
-% <EB>~Garamond\footnote{\ctanpkgurl{ebgaramond}, including configuration
-%   files for \microtype.}.
+% <EB>~Garamond.
 % My thanks also go to
 %  \contributor Maciej Eder <maciej_eder\at poczta.onet.pl>
 % for contributing settings for the <QX> encoding, as well as to
@@ -2785,7 +3121,12 @@
 % who made substantial improvements to the Computer Modern Roman italic settings.
 % I thank
 %  \contributor Loren~B. Davis <davislo\at eecs.oregonstate.edu>
-% for providing protrusion settings for OpenType versions of Palatino Linotype.
+% for providing protrusion settings for OpenType versions of Palatino Linotype,
+% as well as
+%  \contributor Antonis Tsolomitis <antonis.tsolomitis\at gmail.com>
+% for settings for his New Computer Modern font. The latter also showcase the
+% new feature of automatically calculated protrusion, which was an original idea by
+%  \contributor Daniel Benjamin Miller <dbmiller\at dbmiller.org>. ^^A also https://tex.stackexchange.com/users/176404/d909
 % I am also very much indebted to
 %  \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>,
 % who not only contributed the |lua| module in the first place, but also,
@@ -2894,14 +3235,19 @@
 %  \contributor Paolo Polesana    <@\at @>,  ^^A https://tex.stackexchange.com/users/95083/paolo-polesana
 %  \contributor Oliver Kopp       <koppdev\at gmail.com>,
 %  \contributor Hironori Kitagawa <h_kitagawa2001\at yahoo.co.jp>,
-%  \contributor Daniel Benjamin Miller <dbmiller\at dbmiller.org>, ^^A also https://tex.stackexchange.com/users/176404/d909
+%  \contributor Aman Mehra        <reportaman\at gmail.com>, ^^A also https://tex.stackexchange.com/users/192717/reportaman
 %  \contributor Md Ayquassar      <mdayq0\at lenta.ru>,
+%  \contributor Holger Gerhardt   <holger.gerhardt\at uni-bonn.de>,
 %  \contributor Marcel Kr\"uger   <tex\at 2krueger.de>,
 %  \contributor Ekkehart Schlicht <ekkehart.schlicht\at gmail.com>,
 % `\contributor Canageek          <@\at @>', ^^A https://tex.stackexchange.com/users/7880/canageek
-% `\contributor dsedivec          <@\at @>'  ^^A https://tex.stackexchange.com/users/1680/dsedivec
+% `\contributor dsedivec          <@\at @>', ^^A https://tex.stackexchange.com/users/1680/dsedivec
+% `\contributor DORpapst          <@\at @>', ^^A https://tex.stackexchange.com/users/104965/dorpapst
+% `\contributor chsk              <@\at @>', ^^A https://tex.stackexchange.com/users/158639/chsk
+% `\contributor tnull             <@\at @>', ^^A https://tex.stackexchange.com/users/91987/tnull
+% `\contributor azur              <@\at @>'  ^^A https://tex.stackexchange.com/users/216369/azur
 % and
-% `\contributor DORpapst          <@\at @>'. ^^A https://tex.stackexchange.com/users/104965/dorpapst
+% `\contributor Safron            <@\at @>'. ^^A https://tex.stackexchange.com/users/149123/safron
 %
 %
 %\iffalse
@@ -2975,7 +3321,7 @@
 % \bibitem[\pdftex\ manual]{pdftexman}
 %   \thanh, Sebastian Rahtz, Hans Hagen, Hartmut Henkel, Pawe\l\ Jackowski, Martin Schr\"oder, Karl Berry,
 %   \emph{The \pdftex\ user manual},
-%   \newblock 2~March 2020.
+%   \newblock 18~February 2021.
 %   \newblock (\ctanurl{systems/doc/pdftex/manual/pdftex-a.pdf})
 %             ^^A latest version at \url{http://sarovar.org/projects/pdftex/}
 %             ^^A or even \url{http://foundry.supelec.fr/scm/?group_id=23}
@@ -2986,8 +3332,8 @@
 %   \newblock (\ctanurl{info/fontname/fontname.pdf})
 %
 % \bibitem[\LaTeXe\ font selection]{fntguide}
-%   \LaTeX3 Project Team, \emph{\LaTeXe\ font selection},
-%   \newblock November 2020.
+%   \LaTeX\ Project Team, \emph{\LaTeXe\ font selection},
+%   \newblock March 2021.
 %   \newblock (\ctanurl{macros/latex/base/fntguide.pdf})
 %
 % \bibitem[\pkg{fontspec}]{fontspec}
@@ -2997,9 +3343,9 @@
 %    \newblock (\ctanpkgurl{fontspec})
 %
 % \bibitem[\pkg{luaotfload}]{luaotfload}
-%   \'Elie Roux, Khaled Hosny, Philipp Gesang, Ulrike Fischer, Marcel Kr\"uger,
+%   \LaTeX3 Project, \'Elie Roux, Khaled Hosny, Philipp Gesang, Ulrike Fischer, Marcel Kr\"uger,
 %    \emph{The \pkg{luaotfload} package},
-%    \newblock 8~January 2021.
+%    \newblock 21~May 2021.
 %    \newblock (\ctanpkgurl{luaotfload})
 %
 % \bibitem[\pkg{pdfcprot}]{pdfcprot}
@@ -3019,14 +3365,11 @@
 %\end{thebibliography}
 %
 %
-%\section{Short history}
+%\section{Changes}
 %\changes{v1.5}{2004/12/11}{add `Short history'}
 %
-% The comprehensive list of changes can be
-% \expandafter\ifx\csname r at sec:changes\endcsname\relax
-%     obtained by running `\texttt{makeindex \mbox{-s gglo.ist}
-%                                  \mbox{-o microtype.gls} microtype.glo}'\else
-%     found in appendix~\ref{sec:changes}\fi.
+% The comprehensive list of changes can be found in the Implementation part,
+% appendix~\ref{sec:changes}.
 % The following is a list of all changes relevant in the user land; bug and
 % compatibility fixes are swept under the rug. Numbers in brackets indicate
 % the relevant section in this manual.
@@ -3046,12 +3389,30 @@
 %  \vskip\topsep
 %  \nopagebreak}
 %\newcommand\VersionDate[2]{^^A needed in the Change history
-%  \global\expandafter\def\csname MTversiondate#1\endcsname{#2}}
+%  \global\expandafter\def\csname MTversiondate#1\endcsname{#2}^^A
+%  \immediate\write\histtmp{\string\VersionDate{#1}{#2}}}
 %
+%\newwrite          \histtmp
+%\immediate\openout \histtmp=microtype-hist.tmp
+%
 %\begin{History}
 %
-%\VersionDate{\expandafter\@gobble\fileversion}{\filedate}
+%\Version{\expandafter\@gobble\fileversion}{\filedate}
+%  \item Possibility of automatical protrusion based on difference of character widths
+%        \refsection{\ref{sub:inheritance}}
+%  \item New commands \cs{leftprotrusion} and \cs{rightprotrusion};
+%        various patches to get protrusion right \refsection{\ref{sec:pedantic}}
+%  \item New option \opt{disable}, replacing the |draft| option; deprecate option |final|
+%        \refsection{\ref{sub:options-misc}}
+%  \item New package \pkg{microtype-show} for visual debugging of protrusion settings
+%        \refsection{\ref{sec:contrib}}
+%  \item Protrusion settings for New Computer Modern (OpenType)
+%  \item Protrusion settings for <EB> Garamond (OpenType)
+%  \item New generic protrusion settings for \luatex/\xetex\ \refsection{\ref{sec:caveats}}
+%  \item Move development to \href{\githuburl}{GitHub}
 %
+%\VersionDate{2.8c}{2021/03/14}
+%
 %\VersionDate{2.8b}{2021/02/25}
 %
 %\VersionDate{2.8a}{2021/02/22}
@@ -3072,7 +3433,7 @@
 %  \item Allow automatic expansion and letterspacing with \luatex\ in <DVI> mode
 %        (aka. \texttt{dvilualatex})
 %        \refsection{\ref{sub:options-microtype}, \ref{sub:options-expansion}, table~\ref{tab:available-features}}
-%  \item Compatibility with \LaTeX\ 2017/01/01 (fix warnings)
+%^^A \item Compatibility with \LaTeX\ 2017/01/01 (fix warnings)
 %
 %\VersionDate{2.6a}{2016/05/14}
 %
@@ -3091,7 +3452,7 @@
 %  \item Support for protrusion with \xetex\ $\geq$ 0.9997
 %  \item Support for tracking/letterspacing with \luatex\ $\geq$ 0.62
 %  \item Allow context-sensitive setup with \luatex
-%  \item Info if protrusion settings are generic
+%  \item Info instead of warning if protrusion settings are generic
 %  \item Protrusion settings for Latin Modern Roman (OpenType)
 %  \item Protrusion settings for Charis SIL (OpenType)
 %  \item Protrusion settings for Palatino Linotype (OpenType)
@@ -3221,7 +3582,7 @@
 %  \item New option `\opt{unit}' to measure protrusion factors relative to a
 %        dimension instead of the character width
 %        \refsection{\ref{sub:protrusion}}
-%  \item Renamed commands from \cs{..MicroType..} to \cs{..Microtype..}
+%  \item Renamed commands from \cmd{\..MicroType..} to \cmd{\..Microtype..}
 %  \item Protrusion settings for <AMS> math fonts
 %  \item Protrusion settings for Times in <LY1> encoding completed
 %  \item The `|allmath|' font set also includes <U> encoding
@@ -3238,10 +3599,10 @@
 %  \item New command \cs{LoadMicrotypeFile} to load a configuration file manually
 %        \refsection{\ref{sub:config-file}}
 %  \item New command \cs{Microtype at Hook} for font package authors
-%        \refsection{\ref{sub:hook}}
+%        \refsection{Implementation, \ref{sub:hook}}
 %  \item New option `\opt{verbose}|=errors|' to turn all warnings into errors
 %^^A  \item Disable expansion inside \cmd\showhyphens
-%  \item Warning when running in draft mode
+%  \item Warning when running in disable mode
 %
 %\VersionDate{1.6a}{2005/02/02}
 %
@@ -3305,14 +3666,24 @@
 %  \item First <CTAN> release
 %\end{History}
 %
+%\immediate\closeout\histtmp
 %
+%\fi ^^A ifcodedoc
+%
+%
 %\def\AppendixSettings{
-%  \addtolength\textwidth{50pt}
-%  \addtolength{\oddsidemargin}{-50pt}
-%  \setlength{\columnwidth}{\textwidth}
-%  \setlength{\hsize}{\textwidth}
-%  \setlength{\linewidth}{\textwidth}
-%  \footnotesize
+%  \ifcodedoc
+%    \addtocontents{toc}{\protect\pagebreak} ^^A layout
+%    \addtolength\textwidth{50pt}
+%    \addtolength{\oddsidemargin}{-50pt}
+%    \setlength{\columnwidth}{\textwidth}
+%    \setlength{\hsize}{\textwidth}
+%    \setlength{\linewidth}{\textwidth}
+%    \newpage
+%    \footnotesize
+%  \else
+%    \small
+%  \fi
 %}
 %
 %\def\LPPLSettings{
@@ -3334,12 +3705,9 @@
 %\StopEventually{
 %  \GeneralChanges{Documentation}
 %  \ifx\Finale\relax
-%    \newpage
-%    \appendix
 %    \AppendixSettings
 %  \fi
 %  \PrintIndex
-%  \InputIfFileExists{lppl.tex}\LPPLSettings\relax
 %}
 %
 % \GeneralChanges*
@@ -3374,64 +3742,72 @@
 %  \advance,\afterassignment,\aftergroup,\begingroup,\bgroup,\catcode,\char,
 %  \chardef,\csname,\def,\divide,\edef,\egroup,\else,\endcsname,\endgroup,
 %  \endinput,\escapechar,\everypar,\expandafter,\fi,\futurelet,\gdef,\global,
-%  \hbadness,\hbox,\hsize,\hskip,\if,\ifcase,\ifcat,\ifdim,\iffalse,\ifhbox,
-%  \ifhmode,\ifmmode,\ifnum,\iftrue,\ifx,\immediate,\input,\inputlineno,\jobname,
-%  \kern,\lastkern,\lastskip,\let,\lowercase,\maxdimen,\meaning,\multiply,
-%  \newlinechar,\noexpand,\number,\or,\parfillskip,\pretolerance,\relax,\setbox,
-%  \showboxdepth,\string,\the,\tolerance,\unkern,\unskip,\uppercase,\vbox,\wd,
-%  \write,\xdef}
-%^^A\DoNotIndex{\font,\fontdimen,\nullfont,\sfcode,\spacefactor,\spaceskip,
-%^^A  \xspaceskip}                                                           ^^A tex
+%  \hbadness,\hbox,\hfill,\hrule,\hsize,\hskip,\if,\ifcase,\ifcat,\ifdim,\iffalse,\ifhbox,
+%  \ifhmode,\ifmmode,\ifnum,\iftrue,\ifx,\ignorespaces,\immediate,\input,
+%  \inputlineno,\jobname,\kern,\lastbox,\lastkern,\lastskip,\leaders,\let,\lowercase,
+%  \maxdimen,\meaning,\multiply,\newlinechar,\noexpand,\noindent,\number,
+%  \or,\parfillskip,\pretolerance,\relax,\setbox,\showboxdepth,\splittopskip,
+%  \string,\the,\tolerance,\unkern,\unskip,\unvbox,\uppercase,\vbadness,\vbox,
+%  \vrule,\vsplit,\wd,\write,\xdef}
+%^^A\DoNotIndex{\font,\fontdimen,\fontname,\nullfont,\sfcode,\spacefactor,
+%^^A  \spaceskip,\xspaceskip}                                                ^^A tex
 %\DoNotIndex{\currentgrouplevel,\currentgrouptype,\currentiflevel,\detokenize,
-%  \dimexpr,\eTeXversion,\ifcsname,\ifdefined,\numexpr}
+%  \dimexpr,\eTeXversion,\ifcsname,\ifdefined,\lastnodetype,\numexpr}
 %^^A\DoNotIndex{\fontcharwd,\iffontchar}                                     ^^A e-tex
-%\DoNotIndex{\pdfannot,\pdfescapestring,\pdfmatch,\pdfoutput,\pdfstrcmp,
+%\DoNotIndex{\pdfannot,\pdfmatch,\pdfoutput,\pdfstrcmp,
 %  \pdftexrevision,\pdftexversion}
 %^^A\DoNotIndex{\(ef,lp,rp,kn(ac,bc),(kn,sh,st)bs)code,\(left,right)marginkern,
 %^^A  \tagcode,\letterspacefont,\pdfcopyfont,\pdffontexpand,\pdfnoligatures,
 %^^A  \pdfprotrudechars,\pdfadjust(interwordglue,spacing),\pdf(ap,pre)pendkern,
 %^^A  \pdftracingfonts}                                                      ^^A pdftex
-%\DoNotIndex{\XeTeXversion,\XeTeXrevision,\strcmp}                           ^^A xetex
+%\DoNotIndex{\XeTeXversion,\XeTeXrevision,\strcmp}
 %^^A\DoNotIndex{\XeTeXcharglyph,\XeTeXfonttype,\XeTeXglyph,\XeTeXglyphindex,
-%^^A  \XeTeXglyphname,\XeTeXlastfontchar,\XeTeXprotrudechars}
-%\DoNotIndex{\directlua,\glet,\luatexversion}                                ^^A luatex
+%^^A  \XeTeXglyphname,\XeTeXlastfontchar,\XeTeXprotrudechars}                ^^A xetex
+%\DoNotIndex{\directlua,\glet,\luatexversion}
 %^^A\DoNotIndex{\adjustspacing,\copyfont,\expandglyphsinfont,
-%^^A  \ignoreligaturesinfont,\outputmode,\protrudechars,\tracingfonts}
+%^^A  \ignoreligaturesinfont,\outputmode,\protrudechars,\tracingfonts}       ^^A luatex
 %\DoNotIndex{\eplain,\usepkg at pkg}                                            ^^A eplain
-%\DoNotIndex{\@backslashchar,\@cclv,\@cclvi,\@classoptionslist,\@currext,
-%  \@currname,\@defaultunits,\@empty,\@expandtwoargs,\@firstofone,\@firstoftwo,
-%  \@gobble,\@gobbletwo,\@ifclassloaded,\@ifl at t@r,\@ifl at aded,\@ifpackagelater,
-%  \@ifpackageloaded,\@ifstar,\@ifundefined,\@let at token,\@m,\@makeother,
-%  \@minus,\@nameuse,\@ne,\@nil,\@nnil,\@onelevel at sanitize,\@onlypreamble,
-%  \@percentchar,\@pkgextension,\@plus,\@ptionlist,\@removeelement,\@secondoftwo,
-%  \@spaces,\@sptoken,\@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,\@tempdima,
-%  \@typeset at protect,\@undefined,\@unprocessedoptions,\@unusedoptionlist,
-%  \@xobeysp,\check at icr,\color at begingroup,\color at endgroup,\g at addto@macro,
-%  \hmode at bgroup,\m at ne,\maybe at ic,\maybe at ic@,\nfss at text,\not at math@alphabet,
-%  \on at line,\p@,\set at display@protect,\strip at prefix,\strip at pt,\tw@,\z@,\z at skip,
-%  \zap at space,\active,\documentclass,\fmtversion,\leavevmode,\makeatletter,
-%  \mbox,\newcommand,\newcount,\newdimen,\newif,\newskip,\newtoks,\nobreak,
-%  \nonfrenchspacing,\normalsize,\renewcommand,\space,\AddToHook,\AtBeginDocument,
-%  \AtEndOfPackage,\CheckCommand,\CurrentOption,\DeclareRobustCommand,\IfFileExists,
-%  \InputIfFileExists,\MessageBreak,\PackageError,\PackageInfo,\PackageWarning,
-%  \RequirePackage,\@@enc at update,\cf at encoding,\f at encoding}
-%^^A\DoNotIndex{\add at accent,\curr at fontshape,\define at newfont,\do at subst@correction,
-%^^A  \every at math@size,\f at size,\font at name,\glb at currsize,\glb at settings,\normalfont,
-%^^A  \pickup at font,\remove at tlig,\selectfont,\set at fontsize,\showhyphens}      ^^A latex
+%\DoNotIndex{\@backslashchar,\@car,\@cclvi,\@classoptionslist,\@currext,
+%  \@currname,\@defaultunits,\@empty,\@eqnnum,\@expandtwoargs,\@firstofone,
+%  \@firstoftwo,\@footnotetext,\@gobble,\@gobbletwo,\@ifclassloaded,\@ifl at t@r,
+%  \@ifl at aded,\@ifpackagelater,\@ifpackageloaded,\@ifstar,\@ifundefined,\@item,
+%  \@let at token,\@m,\@M,\@makeother,\@minus,\@nameuse,\@ne,\@newlistfalse,\@nil,\@nnil,
+%  \@onelevel at sanitize,\@onlypreamble,\@pkgextension,\@plus,\@ptionlist,\@removeelement,
+%  \@secondoftwo,\@spaces,\@sptoken,\@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,\@tempdima,
+%  \@typeset at protect,\@undefined,\@unprocessedoptions,\@unusedoptionlist,\@xobeysp,
+%  \check at icr,\color at begingroup,\color at endgroup,\g at addto@macro,\hmode at bgroup,\m at ne,
+%  \maybe at ic,\maybe at ic@,\nfss at text,\not at math@alphabet,\on at line,\p@,\set at display@protect,
+%  \strip at prefix,\strip at pt,\@text at composite,\tw@,\z@,\z at skip,\zap at space,
+%  \active,\documentclass,\dotfill,\fbox,\fboxrule,\fboxsep,\fmtversion,\footnotesize,
+%  \leavevmode,\llap,\makeatletter,\makebox,\mathrm,\mbox,\medskip,\newbox,\newcommand,
+%  \newcount,\newdimen,\newif,\newline,\newskip,\newtoks,\nobreak,\nonfrenchspacing,
+%  \normalbaselineskip,\normalsize,\numberline,\par,\parbox,\quad,\raggedright,
+%  \renewcommand,\scalebox,\space,\strut,\textwidth,\texttt,\tiny,\usefont,
+%  \AddToHook,\AtBeginDocument,\AtEndOfPackage,\CheckCommand,\CurrentOption,
+%  \DeclareOption,\DeclareRobustCommand,\IfFileExists,\IfFormatAtLeastTF,\InputIfFileExists,
+%  \MessageBreak,\PackageError,\PackageInfo,\PackageWarning,\PassOptionsToPackage,
+%  \ProcessOptions,\RequirePackage,\@@enc at update,\UnicodeEncodingName}
+%^^A\DoNotIndex{\add at accent,\cf at encoding,\curr at fontshape,\define at newfont,
+%^^A  \do at subst@correction,\f at encoding,\f at family,\f at size,\font at name,\fontencoding,
+%^^A  \fontseries,\fontshape,\glb at currsize,\glb at settings,\normalfont,\pickup at font,
+%^^A  \remove at tlig,\selectfont,\seriesdefault,\shapedefault,\set at fontsize,\showhyphens}  ^^A latex
 %\DoNotIndex{\normalpdfoutput,\normalpdftexversion,\normalpdftexrevision}    ^^A tex live 2004
 %\DoNotIndex{\foreign at language,\languagename,\select at language,\shorthandoff} ^^A babel
 %\DoNotIndex{\percentsign}                                                   ^^A babel/spanish,galician,mexican
 %\DoNotIndex{\CJK at ifundefined,\CJK at plane,\CJK at temp,\CJK at addcmap}             ^^A CJK,CJKutf8
+%\DoNotIndex{\color}                                                         ^^A color
 %\DoNotIndex{\@disablequotes}                                                ^^A csquotes
 %\DoNotIndex{\pdfstringdefDisableCommands,\pdfstringdefWarn}                 ^^A hyperref
-%\DoNotIndex{\ifpdf}                                                         ^^A ifpdf
+%\DoNotIndex{\ifpdf,\ifetex,\ifluatex,\ifxetex}                              ^^A ifpdf/iftex
 %\DoNotIndex{\@inpenc at undefined@,\IeC,\inputencoding,\inputencodingname}     ^^A inputenc
-%\DoNotIndex{\UTFviii at defined}                                               ^^A inputenc/utf8
+%^^A\DoNotIndex{\UTFviii at defined,\UTF at four@octets at noexpand,                  ^^A inputenc/utf8
+%^^A            \UTF at three@octets at noexpand,\UTF at two@octets at noexpand,
+%^^A            \UTFviii at four@octets,\UTFviii at three@octets,\UTFviii at two@octets}
 %\DoNotIndex{\PrerenderUnicode,\unicode at charfilter}                          ^^A inputenc/utf8x
 %\DoNotIndex{\define at key,\KV@@sp at def,\setkeys}                               ^^A keyval
 %\DoNotIndex{\l at dunhbox@line}                                                ^^A ((r)e)ledmac,((r)e)ledpar
 %\DoNotIndex{\lst at ProcessLetter}                                             ^^A listings
-%\DoNotIndex{\RequireLuaModule}                                              ^^A luatexbase
+%\DoNotIndex{\newluafunction}                                                ^^A luatexbase
 %\DoNotIndex{\pdf at escapestring}                                              ^^A pdftexcmds
 %\DoNotIndex{\py at macron}                                                     ^^A pinyin
 %\DoNotIndex{\SOUL@,\SOUL at doword,\soulregister}                              ^^A soul
@@ -3438,11 +3814,20 @@
 %\DoNotIndex{\tikz at expandcount}                                              ^^A tikz
 %\DoNotIndex{\conditionally at traceoff}                                        ^^A trace
 %\DoNotIndex{\@xspace,\@xspace at firsttrue}                                    ^^A xspace
+%\DoNotIndex{\apptocmd,\patchcmd}                                            ^^A etoolbox
+%\DoNotIndex{\beamer@@callorigitem,\beamer at callorigitem}                     ^^A beamer
+%\DoNotIndex{\eqref,\tagform@}                                               ^^A amsmath
+%\DoNotIndex{\@topic at item}                                                   ^^A simplecv
+%\DoNotIndex{\booknumberline,\chapternumberline,\foottextfont,\partnumberline,
+%  \cftbookafterpnum,\cftchapterafterpnum,\cftfigureafterpnum,\cftparagraphafterpnum,
+%  \cftpartafterpnum,\cftsectionafterpnum,\cftsubparagraphafterpnum,\cftsubsectionafterpnum,
+%  \cftsubsubsectionafterpnum,\cfttableafterpnum}                            ^^A memoir
+%\DoNotIndex{\setuptoc,\unsettoc,\scr at saved@footnotetext}                    ^^A koma (tocbasic)
 %\DoNotIndex{\x,\MT at dinfo,\MT at dinfo@nl,\tracingmicrotype,\tracingmicrotypeinpdf,
 %  \ifMT at inannot,\MT at inannottrue,\MT at inannotfalse,\MT at addto@annot,\MT at pdf@annot,
 %  \MT at show@pdfannot,\iftracingmicrotypeinpdfall,\tracingmicrotypeinpdfalltrue,
-%  \tracingmicrotypeinpdfallfalse,\DeclareMicroTypeSet,\DeclareMicroTypeAlias,
-%  \UseMicroTypeSet,\LoadMicroTypeFile,\MicroType at Hook}                      ^^A microtype
+%  \tracingmicrotypeinpdfallfalse,\DeclareMicroTypeAlias,\DeclareMicroTypeSet,
+%  \LoadMicroTypeFile,\UseMicroTypeSet,\MicroType at Hook}                      ^^A microtype
 %
 % ^^A -------------------------------------------------------------------------
 %
@@ -3456,9 +3841,10 @@
 % \begin{description}
 %  \item[|driver|]  The documentation driver, only visible in the \file{dtx} file.
 %  \item[|package|] The code for the \microtype\ package (\file{microtype.sty}).
-%  \item[|pdftex-def|] Definitions specific to \pdftex\ (\file{microtype-pdftex.def}).
-%  \item[|xetex-def|] Definitions specific to \xetex\ (\file{microtype-xetex.def}).
-%  \item[|luatex-def|] Definitions specific to \luatex\ (\file{microtype-luatex.def}).
+%  \item[|show|] The code for the \pkg{microtype-show} package (\file{microtype-show.sty}).
+%  \item[|pdf-|] Definitions specific to \pdftex\ (\file{microtype-pdftex.def}).
+%  \item[|lua-|] Definitions specific to \luatex\ (\file{microtype-luatex.def}).
+%  \item[|xe-|] Definitions specific to \xetex\ (\file{microtype-xetex.def}).
 %  \item[|letterspace|] The code for the \letterspace\ package (\file{letterspace.sty}).
 %   \begin{description}
 %    \item[|plain|]  Code for \pkg{eplain}, \pkg{miniltx} (\letterspace\ only).
@@ -3608,13 +3994,15 @@
 \expandafter\let\csname ver at letterspace.sty\endcsname\@empty
 %    \end{macrocode}
 %\begin{macro}{\MT at old@cmd}
-% The old command names had one more hunch.
-%\changes{v1.8}{2005/04/28}{renamed commands from \cs{..MicroType..} to \cs{..Microtype..}}
+% The old command names had one more hunch (|\..MicroType..|).
+% Before finally letting them sink into oblivion, raise an error.
+%\changes{v1.8}{2005/04/28}{renamed commands from \cmd{\..MicroType..} to \cmd{\..Microtype..}}
+%\changes{v3.0}{2020/04/10}{old command names will raise an error}
 %    \begin{macrocode}
 \def\MT at old@cmd#1#2{%
-  \newcommand*#1{\MT at warning{%
+  \newcommand*#1{\MT at error{%
     \string#1 is deprecated. Please use\MessageBreak
-    \string#2 instead}%
+    \string#2 instead}{As I said}%
     \let #1#2#2}}
 %    \end{macrocode}
 %\end{macro}
@@ -3764,6 +4152,7 @@
 }
 %</debug>
 %</package>
+%</package|letterspace>
 %    \end{macrocode}
 %\end{macro}
 %\ifpdf\ifx\tracingmicrotypeinpdf\undefined\else
@@ -3771,8 +4160,384 @@
 % \tracingmicrotype0
 %\fi\fi
 %
+%\subsubsection{Visual debugging}
+%
+%\changes{v3.0}{2021/06/02}{new package: \pkg{microtype-show} for visual debugging}
+% The \pkg{microtype-show} package offers some tools for preparing
+% protrusion settings. We make use of the \microtype\ infrastructure,
+% redefining some of its internal commands (done later,
+% in sections \ref{ssub:setup-prot} and \ref{ssub:setup-config}).
+% First, some preparation:
+%    \begin{macrocode}
+%<*show>
+\RequirePackage{iftex}
+\ifetex\else
+  \PackageError{microtype-show}
+               {This package only works with e-TeX}{Use e-TeX}
+\fi
+\ifxetex
+  \PackageError{microtype-show}
+               {This package only works with pdfTeX or luaTeX}{Don't use XeTeX}
+\fi
+\PackageWarning{microtype-show}{DO NOT USE THIS PACKAGE FOR REAL DOCUMENTS\@gobble}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{microtype}}
+\ProcessOptions\relax
+\PassOptionsToPackage{verbose}{microtype}
+\RequirePackage{microtype,graphicx,xcolor}
+%    \end{macrocode}
+%\begin{macro}{\ifShowGlyphIndex}
+%\begin{macro}{\ifShowMissingGlyphs}
+%\begin{macro}{\GlyphScaleFactor}
+%\begin{macro}{\Showbaselinecolor}
+%\begin{macro}{\Showposcolor}
+%\begin{macro}{\Shownegcolor}
+% The following commands are configurable:
+%    \begin{macrocode}
+\newif\ifShowGlyphIndex
+\newif\ifShowMissingGlyphs
+\newcommand*\GlyphScaleFactor{2}
+\newcommand*\Showbaselinecolor{\color{black!40}}
+\newcommand*\Showposcolor{\color{green!50}}
+\newcommand*\Shownegcolor{\color{red!50}}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MTS at printtext}
+%\begin{macro}{\MTS at show@index}
+%\begin{macro}{\MTS at crulefill}
+% Make sure to have a readable font.
+%    \begin{macrocode}
+\ifluatex
+  \def\MTS at printtext#1{{\usefont{TU}{lmr}{m}{n}#1}}
+\else
+  \def\MTS at printtext#1{{\usefont{T1}{cmr}{m}{n}#1}}
+\fi
+\def\MTS at show@index#1{\ifShowGlyphIndex{\tiny$_{#1}%
+ %  \ifluatex^{\mathrm{%
+ %    \MT at lua{tex.print(luaotfload.aux.name_of_slot(tonumber([[#1]])))}}}\fi
+  $}\fi\space}
+\def\MTS at crulefill{\leaders\hrule height \dimexpr1ex/2+.4pt depth -\dimexpr1ex/2\hfill}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MTS at Prot}
+%\begin{macro}{\MTS at Char}
+% Add the |show| commands to \microtype's setup.
+%    \begin{macrocode}
+\g at addto@macro\MT at setupfont{\MTS at Prot\MTS at Char}
+\let\MTS at Prot\relax
+\let\MTS at Char\relax
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MTS at setup}
+%\begin{macro}{\MTS at glyphlist}
+% Common setup. \cs{MTS at glyphlist} stores all glyphs we've seen.
+%    \begin{macrocode}
+\def\MTS at setup{%
+  \fboxsep=0pt
+  \fboxrule=.1pt
+  \raggedright
+  \let\MTS at glyphlist\@gobble
+  \def\MT at feat{pr}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\ShowProtrusion}
+% Activate the sleeper command, then trigger the setup.
+%    \begin{macrocode}
+\newcommand*\ShowProtrusion{%
+  \begingroup
+    \MTS at setup
+    \let\MTS at Prot\MTS at Prot@do
+    \def\MT at cat{c}%
+    \selectfont
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at Prot@do}
+% But in all other cases of a font being picked up, there should
+% be no special treatment. After we're done, select the previous
+% font again.
+%    \begin{macrocode}
+\def\MTS at Prot@do{%
+    \MT at ltx@pickupfont
+    \let\MT at pr@split at val\MTS at pr@split at val
+    \let\MT at load@list\MTS at load@list
+    \let\MT at set@pr at prefixes@\MTS at set@pr at prefixes@
+    \MTS at show@pr
+  \endgroup
+  \aftergroup\selectfont
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowCharacterInheritance}
+%    \begin{macrocode}
+\newcommand*\ShowCharacterInheritance{%
+  \begingroup
+    \MTS at setup
+    \let\MTS at Char\MTS at Char@do
+    \def\MT at cat{inh}%
+    \selectfont
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at Char@do}
+%    \begin{macrocode}
+\def\MTS at Char@do{%
+    \MT at ltx@pickupfont
+    \let\MT at set@pr at prefixes@\MTS at set@pr at prefixes@
+    \MTS at show@inheritance
+  \endgroup
+  \aftergroup\selectfont
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowProtrusionLineGlyph}
+% By glyph.
+%    \begin{macrocode}
+\newcommand*\ShowProtrusionLineGlyph[1]{%
+  {\MTS at setup
+   \MTS at showprotrusionline{`#1}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowProtrusionLineIndex}
+% By glyph number.
+%    \begin{macrocode}
+\newcommand*\ShowProtrusionLineIndex[1]{%
+  {\MTS at setup
+   \MTS at showprotrusionline{#1}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at showprotrusionline}
+%\begin{macro}{\MTS at lpcode}
+%\begin{macro}{\MTS at rpcode}
+%    \begin{macrocode}
+\def\MTS at showprotrusionline#1{%
+  \edef\MTS at lpcode{\number\lpcode\font#1}%
+  \edef\MTS at rpcode{\number\rpcode\font#1}%
+  \char#1%
+    lorem ipsum dolor sit amet, \MTS at crulefill\ %
+    \MTS at printtext{\ifnum\MTS at lpcode=\z@\Showbaselinecolor\fi[\MTS at lpcode]}
+    \fbox{\char#1}\MTS at show@index{\number#1}
+    \MTS at printtext{\ifnum\MTS at rpcode=\z@\Showbaselinecolor\fi[\MTS at rpcode]}
+    \MTS at crulefill\ you know the rest%
+  \char#1\par
+  \ShowDummyLine
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\ShowDummyLine}
+% The first and last glyphs in this line should have a straight (non-protruded) shape.
+% We also reset to default shape and series, because that's what, say, italic shapes
+% should be matched with.
+%    \begin{macrocode}
+\newcommand*\ShowDummyLine{%
+ {\fontencoding{\encodingdefault}\fontseries{\seriesdefault}\fontshape{\shapedefault}%
+  \selectfont\noindent
+  here is the beginning of a line, \dotfill and here is its end}\par
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowProtrusionAll}
+%    \begin{macrocode}
+\newcommand*\ShowProtrusionAll{%
+  {\MTS at setup
+   \MTS at lede{}%
+   \MT at do@font{\iffontchar\font\@tempcnta\MTS at showprotrusionline{\@tempcnta}\fi}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowProtrusionDefined}
+%    \begin{macrocode}
+\newcommand*\ShowProtrusionDefined{%
+  {\MTS at setup
+   \MTS at lede{defined}%
+   \let\MTS at first\@gobble
+   \let\MTS at second\@firstofone
+   \MT at do@font{%
+     \MTS at firstorsecond
+     \MTS at temp{%
+       \iffontchar\font\@tempcnta\MTS at showprotrusionline{\@tempcnta}\else
+         \MT at warning@nl{Glyph \the\@tempcnta\space is missing in font
+                        \MessageBreak\font at name}%
+       \fi}}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ShowProtrusionMissing}
+%    \begin{macrocode}
+\newcommand*\ShowProtrusionMissing{%
+  {\MTS at setup
+   \MTS at lede{missing}%
+   \let\MTS at first\@firstofone
+   \let\MTS at second\@gobble
+   \MT at do@font{%
+     \MTS at firstorsecond
+     \iffontchar\font\@tempcnta\MTS at temp{\MTS at showprotrusionline{\@tempcnta}}\fi}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at lede}
+%    \begin{macrocode}
+\def\MTS at lede#1{%
+  \selectfont
+  \edef\MTS at font{\expandafter\string\font at name}%
+  \MTS at printtext{All glyphs \MT at ifempty{#1}{in}{#1 in protrusion list for}
+                 font \texttt{\MTS at font}:}\par
+  \ShowDummyLine
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at firstorsecond}
+%    \begin{macrocode}
+\def\MTS at firstorsecond{%
+  \let\MTS at temp\MTS at first
+  \ifnum\lpcode\font\@tempcnta=\z@ \else
+    \let\MTS at temp\MTS at second
+  \fi
+  \ifnum\rpcode\font\@tempcnta=\z@ \else
+    \let\MTS at temp\MTS at second
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at charwd}
+%\begin{macro}{\MTS at lp@}
+%\begin{macro}{\MTS at rp@}
+%\begin{macro}{\MTS at show@char at pr}
+% Display the glyph with protrusion.
+%    \begin{macrocode}
+\newdimen\MTS at charwd
+\newdimen\MTS at lp@
+\newdimen\MTS at rp@
+\def\MTS at show@char at pr#1{%
+  \xdef\MTS at glyphlist{\MTS at glyphlist,#1}%
+  \scalebox{\GlyphScaleFactor}{\strut\escapechar`\\
+    \MTS at charwd=\fontcharwd\MT at font#1\relax
+%    \end{macrocode}
+% The baseline rule.
+%    \begin{macrocode}
+    {\Showbaselinecolor\vrule width \dimexpr\MTS at charwd+.3em\relax height 1sp depth 0pt}%
+    \hskip-\dimexpr\MTS at charwd+.15em\relax
+%    \end{macrocode}
+% Left protrusion.
+%    \begin{macrocode}
+    {\ifdim\MTS at lp@<\z@\Shownegcolor\else\Showposcolor\fi
+     \vrule width \ifdim\MTS at lp@<\z@ -\fi\MTS at lp@ height 1em depth .2em}%
+    \hskip\dimexpr\MTS at charwd\ifdim\MTS at lp@>\z at -\MTS at lp@\fi
+                             \ifdim\MTS at rp@>\z at -\MTS at rp@\fi\relax
+%    \end{macrocode}
+% Right protrusion.
+%    \begin{macrocode}
+    {\ifdim\MTS at rp@<\z@\Shownegcolor\else\Showposcolor\fi
+     \vrule width \ifdim\MTS at rp@<\z@ -\fi\MTS at rp@ height 1em depth .2em}%
+    \hskip-\dimexpr\MTS at charwd+\fboxrule\ifdim\MTS at rp@<\z at -\MTS at rp@\fi\relax
+%    \end{macrocode}
+% Finally the glyph, so that it's on top.
+%    \begin{macrocode}
+    \fbox{\char#1}}\,%
+    \MTS at show@index{#1}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MTS at show@char}
+%\begin{macro}{\MTS at show@char at x}
+% Just show the glyph; the second command also remembers it.
+%    \begin{macrocode}
+\def\MTS at show@char#1{\scalebox{\GlyphScaleFactor}{%
+  \strut\fbox{\char#1}}\MTS at show@index{#1}}
+\def\MTS at show@char at x#1{\xdef\MTS at glyphlist{\MTS at glyphlist,#1}\MTS at show@char{#1}}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MTS at show@missing}
+%    \begin{macrocode}
+\def\MTS at show@missing{%
+  \MT at ifdefined@c at T\MT at pr@inh at name{%
+    \MTS at lp@=\z@ \MTS at rp@=\z@
+    \par \MTS at printtext{Glyphs not included in configuration (with defined heirs):}%
+    \MT at do@font{%
+      \edef\MT at temp{\the\@tempcnta}%
+      \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @\MT at temp @}{%
+        \MT at exp@one at n\MT at in@clist\MT at temp\MTS at glyphlist
+        \ifMT at inlist@\else \newline
+        \llap{\MTS at show@char at pr{\MT at temp} \MTS at printtext{=} }%
+         \MT at exp@cs\MT at map@tlist at c
+           {MT at inh@\MT at pr@inh at name @\the\@tempcnta @}%
+           \MTS at show@char at x
+        \fi
+      }%
+    }%
+  }%
+  \MTS at show@missing@
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at show@missing@}
+%    \begin{macrocode}
+\def\MTS at show@missing@{%
+  \par \MTS at printtext{Other glyphs not in configuration:}\newline
+  \MT at do@font{%
+    \edef\MT at temp{\the\@tempcnta}%
+    \MT at exp@one at n\MT at in@clist\MT at temp\MTS at glyphlist
+    \ifMT at inlist@\else
+      \MTS at show@char\MT at temp
+    \fi
+  }%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MTS at show@inheritance}
+%    \begin{macrocode}
+\def\MTS at show@inheritance{%
+  \MT at get@inh at list
+  \MTS at printtext{Character inheritance for font `\texttt{\MT@@font}':}\\
+  \MT at ifdefined@c at TF\MT at listname{%
+    \MTS at printtext{First matching list is for `\texttt{\@tempa}':\\
+              \texttt{\MT at listname}:}\par\leavevmode
+    \MT at do@font{%
+      \MT at ifdefined@n at T{MT at inh@\MT at listname @\the\@tempcnta @}{%
+        \newline
+        \xdef\MTS at glyphlist{\MTS at glyphlist,\the\@tempcnta}%
+        \llap{\MTS at show@char{\the\@tempcnta}\MTS at printtext{= }}%
+        \MT at exp@cs\MT at map@tlist at c
+          {MT at inh@\MT at listname @\the\@tempcnta @}%
+          \MTS at show@char at x
+      }%
+    }%
+    \MT at ifdefined@n at T{MT at inh@\MT at listname @prefixes}{%
+      \par \MTS at printtext{(with prefixes:)}%
+      \@tempcntb=\z@
+      \let\MTS at show@char at pr\MTS at show@char at x
+      \MT at set@pr at prefixheirs}%
+    \ifShowMissingGlyphs\MTS at show@missing@\fi
+  }{%
+    \MTS at printtext{NOT DEFINED}%
+  }%
+  \par
+}
+%</show>
+%    \end{macrocode}
+%\end{macro}
+%
 %\subsubsection{Requirements}
 %
+% Back to the user packages.
+%
 %\begin{macro}{\MT at plain}
 % The \letterspace\ package works with:
 %\begin{enum}
@@ -3783,6 +4548,7 @@
 %\end{enum}
 % For plain usage, we have to copy some commands from \file{latex.ltx}.
 %    \begin{macrocode}
+%<*package|letterspace>
 %<*plain>
 \def\MT at plain{2}
 \ifx\documentclass\@undefined
@@ -3919,8 +4685,7 @@
 % available, and some specifics have changed over time. Therefore, we have to
 % test which \pdftex\ we're using, if any. \cs{MT at pdftex@no} will be used
 % throughout the package to respectively do the right thing.
-%
-% Currently, we have to distinguish seven cases for \pdftex:
+% Currently, we have to distinguish the following cases for \pdftex:
 %\begin{enum}
 %  \item not running \pdftex
 %  \item \pdftex\ ($\less$~0.14f)
@@ -3930,13 +4695,13 @@
 %          protrusion no longer has to be set up first;
 %          scale factor fixed to 1000;
 %          default \cmd\efcode\,=\,1000 ($\geq$~1.20)
+%  \item + \cmd{\(left,right)marginkern};
 %\changes{v1.8}{2005/04/15}{case 5: \pdftex\ 1.30}
-%  \item + \cmd{\(left,right)marginkern};
 %          \cmd\pdfnoligatures;
 %          \cmd\pdfstrcmp;
 %          \cmd\pdfescapestring\ ($\geq$~1.30)
+%  \item + adjustment of interword spacing;
 %\changes{v2.0}{2005/08/20}{case 6: \pdftex\ 1.40} ^^A (beta:1)
-%  \item + adjustment of interword spacing;
 %          extra kerning;
 %          \cmd\letterspacefont;
 %          \cmd\pdfmatch\footnote{This command was actually introduced
@@ -3944,21 +4709,28 @@
 %          \cmd\pdftracingfonts;
 %          always \etex\
 %          ($\geq$~1.40)
+%  \item + \cmd\letterspacefont\ doesn't disable ligatures and kerns;
 %\changes{v2.2}{2007/02/23}{case 7: \pdftex\ 1.40.4}
-%  \item + \cmd\letterspacefont\ doesn't disable ligatures and kerns;
 %          \cmd\pdfcopyfont\
 %          ($\geq$~1.40.4)
+%  \item + \cmd\letterspacefont\ uses explicit \fontdim6 if specified
+%\changes{v3.0}{2021/07/01}{case 8: \pdftex\ 1.40.23}
+%          ^^A https://git.texlive.info/texlive/commit/?id=1c7ff5528e10e989ba7ea7b72182d5f34d4d4e29
+%          ($\geq$~1.40.23)
 %\end{enum}
 %\changes{v1.1}{2004/09/13}{fix: version check
 %               (reported by \contributor Harald Harders <h.harders\at tu-bs.de>)}
 %                                                   ^^A private mail, 2004/09/13
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 %<debug>\MT at dinfo@nl{0}{this is pdftex \the\pdftexversion(\pdftexrevision)}
-\def\MT at pdftex@no{7}
+\def\MT at pdftex@no{8}
 \ifnum\pdftexversion = 140
-  \ifnum\pdftexrevision < 4
-    \def\MT at pdftex@no{6}
+  \ifnum\pdftexrevision < 23
+    \def\MT at pdftex@no{7}
+    \ifnum\pdftexrevision < 4
+      \def\MT at pdftex@no{6}
+    \fi
   \fi
 \else
   \ifnum\pdftexversion < 140
@@ -3984,7 +4756,7 @@
   \fi
 \fi
 %<debug>\MT at dinfo@nl{0}{pdftex no.: \MT at pdftex@no}
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 %\changes{v2.5}{2010/05/05}{protrusion with \xetex}
@@ -3991,7 +4763,7 @@
 %\begin{macro}{\MT at xetex@no}
 % \xetex\ supports character protrusion since version 0.9997.
 %    \begin{macrocode}
-%<*xetex-def>
+%<*xe->
 %<debug>\MT at dinfo@nl{0}{this is xetex (\the\XeTeXversion\XeTeXrevision)}
 \ifdim 0\XeTeXrevision pt < 0.9997pt
   \def\MT at xetex@no{1}
@@ -3999,7 +4771,7 @@
   \def\MT at xetex@no{2}
 \fi
 %<debug>\MT at dinfo@nl{0}{xetex no.: \MT at xetex@no}
-%</xetex-def>
+%</xe->
 %    \end{macrocode}
 %\end{macro}
 %\changes{v2.3c}{2008/09/09}{\luatex\ supported by default}
@@ -4017,7 +4789,7 @@
 %         ($\geq$~0.62)
 % \item + almost all of the \pdftex\ primitives have been renamed ($\geq$~0.85)
 % \item + default \cmd\efcode\,=\,1000;
-%         \cmd\protrusionboundary\ [not yet supported] ($\geq$~0.90)
+%         \cmd\protrusionboundary\ [doesn't seem to work] ($\geq$~0.90)
 %\todo{interface for \cmd\protrusionboundary}
 % \item + \cmd\glet ($\geq$~1.10)
 %\end{enum}
@@ -4025,7 +4797,7 @@
 % Also, sometime between 1.0.4 and 1.0.7, the function |font.setexpansion|
 % has been introduced (but we're not using it for now).
 %    \begin{macrocode}
-%<*luatex-def>
+%<*lua->
 %<debug>\MT at dinfo@nl0{this is luatex (\the\luatexversion)}
 %    \end{macrocode}
 %\begin{macro}{\MT at lua}
@@ -4057,13 +4829,13 @@
 %\end{macro}
 %    \begin{macrocode}
 %<debug>\MT at dinfo@nl{0}{luatex no.: \MT at luatex@no}
-%</luatex-def>
+%</lua->
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|letterspace>
+%<*pdf-|xe-|letterspace>
 \ifnum
-%<pdftex-def|xetex-def>  \csname MT@\MT at engine tex at no\endcsname < 2
+%<pdf-|xe->  \csname MT@\MT at engine tex at no\endcsname < 2
 %<letterspace>  \MT at engine@tooold=\z@
   \MT at warning@nl{You
 %<*letterspace>
@@ -4074,8 +4846,8 @@
     \else
 %</letterspace>
       are using a \MT at engine tex version older than
-%<pdftex-def>      0.14f%
-%<xetex-def>      0.9997%
+%<pdf->      0.14f%
+%<xe->      0.9997%
 %<letterspace>        \MT at pdf@or at lua{1.40}{0.62}%
       .\MessageBreak
       `\MT at MT' does not work with this version.\MessageBreak
@@ -4084,16 +4856,19 @@
       .\MessageBreak I will quit now}
   \MT at clear@options
 \endinput\fi
-%</pdftex-def|xetex-def|letterspace>
+%</pdf-|xe-|letterspace>
 %    \end{macrocode}
 % Still there? Then we can begin:
 % We need the \pkg{keyval} package, including the `new' \cmd\KV@@sp at def\
 % implementation.
 %\changes{v2.1}{2007/01/15}{fix: \letterspace\ package forgot to load \pkg{keyval}}
+% For the \opt{patch} option, we use \pkg{etoolbox}, which requires \etex.
+%\changes{v3.0}{2021/05/17}{require package \pkg{etoolbox} (for \opt{patch} option)}
 %    \begin{macrocode}
 %<*package|letterspace>
 \RequirePackage{keyval}[1997/11/10]
 %<*package>
+^^X\RequirePackage{etoolbox}
 %    \end{macrocode}
 %\begin{macro}{\MT at toks}
 % We need a token register.
@@ -4117,6 +4892,7 @@
 %\begin{macro}{\ifMT at selected}
 %\begin{macro}{\ifMT at noligatures}
 %\begin{macro}{\ifMT at draft}
+%\begin{macro}{\ifMT at disable}
 %\begin{macro}{\ifMT at spacing}
 %\begin{macro}{\ifMT at kerning}
 %\begin{macro}{\ifMT at tracking}
@@ -4129,6 +4905,7 @@
 \newif\ifMT at selected
 \newif\ifMT at noligatures
 \newif\ifMT at draft
+\newif\ifMT at disable
 \newif\ifMT at spacing
 \newif\ifMT at kerning
 \newif\ifMT at tracking
@@ -4144,6 +4921,7 @@
 %\end{macro}
 %\end{macro}
 %\end{macro}
+%\end{macro}
 % [This line intentionally left blank.]
 %\begin{macro}{\MT at pr@level}
 %\begin{macro}{\MT at ex@level}
@@ -4267,19 +5045,19 @@
 %\begin{macro}{\MT at requires@luatex}
 % For definitions that depend on a particular \pdftex\ resp. \luatex\ version.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def
-%<pdftex-def>  \MT at requires@pdftex%
-%<luatex-def>  \MT at requires@luatex%
+%<pdf->  \MT at requires@pdftex%
+%<lua->  \MT at requires@luatex%
   #1{\ifnum
-%<pdftex-def>  \MT at pdftex@no
-%<luatex-def>  \MT at luatex@no
+%<pdf->  \MT at pdftex@no
+%<lua->  \MT at luatex@no
     <#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}
-%<luatex-def&debug>\MT at requires@luatex4{\MT at lua{tex.enableprimitives('pdf',{'tracingfonts'})}}\relax
-%<pdftex-def&debug>\MT at requires@pdftex6{
+%<lua-&debug>\MT at requires@luatex4{\MT at lua{tex.enableprimitives('pdf',{'tracingfonts'})}}\relax
+%<pdf-&debug>\MT at requires@pdftex6{
 %<debug>\pdftracingfonts=1
-%<pdftex-def&debug>}\relax
-%</pdftex-def|luatex-def>
+%<pdf-&debug>}\relax
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -4292,8 +5070,7 @@
 %\changes{v2.7}{2017/02/08}{drop \pkg{luatexbase} with recent \LaTeX}
 % we load the \pkg{luatexbase} package.
 %    \begin{macrocode}
-%<*luatex-def>
-\@ifl at t@r\fmtversion{2016/01/01}\relax{\RequirePackage{luatexbase}}
+%<lua->\@ifl at t@r\fmtversion{2016/01/01}\relax{\RequirePackage{luatexbase}}
 %    \end{macrocode}
 % We load \pkg{luaotfload}, because some of its functions are
 % required in \file{microtype.lua}. This eliminates the need for the user to
@@ -4300,11 +5077,14 @@
 % load \pkg{fontspec} before \microtype.
 % There will hardly be any \luatex\ documents that don't load this package, anyway.
 %\changes{v2.6}{2013/06/19}{load \pkg{luaotfload} with \luatex}
+%\changes{v3.0}{2021/03/21}{\letterspace\ loads \file{microtype.lua}}
 % Since 2017/01/01, it is already loaded in the format.
 %    \begin{macrocode}
-\@ifl at t@r\fmtversion{2017/01/01}\relax{\RequirePackage{luaotfload}}
-\MT at lua{require("microtype")}
-%</luatex-def>
+%<lua->\@ifl at t@r\fmtversion{2017/01/01}\relax{\RequirePackage{luaotfload}}
+%<letterspace>\MT at pdf@or at lua\relax{
+%<letterspace>\ifx\newluafunction\@undefined \input ltluatex \fi
+%<lua-|letterspace>\MT at lua{require("microtype")}
+%<letterspace>}
 %    \end{macrocode}
 % Here it begins. The module was contributed by \'Elie Roux.
 %\changes{v2.4}{2009/11/12}{new file \file{microtype.lua} containing the \texttt{lua} functions
@@ -4345,7 +5125,7 @@
 %\changes{v2.8a}{2020/02/01}{use \luatex's \cmd\glet, if available}
 % (finally implemented in \luatex).
 %    \begin{macrocode}
-%<luatex-def>\MT at requires@luatex6{\let\MT at glet\glet}\relax
+%<lua->\MT at requires@luatex6{\let\MT at glet\glet}\relax
 %<*package|letterspace>
 \def\MT at glet{\global\let}
 %    \end{macrocode}
@@ -4442,7 +5222,7 @@
 %    \end{macrocode}
 %\end{macro}
 % You do not wonder why |\MT at exp@one at c| doesn't exist, do you?
-%\changes{v1.6}{2005/01/19}{use \etex's \cs{ifcsname} and \cs{ifdefined} if defined}
+%\changes{v1.6}{2005/01/19}{use \etex's \orig at cs{ifcsname} and \orig at cs{ifdefined} if defined}
 %\begin{macro}{\MT at ifdefined@c at T}
 %\changes{v1.9a}{2005/11/08}{new macros: true case only}
 %\begin{macro}{\MT at ifdefined@c at TF}
@@ -4449,8 +5229,8 @@
 %\begin{macro}{\MT at ifdefined@n at T}
 %\begin{macro}{\MT at ifdefined@n at TF}
 % Wrapper for testing whether command resp. \cmd\csname\ sequence is defined.
-% If we are running \etex, we will use its primitives \cs{ifdefined} and
-% \cs{ifcsname}, which decreases memory use substantially.
+% If we are running \etex, we will use its primitives \orig at cs{ifdefined} and
+% \orig at cs{ifcsname}, which decreases memory use substantially.
 %    \begin{macrocode}
 \def\MT at ifdefined@c at T#1{%
 ^^X  \ifdefined#1\expandafter\@firstofone\else\expandafter\@gobble\fi
@@ -4537,9 +5317,9 @@
 %    \begin{macrocode}
 %</package>
 %</package|letterspace>
-%<pdftex-def>\MT at requires@pdftex6{
+%<pdf->\MT at requires@pdftex6{
 %<letterspace>\MT at pdf@or at lua{
-%<*pdftex-def|letterspace>
+%<*pdf-|letterspace>
 \def\MT at ifint#1{%
   \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax
     \expandafter\@secondoftwo
@@ -4548,8 +5328,8 @@
   \fi
 }
 }{
-%</pdftex-def|letterspace>
-%<*pdftex-def|xetex-def|letterspace>
+%</pdf-|letterspace>
+%<*pdf-|xe-|letterspace>
 \def\MT at ifint#1{%
   \if!\ifnum9<1#1!\else?\fi
     \expandafter\@firstoftwo
@@ -4557,9 +5337,9 @@
     \expandafter\@secondoftwo
   \fi
 }
-%</pdftex-def|xetex-def|letterspace>
-%<pdftex-def|letterspace>}
-%<luatex-def>\def\MT at ifint#1{\csname\MT at lua{microtype.if_int([[#1]])}\endcsname}
+%</pdf-|xe-|letterspace>
+%<pdf-|letterspace>}
+%<lua->\def\MT at ifint#1{\csname\MT at lua{microtype.if_int([[#1]])}\endcsname}
 %<*luafile>
 local function if_int(s)
   if find(s,"^-*[0-9]+ *$") then
@@ -4584,7 +5364,7 @@
 %\changes{v2.2}{2007/05/10}{employ \luatex\ features if available}
 %\todo{fix \texttt{lua} expression}
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \MT at requires@pdftex6{
 \def\MT at ifdimen#1{%
   \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)%
@@ -4595,8 +5375,8 @@
   \fi
 }
 }{
-%</pdftex-def>
-%<*pdftex-def|xetex-def>
+%</pdf->
+%<*pdf-|xe->
 \def\MT at ifdimen#1{%
   \setbox\z@=\hbox{%
     \MT at count=1#1\relax
@@ -4607,9 +5387,9 @@
     \fi
   }%
 }
-%</pdftex-def|xetex-def>
-%<pdftex-def>}
-%<luatex-def>\def\MT at ifdimen#1{\csname\MT at lua{microtype.if_dimen([[#1]])}\endcsname}
+%</pdf-|xe->
+%<pdf->}
+%<lua->\def\MT at ifdimen#1{\csname\MT at lua{microtype.if_dimen([[#1]])}\endcsname}
 %<*luafile>
 local function if_dimen(s)
   if (find(s, "^-*[0-9]+(%a*) *$") or
@@ -4647,18 +5427,18 @@
 %\changes{v2.2}{2007/05/10}{employ \luatex\ features if available}
 %\changes{v2.8}{2020/06/18}{use \xetex's \cmd\stringcmp}
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def>
-%<pdftex-def>\MT at requires@pdftex5{
+%<*pdf-|xe->
+%<pdf->\MT at requires@pdftex5{
 \def\MT at ifstreq#1#2{%
-%<pdftex-def>  \ifnum\pdfstrcmp{#1}{#2}=\z@
-%<xetex-def>  \ifnum\strcmp{#1}{#2}=\z@
+%<pdf->  \ifnum\pdfstrcmp{#1}{#2}=\z@
+%<xe->  \ifnum\strcmp{#1}{#2}=\z@
     \expandafter\@firstoftwo
   \else
     \expandafter\@secondoftwo
   \fi
 }
-%</pdftex-def|xetex-def>
-%<*pdftex-def>
+%</pdf-|xe->
+%<*pdf->
 }{
 \def\MT at ifstreq#1#2{%
   \edef\MT at res@a{#1}%
@@ -4670,8 +5450,8 @@
   \fi
 }
 }
-%</pdftex-def>
-%<luatex-def>\def\MT at ifstreq#1#2{\csname\MT at lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname}
+%</pdf->
+%<lua->\def\MT at ifstreq#1#2{\csname\MT at lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname}
 %<*luafile>
 local function if_str_eq(s1, s2)
   if s1 == s2 then
@@ -4730,7 +5510,7 @@
   \fi
 }
 %    \end{macrocode}
-%\todo{think \cs{@nil} should be defined as itself}
+%\todo{think \cmd\@nil\ should be defined as itself}
 %    \begin{macrocode}
 \def\MT at map@clist at c#1{\MT at exp@one at n\MT at map@clist at n#1}
 \def\MT at map@clist@#1,{%
@@ -4905,28 +5685,30 @@
 % For fonts loaded by \pkg{luaotfload} we query the font's table.
 %    \begin{macrocode}
 %<letterspace>\MT at pdf@or at lua{\let\MT at if@luaotf at font\@secondoftwo}{
-%<luatex-def|letterspace>\def\MT at if@luaotf at font{\csname\MT at lua{%
-%<luatex-def>  microtype.if_luaotf_font()
-%<*luafile|letterspace>
-%<luafile>local function if_luaotf_font()
+%<*lua-|letterspace>
+\def\MT at if@luaotf at font{\csname\MT at lua{%
+  microtype.if_luaotf_font()
+  }\endcsname
+}
+%</lua-|letterspace>
+%<letterspace>}
+%<*luafile>
+local function if_luaotf_font()
   local thefont = font.getfont(font.current())
   if thefont and ( thefont.format == "opentype" or thefont.format == "truetype" )
     then tex.write("@firstoftwo")
     else tex.write("@secondoftwo")
   end
-%<luafile>end
-%<luafile>microtype.if_luaotf_font = if_luaotf_font
-%<luafile>
-%</luafile|letterspace>
-%<luatex-def|letterspace> }\endcsname
-%<luatex-def|letterspace>}
-%<letterspace>}
+end
+microtype.if_luaotf_font = if_luaotf_font
+
+%</luafile>
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at do@font}
 % Execute \meta{\#1} 256 times,
 %    \begin{macrocode}
-%<pdftex-def|letterspace>\def\MT at do@font{\MT at while@num\z@\@cclvi}
+%<pdf-|letterspace>\def\MT at do@font{\MT at while@num\z@\@cclvi}
 %    \end{macrocode}
 % resp. for the whole font for \luatex, if it's a Unicode font.
 %\changes{v2.5}{2010/08/14}{adapt for \luatex}
@@ -4936,7 +5718,7 @@
 %                             ^^A private mail, 2016/05/10
 %\changes{v2.8}{2020/06/20}{simplify \texttt{lua} function}
 %    \begin{macrocode}
-%<*luatex-def>
+%<*lua->
 \def\MT at do@font#1{%
   \MT at if@luaotf at font{%
     \def\MT at dofont@function{#1}%
@@ -4943,10 +5725,14 @@
     \MT at lua{microtype.do_font()}%
   }{\MT at while@num\z@\@cclvi{#1}}%
 }
-%</luatex-def>
+%</lua->
 %    \end{macrocode}
 % This is the |lua| function, which is much faster than looping through all glyphs
-% in \TeX. Legacy fonts (which this function should never work on) don't contain a |v.index| field.
+% in \TeX. Legacy fonts (which this function should never work on) don't contain a
+% |v.index| field.
+%\changes{v3.0}{2021/10/26}{guard against return values outside Unicode range (for HarfBuzz)}
+% Our test whether |i| is larger than 1114111 may seem strange, but with the
+% HarfBuzz renderer, we are not guaranteed to get a number within the Unicode range.
 %    \begin{macrocode}
 %<*luafile>
 local function do_font()
@@ -4953,7 +5739,7 @@
   local thefont = font.getfont(font.current())
   if thefont then
     for i,v in next,thefont.characters do
-      if v.index == nil or v.index > 0 then
+      if v.index == nil or ( v.index > 0 and i < 1114112 ) then
         microtype.sprint([[\@tempcnta=]]..i..[[\relax\MT at dofont@function]])
       end
     end
@@ -4967,7 +5753,7 @@
 %\changes{v2.5}{2010/05/18}{adapt for \xetex}
 %\changes{v2.8}{2020/02/06}{fix for \xetex}
 %    \begin{macrocode}
-%<*xetex-def>
+%<*xe->
 \def\MT at do@font#1{%
   \@tempcnta=\z@
   \MT at loop
@@ -4975,7 +5761,7 @@
     \advance\@tempcnta\@ne
     \ifnum\@tempcnta < \XeTeXlastfontchar\MT at font \MT at repeat
 }
-%</xetex-def>
+%</xe->
 %<*package>
 %    \end{macrocode}
 %\end{macro}
@@ -4997,7 +5783,7 @@
 %\end{macro}
 %\end{macro}
 %\begin{macro}{\MT at scale}
-%\changes{v1.7}{2005/02/12}{new macro: use \etex's \cs{numexpr} if available}
+%\changes{v1.7}{2005/02/12}{new macro: use \etex's \cmd\numexpr\ if available}
 %\changes{v1.8}{2005/03/30}{fix: remove spaces in \nonetex\ variant
 %               (reported by \contributor Mark Rossi <mark.rossi\at de.bosch.com>)}
 %                               ^^A MID: <d6uhag$qoi$1 at ns2.fe.internet.bosch.com>
@@ -5230,8 +6016,8 @@
 % The successor packages \pkg{eledmac} and \pkg{reledmac} are also supported.
 %    \begin{macrocode}
 %</package>
-%<pdftex-def>\MT at requires@pdftex5{
-%<*pdftex-def|luatex-def|xetex-def>
+%<pdf->\MT at requires@pdftex5{
+%<*pdf-|lua-|xe->
   \def\MT at ledmac@setup{%
     \ifMT at protrusion
       \MT at ifdefined@c at TF\l at dunhbox@line{%
@@ -5260,8 +6046,8 @@
       }%
     \fi
   }
-%</pdftex-def|luatex-def|xetex-def>
-%<*pdftex-def>
+%</pdf-|lua-|xe->
+%<*pdf->
 }{
   \def\MT at ledmac@setup{%
     \ifMT at protrusion
@@ -5273,7 +6059,7 @@
     \fi
   }
 }
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 % The \pkg{shapepar} package (v2.2) fixes this in a similar manner by itself,
@@ -5300,12 +6086,18 @@
 %    \end{macrocode}
 %\end{macro}
 %\changes{v2.8c}{2021/03/12}{add to hook for \pkg{fontspec}}
+%\changes{v3.0}{2021/09/27}{fix for changed hook name order
+%                           (reported by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>
+%                            and \contributor Karl Berry <karl\at freefriends.org>)}
+%                            ^^A private mails, 2021/09/06 and 2021/09/26
 %\end{macro}
 % We need the correct value of the former for configuration commands
 % inside the preamble (to get the default families right).
 %    \begin{macrocode}
 \@ifl at t@r\fmtversion{2020/10/01}
-  {\AddToHook{package/after/fontspec}{\MT at fontspectrue}}\relax
+  {\IfFormatAtLeastTF{2021/11/15}
+    {\AddToHook{package/fontspec/after}{\MT at fontspectrue}}
+    {\AddToHook{package/after/fontspec}{\MT at fontspectrue}}}\relax
 %    \end{macrocode}
 %\begin{macro}{\MT at maybe@gobble at with@tikz}
 %\begin{macro}{\MT at tikz@setup}
@@ -5431,6 +6223,12 @@
 %                           ^^A https://tex.stackexchange.com/questions/165846/
 %    \begin{macrocode}
   \MT at glet\MT at setupfont@hook\@empty
+%    \end{macrocode}
+% \microtype\ is so so loquacious~\dots\
+% Sometimes you just want to silence it when debugging a document.
+%    \begin{macrocode}
+  %\gdef\MT at setupfont@hook{\tracingnone
+  %  \MT at info{Silently doing my `magic' (Mittelbach) for font\MessageBreak\MT@@font}}%
   \MT at if@false
   \MT at with@babel at and@T{spanish} \MT at if@true
   \MT at with@babel at and@T{galician}\MT at if@true
@@ -5566,8 +6364,249 @@
         \MT at MT@pickupfont}%
     }%
   }%
+%    \end{macrocode}
+%\changes{v3.0}{2021/04/16}{compatibility fix for \pkg{unicode-math} with \pkg{luainputenc}
+%                           (reported by \contributor tnull <@\at @>)}
+%                            ^^A https://tex.stackexchange.com/questions/592946/microtype-unknown-slot-number-of-character-for-palatino-in-classicthesis-w-l
+% The \pkg{luainputenc} package makes all characters active, which can lead into
+% problems when the \pkg{unicode-math} package is loaded, as the latter doesn't
+% always define characters in <LICR>-conforming ways. By disabling the following command,
+% we prevent errors; warnings about unknown slots, however, may still occur --
+% but that's one of the unavoidable downsides of using \pkg{luainputenc}.
+%    \begin{macrocode}
+  \MT at with@package at T{unicode-math}{%
+    \MT at let@nc{__um_sub_or_super:n}\relax
+  }%
 %</package>
 }
+%<*package>
+%    \end{macrocode}
+%
+%\subsubsection{Protrusion patches}
+%
+%\begin{macro}{\ifMT at patch@ok}
+%\begin{macro}{\MT at patch@info}
+%\begin{macro}{\MT at patch@warn}
+%\begin{macro}{\MT at patch@undef}
+% We have to patch some macros to get protrusion right.
+%    \begin{macrocode}
+\newif\ifMT at patch@ok
+\def\MT at patch@info#1{\MT at info{Applying patch `#1'}}
+\def\MT at patch@warn#1{\MT at warning{Unable to apply patch `#1'}}
+\def\MT at patch@undef#1{\MT at warning{Patch `#1' undefined. Cannot apply it}}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at patches@def}
+%\begin{macro}{\MT at define@patch}
+% Define a patch and it add to the list of patches.
+% The third argument may contain more revert commands, but will
+% mostly be empty.
+%    \begin{macrocode}
+\let\MT at patches@def\@gobble
+\def\MT at define@patch#1#2#3{%
+  \g at addto@macro\MT at patches@def{,#1}%
+  \MT at def@n{MT at patch@@#1}{#2}%
+  \MT at def@n{MT at patch@undo@@#1}{#3}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at append@patch}
+%\begin{macro}{\MT at patch@patch}
+% Wrappers around \pkg{etoolbox} commands.
+% We also remember the original command to allow unpatching.
+%    \begin{macrocode}
+\def\MT at append@patch#1#2{%
+  \MT at remember@patch{#1}%
+  \apptocmd#1{#2}\relax\MT at patch@okfalse
+}
+\def\MT at patch@patch#1#2#3{%
+  \MT at remember@patch{#1}%
+  \patchcmd#1{#2}{#3}\relax\MT at patch@okfalse
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at remember@patch}
+% Remember the original definition and add to undo command.
+%    \begin{macrocode}
+\def\MT at remember@patch#1{%
+  \MT at ifdefined@n at TF{MT at patch@saved@\string#1}\relax
+    {\MT at let@nc{MT at patch@saved@\string#1}#1%
+     \MT at exp@cs\g at addto@macro{MT at patch@undo@@\MT at patch@name}%
+       {\MT at let@cn#1{MT at patch@saved@\string#1}}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at patches@applied}
+%\begin{macro}{\MT at apply@patch}
+% Apply a previously defined patch.
+%    \begin{macrocode}
+\let\MT at patches@applied\@gobble
+\def\MT at apply@patch#1{%
+  \MT at patch@oktrue
+  \MT at ifdefined@n at TF{MT at patch@@#1}
+    {\MT at in@clist{#1}\MT at patches@applied
+     \ifMT at inlist@
+       \MT at warning{Patch `#1' has already been applied,\MessageBreak
+                   cannot reapply it}%
+     \else
+       \def\MT at patch@name{#1}%
+       \g at addto@macro\MT at patches@applied{,#1}%
+       \@nameuse{MT at patch@@#1}%
+       \@nameuse{MT at patch@\ifMT at patch@ok info\else warn\fi}{#1}%
+     \fi}
+    {\MT at patch@undef{#1}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at undo@patch}
+% Undo a patch (if indeed previously applied).
+%    \begin{macrocode}
+\def\MT at undo@patch#1{%
+  \MT at in@clist{#1}\MT at patches@applied
+  \ifMT at inlist@
+    \MT at rem@from at clist{#1}\MT at patches@applied
+    \@nameuse{MT at patch@undo@@#1}%
+  \else
+    \MT at warning{Patch `#1' hasn't been applied,\MessageBreak cannot revert it}%
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+% Unfortunately, \pkg{etoolbox} is a bit bitchy with hashes in arguments
+% (but who would blame it), so I currently see no other solution than to
+% temporarily reset the catcode of the \# character.
+%    \begin{macrocode}
+{\catcode`\#=12
+\MT at addto@setup{%
+%    \end{macrocode}
+% Now for the actual patches:
+%\begin{description}
+% \item [|item|] \cmd\@item, which is a kind of catch-all, as it's internally
+%    used for most basic environments (\eg, |itemize|, |enumerate|, but also
+%    |quote|, |flushleft| etc.). For |verse| (and probably other environments), ^^A found by \contributor Antonis Tsolomitis <antonis.tsolomitis\at gmail.com>, private mail, 2021/08/01
+%    we also have to patch \cmd\everypar~\dots
+% \begin{itemize}
+% \item \pkg{beamer} patches it too
+%\changes{v3.0}{2021/05/20}{protrusion patch for \cmd\item}
+%    \begin{macrocode}
+  \@ifclassloaded{beamer}
+    {\MT at define@patch{item}
+      {\MT at append@patch\@item\leftprotrusion
+       \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}%
+       \MT at append@patch\beamer@@callorigitem\leftprotrusion
+       \MT at patch@patch\beamer at callorigitem{\ignorespaces}{\ignorespaces\leftprotrusion}}
+      {}}
+%    \end{macrocode}
+% \item the \pkg{simplecv} class
+%    \begin{macrocode}
+    {\@ifclassloaded{simplecv}
+      {\MT at define@patch{item}
+        {\MT at append@patch\@item\leftprotrusion
+         \MT at append@patch\@topic at item\leftprotrusion
+         \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}}
+        {}}%
+%    \end{macrocode}
+% \item standard \LaTeX\ classes
+%    \begin{macrocode}
+      {\MT at define@patch{item}
+        {\MT at append@patch\@item\leftprotrusion
+         \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}}
+        {}}}%
+%    \end{macrocode}
+% \end{itemize}
+% \item [|toc|] <TOC> and friends
+% \begin{itemize}
+%   \item for the \pkg{memoir} class we also fix the extra leader problem~\dots
+%\changes{v3.0}{2021/05/20}{protrusion patch for <TOC>}
+%    \begin{macrocode}
+  \@ifclassloaded{memoir}
+    {\MT at define@patch{toc}
+      {\MT at append@patch\numberline\leftprotrusion
+       \MT at append@patch\booknumberline\leftprotrusion
+       \MT at append@patch\partnumberline\leftprotrusion
+       \MT at append@patch\chapternumberline\leftprotrusion
+       \MT at append@patch\cftbookafterpnum\noprotrusion
+       \MT at append@patch\cftpartafterpnum\noprotrusion
+       \MT at append@patch\cftchapterafterpnum\noprotrusion
+       \MT at append@patch\cftsectionafterpnum\noprotrusion
+       \MT at append@patch\cftsubsectionafterpnum\noprotrusion
+       \MT at append@patch\cftsubsubsectionafterpnum\noprotrusion
+       \MT at append@patch\cftparagraphafterpnum\noprotrusion
+       \MT at append@patch\cftsubparagraphafterpnum\noprotrusion
+       \MT at append@patch\cftfigureafterpnum\noprotrusion
+       \MT at append@patch\cfttableafterpnum\noprotrusion}
+      {}}
+%    \end{macrocode}
+% \item for the <KOMA> classes (which load the \pkg{tocbasic} package)
+%       we additionally have to switch protrusion back on; this will
+%       re-introduce the risk of getting an extra leader dot, but I
+%       currently don't see how to easily add \cmd\noprotrusion.
+%       Therefore, I'll skip this patch for now, saving the joy of wading
+%       through |scr| files for later, all the while waiting for somebody
+%       who would understand <KOMA> better than me.
+%\todo{fix KOMA patch (add \cmd\noprotrusion)}
+%    \begin{macrocode}
+%    {\@ifpackageloaded{tocbasic}
+%      {\MT at define@patch{toc}
+%        {\MT at append@patch\numberline\leftprotrusion
+%         \setuptoc{toc}{noprotrusion}%
+%         \setuptoc{lof}{noprotrusion}%
+%         \setuptoc{lot}{noprotrusion}}
+%        {\unsettoc{toc}{noprotrusion}%
+%         \unsettoc{lof}{noprotrusion}%
+%         \unsettoc{lot}{noprotrusion}}}
+%    \end{macrocode}
+% \item \dots, and for the rest:
+%    \begin{macrocode}
+      {\MT at define@patch{toc}
+        {\MT at append@patch\numberline\leftprotrusion}
+        {}}%
+%    \end{macrocode}
+% \item (a patch for \pkg{titletoc} would also be worthwhile~\dots)
+%\todo{patch for \pkg{titletoc}}
+% \end{itemize}
+% \item [|eqnum|] equation numbers (with or without \pkg{amsmath}). \cmd\eqref\ relies
+%       on \cmd\tagform@, so we have to make it use the original definition.
+%\changes{v3.0}{2021/05/21}{protrusion patch for equation numbers
+%                           (provided by \contributor Holger Gerhardt <holger.gerhardt\at uni-bonn.de>)}
+%    \begin{macrocode}
+  \@ifpackageloaded{amsmath}
+    {\MT at define@patch{eqnum}
+      {\MT at patch@patch\tagform@{(}{\leftprotrusion{(}}%
+       \MT at patch@patch\tagform@{)}{\rightprotrusion{)}}%
+       \MT at patch@patch\eqref{\tagform@}{\@nameuse{MT at patch@saved@\string\tagform@}}}%
+      {}}
+    {\MT at define@patch{eqnum}
+      {\MT at patch@patch\@eqnnum{(}{\leftprotrusion{(}}%
+       \MT at patch@patch\@eqnnum{)}{\rightprotrusion{)}}}%
+      {}}%
+%    \end{macrocode}
+% \item [|footnote|] footnote text (only visible with block paragraphs).
+%\changes{v3.0}{2021/05/25}{protrusion patch for footnote text}
+%    \begin{macrocode}
+  \@ifclassloaded{memoir}
+    {\MT at define@patch{footnote}
+      {\MT at patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}%
+       \MT at patch@patch\@footnotetext{\foottextfont #1}{\foottextfont\leftprotrusion #1}}
+      {}}
+    {\@ifpackageloaded{scrbase}
+      {\MT at define@patch{footnote}
+        {\MT at patch@patch\scr at saved@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}
+        {}}
+      {\MT at define@patch{footnote}
+        {\MT at patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}
+        {}}}%
+}}
+%    \end{macrocode}
+%\end{description}
+%    \begin{macrocode}
+%</package>
 %</package|letterspace>
 %    \end{macrocode}
 %\changes{v1.6}{2005/01/19}{load a font if none is selected}
@@ -5582,7 +6621,7 @@
 % Setting up a font entails checking for each feature whether it should be
 % applied to the current font (\cs{MT at font}).
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
+%<*pdf-|lua-|xe->
 \def\MT at setupfont{%
 %    \end{macrocode}
 %\changes{v2.5}{2012/08/22}{select font with \pkg{fontspec} (found by \contributor Georg Duffner <g.duffner\at gmail.com>)}
@@ -5595,7 +6634,7 @@
 % hence we might see a wrong font (in \cs{MT at get@slot}).
 % Therefore, we first load the current font.
 %    \begin{macrocode}
-%<xetex-def|luatex-def>  \MT at font
+%<xe-|lua->  \MT at font
 %    \end{macrocode}
 % We might have to disable stuff when used together with adventurous
 % packages.
@@ -5606,9 +6645,9 @@
 % and the use of more than one set of protrusion factors for a font within one
 % paragraph).
 %    \begin{macrocode}
-%<pdftex-def>\MT at requires@pdftex7{
-%<pdftex-def|luatex-def>\g at addto@macro\MT at setupfont\MT at copy@font
-%<pdftex-def>}\relax
+%<pdf->\MT at requires@pdftex7{
+%<pdf-|lua->\g at addto@macro\MT at setupfont\MT at copy@font
+%<pdf->}\relax
 %    \end{macrocode}
 % The font properties must be extracted from \cs{MT at font}, since the current
 % value of \cmd\f at encoding\ and friends may be wrong!
@@ -5638,9 +6677,9 @@
 % Tracking has to come first, since it means actually loading a different font.
 %\changes{v2.2}{2007/04/15}{only add features that are available with the respective \pdftex}
 %    \begin{macrocode}
-%<pdftex-def>\MT at requires@pdftex6
-%<luatex-def>\MT at requires@luatex3
-%<pdftex-def|luatex-def>  {\g at addto@macro\MT at setupfont\MT at tracking}\relax
+%<pdf->\MT at requires@pdftex6
+%<lua->\MT at requires@luatex3
+%<pdf-|lua->  {\g at addto@macro\MT at setupfont\MT at tracking}\relax
 \g at addto@macro\MT at setupfont{%
   \MT at check@font
   \ifMT at inlist@
@@ -5657,22 +6696,22 @@
 % with 1.20, the order doesn't matter.
 %    \begin{macrocode}
   \MT at protrusion
-%<pdftex-def|luatex-def>  \MT at expansion
+%<pdf-|lua->  \MT at expansion
 }
 %    \end{macrocode}
 % Interword spacing and kerning (\pdftex\ 1.40).
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \MT at requires@pdftex6{
 \g at addto@macro\MT at setupfont{\MT at spacing\MT at kerning}
 }\relax
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 % Disable ligatures (\pdftex\ 1.30).
 %    \begin{macrocode}
-%<pdftex-def>\MT at requires@pdftex5{
-%<pdftex-def|luatex-def>\g at addto@macro\MT at setupfont\MT at noligatures
-%<pdftex-def>}\relax
+%<pdf->\MT at requires@pdftex5{
+%<pdf-|lua->\g at addto@macro\MT at setupfont\MT at noligatures
+%<pdf->}\relax
 \g at addto@macro\MT at setupfont{%
 %    \end{macrocode}
 % Debugging.
@@ -5684,7 +6723,7 @@
     \MT at register@font
   \fi
 }
-%</pdftex-def|xetex-def|luatex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at copy@font}
@@ -5696,9 +6735,9 @@
 % \cs{SetProtrusion} or \cs{SetExpansion} in the preamble, or when the package
 % has been loaded with the \opt{copyfonts} option.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \let\MT at copy@font\relax
-%<pdftex-def>\MT at requires@pdftex7{
+%<pdf->\MT at requires@pdftex7{
 \def\MT at copy@font@{%
 %    \end{macrocode}
 %\begin{macro}{\MT at font@copy}
@@ -5721,7 +6760,7 @@
     \else
       \MT at exp@two at c\let\font at name\MT at font@orig
     \fi
-%<pdftex-def>    \global\MT at exp@two at c\pdfcopyfont\MT at font@copy\font at name
+%<pdf->    \global\MT at exp@two at c\pdfcopyfont\MT at font@copy\font at name
 %    \end{macrocode}
 %\end{macro}
 % Even though \luatex\ also provides the primitive from \pdftex\ (even renamed to
@@ -5734,7 +6773,7 @@
 %                                          ^^A https://tex.stackexchange.com/questions/419288/microtypecontext-with-lualatex
 % Therefore, we do not copy the font but load it anew.
 %    \begin{macrocode}
-%<luatex-def>    \MT at exp@two at c\MT at lua@copyfont\meaning\font at name\@nil
+%<lua->    \MT at exp@two at c\MT at lua@copyfont\meaning\font at name\@nil
 %<debug>\MT at dinfo1{creating new copy: \MT at font@copy}%
 %    \end{macrocode}
 % Since it's a new font, we have to remove it from the context lists.
@@ -5767,7 +6806,7 @@
        \MT at font \csname MT@\@tempa @#1font at list\endcsname
   \fi
 }
-%<pdftex-def>}\relax
+%<pdf->}\relax
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at lua@copy at font}
@@ -5774,9 +6813,9 @@
 % \meta{\#1} and \meta{\#2} are `|select|' and `|font|', respectively,
 % \meta{\#3} is the font spec.
 %    \begin{macrocode}
-%<luatex-def>\def\MT at lua@copyfont #1 #2 #3\@nil{%
-%<luatex-def>  \global\expandafter\font\MT at font@copy=#3\relax}
-%</pdftex-def|luatex-def>
+%<lua->\def\MT at lua@copyfont #1 #2 #3\@nil{%
+%<lua->  \global\expandafter\font\MT at font@copy=#3\relax}
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\ifpdf\phantomsection\fi\label{exp-hack}
@@ -5823,20 +6862,20 @@
 % \xetex\ doesn't provide an equivalent to \cmd\pdffontsize, so we use the
 % nominal size instead.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|xetex-def>
+%<*pdf-|lua-|xe->
 \def\MT at fix@fontdimen at six{%
   \ifnum\fontdimen6\MT at font=\z@
     \fontdimen6\MT at font=%
-%<pdftex-def>      \pdffontsize\MT at font
-%<luatex-def>      \MT at requires@luatex4{\pdffeedback fontsize}{\pdffontsize}\MT at font
-%<xetex-def>      \MT at size pt
+%<pdf->      \pdffontsize\MT at font
+%<lua->      \MT at requires@luatex4{\pdffeedback fontsize}{\pdffontsize}\MT at font
+%<xe->      \MT at size pt
     \MT at info{Fixing zero \string\fontdimen 6 for font `\MT@@font'\MessageBreak
              (new value: \the\fontdimen6\MT at font)}%
-    \MT at glet@nc{\MT@@font-fake6}\@empty
+%<pdf->    \MT at requires@pdftex8\relax{\MT at glet@nc{\MT@@font-fake6}\@empty}%
   \fi
   \edef\MT at dimen@six{\number\fontdimen6\MT at font}%
 }
-%</pdftex-def|luatex-def|xetex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -6076,7 +7115,7 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%\subsubsection{Protrusion}
+%\subsubsection{Protrusion}\label{ssub:setup-prot}
 %
 %\begin{macro}{\ifMT at nofamily}
 % Info for settings that are not family-specific.
@@ -6088,14 +7127,13 @@
 %                          ^^A (beta:07)
 %    \begin{macrocode}
 \newif\ifMT at nofamily
-%</package>
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at protrusion}
 % Set up for protrusion?
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
 \def\MT at protrusion{\MT at maybe@do{pr}}
+%</package>
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at set@pr at codes}
@@ -6105,8 +7143,11 @@
 %                           characters}
 %\changes{v1.6}{2004/12/18}{introduce \texttt{factor} option}
 %    \begin{macrocode}
-\def\MT at set@pr at codes{%
-  \MT at nofamilyfalse
+%<*pdf-|lua-|xe-|show>
+%<show>\def\MTS at show@pr
+%<pdf-|lua-|xe->\def\MT at set@pr at codes
+  {%
+%<pdf-|lua-|xe-> \MT at nofamilyfalse
 %    \end{macrocode}
 % Check whether and if, which list should be applied to the current font.
 % If family-specific settings don't exist, we write it to the log
@@ -6115,7 +7156,9 @@
 %                           ^^A private mail, 2013/01/24
 % (for each encoding).
 %    \begin{macrocode}
+%<show>  \MTS at printtext{Protrusion settings for font `\texttt{\MT@@font}':}\\
   \MT at if@list at exists{%
+%<*pdf-|lua-|xe->
     \ifMT at nofamily
       \MT at ifdefined@n at TF{\MT at encoding-\MT at family-settings}\relax{%
         \MT at info@nl{Loading generic protrusion settings for font family\MessageBreak
@@ -6125,6 +7168,8 @@
         \MT at glet@nc{\MT at encoding-\MT at family-settings}\@empty
       }%
     \fi
+%</pdf-|lua-|xe->
+%<show>    \MTS at printtext{First matching list is for `\texttt{\@tempa}':\\\texttt{\MT at pr@c at name}}%
     \MT at get@opt
     \MT at reset@pr at codes
 %    \end{macrocode}
@@ -6145,7 +7190,22 @@
 %    \begin{macrocode}
     \MT at let@cn\@tempc{MT at pr@c@\MT at pr@c at name}%
     \expandafter\MT at set@codes\@tempc,\relax,%
-  }\MT at reset@pr at codes
+%<show>    \vrule width 4cm height .5pt \\
+%<show>    \MTS at printtext{End of list `\texttt{\MT at pr@c at name}'}\\[.5em]
+%<show>    \MT at ifdefined@c at T\MT at pr@inh at name{%
+%<show>      \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @prefixes}{%
+%<show>        \par \MTS at printtext{(with prefixes:)}%
+%<show>        \@tempcntb=\z@
+%    \end{macrocode}
+% Set unconditional heirs.
+%    \begin{macrocode}
+    \MT at set@pr at prefixheirs
+%<show>    }}%
+%<show>    \ifShowMissingGlyphs\MTS at show@missing\fi
+  }%
+%<show>  {\MTS at printtext{NOT DEFINED}%
+  \MT at reset@pr at codes
+%<show>  }\par
 }
 %    \end{macrocode}
 %\end{macro}
@@ -6158,6 +7218,7 @@
 %                            ^^A https://tex.stackexchange.com/questions/25036/microtype-package-v-2-5-beta-06-and-footnote-protrusion
 %                            ^^A (beta:08)
 %    \begin{macrocode}
+%<*pdf-|lua-|xe->
 \def\MT at set@all at pr#1#2{%
 %<debug>\MT at dinfo@nl{3}{-- lp/rp: setting all to #1/#2}%
   \let\MT at temp\@empty
@@ -6185,14 +7246,14 @@
 % the margin kerns. This will be activated in \cs{MT at set@tr at codes}.
 %    \begin{macrocode}
 \def\MT at the@pr at code{\@tempcntb}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex6
-%<luatex-def>\MT at requires@luatex3
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex6
+%<lua->\MT at requires@luatex3
   {\def\MT at the@pr at code@tr{%
     \numexpr\@tempcntb+\MT at letterspace@/2\relax
   }
 }\relax
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -6219,8 +7280,8 @@
   \def\@tempa{#1}%
   \ifx\@tempa\@empty \else
     \MT at get@slot
-%<pdftex-def|luatex-def>    \ifnum\MT at char > \m at ne
-%<xetex-def>    \ifx\MT at char\@empty \else
+%<pdf-|lua->    \ifnum\MT at char > \m at ne
+%<xe->    \ifx\MT at char\@empty \else
       \MT at get@char at unit
       \csname MT@\MT at feat @split at val\endcsname#2\relax
     \fi
@@ -6230,19 +7291,34 @@
 %\end{macro}
 %\begin{macro}{\MT at pr@split at val}
 %    \begin{macrocode}
-\def\MT at pr@split at val#1,#2\relax{%
-  \def\@tempb{#1}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
-    \lpcode\MT at font\MT at char=\MT at the@pr at code
-%<debug>\MT at dinfo@nl{4}{;;; lp (\MT at char): \number\lpcode\MT at font\MT at char\space: [#1]}%
+\def\MT at pr@split at val#1,#2\relax
+%</pdf-|lua-|xe->
+%<show>\def\MTS at pr@split at val#1,#2\relax
+  {\def\@tempb{#1}%
+  \MT at ifempty\@tempb
+%<pdf-|lua-|xe->    \relax
+%<show>  {\MTS at lp@=\z@ \let\MTS at lpcode\@empty}%
+  {\MT at scale@to at em
+%<pdf-|lua-|xe->    \lpcode\MT at font\MT at char=\MT at the@pr at code
+%<show>    \MTS at lp@=\dimexpr\@tempcntb em/1000\relax\relax
+%<show>    \edef\MTS at lpcode{[\@tempb] \the\@tempcntb/\the\MTS at lp@}%
+%<debug>\MT at dinfo@nl{4}{;;; lp (\MT at char): \number\lpcode\MT at font\MT at char: [#1]}%
   }%
   \def\@tempb{#2}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
-    \rpcode\MT at font\MT at char=\MT at the@pr at code
-%<debug>\MT at dinfo@nl{4}{;;; rp (\MT at char): \number\rpcode\MT at font\MT at char\space: [#2]}%
+  \MT at ifempty\@tempb
+%<pdf-|lua-|xe->    \relax
+%<show>  {\MTS at rp@=\z@ \let\MTS at rpcode\@empty}%
+  {\MT at scale@to at em
+%<pdf-|lua-|xe->    \rpcode\MT at font\MT at char=\MT at the@pr at code
+%<show>    \MTS at rp@=\dimexpr\@tempcntb em/1000\relax\relax
+%<show>    \edef\MTS at rpcode{[\@tempb] \the\@tempcntb/\the\MTS at rp@}%
+%<debug>\MT at dinfo@nl{4}{;;; rp (\MT at char): \number\rpcode\MT at font\MT at char: [#2]}%
   }%
+%<show>  \llap{\MTS at show@char at pr\MT at char\quad}%
+%<show>  \parbox[b][][b]{3.5cm}{\MTS at printtext{%
+%<show>      \footnotesize\makebox[.4cm][l]{L:} \MT at ifempty{\MTS at lpcode}{---}{\MTS at lpcode}\\
+%<show>                   \makebox[.4cm][l]{R:} \MT at ifempty{\MTS at rpcode}{---}{\MTS at rpcode}}}%
+%<show>  \parbox[t][][t]{\dimexpr\textwidth-3.5cm}{%
 %    \end{macrocode}
 % Now we can set the values for the inheriting characters. Their slot numbers
 % are saved in the macro |\MT at inh@|\meta{list name}|@|\meta{slot number}|@|.
@@ -6251,10 +7327,13 @@
     \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @\MT at char @}{%
       \MT at exp@cs\MT at map@tlist at c
         {MT at inh@\MT at pr@inh at name @\MT at char @}%
-        \MT at set@pr at heirs
+%<pdf-|lua-|xe->        \MT at set@pr at heirs
+%<show>      \MTS at show@char at pr
     }%
   }%
+%<show>  }\newline
 }
+%<*pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at scale@to at em}
@@ -6266,14 +7345,14 @@
 %\changes{v1.5}{2004/12/10}{don't use \cmd\lpcode\ and \cmd\rpcode\ for the
 %                           calculation}
 % Unlike \file{protcode.tex} and \pkg{pdfcprot}, we do not calculate with
-% \cs{lpcode} resp. \cs{rpcode}, since this would disallow protrusion factors
-% larger than the character width (since \cs{[lr]pcode}'s limit is 1000). Now,
+% \cmd\lpcode\ resp. \cmd\rpcode, since this would disallow protrusion factors
+% larger than the character width (since \verb!\[lr]pcode!'s limit is 1000). Now,
 % the maximum protrusion is \EM{1} of the font.
 %
 % The unit is in \cs{MT at count}, the desired factor in \cmd\@tempb, and the
 % result will be returned in \cmd\@tempcntb.
 %    \begin{macrocode}
-%<pdftex-def>\MT at requires@pdftex3{
+%<pdf->\MT at requires@pdftex3{
 \def\MT at scale@to at em{%
   \@tempcntb=\MT at count\relax
 %    \end{macrocode}
@@ -6280,7 +7359,7 @@
 % For really huge fonts (100\,pt or so), an arithmetic overflow could occur
 % with vanilla \TeX. Using \etex, this can't happen, since the intermediate
 % value is 64\,bit, which could only be reached with a character width larger
-% than \cs{maxdimen}.
+% than \cmd\maxdimen.
 %    \begin{macrocode}
   \MT at scale\@tempcntb \@tempb \MT at dimen@six
   \ifnum\@tempcntb=\z@ \else
@@ -6296,17 +7375,17 @@
 %\changes{v1.8}{2005/05/25}{warning for missing (resp. zero-width) characters}
 %    \begin{macrocode}
 \def\MT at get@charwd{%
-%<*pdftex-def>
+%<*pdf->
 ^^X  \MT at count=\fontcharwd\MT at font\MT at char\relax
 ^^Q  \setbox\z@=\hbox{\MT at font \char\MT at char}%
 ^^Q  \MT at count=\wd\z@
-%</pdftex-def>
-%<luatex-def>  \MT at count=\fontcharwd\MT at font\MT at char\relax
+%</pdf->
+%<lua->  \MT at count=\fontcharwd\MT at font\MT at char\relax
 %    \end{macrocode}
 % \cs{MT at char} contains a slot number (legacy fonts), a Unicode number,
 % or a glyph name (if \cs{MT at char@} is negative).
 %    \begin{macrocode}
-%<*xetex-def>
+%<*xe->
   \ifnum\MT at char@<\z@
     \setbox\z@=\hbox{\MT at font \XeTeXglyph-\MT at char@}%
     \MT at count=\wd\z@
@@ -6313,7 +7392,7 @@
   \else
     \MT at count=\fontcharwd\MT at font\MT at char@\relax
   \fi
-%</xetex-def>
+%</xe->
   \ifnum\MT at count=\z@ \MT at info@missing at char \fi
 }
 %    \end{macrocode}
@@ -6323,7 +7402,7 @@
 % \cs{MT at set@pr at codes}.
 % The letterspaced font is already loaded so that \EM{1} = \fontdim6.
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \MT at requires@pdftex6{
   \g at addto@macro\MT at get@charwd{%
     \MT at ifdefined@c at T\MT at letterspace@
@@ -6346,8 +7425,9 @@
 %    \begin{macrocode}
 \def\MT at get@charwd{\MT at count=\MT at dimen@six}
 }
-%</pdftex-def>
-%</pdftex-def|xetex-def|luatex-def>
+%</pdf->
+%</pdf-|lua-|xe->
+%</pdf-|lua-|xe-|show>
 %    \end{macrocode}
 %\begin{macro}{\MT at get@font at dimen}
 % For the |space| unit.
@@ -6610,26 +7690,89 @@
 %<debug>\MT at dinfo@nl{1}{loading input encoding: \@nameuse{\@tempa}}%
   \inputencoding{\@nameuse{\@tempa}}%
 }
-%</package>
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at set@pr at heirs}
 % Set the inheriting characters.
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
 \def\MT at set@pr at heirs#1{%
   \lpcode\MT at font #1=\lpcode\MT at font\MT at char\relax
   \rpcode\MT at font #1=\rpcode\MT at font\MT at char\relax
 %<debug>\MT at dinfo@nl{2}{-- heir of \MT at char: #1}%
-%<debug>\MT at dinfo@nl{4}{;;; lp/rp (#1): \number\lpcode\MT at font\MT at char\space/%
-%<debug>                                \number\rpcode\MT at font\MT at char\space}%
+%<debug>\MT at dinfo@nl{4}{;;; lp/rp (#1): \number\lpcode\MT at font\MT at char/%
+%<debug>                                \number\rpcode\MT at font\MT at char}%
 }
 %    \end{macrocode}
 %\end{macro}
+%\begin{macro}{\MT at set@pr at prefixheirs}
+% Inheriting characters that have been specified in a prefixed list.
+%    \begin{macrocode}
+\def\MT at set@pr at prefixheirs{%
+  \MT at ifdefined@c at T\MT at pr@inh at name{%
+    \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @prefixes}{%
+      \MT at exp@cs\MT at map@tlist at c
+        {MT at inh@\MT at pr@inh at name @prefixes}%
+        \MT at set@pr at prefixes
+    }%
+  }%
+}
+%</package>
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at set@pr at prefixes}
+%\begin{macro}{\MT at set@pr at prefixes@}
+% Add |charwidth(inheriting char)-charwidth(base char)| to either left or
+% right side or half the amount to both sides. For \xetex, we may have to
+% translate to glyph numbers because \cmd\fontcharwd\ doesn't have the nice
+% feature of understanding the `|U|' or `|/|' prefixes.
+%    \begin{macrocode}
+%<*pdf-|lua-|xe-|show>
+%<pdf-|lua-|xe->\def\MT at set@pr at prefixes#1{\MT at set@pr at prefixes@#1}
+%<pdf-|lua-|xe->\def\MT at set@pr at prefixes@#1#2#3#4%
+%<show>\def\MTS at set@pr at prefixes@#1#2#3#4%
+  {%
+%<show>  \MTS at lp@=\z@ \MTS at rp@=\z@
+%<show>  \ifnum#1=\@tempcntb \else
+%<show>    \par\leavevmode
+%<show>    \llap{\MTS at show@char at pr{#1} \MTS at printtext{=} }%
+%<show>  \fi
+%<*xe->
+  \edef\@tempa{\expandafter\ifx\@car#1\@nil U\@gobble#1\else\number\XeTeXglyphindex"#1" \fi}%
+  \edef\@tempb{\expandafter\ifx\@car#2\@nil U\@gobble#2\else\number\XeTeXglyphindex"#2" \fi}%
+%</xe->
+  \@tempcnta=\z@
+  \ifnum#3>\z@
+    \@tempcnta=\numexpr
+%<pdf-|lua-|show>      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+%<xe->      (\fontcharwd\MT at font\@tempb-\fontcharwd\MT at font\@tempa)%
+      *#3/\MT at dimen@six\relax
+  \fi
+%<pdf-|lua-|xe->  \lpcode\MT at font #2=\numexpr\lpcode\MT at font#1+\@tempcnta\relax
+%<show>  \MTS at lp@=\dimexpr\numexpr\lpcode\MT at font#1+\@tempcnta\relax em/1000\relax
+  \@tempcnta=\z@
+  \ifnum#4>\z@
+    \@tempcnta=\numexpr
+%<pdf-|lua-|show>      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+%<xe->      (\fontcharwd\MT at font\@tempb-\fontcharwd\MT at font\@tempa)%
+      *#4/\MT at dimen@six\relax
+  \fi
+%<pdf-|lua-|xe->  \rpcode\MT at font #2=\numexpr\rpcode\MT at font#1+\@tempcnta\relax
+%<show>  \MTS at rp@=\dimexpr\numexpr\rpcode\MT at font#1+\@tempcnta\relax em/1000\relax
+%<debug>\MT at dinfo@nl{2}{-- (prefix) heir of #1: #2}%
+%<debug>\MT at dinfo@nl{4}{;;; lp/rp (#2): \number\lpcode\MT at font#2/%
+%<debug>                                \number\rpcode\MT at font#2}%
+%<show>  \MTS at show@char at pr{#2}%
+%<show>  \@tempcntb=#1\relax
+}
+%</pdf-|lua-|xe-|show>
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
 %\begin{macro}{\MT at preset@pr}
 %\begin{macro}{\MT at preset@pr@}
 % Preset characters. Presetting them relative to their widths is not allowed.
 %    \begin{macrocode}
+%<*package>
 \def\MT at preset@pr{%
   \expandafter\expandafter\expandafter\MT at preset@pr@
     \csname MT at pr@c@\MT at pr@c at name @preset\endcsname\@nil
@@ -6674,12 +7817,301 @@
 \def\MT at warn@preset at towidth#1{%
   \MT at warning@nl{%
     Cannot preset characters relative to their widths\MessageBreak
-    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'. Presetting them%
-    \MessageBreak relative to 1em instead}%
+    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'.
+    Presetting them\MessageBreak relative to 1em instead}%
 }
-%</pdftex-def|xetex-def|luatex-def>
 %    \end{macrocode}
 %\end{macro}
+%\begin{macro}{\noprotrusion}
+%\changes{v3.0}{2021/05/15}{provide command for older \LaTeX\ versions}
+% This command may be used to inhibit protrusion on either side. It's part
+% of \LaTeX\ since 2018-12-01.
+% We provide it for older releases.
+%    \begin{macrocode}
+\MT at ifdefined@c at TF\noprotrusion\relax{
+  \DeclareRobustCommand\noprotrusion{\leavevmode\kern-\p@\kern\p@}
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at tempbox}
+%\begin{macro}{\MT at leftmarginkern}
+%\begin{macro}{\MT at rightmarginkern}
+%    \begin{macrocode}
+\newbox\MT at tempbox
+\newdimen\MT at leftmarginkern
+\newdimen\MT at rightmarginkern
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\leftprotrusion}
+%\changes{v3.0}{2021/05/15}{new command}
+% This command may be used to add protrusion on the left hand side.
+% We try to reconstruct the next glyph (possibly a ligature).\footnote{
+%   \luatex\ offers the command \cmd\protrusionboundary, which could
+%   potentially be very helpful here, but it doesn't seem to do what it
+%   promises (not even the example from the manual works as advertised).}
+%   ^^A cf. https://mailman.ntg.nl/pipermail/dev-luatex/2021-May/006486.html
+%    \begin{macrocode}
+\DeclareRobustCommand\leftprotrusion{%
+  \MT at toks{}%
+  \MT at prot@get at firstchar
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@l}
+% These macros need to be \cmd\long.
+%    \begin{macrocode}
+\long\def\MT at prot@l#1{%
+  \MT at get@prot{#1}%
+  \ifdim\MT at leftmarginkern=\z@ \else
+    \leavevmode
+    \MT at vinfo{|<< adding left margin kern for `\@tempa':\MessageBreak
+                  \the\MT at leftmarginkern \on at line}%
+    \kern\MT at leftmarginkern
+  \fi
+  #1%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\rightprotrusion}
+% Unfortunately, there's no way to retrieve anything that's already been typeset,
+% so the counterpart cannot be symmetric.
+%\changes{v3.0}{2021/05/15}{new command}
+%    \begin{macrocode}
+\DeclareRobustCommand\rightprotrusion{\MT at prot@r}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@r}
+%    \begin{macrocode}
+\long\def\MT at prot@r#1{%
+  #1%
+  \MT at get@prot{#1}%
+  \ifdim\MT at rightmarginkern=\z@ \else
+    \MT at vinfo{>>| adding right margin kern for `\@tempa':\MessageBreak
+                  \the\MT at rightmarginkern \on at line}%
+    \kern\MT at rightmarginkern
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at get@prot}
+% Typeset the text inside a box and get the left and right margin kerns.
+% We add an extra \cmd\vbox\ in case we're inside a |tabular|.
+% \cmd\@newlistfalse\ is meant to make \cmd\\ work in |centering| etc.
+%    \begin{macrocode}
+\long\def\MT at get@prot#1{%
+  \MT at leftmarginkern=\z@
+  \MT at rightmarginkern=\z@
+  \begingroup
+    \setbox\MT at tempbox\vbox{%
+      \everypar{}%
+      \parfillskip=\z at skip
+      \hbadness\@M
+      \@newlistfalse
+      \noindent #1}%
+    \vbadness=\@M
+    \splittopskip=\z@
+    \setbox\MT at tempbox\vbox{%
+      \global\setbox\MT at tempbox=\vsplit\MT at tempbox to \normalbaselineskip
+      \unvbox\MT at tempbox
+      \global\setbox\MT at tempbox=\lastbox
+    }%
+  \endgroup
+  \ifhbox\MT at tempbox
+    \def\@tempa{#1}%
+    \MT at leftmarginkern=\leftmarginkern\MT at tempbox\relax
+    \MT at rightmarginkern=\rightmarginkern\MT at tempbox\relax
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@ifx}
+% Test next token.
+%    \begin{macrocode}
+\def\MT at prot@ifx#1{%
+  \ifx\MT at prot@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@ifcat}
+% Test catcode of next token.
+%    \begin{macrocode}
+\def\MT at prot@ifcat#1{%
+  \ifcat#1\noexpand\MT at prot@next\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@ifmacro}
+%\begin{macro}{\MT at prot@ifmacro@}
+%\begin{macro}{\MT at prot@ifmacro@@}
+% Test whether \meta{\#1} is a macro or an active character
+% that does not take an argument.
+% (inspired by Joseph Wright). ^^A https://tex.stackexchange.com/a/331696/
+% Only works with \etex.
+%    \begin{macrocode}
+^^X\def\MT at prot@ifmacro{%
+^^X  \expandafter\MT at prot@ifmacro@\meaning\MT at prot@next\@nil
+^^X}
+^^X\edef\MT at prot@ifmacro@#1\@nil{%
+^^X  \noexpand\MT at prot@ifmacro@@#1{}{}\detokenize{macro:->}\noexpand\@nil
+^^X}
+^^X\edef\MT at temp{%
+^^X  \def\noexpand\MT at prot@ifmacro@@##1\detokenize{macro:->}##2\noexpand\@nil{%
+^^X    \noexpand\ifx\relax##1\relax
+^^X    \unexpanded{\expandafter\@firstofone\else\expandafter\@gobble\fi}%
+^^X  }%
+^^X}
+^^X\MT at temp
+^^Q\let\MT at prot@ifmacro\@gobble
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at prot@iffirstcmd}
+% Test for the first command.
+%    \begin{macrocode}
+\def\MT at prot@iffirstcmd#1{%
+  \ifx\relax#1\relax\expandafter\@secondoftwo\else
+    \MT at exp@two at c\ifx\@car\MT at prot@next\relax\@empty\@nil#1%
+      \expandafter\expandafter\expandafter\@firstoftwo
+    \else
+      \expandafter\expandafter\expandafter\@secondoftwo
+    \fi
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@iflicrcmd}
+% Fun with <LICR>:
+% Test if the first command of the third command of the first command
+% is \cmd\@text at composite, in which case also grab the next token,
+% otherwise it should be a text command.
+%    \begin{macrocode}
+\def\MT at getthird#1#2#3#4\@nil{#3}
+\def\MT at prot@iflicrcmd#1{%
+  \MT at exp@cs\MT at prot@iffirstcmd{#1-cmd}{%
+    \expandafter\expandafter\expandafter\let
+      \expandafter\expandafter\expandafter\@tempa
+      \expandafter\MT at getthird\MT at prot@next\relax\@nil
+    \MT at exp@two at c\ifx\@car\@tempa\relax\@nil\@text at composite
+      \def\MT at temp*##1##2{\MT at prot@l{##1##2}}%
+    \else
+      \def\MT at temp*##1{\MT at prot@l{##1}}%
+    \fi
+    \@gobble
+  }\@firstofone
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@get at firstchar}
+%\begin{macro}{\MT at prot@get at nextchar}
+% Scan token by token.
+%    \begin{macrocode}
+\def\MT at prot@get at firstchar{\futurelet\MT at prot@next\MT at prot@get at first@char}
+\def\MT at prot@get at nextchar{\futurelet\MT at prot@next\MT at prot@get at next@char}
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT at prot@get at first@char}
+% If next char is |{|, treat what follows as an argument, else continue until
+% we find a beginning char.
+%    \begin{macrocode}
+\def\MT at prot@get at first@char{%
+  \def\MT at temp*##1{\MT at prot@get at firstchar}%
+  \MT at prot@ifcat\bgroup{%
+    \long\def\MT at temp*##1{{\MT at prot@l{##1}}}%
+  }{%
+    \MT at prot@ifx\ignorespaces\relax{%
+      \MT at prot@ifx\relax\relax{%
+        \MT at prot@ifx\@sptoken{%
+          \def\MT at temp* {\MT at prot@get at firstchar}%
+        }{%
+%    \end{macrocode}
+% But only add it if it's a letter or a character, \dots
+%    \begin{macrocode}
+          \def\MT at temp*{\MT at prot@addtoken at first}%
+          \MT at prot@ifcat{a}\relax{%
+            \MT at prot@ifcat{!}\relax{%
+%    \end{macrocode}
+% \dots~or a command/active char whose first command is one of the below.
+%    \begin{macrocode}
+              \def\MT at temp*{}%
+              \MT at prot@ifmacro{%
+                \MT at prot@iffirstcmd\UTFviii at two@octets{%
+                  \def\MT at temp*##1##2{\MT at prot@l{##1##2}}%
+                }{%
+                  \MT at prot@iffirstcmd\UTFviii at three@octets{%
+                    \def\MT at temp*##1##2##3{\MT at prot@l{##1##2##3}}%
+                  }{%
+                    \MT at prot@iffirstcmd\UTFviii at four@octets{%
+                      \def\MT at temp*##1##2##3##4{\MT at prot@l{##1##2##3##4}}%
+                    }{%
+                      \MT at prot@iflicrcmd{T1}{%
+                        \MT at prot@iflicrcmd{TU}{%
+                          \MT at prot@iflicrcmd{LY1}{%
+                            \MT at prot@iflicrcmd{OT1}{%
+                              \MT at prot@iflicrcmd{T2A}\relax % should we add more encodings?
+                            }%
+                          }%
+                        }%
+                      }%
+                    }%
+                  }%
+                }%
+              }%
+            }%
+          }%
+        }%
+      }%
+    }%
+  }%
+  \MT at temp*%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@ifx}
+% Continue if letter or other.
+%    \begin{macrocode}
+\def\MT at prot@get at next@char{%
+  \def\MT at temp*{\MT at prot@addtoken at next}%
+  \MT at prot@ifcat{a}\relax{%
+    \MT at prot@ifcat{!}\relax{%
+      \def\MT at temp*{\MT at prot@l{\the\MT at toks}}%
+    }%
+  }%
+  \MT at temp*%
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@addtoken at first}
+% Begin filling toks.
+%    \begin{macrocode}
+\def\MT at prot@addtoken at first#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \MT at prot@get at nextchar
+}
+%</package>
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT at prot@addtoken at next}
+% Add token to our toks and test whether we've seen enough (ligature completed).
+% For luatex, we have to jump through another hoop (\ie, box), because, contrary
+% to the manual, \cmd\lastnodetype\ isn't really compatible. ^^A cf. https://mailman.ntg.nl/pipermail/dev-luatex/2021-August/006536.html et seqq.
+%    \begin{macrocode}
+%<*pdf-|lua-|xe->
+\def\MT at prot@addtoken at next#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \setbox\MT at tempbox\hbox{\the\MT at toks
+%<pdf-|xe->    \relax
+%<lua->  }\setbox\MT at tempbox\hbox{\unhbox\MT at tempbox
+    \ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
+      \MT at prot@get at nextchar
+      {\MT at prot@l{\the\MT at toks}}%
+}
+%</pdf-|lua-|xe->
+%    \end{macrocode}
+%\end{macro}
 %
 %\subsubsection{Expansion}
 %
@@ -6686,7 +8118,7 @@
 %\begin{macro}{\MT at expansion}
 % Set up for expansion?
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at expansion{\MT at maybe@do{ex}}
 %    \end{macrocode}
 %\end{macro}
@@ -6711,7 +8143,7 @@
     \MT at expandfont
   }\relax
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %
@@ -6726,7 +8158,7 @@
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at set@ex at codes@n{%
   \MT at nonselectedtrue
   \MT at if@list at exists
@@ -6763,7 +8195,7 @@
 %\changes{v2.7d}{2019/11/17}{use \luatex\ function \texttt{font.}\penalty\exhyphenpenalty\texttt{setexpansion} if available}
 %\fi
 %    \begin{macrocode}
-%<*luatex-def>
+%<*lua->
 \MT at requires@luatex3{
 \MT at requires@luatex4{\let\pdffontexpand\expandglyphsinfont}\relax
 \ifnum\luatexversion<79
@@ -6776,11 +8208,11 @@
 }
 \fi
 }{
-%</luatex-def>
+%</lua->
 \def\MT at expandfont{%
   \pdffontexpand\MT at font \MT at stretch@ \MT at shrink@ \MT at step@ \MT at auto@\relax
 }
-%<luatex-def>}
+%<lua->}
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at set@all at ex}
@@ -6802,8 +8234,8 @@
 %\changes{v1.6a}{2005/01/30}{only reset \cmd\efcode s for older \pdftex\ versions}
 %\changes{v2.7}{2017/02/13}{only reset \cmd\efcode s for older \luatex\ versions}
 %    \begin{macrocode}
-%<pdftex-def>\MT at requires@pdftex4
-%<luatex-def>\MT at requires@luatex5
+%<pdf->\MT at requires@pdftex4
+%<lua->\MT at requires@luatex5
 {
   \def\MT at reset@ef at codes{%
     \ifnum\MT at ex@factor@=\@m \else
@@ -6876,9 +8308,9 @@
   \MT at get@ex at opt@{stretch}{Setting stretch limit to \number\MT at stretch@}%
   \MT at get@ex at opt@{shrink} {Setting shrink limit to \number\MT at shrink@}%
   \MT at get@ex at opt@{step}   {Setting expansion step to \number\MT at step@}%
-%<luatex-def>  \MT at requires@luatex3\relax{%
+%<lua->  \MT at requires@luatex3\relax{%
   \MT at get@ex at opt@{auto}{\MT at ifstreq{\MT at auto@}{autoexpand}{En}{Dis}abling automatic expansion}%
-%<luatex-def>  }%
+%<lua->  }%
   \MT at ifdefined@n at T{MT at ex@c@\MT at ex@c at name @preset}{%
     \MT at preset@ex
     \let\MT at reset@ef at codes\relax
@@ -6919,7 +8351,7 @@
   \MT at scale@factor
   \MT at set@all at ex\@tempcntb
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %
@@ -6928,7 +8360,7 @@
 %\begin{macro}{\MT at spacing}
 % Adjustment of interword spacing? Only works with \pdftex.
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \MT at requires@pdftex6{
 \def\MT at spacing{\MT at maybe@do{sp}}
 %    \end{macrocode}
@@ -7140,7 +8572,7 @@
   \MT at set@all at kn\@tempa\@tempb
 }
 }\relax
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -7151,9 +8583,9 @@
 %\changes{v2.5}{2010/09/17}{letterspacing with \luatex\ 0.62} ^^A (beta:03)
 % or \luatex\ 0.62.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex6
-%<luatex-def>\MT at requires@luatex3
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex6
+%<lua->\MT at requires@luatex3
 {
 %    \end{macrocode}
 %\begin{macro}{\MT at tracking}
@@ -7174,9 +8606,9 @@
     \fi
   \fi
 }
-%</pdftex-def|luatex-def>
-%<pdftex-def|luatex-def|letterspace>\let\MT at tracking
-%<pdftex-def|luatex-def>  \MT at tracking@
+%</pdf-|lua->
+%<pdf-|lua-|letterspace>\let\MT at tracking
+%<pdf-|lua->  \MT at tracking@
 %<letterspace>  \relax
 %    \end{macrocode}
 %\end{macro}
@@ -7187,26 +8619,33 @@
 % settings from \cs{SetTracking}, or the global \opt{letterspace} option, in
 % this order.
 %
-% Tracking won't work if the original font's \fontdim6 is zero, in which
+% Tracking won't work with older \pdftex\ versions (\less\ 1.40.23)
+% if the original font's \fontdim6 is zero, in which
+%\changes{v3.0}{2021/06/11}{with \luatex, tracking also works for fonts with a zero \fontdim6}
+%\changes{v3.0}{2021/07/01}{with \pdftex\ 1.40.23, tracking also works for fonts with a zero \fontdim6}
 % case we issue a warning (once for every font).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|letterspace>
+%<*pdf-|lua-|letterspace>
 \def\MT at set@tr at codes{%
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
   \MT at vinfo{Tracking font `\MT@@font'\on at line}%
-  \MT at ifdefined@n at TF{\MT@@font-fake6}{%
-    \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty
-      \MT at warning@nl{%
-        Font `\MT@@font' does not specify its\MessageBreak
-        \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
-        \@nameuse{MT at abbr@\MT at feat} will not work with this font}%
-      \MT at glet@nc{\MT@@font-fake6}\relax
-    \fi
+%<*pdf->
+  \MT at requires@pdftex8\@firstofone{%
+    \MT at ifdefined@n at TF{\MT@@font-fake6}{%
+      \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty
+        \MT at warning@nl{%
+          Font `\MT@@font' does not specify its\MessageBreak
+          \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
+          tracking will not work with this font}%
+        \MT at glet@nc{\MT@@font-fake6}\relax
+      \fi
+    }%
   }{%
+%</pdf->
   \MT at if@list at exists
     \MT at get@tr at opt
     \relax
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
   \MT at ifdefined@c at TF\MT at letterspace@\relax{\let\MT at letterspace@\MT at letterspace}%
   \ifnum\MT at letterspace@=\z@
 %    \end{macrocode}
@@ -7215,7 +8654,7 @@
 %    \begin{macrocode}
     \MT at set@tr at zero
   \else
-%<pdftex-def|luatex-def>    \MT at vinfo{... Tracking by \number\MT at letterspace@}%
+%<pdf-|lua->    \MT at vinfo{... Tracking by \number\MT at letterspace@}%
 %    \end{macrocode}
 % Letterspacing only works in <PDF> mode.
 %    \begin{macrocode}
@@ -7246,24 +8685,21 @@
 % use when dealing with non-legacy fonts, as it is less problematic and faster
 % than the \pdftex\ primitive \cmd\letterspacefont.
 %    \begin{macrocode}
-%<*luatex-def|letterspace>
+%<*lua-|letterspace>
       \MT at if@luaotf at font{%
-%<luatex-def&debug>\MT at dinfo@nl{1}{... luaotf font: \MessageBreak
-%<luatex-def&debug>         \expandafter\fontname\font at name}%
-        \ifnum\MT at letterspace@<\z@\def\MT at minus{-}\else\let\MT at minus\@empty\fi
-        \global\expandafter\font\MT at lsfont=%
-          \expandafter\MT at exp@two at c\expandafter\MT at ls@fontspec at font
-            \expandafter\fontname\expandafter\font at name\space \@nil
+%<lua-&debug>\MT at dinfo@nl{1}{... luaotf font: \MessageBreak
+%<lua-&debug>         \expandafter\fontname\font at name}%
+        \global\expandafter\font\MT at lsfont=\MT at ls@fontspec at font
       }{%
-%</luatex-def|letterspace>
-%<luatex-def&debug>\MT at dinfo@nl{1}{... legacy font}%
+%</lua-|letterspace>
+%<lua-&debug>\MT at dinfo@nl{1}{... legacy font}%
       \global\expandafter\letterspacefont\MT at lsfont\font at name\MT at letterspace@
-%<luatex-def|letterspace>      }%
+%<lua-|letterspace>      }%
 %    \end{macrocode}
 %\changes{v2.2}{2007/06/16}{possibility to customise interword spacing}
 % Scale interword spacing (not configurable in \letterspace).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
       \MT at ifdefined@c at TF\MT at tr@ispace
         {\let\@tempa\MT at tr@ispace}%
         {\edef\@tempa{\MT at letterspace@*,,}}%
@@ -7271,7 +8707,7 @@
         {\edef\@tempa{\@tempa,\MT at tr@ospace}}%
         {\edef\@tempa{\@tempa,,,}}%
       \expandafter\MT at tr@set at space\@tempa,%
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %<*letterspace>
       % spacing = {<letterspace amount>*,,}
       \fontdimen2\MT at lsfont=\dimexpr\numexpr 1000+\MT at letterspace@\relax sp
@@ -7283,7 +8719,7 @@
 %                            ^^A MID: <46aa1cbb$0$31620$9b4e6d93 at newsspool3.arcor-online.net>
 % Adjust outer kerning (\microtype\ only).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
       \MT at ifdefined@c at TF\MT at tr@okern{\let\@tempa\MT at tr@okern}{\def\@tempa{*,*}}%
       \expandafter\MT at tr@set at okern\@tempa,%
 %    \end{macrocode}
@@ -7292,7 +8728,7 @@
 % Disable ligatures (not configurable in \letterspace).
 %    \begin{macrocode}
       \MT at ifdefined@c at T\MT at tr@ligatures\MT at tr@noligatures
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %<*letterspace>
       % no ligatures = {f}
       \tagcode\MT at lsfont`f=\m at ne
@@ -7308,12 +8744,12 @@
 %                            (reported by \contributor Wolfram Schaalo <schaalo\at gmx.net>)}
 %                                                              ^^A private mail, 2008/05/12
 %    \begin{macrocode}
-%<luatex-def|letterspace>      \MT at if@luaotf at font\relax{%
+%<lua-|letterspace>      \MT at if@luaotf at font\relax{%
 %<debug>\MT at dinfo@nl{2}{... compensating for tracking (\number\MT at letterspace@)}%
       \MT at do@font{\lpcode\MT at lsfont\@tempcnta=\numexpr\MT at letterspace@/2\relax
                   \rpcode\MT at lsfont\@tempcnta=\numexpr\MT at letterspace@/2\relax}%
       \let\MT at the@pr at code\MT at the@pr at code@tr
-%<luatex-def|letterspace>     }%
+%<lua-|letterspace>     }%
     \fi
 %    \end{macrocode}
 % Finally, let the letterspaced font propagate.
@@ -7321,8 +8757,8 @@
 %\changes{v2.5a}{2013/05/15}{fix: load font for \pkg{fontspec}} ^^A for MT at get@slot
 %    \begin{macrocode}
     \aftergroup\MT at set@lsfont
-%<pdftex-def|luatex-def>    \let\MT at font\MT at lsfont
-%<luatex-def>    \MT at if@luaotf at font\MT at font\relax
+%<pdf-|lua->    \let\MT at font\MT at lsfont
+%<lua->    \MT at if@luaotf at font\MT at font\relax
 %    \end{macrocode}
 %\begin{macro}{\MT at set@curr at ls}
 %\begin{macro}{\MT at curr@ls}
@@ -7339,11 +8775,11 @@
 % We get the current outer spacing and adjust it, then, after the end of the
 % current outer group, set the current outer spacing, again, and adjust.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
     \MT at outer@space=\csname MT at outer@space\expandafter\string\font at name\endcsname\relax
     \xdef\MT at set@curr at os{\MT at outer@space=\the\MT at outer@space\relax}%
     \MT at tr@outer at l
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 % If \cs{MT at ls@adjust} is empty, it's the starred version of \cs{textls}.
@@ -7357,7 +8793,7 @@
 % Otherwise, get the current outer kerning and adjust it, for left and right
 % side (\microtype\ only).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
     \else
       \MT at outer@kern=\expandafter\expandafter\expandafter\@firstoftwo
                       \csname MT at outer@kern\expandafter\string\font at name\endcsname\relax
@@ -7364,7 +8800,7 @@
       \ifdim\MT at outer@kern=\z@\else \MT at ls@outer at k \fi
       \MT at outer@kern=\expandafter\expandafter\expandafter\@secondoftwo
                       \csname MT at outer@kern\expandafter\string\font at name\endcsname\relax
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %<*letterspace>
       \xdef\MT at set@curr at ok{\MT at outer@kern=\the\MT at outer@kern\relax}%
       \MT at afteraftergroup{%
@@ -7373,7 +8809,7 @@
       }%
 %</letterspace>
     \fi
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 %    \end{macrocode}
 %\begin{macro}{\MT at set@curr at ok}
 % Carry the outer kerning amount to outside the next group, then set outer
@@ -7390,9 +8826,9 @@
       \MT at set@curr at ok
       \noexpand\MT at tr@outer at r
     }%
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
   \fi
-%<pdftex-def|luatex-def>  }%
+%<pdf->  }%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -7412,36 +8848,50 @@
     }%
 %<!letterspace>  }%
 }
-%</pdftex-def|luatex-def|letterspace>
+%</pdf-|lua-|letterspace>
 %    \end{macrocode}
 %\end{macro}
-%\begin{macro}{\MT at ls@fontspec at colon}
 %\begin{macro}{\MT at ls@fontspec at font}
 %\changes{v2.6a}{2016/05/03}{fix for value of \textpm1000}
 %\changes{v2.7}{2017/02/10}{fix for `\texttt{file:}\meta{font}' spec
-%                            (reported by \contributor Reinhard Kotucha <reinhard.kotucha\at web.de>)}
+%                           (reported by \contributor Reinhard Kotucha <reinhard.kotucha\at web.de>)}
 %                            ^^A http://tug.org/pipermail/lualatex-dev/2017-February/001670.html
-% Add the |kernfactor| feature to a font loaded by \pkg{fontspec}
-% (we might have to add the colon ourselves).
+%\changes{v3.0}{2021/03/19}{use \texttt{lua} to parse font spec\slash fix for font spec containing spaces
+%                           (reported by \contributor Aman Mehra <reportaman\at gmail.com>)}
+%                            ^^A https://tex.stackexchange.com/questions/567698/luatex-microtype-fontspec-luaotfload-buggy-interaction-canceling-each-others-s
+% Add the |kernfactor| feature to a font loaded by \pkg{fontspec}.
 %    \begin{macrocode}
-%<*luatex-def|letterspace>
-\def\MT at ls@fontspec at colon#1:#2:#3:#4\@nil{\ifx\\#3\\#1:#2\else#1:#2:#3\fi}
-\def\MT at ls@fontspec at font#1 #2\@nil{%
-  "\MT at ls@fontspec at colon#1:::\relax\@nil
-    kernfactor=\MT at minus \ifnum\MT at letterspace@=1000 1\else 0.%
-         \ifnum\MT at minus\MT at letterspace@<100 0\fi
-         \ifnum\MT at minus\MT at letterspace@<10  0\fi
-        \number\MT at minus\MT at letterspace@ \fi;"
-  \ifx\\#2\\ at \f at size pt\else#2\fi\relax
+%<*lua-|letterspace>
+\def\MT at ls@fontspec at font{%
+  \MT at lua{microtype.add_ls([[\MT at letterspace@]])}%
 }
-%</luatex-def|letterspace>
+%</lua-|letterspace>
+%<*luafile>
+local function add_ls(k)
+  local f = tex.fontname(font.current())
+  local spec,size = match(f,'^(.+)( at .+)$')
+  if not spec then spec = f end
+  local a,b,c = match(spec,'^([^:]+):?([^:]*):?(.*)$')
+  local ls = "kernfactor=" .. k/1000 .. ';'
+  microtype.sprint(a..':')
+  if (a == "name" or a == "file") then
+    microtype.sprint(b..':'..ls..c)
+  else
+    microtype.sprint(ls..b)
+  end
+  if size then
+    microtype.sprint(size)
+  end
+end
+microtype.add_ls = add_ls
+
+%</luafile>
 %    \end{macrocode}
 %\end{macro}
-%\end{macro}
 %\begin{macro}{\MT at get@tr at opt}
 % Various settings (only for the \microtype\ version).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at get@tr at opt{%
   \MT at set@listname
   \let\MT at tr@factor@\@m
@@ -7497,7 +8947,7 @@
   \MT at ifdefined@n at T{MT at tr@c@\MT at tr@c at name @#1}%
     {\MT at let@nn{MT at tr@#2}{MT at tr@c@\MT at tr@c at name @#1}}%
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at set@lsfont}
@@ -7504,7 +8954,7 @@
 % Redefine \cmd\font at name, which will be called a second later (in
 % \cmd\selectfont).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|letterspace>
+%<*pdf-|lua-|letterspace>
 %<plain>\MT at requires@latex2{
 \def\MT at set@lsfont{\MT at exp@two at c\let\font at name\MT at lsfont}
 %    \end{macrocode}
@@ -7540,8 +8990,8 @@
 \DeclareRobustCommand\lsstyle{%
   \not at math@alphabet\lsstyle\textls
   \let\glb at currsize\@empty
-%<pdftex-def|luatex-def>  \MT at maybe@gobble at with@tikz{\aftergroup\glb at settings}%
-%<pdftex-def|luatex-def>  \def\MT at feat{tr}%
+%<pdf-|lua->  \MT at maybe@gobble at with@tikz{\aftergroup\glb at settings}%
+%<pdf-|lua->  \def\MT at feat{tr}%
   \let\MT at tracking\MT at set@tr at codes
   \selectfont
 }
@@ -7625,7 +9075,7 @@
     \aftergroup\MT at set@lsbasefont
   \fi
 }
-%</pdftex-def|luatex-def|letterspace>
+%</pdf-|lua-|letterspace>
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -7632,8 +9082,8 @@
 %\begin{macro}{\MT at tr@noligatures}
 % \pdftex\ 1.40.0--1.40.3 disabled all ligatures in letterspaced fonts.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex7{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex7{
   \def\MT at tr@noligatures{%
     \ifx\MT at tr@ligatures\@empty
       \MT at noligatures@\MT at lsfont\@undefined
@@ -7641,7 +9091,7 @@
       \MT at noligatures@\MT at lsfont\MT at tr@ligatures
     \fi
   }
-%<*pdftex-def>
+%<*pdf->
 }{
   \def\MT at tr@noligatures{%
     \MT at warning@nl{%
@@ -7650,7 +9100,7 @@
     \MT at glet\MT at tr@noligatures\relax
   }
 }
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at outer@space}
@@ -7787,8 +9237,8 @@
 %\end{macro}
 %\end{macro}
 %\begin{macro}{\MT at if@outer at next}
-% We avoid using \cs{ifx} tests, in case \cs{MT at tr@outer at next} is \cmd\let\ to
-% \cs{fi} etc.
+% We avoid using \orig at cs{ifx} tests, in case \cs{MT at tr@outer at next} is \cmd\let\ to
+% \orig at cs{fi} etc.
 %\changes{v2.5}{2012/02/20}{fix: conflict with \pkg{amsmath}
 %                           (reported by \contributor Scott Pakin <scott\at pakin.org>)}
 %                            ^^A private mail, 2012/02/09
@@ -7933,8 +9383,8 @@
 }{
   \DeclareRobustCommand\lsstyle{%
     \MT at error{Letterspacing only works with \MT at engine tex version
-%<pdftex-def>      1.40%
-%<luatex-def>      0.62%
+%<pdf->      1.40%
+%<lua->      0.62%
       \MessageBreak or newer}
       {Upgrade \MT at engine tex, or try the `soul' package instead.}%
     \MT at glet\lsstyle\relax
@@ -7943,14 +9393,14 @@
 %    \end{macrocode}
 % And for \xetex, too.
 %    \begin{macrocode}
-%</pdftex-def|luatex-def>
-%<*xetex-def>
+%</pdf-|lua->
+%<*xe->
 \DeclareRobustCommand\lsstyle{%
   \MT at error{Letterspacing currently doesn't work with xetex}
            {Run pdftex or luatex, or use the `soul' package instead.}%
   \MT at glet\lsstyle\relax
 }
-%</xetex-def>
+%</xe->
 %    \end{macrocode}
 %\begin{macro}{\textls}
 %\changes{v2.0}{2005/09/21}{new command: letterspacing} ^^A (beta:1)
@@ -8022,11 +9472,11 @@
 \def\MT at ls@too at large#1{%
   \ifnum#1>\MT at tr@max
     \MT at warning{Maximum for option `letterspace' is \number\MT at tr@max}%
-    \let#1\MT at tr@max
+    \edef#1{\number\MT at tr@max}%
   \else
     \ifnum#1<\MT at tr@min
       \MT at warning{Minimum for option `letterspace' is \number\MT at tr@min}%
-      \let#1\MT at tr@min
+      \edef#1{\number\MT at tr@min}%
     \fi
   \fi
 }
@@ -8040,7 +9490,7 @@
 %    \begin{macrocode}
 \newdimen\MT at outer@kern
 %</package|letterspace>
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at tr@set at okern#1,#2,{%
   \let\MT at temp\@empty
   \MT at ifempty{#1}{\MT at tr@set at okern@{*}}{\MT at tr@set at okern@{#1}}%
@@ -8069,7 +9519,7 @@
                              * \fontdimen6\MT at lsfont/2000\relax
   \edef\MT at temp{\MT at temp{\the\@tempdima}}%
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at ls@outer at k}
@@ -8077,7 +9527,7 @@
 % for cases of nested letterspacing without anything actually printed. ^^A eg. \LaTeX!
 %\changes{v2.5a}{2013/05/15}{add marker for tightly nested letterspacing}
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|letterspace>
+%<*pdf-|lua-|letterspace>
 \def\MT at ls@outer at k{%
   \ifhmode
     \ifdim\lastkern=-3sp \unkern
@@ -8092,7 +9542,7 @@
     {\kern\MT at outer@kern\kern3sp\kern-3sp\relax}%
   \fi
 }
-%</pdftex-def|luatex-def|letterspace>
+%</pdf-|lua-|letterspace>
 %    \end{macrocode}
 %\end{macro}
 %
@@ -8103,8 +9553,8 @@
 % also works with \luatex.
 %\changes{v2.3}{2007/10/23}{fix: set evaluation didn't work (bug introduced in v2.2)}
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex5{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex5{
 \def\MT at noligatures{%
   \MT at dotrue
   \let\@tempa\MT at nl@setname
@@ -8122,7 +9572,7 @@
 %\begin{macro}{\MT at noligatures@}
 % This is also used by \cs{MT at set@tr at codes}.
 %    \begin{macrocode}
-%<luatex-def>\MT at requires@luatex4{\let\pdfnoligatures\ignoreligaturesinfont}\relax
+%<lua->\MT at requires@luatex4{\let\pdfnoligatures\ignoreligaturesinfont}\relax
 \def\MT at noligatures@#1#2{%
   \MT at ifdefined@c at TF#2{%
 %    \end{macrocode}
@@ -8144,8 +9594,8 @@
 % in a table (used by the \pkg{luaotfload} function |keepligature|).
 %\changes{v2.6}{2016/04/20}{use \pkg{luaotfload} function to keep\slash inhibit ligatures}
 %    \begin{macrocode}
-%<luatex-def>          \MT at if@luaotf at font
-%<luatex-def>             {\MT at lua{microtype.noligatures([[#1]],[[\MT at char]])}}\relax
+%<lua->          \MT at if@luaotf at font
+%<lua->             {\MT at lua{microtype.noligatures([[#1]],[[\MT at char]])}}\relax
         \fi
       }%
       \MT at vinfo{... Disabling ligatures for characters: #2}%
@@ -8157,13 +9607,13 @@
     }%
   }{%
     \pdfnoligatures#1%
-%<luatex-def>    \MT at if@luaotf at font
-%<luatex-def>        {\MT at lua{microtype.noligatures([[#1]],"_all_")}}\relax
+%<lua->    \MT at if@luaotf at font
+%<lua->        {\MT at lua{microtype.noligatures([[#1]],"_all_")}}\relax
     \MT at vinfo{... Disabling all ligatures}%
   }%
 }
-%<pdftex-def>}\relax
-%</pdftex-def|luatex-def>
+%<pdf->}\relax
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -8221,7 +9671,7 @@
 %</luafile>
 %    \end{macrocode}
 %
-%\subsubsection{Loading the configuration}
+%\subsubsection{Loading the configuration}\label{ssub:setup-config}
 %
 %\begin{macro}{\MT at load@list}
 % Recurse through the lists to be loaded.
@@ -8228,23 +9678,31 @@
 %\changes{v1.3}{2004/10/27}{check whether list exists}
 %\todo{load more than one list}
 %    \begin{macrocode}
-%<*package>
-\def\MT at load@list#1{%
-  \edef\@tempa{#1}%
+%<*package|show>
+%<package>\def\MT at load@list#1%
+%<show>\def\MTS at load@list#1%
+  {\edef\@tempa{#1}%
   \MT at let@cn\@tempb{MT@\MT at feat @c@\@tempa @load}%
   \MT at ifstreq\@tempa\@tempb{%
     \MT at error{\@nameuse{MT at abbr@\MT at feat} list `\@tempa' cannot load itself}{}%
   }{%
-    \ifx\@tempb\relax \else
+    \ifx\@tempb\relax
+%<show>    :\par\medskip\leavevmode
+    \else
       \MT at ifdefined@n at TF{MT@\MT at feat @c@\@tempb}{%
+%<show>        \MTS at printtext{, loading \texttt{\@tempb}}%
         \MT at vinfo{... : First loading \@nameuse{MT at abbr@\MT at feat} list `\@tempb'}%
         \begingroup
           \MT at load@list\@tempb
         \endgroup
-        \edef\MT at curr@list at name{\@nameuse{MT at abbr@\MT at feat} list
-          \noexpand\MessageBreak`\@tempb'}%
+        \edef\MT at curr@list at name{%
+%<package>                  \@nameuse{MT at abbr@\MT at feat} list \noexpand\MessageBreak
+                  `\@tempb'}%
         \MT at let@cn\@tempc{MT@\MT at feat @c@\@tempb}%
         \expandafter\MT at set@codes\@tempc,\relax,%
+%<show>        \vrule width 4cm height .5pt \\
+%<show>        \MTS at printtext{End of list \texttt{\MT at curr@list at name}}%
+%<show>        \par\medskip\leavevmode
       }{%
         \MT at error{\@nameuse{MT at abbr@\MT at feat} list `\@tempb' undefined.\MessageBreak
                     Cannot load it from list `\@tempa'}{}%
@@ -8252,6 +9710,7 @@
     \fi
   }%
 }
+%</package|show>
 %    \end{macrocode}
 %\end{macro}
 %\changes{v1.1}{2004/09/13}{configuration file names in lowercase
@@ -8265,6 +9724,7 @@
 %\begin{macro}{\MT at file@list}
 % We must also record whether we've already loaded the file.
 %    \begin{macrocode}
+%<*package>
 \let\MT at file@list\@empty
 \def\MT at find@file#1{%
 %    \end{macrocode}
@@ -8528,7 +9988,7 @@
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at if@list at exists}
-%\changes{v1.7}{2005/02/06}{don't define \cs{MT@\#1 at c@name} \cmd\global ly,
+%\changes{v1.7}{2005/02/06}{don't define \cs{MT at pr@c at name} etc. \cmd\global ly,
 %                           here and elsewhere}
 %\begin{macro}{\MT at context}
 %    \begin{macrocode}
@@ -8633,7 +10093,7 @@
 %
 %\begin{macro}{\MT at char}
 %\begin{macro}{\MT at char@}
-% The character is in \cs{@tempa}, we want its slot number in \cs{MT at char}.
+% The character is in \cmd\@tempa, we want its slot number in \cs{MT at char}.
 %    \begin{macrocode}
 \def\MT at get@slot{%
   \escapechar`\\
@@ -8665,8 +10125,8 @@
 %
 %        If |\|\meta{encoding}|\|\meta{command} (that's \emph{one} command) is
 %        defined, we try to extract the slot number.
-%\changes{v1.7}{2005/02/27}{test whether \cs{}\meta{encoding}\cs{}\meta{...} is defined}
-%\changes{v1.8}{2005/04/04}{test whether \cs{}\meta{encoding}\cs{}\meta{...} is defined
+%\changes{v1.7}{2005/02/27}{test whether \texttt{\string\bslash}\meta{encoding}\texttt{\string\bslash}\meta{...} is defined}
+%\changes{v1.8}{2005/04/04}{test whether \texttt{\string\bslash}\meta{encoding}\texttt{\string\bslash}\meta{...} is defined
 %                           made more robust}
 %
 %        We must be cautious not to stumble over accented characters consisting
@@ -8703,12 +10163,12 @@
 %\begin{macro}{\MT at get@slot@}
 %\changes{v2.5}{2010/05/18}{adapt for \xetex}
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|xetex-def>
+%<*pdf-|lua-|xe->
 \def\MT at get@slot@{%
 %    \end{macrocode}
 % If it's a legacy (\ie, <TFM>) font, proceed as usual.
 %    \begin{macrocode}
-%<xetex-def>  \ifnum\XeTeXfonttype\MT at font=\z@
+%<xe->  \ifnum\XeTeXfonttype\MT at font=\z@
   \ifnum\MT at char > \m at ne
 %    \end{macrocode}
 % In \luatex, it may also be a glyph name, prefixed with `|/|'.
@@ -8716,7 +10176,7 @@
 %                           ^^A private mail, 2012/07/17
 %                           ^^A (beta:10)
 %    \begin{macrocode}
-%<*luatex-def>
+%<*lua->
     \ifnum\MT at char=47\relax
       \ifMT at norest \else
         \@tempcnta=\MT at lua{
@@ -8734,7 +10194,7 @@
         \fi
       \fi
     \else
-%</luatex-def>
+%</lua->
 %    \end{macrocode}
 % If the user has specified something like `|fi|', or wanted to define a number
 % but forgot to use three digits, we'll have something left of the string. In
@@ -8745,20 +10205,22 @@
 %    \begin{macrocode}
     \ifMT at norest \else
       \MT at warn@rest
-%<pdftex-def|luatex-def>      \let\MT at char\m at ne
-%<xetex-def>      \let\MT at char\@empty
+%<pdf-|lua->      \let\MT at char\m at ne
+%<xe->      \let\MT at char\@empty
     \fi
-%<luatex-def>    \fi
+%<lua->    \fi
   \else
     \MT at warn@unknown
-%<xetex-def>    \let\MT at char\@empty
+%<xe->    \let\MT at char\@empty
   \fi
-%<*xetex-def>
+%<*xe->
   \else
 %    \end{macrocode}
 % There are more possibilities for \xetex:
-% It may also be a glyph name (prefixed with~`|/|'). We indicate this to
-% \cs{MT at get@charwd} by reversing the sign of \cs{MT at char@}.
+% It may be a Unicode codepoint (prefixed with `|U|') or a glyph name (prefixed with~`|/|').\footnote{
+%    This doesn't seem to be documented anywhere, but it has been announced here:
+%    \url{https://tug.org/pipermail/xetex/2010-May/016531.html}}
+% We indicate glyph names to \cs{MT at get@charwd} by reversing the sign of \cs{MT at char@}.
 %    \begin{macrocode}
     \ifnum\MT at char=47\relax
       \ifMT at norest \edef\MT at char{U47}%
@@ -8778,7 +10240,7 @@
         \ifMT at norest
 %    \end{macrocode}
 % Or, it's a Unicode number, which we mustn't translate into a glyph number,
-% since the latter is font-specific.
+% since the latter is font-specific. But we add the `|U|' prefix.
 %    \begin{macrocode}
           \@tempcnta=\XeTeXcharglyph\MT at char\relax
           \ifnum\@tempcnta=\z@
@@ -8799,23 +10261,35 @@
       \fi
     \fi
   \fi
-%</xetex-def>
+%</xe->
 }
-%</pdftex-def|luatex-def|xetex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 % This is the lua function to translate glyph name into slot number.
-% Beginning with v2.2, \pkg{luaotfload} provides this function in an <API>, which
+% Beginning with v2.2, \pkg{luaotfload} provides this function in its <API>, which
 % we use if available, but (for now, at least) keep the old code for backward
 % compatibility.
 %\changes{v2.5a}{2013/04/19}{adapt to \pkg{luaotfload} v2.2
 %                            (contributed by \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>)}
 %                            ^^A MID: <516AAF6B.8040605 at telecom-bretagne.eu>
+% With HarfBuzz, the return value is not guaranteed to be inside the
+% Unicode range, so we have to guard against this case as well (same as in
+% |do_font|).
+% ^^A cf. https://github.com/latex3/luaotfload/issues/198
+%\changes{v3.0}{2021/10/26}{guard against return values outside Unicode range (for HarfBuzz)}
+% Also, older versions of \pkg{luaotfload} (until v3.18) returned the numbers as floats.
+%^^A fixed here: https://github.com/latex3/luaotfload/commit/53b70cbdb60101e2869d879e9d8daf576b0c8f82
+%\changes{v3.0}{2021/10/30}{convert floats to integers
+%                           (reported by \contributor azur <@\at @>)}
+%                            ^^A https://tex.stackexchange.com/questions/616329/using-polyglossia-microtype-and-newcomputermodern-with-lualatex-results-in-0-0
 %    \begin{macrocode}
 %<*luafile>
 if luaotfload and luaotfload.aux and luaotfload.aux.slot_of_name then
   local slot_of_name = luaotfload.aux.slot_of_name
   microtype.name_to_slot = function(name, unsafe)
-    return slot_of_name(font.current(), name, unsafe)
+    local n = math.tointeger(slot_of_name(font.current(), name, unsafe))
+    if n and n > 1114111 then n = -1 end
+    return n
   end
 else
   -- we dig into internal structure (should be avoided)
@@ -8852,14 +10326,14 @@
 %\begin{macro}{\MT at max@slot}
 % Warning if resulting character or slot number is too large.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|xetex-def>
+%<*pdf-|lua-|xe->
 \def\MT at max@char
-%<pdftex-def>  {127 }
-%<luatex-def|xetex-def>  {1114111 }
+%<pdf->  {127 }
+%<lua-|xe->  {1114111 }
 \def\MT at max@slot
-%<pdftex-def>  {255 }
-%<luatex-def|xetex-def>  {1114111 }
-%</pdftex-def|luatex-def|xetex-def>
+%<pdf->  {255 }
+%<lua-|xe->  {1114111 }
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -9048,7 +10522,7 @@
 % Instead of simply expanding |\|\meta{command}, we construct the command
 % |\|\meta{encoding}|\|\meta{command} and see whether its meaning is
 % \cmd\char|"|\meta{hex number}, which is the case for everything that has
-% been defined with \cs{DeclareTextSymbol} in the encoding definition files.
+% been defined with \cmd\DeclareTextSymbol in the encoding definition files.
 %\changes{v2.0}{2006/09/15}{made even more robust}
 %    \begin{macrocode}
 \def\MT at is@symbol{%
@@ -9064,7 +10538,7 @@
     \meaning\expandafter\MT at char\MT at charstring\relax\relax\relax
   \ifnum\MT at char@ < \z@
 %    \end{macrocode}
-%\changes{v2.7c}{2019/08/13}{take care of \cs{remove at tlig}}
+%\changes{v2.7c}{2019/08/13}{take care of \cmd\remove at tlig}
 % In <TU> encoding, some commands (currently, \cmd\textquotesingle, \cmd\textasciigrave\
 % and \cmd\textquotedbl) are defined by means of the auxiliary macro
 % \cmd\remove at tlig, which we take care of here.
@@ -9073,7 +10547,7 @@
     \ifnum\MT at char@ < \z@
 %    \end{macrocode}
 %\changes{v2.2}{2007/03/07}{expand once more (for \pkg{frenchpro})}
-% Finally, if it hasn't been defined by \cs{DeclareTextSymbol}, it could be a letter
+% Finally, if it hasn't been defined by \cmd\DeclareTextSymbol, it could be a letter
 % (\eg, \cmd\i, when using \pkg{frenchpro}). ^^A as noted by Bernard Gaulle
 %                                              ^^A private mail, 2005/01/28
 %    \begin{macrocode}
@@ -9090,14 +10564,17 @@
 %                            (reported by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>)}
 %                            ^^A private mail, 2021/03/02
 %                            ^^A also: https://github.com/latex3/latex2e/issues/525
+%\changes{v3.0}{2021/10/18}{fix for incompatibility with \pkg{syntax}
+%                           (reported by \contributor Safron <@\at @>)}
+%                            ^^A https://tex.stackexchange.com/questions/619410/conflict-between-microtype-and-syntax-packages/
 %    \begin{macrocode}
 \def\MT at is@opt at char#1\iffontchar#2\char#3\else#4\fi\relax{%
-  \ifx\\#1\\%
+  \MT at ifempty{#1}{%
     \iffontchar#2%
       \expandafter\chardef
         \csname\MT at encoding\MT at detokenize@c\@tempa\endcsname=#3\relax
     \fi
-  \fi
+  }\relax
 }
 %    \end{macrocode}
 %\end{macro}
@@ -9209,7 +10686,7 @@
 % Again, we construct a control sequence, this time of the form:
 % |\\|\meta{encoding}\allowbreak|\|\meta{accent}|-|\meta{character}, \eg,
 % |\\T1\"-a|, which we then expand once to see if it is a letter (if it has
-% been defined by \cs{DeclareTextComposite}). This should be robust, finally,
+% been defined by \cmd\DeclareTextComposite). This should be robust, finally,
 % especially, since we also \cmd\detokenize\ the input instead of only
 % \cmd\string ifying it. Thus, we will die gracefully even on wrong Unicode
 % input without |utf8|.
@@ -9219,9 +10696,9 @@
                     \MT at detokenize@n{#1}-\MT at detokenize@n{#2}\endcsname}%
 %    \end{macrocode}
 % In 2017, \LaTeX\ introduced a new way of declaring accented
-% Unicode commands (\cs{DeclareUnicodeComposite}), which we take care of here
-% (\cs{UnicodeEncodingName} has been introduced at the same time):
-%\changes{v2.7}{2017/04/29}{compatibility with \LaTeX\ 2017/01/01 (\cs{DeclareUnicodeComposite})
+% Unicode commands (\cmd\DeclareUnicodeComposite), which we take care of here
+% (\cmd\UnicodeEncodingName\ has been introduced at the same time):
+%\changes{v2.7}{2017/04/29}{compatibility with \LaTeX\ 2017/01/01 (\cmd\DeclareUnicodeComposite)
 %                            (reported by \contributor Ulrike Fischer <news3\at nililand.de> and
 %                             `\contributor jcr <@\at @>')}
 %                             ^^A (1) private mail, 2017/04/25
@@ -9247,7 +10724,7 @@
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at is@uni at comp}
-% Helper for \cs{DeclareUnicodeComposite}.
+% Helper for \cmd\DeclareUnicodeComposite.
 %    \begin{macrocode}
 \def\MT at is@uni at comp#1\iffontchar#2\else#3\fi\relax{%
   \ifx\\#1\\\edef\MT at char{\iffontchar#2\fi}\fi
@@ -9278,7 +10755,7 @@
 % Some warning messages, for performance reasons separated here.
 %\begin{macro}{\MT at curr@list at name}
 %\changes{v1.8}{2005/06/08}{new macro: current list type and name}
-%\changes{v1.9f}{2006/08/03}{fix: \cs{MessageBreak} must not be expanded}
+%\changes{v1.9f}{2006/08/03}{fix: \cmd\MessageBreak\ must not be expanded}
 %\begin{macro}{\MT at set@listname}
 % The type and name of the current list, defined at various places.
 %    \begin{macrocode}
@@ -9352,7 +10829,7 @@
     \MT at warning@nl{One or more slots in the configuration are unknown.\MessageBreak
                    Make sure that no text commands are used.\MessageBreak
                    See the documentation for details (the note\MessageBreak
-                   on `#1' in section 9: `Hints and caveats')}%
+                   on `#1' in section 11: `Hints and caveats')}%
     \MT at glet\MT at warn@unknown\relax}%
 }
 %
@@ -9925,9 +11402,9 @@
 %    \begin{macrocode}
 \newcommand\MT at DeclareSet[3][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at declare@sets{##1}{#2}{#3}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at declare@sets{##1}{#2}{#3}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{set declaration `#2'}{%
           \MT at exp@one at n\MT at declare@sets
@@ -9934,7 +11411,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}{#3}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -10019,7 +11496,7 @@
     \MT at ifempty\@tempa{\def\@tempa{#1}}\relax
 %    \end{macrocode}
 % Test whether the command is actually defined.
-%\changes{v2.7a}{2017/11/17}{test whether \cs{\dots default} is defined}
+%\changes{v2.7a}{2017/11/17}{test whether \cmd{\...default} is defined}
 %    \begin{macrocode}
     \MT at ifdefined@n at TF{\@tempa default}%
       {\edef\MT at val{\expandafter\noexpand\csname \@tempa default\endcsname}}%
@@ -10153,7 +11630,7 @@
 %    \begin{macrocode}
 \def\MT at get@size{%
 %    \end{macrocode}
-% A single star would mean \cs{sizedefault}, which doesn't exist, so we define
+% A single star would mean \cmd\sizedefault, which doesn't exist, so we define
 % it to be \cmd\normalsize.
 %    \begin{macrocode}
   \if*\MT at val\relax
@@ -10323,9 +11800,9 @@
 %    \begin{macrocode}
 \newcommand*\MT at UseMicrotypeSet[2][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at use@set{##1}{#2}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at use@set{##1}{#2}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{activation of set `#2'}{%
           \MT at exp@one at n\MT at use@set
@@ -10332,7 +11809,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -10385,9 +11862,9 @@
 %    \begin{macrocode}
 \newcommand*\MT at DeclareMicrotypeSetDefault[2][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at set@default at set{##1}{#2}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at set@default at set{##1}{#2}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{declaration of default set `#2'}{%
           \MT at exp@one at n\MT at set@default at set
@@ -10394,7 +11871,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -10540,8 +12017,8 @@
 %
 % The optional argument may be used to disable selected ligatures only.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex5{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex5{
 \def\DisableLigatures{%
   \MT at begin@catcodes
   \MT at DisableLigatures
@@ -10554,8 +12031,8 @@
   \gdef\MT at nl@setname{no ligatures}%
   \MT at end@catcodes
 }
-%<pdftex-def>}{
-%</pdftex-def|luatex-def>
+%<pdf->}{
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -10562,17 +12039,17 @@
 %\end{macro}
 % If \pdftex\ is too old, we throw an error.
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def>
+%<*pdf-|xe->
 \renewcommand*\DisableLigatures[2][]{%
   \MT at error{Disabling ligatures of a font is only possible\MessageBreak
     with pdftex version 1.30 or newer.\MessageBreak
     Ignoring \string\DisableLigatures}{%
-%<pdftex-def>    Upgrade
-%<xetex-def>    Use
+%<pdf->    Upgrade
+%<xe->    Use
     pdftex.}%
 }
-%<pdftex-def>}
-%</pdftex-def|xetex-def>
+%<pdf->}
+%</pdf-|xe->
 %    \end{macrocode}
 %\end{macro}
 %
@@ -10613,7 +12090,7 @@
 % A new macro called |\MT at pr@c@|\meta{name} will be defined to be \meta{\#3}
 % (\ie, the list of characters, not expanded).
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
+%<*pdf-|lua-|xe->
 \def\SetProtrusion{%
   \MT at begin@catcodes
   \MT at SetProtrusion
@@ -10649,7 +12126,7 @@
   \MT at gdef@n{MT at pr@c@\MT at pr@c at name}{#3}%
   \MT at end@catcodes
 }
-%</pdftex-def|xetex-def|luatex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -10662,7 +12139,7 @@
 % \cs{SetExpansion} only differs in that it allows some extra options
 % (|stretch|, |shrink|, |step|, |auto|).
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\SetExpansion{%
   \MT at begin@catcodes
   \MT at SetExpansion
@@ -10732,13 +12209,13 @@
                    tracking set `\MT at curr@set at name'}}}%
   \MT at end@catcodes
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\SetExtraSpacing}
 %\changes{v2.0}{2005/09/28}{new command: adjustment of interword spacing} ^^A (beta:1)
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \def\SetExtraSpacing{%
   \MT at begin@catcodes
   \MT at SetExtraSpacing
@@ -10789,7 +12266,7 @@
   \MT at gdef@n{MT at kn@c@\MT at kn@c at name}{#3}%
   \MT at end@catcodes
 }
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -10986,8 +12463,8 @@
 %\changes{v2.5}{2010/02/27}{allow contexts for \luatex}
 % It also works with \luatex\ 0.30 or newer.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex7{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex7{
   \define at key{MT at ex@c}{context}[]{%
     \MT at ifempty{#1}\relax{%
       \MT at glet\MT at copy@font\MT at copy@font@
@@ -11029,8 +12506,8 @@
       \fi
     }%
   }
-%</pdftex-def|luatex-def>
-%<*pdftex-def>
+%</pdf-|lua->
+%<*pdf->
 }{
   \define at key{MT at ex@c}{context}[]{%
     \MT at error{Expansion contexts only work with pdftex 1.40.4\MessageBreak
@@ -11037,18 +12514,18 @@
         or later. Ignoring `context' key\on at line}%
       {Upgrade pdftex.}%
   }
-%</pdftex-def>
-%<*pdftex-def|xetex-def>
+%</pdf->
+%<*pdf-|xe->
   \define at key{MT at pr@c}{context}[]{%
     \MT at error{Protrusion contexts only work with pdftex
-%<pdftex-def>        1.40.4\MessageBreak or later.
-%<xetex-def>        \MessageBreak or luatex.
+%<pdf->        1.40.4\MessageBreak or later.
+%<xe->        \MessageBreak or luatex.
         Ignoring `context' key\on at line}%
-%<pdftex-def>      {Upgrade pdftex.}%
-%<xetex-def>      {Use pdftex or luatex.}%
+%<pdf->      {Upgrade pdftex.}%
+%<xe->      {Use pdftex or luatex.}%
   }
-%</pdftex-def|xetex-def>
-%<pdftex-def>}
+%</pdf-|xe->
+%<pdf->}
 %    \end{macrocode}
 %\begin{macro}{\MT at warn@nodim}
 %    \begin{macrocode}
@@ -11068,7 +12545,7 @@
 %\todo{new key for unit: \texttt{dimen} (for \texttt{kerning}, especially)}
 % Protrusion codes may be relative to character width, or to any dimension.
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
+%<*pdf-|lua-|xe->
 \define at key{MT at pr@c}{unit}[character]{%
   \MT at glet@nc{MT at pr@c@\MT at curr@set at name @unit}\@empty
   \def\@tempa{#1}%
@@ -11082,11 +12559,11 @@
       {\MT at warn@nodim{character widths}}%
   }%
 }
-%</pdftex-def|xetex-def|luatex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 % Tracking may only be relative to a dimension.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \define at key{MT at tr@c}{unit}[1em]{%
   \MT at glet@nc{MT at tr@c@\MT at curr@set at name @unit}\@empty
   \def\@tempa{#1}%
@@ -11095,11 +12572,11 @@
     {\MT at warn@nodim{1em}%
      \MT at gdef@n{MT at tr@c@\MT at curr@set at name @unit}{1em}}%
 }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 % Spacing and kerning codes may additionally be relative to space dimensions.
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
 \MT at map@clist at n{sp,kn}{%
   \define at key{MT@#1 at c}{unit}[space]{%
     \MT at glet@nc{MT@#1 at c@\MT at curr@set at name @unit}\@empty
@@ -11114,11 +12591,11 @@
     }%
   }%
 }
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 % The first argument to \cs{SetExpansion} accepts some more options.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \MT at map@clist at n{stretch,shrink,step}{%
   \define at key{MT at ex@c}{#1}[]{%
     \MT at ifempty{##1}\relax{%
@@ -11144,19 +12621,19 @@
 %\changes{v1.7}{2005/03/07}{disallow automatic expansion if \pdftex\ too old}
 %\changes{v2.7a}{2017/08/08}{disallow non-automatic expansion with \luatex}
 %    \begin{macrocode}
-%<pdftex-def>    \MT at requires@pdftex4%
-%<luatex-def>    \MT at requires@luatex3\relax
+%<pdf->    \MT at requires@pdftex4%
+%<lua->    \MT at requires@luatex3\relax
       {\MT at gdef@n{MT at ex@c@\MT at curr@set at name @auto}{autoexpand}}%
-%<pdftex-def>      {\MT at warning{pdftex too old for automatic font expansion}}%
+%<pdf->      {\MT at warning{pdftex too old for automatic font expansion}}%
   \else
-%<pdftex-def>    \MT at requires@pdftex4%
-%<*luatex-def>
+%<pdf->    \MT at requires@pdftex4%
+%<*lua->
     \MT at requires@luatex3{%
       \MT at warning{Non-automatic font expansion doesn't work with\MessageBreak
                   luatex}}%
-%</luatex-def>
+%</lua->
       {\MT at glet@nc{MT at ex@c@\MT at curr@set at name @auto}\@empty}%
-%<pdftex-def>      \relax
+%<pdf->      \relax
   \fi
 }
 %    \end{macrocode}
@@ -11175,7 +12652,7 @@
 \define at key{MT at tr@c}{outer spacing}[]{\setkeys{MT at tr@c}{outerspacing={#1}}}
 \define at key{MT at tr@c}{outer kerning}[]{\setkeys{MT at tr@c}{outerkerning={#1}}}
 \define at key{MT at tr@c}{no ligatures}[]{\setkeys{MT at tr@c}{noligatures={#1}}}
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %
 %\subsubsection{Character inheritance}
@@ -11214,20 +12691,23 @@
 %\end{macro}
 %\begin{macro}{\MT at set@inh at list}
 % No need to create an inheritance list for tracking.
+%\changes{v3.0}{2021/03/27}{fix: grouping with \cmd\begingroup~\dots~\cmd\endgroup\ instead of \texttt{\{}\dots\texttt{\}}
+%                           (reported by \contributor chsk <@\at @>)}
+%                            ^^A https://tex.stackexchange.com/questions/590265/improper-halign-inside-s-with-lmodern-microtype-fontspec
 %    \begin{macrocode}
 \def\MT at set@inh at list#1#2{%
   \MT at ifempty\MT at inh@feat{%
-    \MT at map@clist at c\MT at features{{%
+    \MT at map@clist at c\MT at features{\begingroup
       \MT at ifstreq{##1}{tr}\relax{\MT at declare@char at inh{##1}{#1}{#2}}%
-    }}%
+    \endgroup}%
   }{%
-    \MT at map@clist at c\MT at inh@feat{{%
+    \MT at map@clist at c\MT at inh@feat{\begingroup
       \KV@@sp at def\@tempa{##1}%
       \MT at ifempty\@tempa\relax{%
         \edef\@tempa{\csname MT at rbba@\@tempa\endcsname}%
         \MT at ifstreq\@tempa{tr}\relax{%
           \MT at exp@one at n\MT at declare@char at inh{\@tempa}{#1}{#2}}}%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -11290,32 +12770,74 @@
 % in |\MT at set@|\meta{feature}|@codes|.
 %    \begin{macrocode}
 %</package>
-%<*pdftex-def|xetex-def|luatex-def>
+%<*pdf-|lua-|xe->
 \def\MT at inh@split#1=#2=#3\relax{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty \else
+    \expandafter\MT at has@inh at prefix\@tempa()\relax\@nil
     \MT at get@slot
-%<pdftex-def|luatex-def>    \ifnum\MT at char > \m at ne
-%<xetex-def>    \ifx\MT at char\@empty\else
+%<pdf-|lua->    \ifnum\MT at char > \m at ne
+%<xe->    \ifx\MT at char\@empty\else
       \let\MT at val\MT at char
       \MT at map@clist at n{#2}{%
         \def\@tempa{##1}%
         \ifx\@tempa\@empty \else
           \MT at get@slot
-%<pdftex-def|luatex-def>          \ifnum\MT at char > \m at ne
-%<xetex-def>          \ifx\MT at char\@empty\else
-            \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+%<pdf-|lua->          \ifnum\MT at char > \m at ne
+%<xe->          \ifx\MT at char\@empty\else
+            \ifx\MT at inh@prefix\@empty
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \else
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @prefixes}%
+                  {{{\MT at val}{\MT at char}\MT at inh@prefix@}}%
+            \fi
           \fi
         \fi
       }%
 %<debug>\MT at dinfo@nl{2}{children of #1 (\MT at val):
-%<debug>                \@nameuse{MT at inh@\MT at listname @\MT at val @}}%
+%<debug>    \@nameuse{MT at inh@\MT at listname @\ifx\MT at inh@prefix\@empty\MT at val @\else prefixes\fi}}%
     \fi
   \fi
 }
-%</pdftex-def|xetex-def|luatex-def>
 %    \end{macrocode}
 %\end{macro}
+%\begin{macro}{\MT at inh@prefix}
+%\begin{macro}{\MT at has@inh at prefix}
+% If the inheriting character is preceded by |(|\meta{prefix}|)|, where
+% \meta{prefix} is one of |l|, |r| or |lr|, this has a special meaning
+% for protrusion. For the other features, we ignore these settings.
+%\changes{v3.0}{2021/03/27}{new: automatical protrusion based on char widths difference
+%                           (suggested by \contributor Daniel Benjamin Miller <dbmiller\at dbmiller.org>)}
+%                            ^^A private mail, 2020/12/24
+%    \begin{macrocode}
+\def\MT at has@inh at prefix#1(#2)#3#4\@nil{%
+  \let\MT at temp\relax
+  \ifx\relax#3%
+    \def\@tempa{#1#2}%
+    \let\MT at inh@prefix\@empty
+  \else
+    \MT at ifstreq{\MT at feat}{pr}{%
+      \MT at ifstreq{#2}{l}{\def\MT at inh@prefix@{{1000}{0}}\@firstoftwo}{%
+        \MT at ifstreq{#2}{r}{\def\MT at inh@prefix@{{0}{1000}}\@firstoftwo}{%
+          \MT at ifstreq{#2}{lr}{\def\MT at inh@prefix@{{500}{500}}\@firstoftwo}{%
+            \MT at warning@nl{`#2' is not a valid prefix in inheritance list%
+              \MessageBreak\MT at listname. Ignoring it}%
+            \@secondoftwo}}}%
+      {\def\@tempa{#3}%
+       \def\MT at inh@prefix{#2}%
+       \@gobble}%
+      {\@firstofone}%
+    }{\@firstofone}%
+   {\let\MT at char\m at ne
+    \let\MT at temp\@gobble
+   }%
+  \fi
+  \MT at temp
+}
+%</pdf-|lua-|xe->
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
 %
 %\subsubsection{Permutation}\label{ssub:permutation}
 %
@@ -11727,7 +13249,7 @@
 %                                               ^^A (beta:1)
 %\begin{macro}{\MT at def@bool at opt}
 % The |true|/|false| options:
-% \opt{draft}, \opt{final} (may be inherited from the class options),
+% \opt{draft} (may be inherited from the class options),
 % \opt{auto},
 % \opt{selected},
 % \opt{babel},
@@ -11760,21 +13282,21 @@
 %\changes{v2.5}{2010/09/17}{disable `\opt{DVIoutput}' option for \xetex} ^^A (beta:03)
 %    \begin{macrocode}
 %</package>
-%<*pdftex-def|luatex-def|xetex-def>
-%<luatex-def>\MT at requires@luatex4{\let\pdfoutput\outputmode}\relax
+%<*pdf-|lua-|xe->
+%<lua->\MT at requires@luatex4{\let\pdfoutput\outputmode}\relax
 \MT at def@bool at opt{DVIoutput}{%
   \csname if\@tempa\endcsname
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
     \ifnum\pdfoutput>\z@ \MT at opt@DVItrue \fi
     \pdfoutput\z@
   \else
     \ifnum\pdfoutput<\@ne \MT at opt@DVItrue \fi
     \pdfoutput\@ne
-%</pdftex-def|luatex-def>
-%<xetex-def>    \MT at warning@nl{Ignoring `DVIoutput' option}%
+%</pdf-|lua->
+%<xe->    \MT at warning@nl{Ignoring `DVIoutput' option}%
   \fi
 }
-%</pdftex-def|luatex-def|xetex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\changes{v1.9a}{2005/11/21}{new option: \opt{defersetup}, by default true}
 % Setting the \opt{defersetup} option to false will restore the old behaviour,
@@ -11805,8 +13327,8 @@
 % out automatically whether it's required.
 % It also works with \luatex\ 0.30 or newer.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex7{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex7{
   \MT at def@bool at opt{copyfonts}{%
     \csname if\@tempa\endcsname
       \MT at glet\MT at copy@font\MT at copy@font@
@@ -11814,31 +13336,45 @@
       \MT at glet\MT at copy@font\relax
     \fi
   }
-%<pdftex-def>}{
-%</pdftex-def|luatex-def>
-%<*pdftex-def|xetex-def>
+%<pdf->}{
+%</pdf-|lua->
+%<*pdf-|xe->
   \MT at def@bool at opt{copyfonts}{%
     \csname if\@tempa\endcsname
       \MT at error
-%<pdftex-def>        {The pdftex version you are using is too old\MessageBreak
-%<pdftex-def>        to use the `copyfonts' option}{Upgrade pdftex.}%
-%<xetex-def>        {The `copyfonts' option does not work with xetex}
-%<xetex-def>        {Use pdftex or luatex instead.}%
+%<pdf->        {The pdftex version you are using is too old\MessageBreak
+%<pdf->        to use the `copyfonts' option}{Upgrade pdftex.}%
+%<xe->        {The `copyfonts' option does not work with xetex}
+%<xe->        {Use pdftex or luatex instead.}%
     \fi
   }
-%<pdftex-def>}
-%</pdftex-def|xetex-def>
+%<pdf->}
+%</pdf-|xe->
 %    \end{macrocode}
 % \opt{final} is the opposite to \opt{draft}.
 %\changes{v1.4a}{2004/11/16}{new option: \opt{final}}
+% It's only kept for backwards compatibility.
+%\changes{v3.0}{2021/08/13}{remove option \opt{final}}
 %    \begin{macrocode}
 %<*package>
-\MT at def@bool at opt{final}{%
-  \csname if\@tempa\endcsname
-    \MT at draftfalse
-  \else
-    \MT at drafttrue
-  \fi
+\MT at def@bool at opt{final}{}
+%    \end{macrocode}
+% The \opt{disable} option replaces the \opt{draft} option,
+% which could be inherited from the class options.
+% The third value |ifdraft| mimicks this behaviour.
+%\changes{v3.0}{2021/08/13}{new option: \opt{disable}, replacing the \texttt{draft} option
+%                           (suggested by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>)}
+%                            ^^A private mail, 2018/07/04
+%    \begin{macrocode}
+\define at key{MT}{disable}[true]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{true}\MT at disabletrue{%
+    \MT at ifstreq\@tempa{ifdraft}{\ifMT at draft\MT at disabletrue\fi}{%
+      \MT at ifstreq\@tempa{false}\relax{%
+        \MT at optwarn@admissible{#1}{disable}%
+      }%
+    }%
+  }%
 }
 %    \end{macrocode}
 % For \opt{verbose} output, we redefine \cs{MT at vinfo}.
@@ -11932,6 +13468,55 @@
   }%
 }
 %    \end{macrocode}
+%\changes{v3.0}{2021/05/22}{new options: \opt{patch} and \opt{nopatch}}
+%\begin{macro}{\MT at patches@list}
+%\begin{macro}{\MT at nopatches@list}
+% The \opt{patch} and \opt{nopatch} options.
+% Remember chosen option for later (\cmd\relax\ means `all',
+% \cmd\@empty\ means `none').
+%    \begin{macrocode}
+\let\MT at patches@list\relax
+\let\MT at nopatches@list\@empty
+%    \end{macrocode}
+%\end{macro}
+%\end{macro}
+%    \begin{macrocode}
+\define at key{MT}{patch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\MT at patches@list\@empty}
+      {\def\MT at patches@list{#1}}}%
+}
+\define at key{MT}{nopatch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    {\let\MT at nopatches@list\relax}
+    {\MT at ifstreq\@tempa{none}
+      \relax
+      {\def\MT at nopatches@list{#1}}}%
+}
+%    \end{macrocode}
+% We can only apply the patches AtBeginDocument.
+%    \begin{macrocode}
+\MT at addto@setup{%
+  \ifx\MT at patches@list\relax
+    \let\MT at patches@list\MT at patches@def
+  \fi
+  \ifx\MT at nopatches@list\@empty\else
+    \ifx\MT at nopatches@list\relax
+      \let\MT at nopatches@list\MT at patches@def
+    \fi
+    \MT at map@clist at c\MT at nopatches@list{%
+      \MT at rem@from at clist{#1}\MT at patches@list}%
+  \fi
+  \ifx\MT at patches@list\@empty\else
+^^X    \MT at map@clist at c\MT at patches@list{\MT at apply@patch{#1}}%
+^^Q    \MT at warning@nl{Patches require the etex extensions. Ignoring them}%
+  \fi
+}
+%    \end{macrocode}
 %
 %\subsubsection{Loading the definition file}
 %
@@ -11967,7 +13552,7 @@
 %    \begin{macrocode}
 \MT at protrusiontrue
 %</package>
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \ifnum\pdfoutput<\@ne \else
 %    \end{macrocode}
 % Also, we only enable expansion by default if \pdftex\ can expand the fonts
@@ -11974,13 +13559,13 @@
 % automatically.
 %\changes{v1.6}{2004/12/23}{defaults: turn off expansion for old \pdftex\ versions}
 %    \begin{macrocode}
-%<pdftex-def>  \MT at requires@pdftex4{
+%<pdf->  \MT at requires@pdftex4{
     \MT at expansiontrue
-%<pdftex-def>    \MT at autotrue
-%<pdftex-def>  }\relax
+%<pdf->    \MT at autotrue
+%<pdf->  }\relax
 \fi
-%<luatex-def>\MT at autotrue
-%</pdftex-def|luatex-def>
+%<lua->\MT at autotrue
+%</pdf-|lua->
 %    \end{macrocode}
 % The main configuration file will be loaded before processing the package
 % options.
@@ -12052,7 +13637,7 @@
 %
 %\subsubsection{Hook for other packages}\label{sub:hook}
 %
-% {\let\special at index\index\SpecialIndex@{\Microtype at Hook}{\encapchar usage}}
+% {\let\special at index\index\SpecialIndex@{\Microtype at Hook}{\encapchar hyperpage}}
 %\begin{macro}{\Microtype at Hook}
 %\changes{v1.7}{2005/03/22}{new command for font package authors}
 % This hook may be used by font package authors, \eg, to declare alias fonts. If
@@ -12079,13 +13664,13 @@
 %    {\let\Microtype at Hook\MinionPro at MT@Hook}
 %    {\g at addto@macro\Microtype at Hook{\MinionPro at MT@Hook}}}
 %\end{verbatim}
-% \cs{MicroType at Hook} with a capital |T| (which only existed in version 1.7) is
-% provided for compatibility reasons. At some point in the future, it will no
-% longer be available, hence it should not be used.
+% \orig at cs{MicroType at Hook} with a capital |T| (which only existed in version 1.7)
+% is now officially deprecated.
 %    \begin{macrocode}
-\MT at ifdefined@c at T\MicroType at Hook{\MT at warning{%
+\MT at ifdefined@c at T\MicroType at Hook{\MT at error{%
   Command \string\MicroType at Hook\space is deprecated.\MessageBreak
-      Use \string\Microtype at Hook\space instead}\MicroType at Hook}
+  Use \string\Microtype at Hook\space instead}
+  {You might want to inform the font package authors.}\MicroType at Hook}
 \MT at ifdefined@c at T\Microtype at Hook\Microtype at Hook
 %    \end{macrocode}
 %\end{macro}
@@ -12102,13 +13687,13 @@
 % Inside the preamble, \cs{microtypesetup} accepts the same options as the
 % package (unless \opt{defersetup}|=false|).
 % In the document body, it accepts the options:
-% |protrusion|, |expansion|, |activate|, |tracking|, |spacing| and |kerning|.
-% Specifying font sets is not allowed.
+% |protrusion|, |expansion|, |activate|, |tracking|, |spacing| and |kerning|
+% (but specifying font sets is not allowed), and |patch| and |nopatch|.
 %    \begin{macrocode}
 \def\microtypesetup{\setkeys{MT}}
 \MT at addto@setup{\def\microtypesetup#1{\setkeys{MTX}{#1}\selectfont}}
 %</package>
-%<*pdftex-def|luatex-def|xetex-def>
+%<*pdf-|lua-|xe->
 \def\MT at define@optionX#1#2{%
   \define at key{MTX}{#1}[true]{%
     \edef\@tempb{\csname MT at rbba@#1\endcsname}%
@@ -12178,26 +13763,26 @@
 %\end{macro}
 %    \begin{macrocode}
 \MT at define@optionX{protrusion}\MT at protrudechars
-%</pdftex-def|luatex-def|xetex-def>
-%<*pdftex-def|luatex-def>
+%</pdf-|lua-|xe->
+%<*pdf-|lua->
 \MT at define@optionX{expansion}\MT at adjustspacing
 %    \end{macrocode}
 %\begin{macro}{\MT at protrudechars}
 %\begin{macro}{\MT at adjustspacing}
 %    \begin{macrocode}
-%<*luatex-def>
+%<*lua->
 \MT at requires@luatex4{
   \let\pdfprotrudechars\protrudechars
   \let\pdfadjustspacing\adjustspacing
 }\relax
-%</luatex-def>
+%</lua->
 \let\MT at protrudechars\pdfprotrudechars
 \let\MT at adjustspacing\pdfadjustspacing
-%</pdftex-def|luatex-def>
-%<*xetex-def>
+%</pdf-|lua->
+%<*xe->
 \let\MT at protrudechars\XeTeXprotrudechars
 \define at key{MTX}{expansion}[true]{\MT at warning{Ignoring expansion setup}}
-%</xetex-def>
+%</xe->
 %    \end{macrocode}
 %\end{macro}
 %\end{macro}
@@ -12205,9 +13790,9 @@
 % The same for |tracking|, |spacing| and |kerning|, which do not have a
 % |compatibility| level.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex6{
-%<luatex-def>\MT at requires@luatex3{
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex6{
+%<lua->\MT at requires@luatex3{
   \def\MT at define@optionX@#1#2{%
     \define at key{MTX}{#1}[true]{%
       \MT at map@clist at n{##1}{%
@@ -12241,31 +13826,31 @@
 %    \begin{macrocode}
   \MT at define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT at tracking\MT at set@tr at zero
                                 \else \let\MT at tracking\MT at tracking@ \fi}
-%<pdftex-def>  \MT at define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta}
-%<pdftex-def>  \MT at define@optionX@{kerning}{\pdfprependkern\@tempcnta
-%<pdftex-def>                               \pdfappendkern\@tempcnta}
+%<pdf->  \MT at define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta}
+%<pdf->  \MT at define@optionX@{kerning}{\pdfprependkern\@tempcnta
+%<pdf->                               \pdfappendkern\@tempcnta}
 }{
-%</pdftex-def|luatex-def>
-%<*pdftex-def|luatex-def|xetex-def>
+%</pdf-|lua->
+%<*pdf-|lua-|xe->
 %    \end{macrocode}
 % Disable for older \pdftex\ versions and for \xetex\ and \luatex.
 %    \begin{macrocode}
 \define at key{MTX}{tracking}[true]{\MT at warning{Ignoring tracking setup}}
-%<luatex-def>}
+%<lua->}
 \define at key{MTX}{kerning}[true]{\MT at warning{Ignoring kerning setup}}
 \define at key{MTX}{spacing}[true]{\MT at warning{Ignoring spacing setup}}
-%<pdftex-def>}
+%<pdf->}
 \define at key{MTX}{activate}[true]{%
   \setkeys{MTX}{protrusion={#1}}%
-%<pdftex-def|luatex-def>  \setkeys{MTX}{expansion={#1}}%
+%<pdf-|lua->  \setkeys{MTX}{expansion={#1}}%
 }
-%</pdftex-def|luatex-def|xetex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\begin{macro}{\MT at saved@setupfont}
 % Disable everything -- may be used as a temporary work-around in case
 % setting up fonts doesn't work under certain circumstances, but only until
-% that specific problem is fixed. This is \emph{undocumented}, as it completely
-% deprives us of the possibility to act -- we're blind and paralysed.
+% that specific problem is fixed. These options are \emph{undocumented}, as they
+% completely deprive us of the possibility to act -- we're blind and paralysed.
 %    \begin{macrocode}
 %<*package>
 \let\MT at saved@setupfont\MT at setupfont
@@ -12272,14 +13857,40 @@
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
-\define at key{MTX}{disable}[]{%
-  \MT at info{Inactivate `\MT at MT' package}%
+\define at key{MTX}{deactivate}[]{%
+  \MT at info{Deactivate `\MT at MT' package}%
   \let\MT at setupfont\relax
 }
-\define at key{MTX}{enable}[]{%
+\define at key{MTX}{reactivate}[]{%
   \MT at info{Reactivate `\MT at MT' package}%
   \let\MT at setupfont\MT at saved@setupfont
 }
+%    \end{macrocode}
+% Apply or revert patches.
+%    \begin{macrocode}
+\define at key{MTX}{patch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\@tempa\@empty}
+      \relax}%
+  \ifx\@tempa\@empty\else
+^^X    \MT at map@clist at c\@tempa{\MT at apply@patch{##1}}%
+^^Q    \MT at warning@nl{Patches require the etex extensions. Ignoring them}%
+  \fi
+}
+\define at key{MTX}{nopatch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\@tempa\@empty}
+      \relax}%
+  \ifx\@tempa\@empty\else
+^^X    \MT at map@clist at c\@tempa{\MT at undo@patch{##1}}%
+  \fi
+}
 %</package>
 %    \end{macrocode}
 %
@@ -12333,13 +13944,13 @@
 % options the user has chosen (in case it's interested).
 %    \begin{macrocode}
 \MT at addto@setup{%
-\ifMT at draft
+\ifMT at disable
 %    \end{macrocode}
 % We disable most of what we've just defined in the \arabic{CodelineNo} lines
-% above if we are running in draft mode.
+% above if we are running in disable (aka. draft) mode.
 %\changes{v1.7}{2005/02/06}{warning when running in draft mode}
 %    \begin{macrocode}
-  \MT at warning@nl{`draft' option active.\MessageBreak
+  \MT at warning@nl{The `disable' option is in effect.\MessageBreak
                  Disabling all micro-typographic extensions.\MessageBreak
                  This might lead to different line and page breaks}%
   \let\MT at setupfont\relax
@@ -12377,7 +13988,7 @@
 % for each package (that's not our job), we only say that it was \microtype\
 % that changed it. This must be sufficient!
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at setup@PDF{%
   \MT at info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output%
               \ifMT at opt@DVI\space (changed by \MT at MT)\fi}%
@@ -12390,17 +14001,17 @@
 \def\MT at setup@copies{%
   \ifx\MT at copy@font\relax\else \MT at info@nl{Using font copies for contexts}\fi
 }
-%</pdftex-def|luatex-def>
-%<*xetex-def>
+%</pdf-|lua->
+%<*xe->
 \let\MT at setup@PDF\relax
 \let\MT at setup@copies\relax
-%</xetex-def>
+%</xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@protrusion}
 % Protrusion.
 %    \begin{macrocode}
-%<*pdftex-def|xetex-def|luatex-def>
+%<*pdf-|lua-|xe->
 \def\MT at setup@protrusion{%
   \ifMT at protrusion
     \edef\MT at active@features{\MT at active@features,pr}%
@@ -12415,7 +14026,7 @@
     \MT at info@nl{No character protrusion}%
   \fi
 }
-%</pdftex-def|xetex-def|luatex-def>
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@expansion}
@@ -12430,11 +14041,11 @@
 %                           (reported by \contributor Daniel Benjamin Miller <dbmiller\at dbmiller.org>)} ^^A aka `d909'
 %                           ^^A https://tex.stackexchange.com/questions/531413/dvipdfmx-and-dvips-do-not-expand-fonts-properly-with-lualatex-in-dvi-mode
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at setup@expansion{%
   \ifnum\pdfoutput<\@ne
     \ifMT at opt@expansion
-%<*luatex-def>
+%<*lua->
       \ifMT at expansion
         \MT at requires@luatex3{%
           \MT at warning@nl{Font expansion doesn't work properly with luatex in\MessageBreak
@@ -12444,7 +14055,7 @@
           %\MT at expansionfalse
         }\relax
       \fi
-%</luatex-def>
+%</lua->
     \else
       \MT at expansionfalse
     \fi
@@ -12476,9 +14087,9 @@
 %\changes{v1.9}{2005/07/08}{warning if user requested zero \opt{step}}
 %    \begin{macrocode}
     \ifnum\MT at step=\m at ne
-%<pdftex-def>    \MT at requires@pdftex6{%
+%<pdf->    \MT at requires@pdftex6{%
       \def\MT at step{1 }%
-%<*pdftex-def>
+%<*pdf->
     }{%
       \ifnum\MT at stretch>\MT at shrink
         \ifnum\MT at shrink=\z@
@@ -12497,7 +14108,7 @@
       \ifnum\@tempcnta=\z@ \@tempcnta=\@ne \fi
       \edef\MT at step{\number\@tempcnta\space}%
     }%
-%</pdftex-def>
+%</pdf->
     \fi
     \ifnum\MT at step=\z@
       \MT at warning@nl{The expansion step cannot be set to zero.\MessageBreak
@@ -12529,7 +14140,7 @@
 %\changes{v1.5}{2004/12/02}{disable automatic expansion for <DVI> output}
 %\changes{v2.7}{2017/07/02}{don't disable automatic expansion for <DVI> output with \luatex}
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
       \MT at requires@pdftex4{%
         \ifnum\pdfoutput<\@ne
           \ifMT at opt@auto
@@ -12560,10 +14171,10 @@
         \MT at autofalse
         \def\MT at auto{1000 }%
       }%
-%</pdftex-def>
-%<luatex-def>      \MT at requires@luatex3\relax{\def\MT at auto{autoexpand}}%
+%</pdf->
+%<lua->      \MT at requires@luatex3\relax{\def\MT at auto{autoexpand}}%
     \else
-%<*pdftex-def>
+%<*pdf->
 %    \end{macrocode}
 % No automatic expansion.
 %    \begin{macrocode}
@@ -12570,8 +14181,8 @@
       \MT at requires@pdftex4\relax{%
         \def\MT at auto{1000 }%
       }%
-%</pdftex-def>
-%<*luatex-def>
+%</pdf->
+%<*lua->
       \MT at requires@luatex3{%
         \ifMT at opt@auto
           \MT at error{Non-automatic font expansion does not work with\MessageBreak
@@ -12579,7 +14190,7 @@
           \MT at autotrue
         \fi
       }\relax
-%</luatex-def>
+%</lua->
     \fi
 %    \end{macrocode}
 % Choose the appropriate macro for selected expansion.
@@ -12668,8 +14279,8 @@
     \MT at info@nl{No font expansion}%
   \fi
 }
-%</pdftex-def|luatex-def>
-%<*xetex-def>
+%</pdf-|lua->
+%<*xe->
 \def\MT at setup@expansion{%
   \ifMT at expansion
     \ifMT at opt@expansion
@@ -12678,15 +14289,15 @@
     \fi
   \fi
 }
-%</xetex-def>
+%</xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@tracking}
 % Tracking, spacing and kerning.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
-%<pdftex-def>\MT at requires@pdftex6{%
-%<luatex-def>\MT at requires@luatex3{%
+%<*pdf-|lua->
+%<pdf->\MT at requires@pdftex6{%
+%<lua->\MT at requires@luatex3{%
   \def\MT at setup@tracking{%
     \ifMT at tracking
       \edef\MT at active@features{\MT at active@features,tr}%
@@ -12702,12 +14313,12 @@
       \MT at info@nl{No adjustment of tracking}%
     \fi
   }
-%</pdftex-def|luatex-def>
+%</pdf-|lua->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@spacing}
 %    \begin{macrocode}
-%<*pdftex-def>
+%<*pdf->
   \def\MT at setup@spacing{%
     \ifMT at spacing
       \edef\MT at active@features{\MT at active@features,sp}%
@@ -12775,7 +14386,7 @@
       \MT at info@nl{No adjustment of character kerning}%
     \fi
   }
-%</pdftex-def>
+%</pdf->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at error@doesnt at work}
@@ -12784,8 +14395,8 @@
 % and throw an error message.
 % We also switch the features off for \luatex\ and \xetex.
 %    \begin{macrocode}
-%<pdftex-def|luatex-def>}{
-%<*luatex-def>
+%<pdf-|lua->}{
+%<*lua->
   \def\MT at setup@tracking{%
     \ifMT at tracking
       \MT at error{The tracking feature only works with luatex 0.62\MessageBreak
@@ -12797,33 +14408,33 @@
     \fi
   }
 }
-%</luatex-def>
-%<*pdftex-def|xetex-def|luatex-def>
+%</lua->
+%<*pdf-|lua-|xe->
   \def\MT at error@doesnt at work#1{%
     \csname ifMT@#1\endcsname
       \MT at error{The #1 feature only works with pdftex 1.40\MessageBreak
         or newer. Switching it off}
-%<pdftex-def>        {Upgrade pdftex.}%
-%<luatex-def|xetex-def>        {Use pdftex instead.}%
+%<pdf->        {Upgrade pdftex.}%
+%<lua-|xe->        {Use pdftex instead.}%
       \csname MT@#1false\endcsname
       \MT at let@nc{MT@#1}\relax
     \else
       \MT at info@nl{No adjustment of #1%
-%<pdftex-def>      \space(pdftex too old)%
+%<pdf->      \space(pdftex too old)%
       }%
     \fi
   }
-%<pdftex-def|xetex-def>  \def\MT at setup@tracking{\MT at error@doesnt at work{tracking}}
+%<pdf-|xe->  \def\MT at setup@tracking{\MT at error@doesnt at work{tracking}}
   \def\MT at setup@kerning {\MT at error@doesnt at work{kerning}}
   \def\MT at setup@spacing {\MT at error@doesnt at work{spacing}}
-%<pdftex-def>}
-%</pdftex-def|xetex-def|luatex-def>
+%<pdf->}
+%</pdf-|lua-|xe->
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@warntracking}
 %    \begin{macrocode}
 %<letterspace>\MT at addto@setup
-%<pdftex-def|luatex-def>\def\MT at setup@warntracking
+%<pdf-|lua->\def\MT at setup@warntracking
 %    \end{macrocode}
 %\begin{macro}{\MT at warn@tracking at DVI}
 %\changes{v2.2}{2007/02/11}{warning when letterspacing in <DVI> mode}
@@ -12832,9 +14443,9 @@
 % not work. We also switch on protrusion if it isn't already, to compensate for
 % the letterspacing kerns.
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def|letterspace>
+%<*pdf-|lua-|letterspace>
 {%
-%<*pdftex-def|letterspace>
+%<*pdf-|letterspace>
   \ifnum\pdfoutput<\@ne
     \def\MT at warn@tracking at DVI{%
 %<letterspace>      \MT at pdf@or at lua{%
@@ -12847,12 +14458,12 @@
       \MT at glet\MT at warn@tracking at DVI\relax
     }%
   \else
-%</pdftex-def|letterspace>
+%</pdf-|letterspace>
     \def\MT at warn@tracking at DVI{%
       \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi
       \MT at glet\MT at warn@tracking at DVI\relax
     }%
-%<pdftex-def|letterspace>  \fi
+%<pdf-|letterspace>  \fi
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
@@ -12862,8 +14473,8 @@
     \MT at ls@too at large\MT at letterspace
   \fi
 }
-%</pdftex-def|luatex-def|letterspace>
-%<xetex-def>\let\MT at setup@warntracking\relax
+%</pdf-|lua-|letterspace>
+%<xe->\let\MT at setup@warntracking\relax
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\MT at setup@noligatures}
@@ -12871,16 +14482,16 @@
 % now disable the corresponding macro, if it was never called.
 %\changes{v2.0}{2006/12/14}{maybe disable \cs{MT at noligatures} after the preamble}
 %    \begin{macrocode}
-%<*pdftex-def|luatex-def>
+%<*pdf-|lua->
 \def\MT at setup@noligatures{%
-%<pdftex-def>  \MT at requires@pdftex5{%
+%<pdf->  \MT at requires@pdftex5{%
     \ifMT at noligatures \else
       \let\MT at noligatures\relax
     \fi
-%<pdftex-def>  }\relax
+%<pdf->  }\relax
 }
-%</pdftex-def|luatex-def>
-%<xetex-def>\let\MT at setup@noligatures\relax
+%</pdf-|lua->
+%<xe->\let\MT at setup@noligatures\relax
 %    \end{macrocode}
 %\end{macro}
 % Remove the leading comma in \cs{MT at active@features}, and set the
@@ -12977,7 +14588,7 @@
   \fi
 }
 %    \end{macrocode}
-% Now we close the \cs{fi} from \cs{ifMT at draft}.
+% Now we close the \orig at cs{fi} from \cs{ifMT at disable}.
 %    \begin{macrocode}
 \MT at addto@setup{\fi
 %    \end{macrocode}
@@ -13126,7 +14737,9 @@
 %    \end{macrocode}
 % The default sets.
 %\changes{v2.2}{2007/04/15}{default set for tracking: \texttt{smallcaps}}
-%\changes{v2.8}{2019/12/04}{default set for expansion: \texttt{alltext-nott}}
+%\changes{v2.8}{2019/12/04}{default set for expansion: \texttt{alltext-nott}
+%                           (suggested by \contributor Aman Mehra <reportaman\at gmail.com>)}
+%                           ^^A https://tex.stackexchange.com/questions/519166/microtype-expansion-gets-disabled-when-fontsize-is-changed-lualatex
 %\changes{v2.8}{2019/12/04}{default set for spacing: \texttt{alltext-nott}}
 %    \begin{macrocode}
 %%% -----------------------------------------------------------------------
@@ -13218,10 +14831,10 @@
 %\changes{v2.8a}{2021/01/09}{reference New Computer Modern also by file name
 %                            (reported by \contributor Canageek <@\at @>)}
 %                            ^^A https://tex.stackexchange.com/questions/578121/how-do-i-properly-tell-microtype-that-newcomputermodern-is-the-same-as-comput
+%\changes{v3.0}{2021/08/08}{New Computer Modern has its own settings}
 %    \begin{macrocode}
-\DeclareMicrotypeAlias{New Computer Modern}{Latin Modern Roman}
-\DeclareMicrotypeAlias{NewCM10-Book.otf}   {Latin Modern Roman}
-\DeclareMicrotypeAlias{NewCM10-Regular.otf}{Latin Modern Roman}
+\DeclareMicrotypeAlias{NewCM10-Book.otf}   {New Computer Modern}
+\DeclareMicrotypeAlias{NewCM10-Regular.otf}{New Computer Modern}
 %    \end{macrocode}
 % The packages \pkg{pxfonts} and \pkg{txfonts} fonts inherit Palatino and Times
 % settings respectively,
@@ -13359,6 +14972,29 @@
 %    \begin{macrocode}
 \DeclareMicrotypeAlias{zpeus}   {zpeu}     % Adobe Euro sans -> serif
 \DeclareMicrotypeAlias{eurosans}{zpeu}     % Adobe Euro sans -> serif
+%    \end{macrocode}
+% The Lato and Fontin fonts (and many, many  more\dots) only contain a
+% basic set of glyphs. We alias them here to the basic settings
+% (see \ref{subsub:OT-inh-basic}) to prevent lots of warning
+% messages from the inheritance settings; they will still receive
+% protrusion settings from the default (<T1>) configuration.
+%\changes{v3.0}{2021/06/22}{declare \texttt{basic} aliases for the Fontin font}
+%\changes{v3.0}{2021/06/25}{declare \texttt{basic} alias for Bergamo Std}
+%    \begin{macrocode}
+\DeclareMicrotypeAlias{Lato}             {TU-basic}
+\DeclareMicrotypeAlias{Lato-Regular}     {TU-basic}
+\DeclareMicrotypeAlias{Fontin}           {TU-basic}
+\DeclareMicrotypeAlias{Fontin-Regular}   {TU-basic}
+\DeclareMicrotypeAlias{Bergamo Std}      {TU-basic}
+%    \end{macrocode}
+% The \pkg{fontawesome} and \pkg{fontawesome5} packages are aliased
+% to empty settings (see \ref{subsub:OT-inh-empty} and \ref{subsub:OT-prot-empty}).
+%\changes{v3.0}{2021/03/15}{declare \texttt{empty} aliases for \pkg{fontawesome5}}
+%    \begin{macrocode}
+\DeclareMicrotypeAlias{FontAwesome}      {TU-empty} % fontawesome
+\DeclareMicrotypeAlias{fontawesomefree}  {TU-empty} % fontawesome5
+\DeclareMicrotypeAlias{fontawesomepro}   {TU-empty}
+\DeclareMicrotypeAlias{fontawesomebrands}{TU-empty}
 
 %    \end{macrocode}
 %
@@ -13429,11 +15065,11 @@
 % that are the same on \emph{both} sides, \ie, not \OE\ for O.
 %    \begin{macrocode}
 %</m-t>
-%<*m-t|zpeu|mvs>
+%<*m-t|ebg|zpeu|mvs>
 %%% -----------------------------------------------------------------------
 %%% CHARACTER INHERITANCE
 
-%</m-t|zpeu|mvs>
+%</m-t|ebg|zpeu|mvs>
 %<*m-t>
 %    \end{macrocode}
 %
@@ -13718,6 +15354,45 @@
 
 %</m-t>
 %    \end{macrocode}
+%\subsubsection{<LGR>}
+%\changes{v3.0}{2021/06/24}{add settings for <LGR>}
+% The Greek <LGR> encoding. <EB> Garamond contains some more glyphs.
+%    \begin{macrocode}
+%<*m-t|ebg>
+\DeclareCharacterInheritance
+  { encoding = LGR,
+%<ebg>    family = {EBGaramond-OsF,EBGaramond-TOsF,EBGaramond-LF,EBGaramond-TLF}
+  }
+  {
+%<m-t>    A = {012},
+%<ebg>    A = {009,012,253},
+%<ebg> (l)E = {199},
+%<ebg>    H = {010},
+%<ebg> (l)H = {159},
+    I = {219},
+%<ebg> (l)I = {155},
+    O = J,
+%<ebg> (l)O = {151},
+    U = {013,223},
+    W = {011},
+    a = {014,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
+         144,145,146,148,149,150,248},
+    e = {224,225,226,227,232,233,234,235},
+    h = {152,153,154,156,157,158,160,161,162,163,164,165,166,167,168,169,170,
+         171,172,173,174,175,249},
+%<m-t>    i = {200,201,202,203,208,209,210,211,216,217,218,240,241,242,243},
+%<ebg>    i = {008,200,201,202,203,208,209,210,211,216,217,218,240,241,242,243},
+    o = {228,229,230,231,236,237,238,239},
+    r = {251,252},
+    u = {015,204,205,206,207,212,213,214,215,220,221,222,244,245,246,247},
+    w = {176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
+         193,194,196,197,198,250},
+%<ebg>    \textstigma = \textvarstigma,
+    . = {059}  % ano teleia
+  }
+
+%</m-t|ebg>
+%    \end{macrocode}
 %
 %\subsubsection{Euro symbols}
 % Make Euro symbols settings simpler.
@@ -14013,12 +15688,11 @@
 %\end{itemize}
 %    \begin{macrocode}
 %<ugm>   [ name     = ugm-default ]
-%<m-t|cmr|pmn>   { }
-%<bch|blg|ebg|ugm>   { encoding = OT1,
+%<m-t|cmr|pmn|ebg>   { }
+%<bch|blg|ugm>   { encoding = OT1,
 %<ppl|ptm>   { encoding = {OT1,OT4},
 %<bch>     family   = bch }
 %<blg>     family   = blg }
-%<ebg>     family   = {EBGaramond-LF,EBGaramond-OsF,EBGaramond-TLF,EBGaramond-TOsF} }
 %<ppl>     family   = {ppl,pplx,pplj} }
 %<ptm>     family   = {ptm,ptmx,ptmj} }
 %<ugm>     family   = ugm }
@@ -14053,10 +15727,10 @@
 %<bch|ebg|pmn>     Q = {50,70},
 %<ugm>     Q = {50,50},
 %<bch>     R = {  ,50},
-%<ugm>     R = {  ,70},
-%<m-t|bch|cmr|ebg|pmn|ppl|ptm>     T = {50,50},
+%<ugm|ebg>     R = {  ,70},
+%<m-t|bch|cmr|pmn|ppl|ptm>     T = {50,50},
 %<blg>     T = {100,100},
-%<ugm>     T = {70,70},
+%<ebg|ugm>     T = {70,70},
 %<m-t|bch|cmr|ebg|pmn|ppl|ptm>     V = {50,50},
 %<blg|ugm>     V = {70,70},
 %<m-t|bch|cmr|ebg|pmn|ppl|ptm>     W = {50,50},
@@ -14073,8 +15747,8 @@
 %<ugm>     k = {  ,70},
 %<blg>     l = {150,150},
 %<pmn>     l = {  ,-50},
-%<ebg|ppl>     p = {50,50},
-%<ugm>     p = {  ,50},
+%<ppl>     p = {50,50},
+%<ebg|ugm>     p = {  ,50},
 %<ebg|ppl>     q = {50,  },
 %<!blg>     r = {  ,50},
 %<blg>     r = {100, 80},
@@ -14100,16 +15774,16 @@
 %    \begin{macrocode}
 %<cmr>     0 = {  ,50},
 %<m-t>     1 = {50,50},
-%<bch|blg|ebg|ptm|ugm>     1 = {150,150},
+%<bch|blg|ptm|ugm>     1 = {150,150},
 %<cmr>     1 = {100,200},
 %<pmn>     1 = {  ,50},
 %<ppl>     1 = {100,100},
-%<bch|cmr|ebg|ugm>     2 = {50,50},
+%<bch|cmr|ugm>     2 = {50,50},
 %<blg>     2 = {  ,100},
 %<bch|pmn>     3 = {50,  },
-%<cmr|ebg|ugm>     3 = {50,50},
+%<cmr|ugm>     3 = {50,50},
 %<blg>     3 = {100,  },
-%<m-t|ebg>     4 = {50,50},
+%<m-t>     4 = {50,50},
 %<bch>     4 = {100,50},
 %<blg>     4 = {100,  },
 %<cmr|ugm>     4 = {70,70},
@@ -14116,25 +15790,23 @@
 %<pmn>     4 = {50,  },
 %<ptm>     4 = {70,  },
 %<cmr>     5 = {  ,50},
-%<ebg>     5 = {50,50},
 %<bch>     6 = {50,  },
 %<cmr>     6 = {  ,50},
-%<ebg>     6 = {50,50},
 %<m-t>     7 = {50,50},
-%<bch|ebg|pmn|ugm>     7 = {50,80},
+%<bch|pmn|ugm>     7 = {50,80},
 %<blg>     7 = {100,100},
 %<cmr|ptm>     7 = {50,100},
 %<ppl>     7 = {  ,50},
 %<cmr>     8 = {  ,50},
-%<bch|ebg>     9 = {50,50},
+%<bch>     9 = {50,50},
 %<cmr>     9 = {  ,50},
-%<m-t|cmr|ebg|pmn|ppl|ptm|ugm>     . = { ,700},
-%<bch>     . = { ,600},
+%<m-t|cmr|pmn|ppl|ptm|ugm>     . = { ,700},
+%<bch|ebg>     . = { ,600},
 %<blg>     . = {400,500},
 %<!blg>    {,}= { ,500},
 %<blg>    {,}= {300,400},
-%<m-t|cmr|ebg|pmn|ppl|ptm|ugm>     : = { ,500},
-%<bch>     : = { ,400},
+%<m-t|cmr|pmn|ppl|ptm|ugm>     : = { ,500},
+%<bch|ebg>     : = { ,400},
 %<blg>     : = {300,400},
 %<m-t|bch|ebg|pmn|ptm>     ; = { ,300},
 %<blg>     ; = {200,300},
@@ -14161,9 +15833,8 @@
 %<bch|pmn>     * = {200,300},
 %<blg>     * = {150,200},
 %<cmr|ebg>     * = {300,300},
-%<m-t|cmr|ppl|ptm>     + = {250,250},
+%<m-t|cmr|ebg|ppl|ptm>     + = {250,250},
 %<bch>     + = {150,250},
-%<ebg>     + = {300,300},
 %<blg|pmn>     + = {150,200},
 %<ugm>     + = {250,300},
 %<blg|ugm>    {=}= {200,200},
@@ -14203,13 +15874,14 @@
 %<m-t|bch|pmn>     \textquoteleft    = {300,400},   \textquoteright    = {300,400},
 %<blg>     \textquoteleft     = {400,600},   \textquoteright    = {400,600},
 %<cmr>     \textquoteleft    = {500,700},   \textquoteright    = {500,600},
-%<ebg|ppl>     \textquoteleft    = {500,700},   \textquoteright    = {500,700},
+%<ebg>     \textquoteleft    = {300,500},   \textquoteright    = {400,400},
+%<ppl>     \textquoteleft    = {500,700},   \textquoteright    = {500,700},
 %<ptm>     \textquoteleft    = {500,500},   \textquoteright    = {300,500},
 %<ugm>     \textquoteleft    = {300,600},   \textquoteright    = {300,600},
-%<m-t|bch|pmn>     \textquotedblleft = {300,300},   \textquotedblright = {300,300}
+%<m-t|ebg|bch|pmn>     \textquotedblleft = {300,300},   \textquotedblright = {300,300}
 %<blg>     \textquotedblright = {300,400}
 %<cmr>     \textquotedblleft = {500,300},   \textquotedblright = {200,600}
-%<ebg|ppl|ptm>     \textquotedblleft = {300,400},   \textquotedblright = {300,400}
+%<ppl|ptm>     \textquotedblleft = {300,400},   \textquotedblright = {300,400}
 %<ugm>     \textquotedblleft = {400,400},   \textquotedblright = {400,400}
    }
 
@@ -14217,13 +15889,15 @@
 % Greek uppercase letters are in <OT1> encoding only.
 %\changes{v1.9}{2005/07/10}{fix: remove uppercase Greek letters from <T1> encoded <CMR>}
 %    \begin{macrocode}
-%<*m-t|cmr|pmn>
+%<*m-t|cmr|ebg|pmn>
 \SetProtrusion
 %<m-t>   [ name     = OT1-default,
 %<cmr>   [ name     = cmr-OT1,
+%<ebg>   [ name     = EBGaramond-OT1,
 %<pmn>   [ name     = pmnj-OT1,
 %<m-t>     load     = default ]
 %<cmr>     load     = cmr-default ]
+%<ebg>     load     = EBGaramond-default ]
 %<pmn>     load     = pmnj-default ]
 %<m-t>   { encoding = OT1 }
 %<cmr>   { encoding = {OT1,OT4},
@@ -14230,31 +15904,68 @@
 %<pmn>   { encoding = OT1,
 %<cmr>     family   = cmr  }
 %<pmn>     family   = pmnj }
+%<ebg>   { }
    {
 %<m-t|cmr>     \AE = {50,   },
 %<pmn>     \OE = {50,  }
-%<*cmr>
+%<*cmr|ebg>
      "00 = {   ,150}, % \Gamma
      "01 = {100,100}, % \Delta
      "02 = { 50, 50}, % \Theta
      "03 = {100,100}, % \Lambda
-     "06 = { 50, 50}, % \Sigma
+%<ebg>     "04 = { 50, 50}, % \Xi
+%<cmr>     "06 = { 50, 50}, % \Sigma
      "07 = {100,100}, % \Upsilon
      "08 = { 50, 50}, % \Phi
-     "09 = { 50, 50}  % \Psi
+     "09 = { 50, 50}, % \Psi
+%<ebg>     "0A = { 50, 50}, % \Omega
+%<ebg>     138 = {   , 50}, % \L
 %    \end{macrocode}
 % Remaining slots can be found in the source file.
 %\iffalse ^^A ... namely, here:
-%    "04 = {   ,   }, % \Xi
 %    "05 = {   ,   }, % \Pi
-%    "0A = {   ,   }, % \Omega
 %\fi
 %    \begin{macrocode}
-%</cmr>
+%</cmr|ebg>
    }
 
-%</m-t|cmr|pmn>
 %    \end{macrocode}
+% Settings for figure variants.
+%\changes{v3.0}{2021/06/10}{settings for <EB> Garamond figure variants}
+%    \begin{macrocode}
+%<*ebg>
+\SetProtrusion
+   [ name     = EBGaramond-OT1-LF,
+     load     = EBGaramond-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-OT1-TOsF,
+     load     = EBGaramond-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+%</ebg>
+%</m-t|cmr|ebg|pmn>
+%    \end{macrocode}
 % <T1> and <LY1> encodings contain some more characters. The default list
 % will be loaded first.
 %\changes{v1.9a}{2005/11/07}{fix: remove `\texttt{\_}' from <OT1> encoding}
@@ -14283,8 +15994,9 @@
 %<ptm>     load     = ptm-default ]
 %<ugm>     load     = ugm-default ]
 %<m-t>   { encoding = {T1,LY1,EU1,EU2,TU} }
-%<bch|cmr|ebg|pmn|ppl>   { encoding = {T1,LY1},
+%<bch|cmr|pmn|ppl>   { encoding = {T1,LY1},
 %<blg|ptm|ugm>   { encoding = {T1},
+%<ebg>   { encoding = {LY1},
 %<bch>     family   = bch }
 %<blg>     family   = blg }
 %<cmr>     family   = cmr }
@@ -14332,7 +16044,8 @@
 %<m-t>     \guillemotleft    = {200,200},   \guillemotright    = {200,200},
 %<cmr>     \guillemotleft    = {300,200},   \guillemotright    = {100,400},
 %<bch|pmn>     \guillemotleft    = {200,200},   \guillemotright    = {150,300},
-%<blg|ebg|ppl|ptm>     \guillemotleft    = {300,300},   \guillemotright    = {200,400},
+%<blg|ppl|ptm>     \guillemotleft    = {300,300},   \guillemotright    = {200,400},
+%<ebg>     \guillemotleft    = {300,300},   \guillemotright    = {200,300},
 %<ugm>     \guillemotleft    = {300,400},   \guillemotright    = {300,400},
 %<m-t|bch|cmr|ebg|pmn|ppl|ugm>     \textexclamdown   = {100,   },   \textquestiondown  = {100,   },
 %<blg>     \textexclamdown   = {200,   },   \textquestiondown  = {100,   },
@@ -14371,6 +16084,37 @@
    }
 
 %</cmr>
+%<*ebg>
+\SetProtrusion
+   [ name     = EBGaramond-T1-LF,
+     load     = EBGaramond-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-T1-TOsF,
+     load     = EBGaramond-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+%</ebg>
 %    \end{macrocode}
 % Settings for the <T2A> encoding (generic, Computer Modern Roman, and Minion).\footnote{Contributed by
 %                            \contributor Karl Karlsson <karl-karlsson\at yandex.ru>.}
@@ -14587,6 +16331,76 @@
 
 %</ptm>
 %    \end{macrocode}
+%\changes{v3.0}{2021/06/25}{<LGR> settings for <EB> Garamond}
+% For the Greek <LGR> encoding.
+%    \begin{macrocode}
+%<*ebg>
+\SetProtrusion
+  [ name = EBGaramond-LGR ]
+  { }
+  {
+     A = {50,50},
+     D = {100,100},
+     F = {50,50},
+     G = {  ,150},
+     K = {  ,50},
+     L = {100,100},
+     O = {50,50},
+     U = {100,100},
+     T = {50,50},
+     W = {  ,50},
+     Y = {50,50},
+     . = { ,600},
+    {,}= { ,500},
+     : = { ,400},
+     ; = { ,300},
+     ! = { ,100},
+     ? = { ,100},
+     ~ = {200,250},
+    \% = {50,50},
+     * = {300,300},
+     + = {250,250},
+    {=}= { 50, 50},
+     ( = {100,   },    ) = {   ,200},
+     / = {100,200},
+     - = {300,500},
+     \texteuro = { 50,100},
+     \textendash       = {300,300},   \textemdash        = {200,200},
+     \textquoteleft    = {300,500},   \textquoteright    = {400,400},
+     \guillemotleft    = {300,300},   \guillemotright    = {200,400},
+  }
+
+\SetProtrusion
+   [ name     = EBGaramond-LGR-LF,
+     load     = EBGaramond-LGR ]
+   { encoding = LGR,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-LGR-TOsF,
+     load     = EBGaramond-LGR ]
+   { encoding = LGR,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+%</ebg>
+%    \end{macrocode}
 %
 %\subsubsection{Italics}
 %
@@ -14618,17 +16432,16 @@
 %<ppl>   [ name     = ppl-it   ]
 %<ptm>   [ name     = ptm-it   ]
 %<ugm>   [ name     = ugm-it   ]
-%<m-t|bch|blg|ebg|ugm>   { encoding = OT1,
+%<m-t|bch|blg|ugm>   { encoding = OT1,
 %<ppl|ptm>   { encoding = {OT1,OT4},
 %<bch>     family   = bch,
 %<blg>     family   = blg,
-%<ebg>     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
 %<ppl>     family   = {ppl,pplx,pplj},
 %<ptm>     family   = {ptm,ptmx,ptmj},
 %<ugm>     family   = ugm,
-%<m-t|bch|ebg|ppl|ptm>     shape    = {it,sl}  }
+%<m-t|bch|ppl|ptm>     shape    = {it,sl}  }
 %<blg|ugm>     shape    = it  }
-%<cmr|pmn>   { }
+%<cmr|ebg|pmn>   { }
    {
 %<cmr>     A = {100,100},
 %<ptm>     A = {100,50},
@@ -14870,11 +16683,13 @@
 %<ugm>     \textquotedblleft = {600,200},   \textquotedblright = {600,200}
    }
 
-%<*cmr|pmn>
+%<*cmr|ebg|pmn>
 \SetProtrusion
 %<cmr>   [ name     = cmr-it-OT1,
+%<ebg>   [ name     = EBGaramond-it-OT1,
 %<pmn>   [ name     = pmnj-it-OT1,
 %<cmr>     load     = cmr-it   ]
+%<ebg>     load     = EBGaramond-it   ]
 %<pmn>     load     = pmnj-it  ]
 %<cmr>   { encoding = {OT1,OT4},
 %<pmn>   { encoding = OT1,
@@ -14882,28 +16697,91 @@
 %<pmn>     family   = pmnj,
 %<cmr>     shape    = it       }
 %<pmn>     shape    = {it,sl}  }
+%<ebg>   { }
    {
 %<cmr>     \AE = {100,   },
 %<pmn>     \AE = {  ,-50},
 %<cmr>     \OE = {100,   },
 %<pmn>     \OE = {50,   }
-%<*cmr>
-     "00 = {200,150}, % \Gamma
-     "01 = {150,100}, % \Delta
-     "02 = {150, 50}, % \Theta
-     "03 = {150, 50}, % \Lambda
-     "04 = {100,100}, % \Xi
-     "05 = {100,100}, % \Pi
-     "06 = {100, 50}, % \Sigma
-     "07 = {200,150}, % \Upsilon
-     "08 = {150, 50}, % \Phi
-     "09 = {150,100}, % \Psi
-     "0A = { 50, 50}  % \Omega
-%</cmr>
+%<*cmr|ebg>
+%<cmr>     "00 = {200,150}, % \Gamma
+%<ebg>     "00 = {   ,150}, % \Gamma
+%<cmr>     "01 = {150,100}, % \Delta
+%<ebg>     "01 = {100,100}, % \Delta
+%<cmr>     "02 = {150, 50}, % \Theta
+%<ebg>     "02 = { 50, 50}, % \Theta
+%<cmr>     "03 = {150, 50}, % \Lambda
+%<ebg>     "03 = {100,100}, % \Lambda
+%<cmr>     "04 = {100,100}, % \Xi
+%<ebg>     "04 = { 50, 50}, % \Xi
+%<cmr>     "05 = {100,100}, % \Pi
+%<cmr>     "06 = {100, 50}, % \Sigma
+%<cmr>     "07 = {200,150}, % \Upsilon
+%<ebg>     "07 = {100,100}, % \Upsilon
+%<cmr>     "08 = {150, 50}, % \Phi
+%<ebg>     "08 = { 50, 50}, % \Phi
+%<cmr>     "09 = {150,100}, % \Psi
+%<ebg>     "09 = { 50, 50}, % \Psi
+     "0A = { 50, 50}, % \Omega
+%<ebg>     138 = {   , 50}, % \L
+%</cmr|ebg>
    }
 
-%</cmr|pmn>
+%</cmr|ebg|pmn>
+%<*ebg>
 \SetProtrusion
+   [ name     = EBGaramond-it-OT1-LF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-TLF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {80,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,50},
+     8 = {50,50},
+     9 = {50,  },
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-OT1-OsF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-OsF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {  ,80},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-OT1-TOsF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-TOsF},
+     shape    = it }
+   {
+     0 = {150,150},
+     1 = {150,150},
+     2 = {80,80},
+     3 = {50,80},
+     4 = {50,80},
+     5 = {50,80},
+     6 = {50,50},
+     7 = {50,100},
+     8 = {50,50},
+     9 = {50,80},
+   }
+
+%</ebg>
+\SetProtrusion
 %<m-t>   [ name     = T1-it-default,
 %<bch>   [ name     = bch-it-T1,
 %<blg>   [ name     = blg-it-T1,
@@ -14922,7 +16800,8 @@
 %<ppl>     load     = ppl-it   ]
 %<ptm>     load     = ptm-it   ]
 %<ugm>     load     = ugm-it   ]
-%<m-t|bch|cmr|ebg|pmn|ppl>   { encoding = {T1,LY1},
+%<m-t|bch|cmr|pmn|ppl>   { encoding = {T1,LY1},
+%<ebg>   { encoding = {LY1},
 %<blg|ptm|ugm>   { encoding = T1,
 %<bch>     family   = bch,
 %<blg>     family   = blg,
@@ -14932,8 +16811,8 @@
 %<ppl>     family   = {ppl,pplx,pplj},
 %<ptm>     family   = {ptm,ptmx,ptmj},
 %<ugm>     family   = ugm,
-%<m-t|bch|ebg|pmn|ppl|ptm>     shape    = {it,sl}  }
-%<blg|cmr|ugm>     shape    = it       }
+%<m-t|bch|pmn|ppl|ptm>     shape    = {it,sl}  }
+%<blg|cmr|ebg|ugm>     shape    = it       }
    {
 %<m-t|bch|pmn>     _ = {  ,100},
 %<blg>     _ = {0,300},
@@ -14987,6 +16866,59 @@
 %<pmn>     \textvisiblespace = {100,100}
   }
 
+%<*ebg>
+\SetProtrusion
+   [ name     = EBGaramond-it-T1-LF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-TLF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {80,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,50},
+     8 = {50,50},
+     9 = {50,  },
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-T1-OsF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-OsF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {  ,80},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-T1-TOsF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-TOsF},
+     shape    = it }
+   {
+     0 = {150,150},
+     1 = {150,150},
+     2 = {80,80},
+     3 = {50,80},
+     4 = {50,80},
+     5 = {50,80},
+     6 = {50,50},
+     7 = {50,100},
+     8 = {50,50},
+     9 = {50,80},
+   }
+
+%</ebg>
 %<*m-t|cmr|pmn>
 \SetProtrusion
 %<m-t>   [ name     = T2A-it-default,
@@ -15303,7 +17235,7 @@
 %<m-t>   [ name     = OT1-sc,
 %<bch>   [ name     = bch-sc,
 %<cmr>   [ name     = cmr-sc-OT1,
-%<ebg>   [ name     = EBGaramond-sc,
+%<ebg>   [ name     = EBGaramond-sc-OT1-Prop,
 %<pmn>   [ name     = pmnj-sc,
 %<ppl>   [ name     = ppl-sc,
 %<ptm>   [ name     = ptm-sc,
@@ -15310,7 +17242,7 @@
 %<m-t>     load     = default ]
 %<bch>     load     = bch-default ]
 %<cmr>     load     = cmr-OT1 ]
-%<ebg>     load     = EBGaramond-default ]
+%<ebg>     load     = EBGaramond-OT1-LF ]
 %<pmn>     load     = pmnj-default ]
 %<ppl>     load     = ppl-default ]
 %<ptm>     load     = ptm-default ]
@@ -15318,7 +17250,7 @@
 %<cmr|ppl|ptm>   { encoding = {OT1,OT4},
 %<bch>     family   = bch,
 %<cmr>     family   = cmr,
-%<ebg>     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
+%<ebg>     family   = {EBGaramond-LF,EBGaramond-OsF},
 %<pmn>     family   = pmnj,
 %<ppl>     family   = {ppl,pplx,pplj},
 %<ptm>     family   = {ptm,ptmx,ptmj},
@@ -15334,7 +17266,7 @@
 %<bch>     j = {100,  },
 %<m-t|bch|cmr|ebg|pmn|ppl>     l = {  ,50},
 %<ptm>     l = {  ,80},
-%<m-t|bch|cmr|ebg|pmn|ppl>   013 = {  ,50}, % fl
+%<m-t|bch|cmr|pmn|ppl>   013 = {  ,50}, % fl
 %<ptm>   013 = {  ,80}, % fl
 %<bch|ebg|pmn>     o = {50,50},
 %<ebg|pmn>   \oe = {50,  },
@@ -15347,7 +17279,31 @@
 %<ptm>     y = {80,80}
    }
 
+%<*ebg>
 \SetProtrusion
+   [ name     = EBGaramond-sc-OT1-Tab,
+     load     = EBGaramond-OT1-TOsF ]
+   { encoding = OT1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+%</ebg>
+\SetProtrusion
 %<m-t>   [ name     = T1-sc,
 %<bch>   [ name     = bch-sc-T1,
 %<cmr>   [ name     = cmr-sc-T1,
@@ -15362,7 +17318,8 @@
 %<pmn>     load     = pmnj-T1    ]
 %<ppl>     load     = ppl-T1     ]
 %<ptm>     load     = ptm-T1     ]
-   { encoding = {T1,LY1},
+%<!ebg>   { encoding = {T1,LY1},
+%<ebg>   { encoding = {LY1},
 %<bch>     family   = bch,
 %<cmr>     family   = cmr,
 %<ebg>     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
@@ -15381,7 +17338,7 @@
 %<bch>     j = {100,  },
 %<m-t|bch|cmr|ebg|pmn|ppl>     l = {  ,50},
 %<ptm>     l = {  ,80},
-%<m-t|bch|cmr|ebg|pmn|ppl>   029 = {  ,50}, % fl
+%<m-t|bch|cmr|pmn|ppl>   029 = {  ,50}, % fl
 %<ptm>   029 = {  ,80}, % fl
 %<bch|ebg|pmn>     o = {50,50},
 %<bch|ebg|pmn>   \oe = {50,  },
@@ -15457,6 +17414,52 @@
    }
 
 %</cmr|bch>
+%<*ebg>
+\SetProtrusion
+   [ name     = EBGaramond-sc-T1-Prop,
+     load     = EBGaramond-T1-LF ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-sc-T1-Tab,
+     load     = EBGaramond-T1-TOsF ]
+   { encoding = T1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+%</ebg>
 %<*pmn>
 \SetProtrusion
    [ name     = pmnx-sc,
@@ -15585,7 +17588,102 @@
    }
 
 %</pmn>
+%<*ebg>
 %    \end{macrocode}
+% For small caps italics, we copy the definitions from the small caps settings,
+%  except that we first load the italics settings.
+%\changes{v3.0}{2021/06/23}{settings for <EB> Garamond small caps italics}
+%    \begin{macrocode}
+\SetProtrusion
+   [ name     = EBGaramond-scit-OT1-Prop,
+     load     = EBGaramond-it-OT1-LF ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-OT1-Tab,
+     load     = EBGaramond-it-OT1-TOsF ]
+   { encoding = OT1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-T1-Prop,
+     load     = EBGaramond-it-T1-LF ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-T1-Tab,
+     load     = EBGaramond-it-T1-TOsF ]
+   { encoding = T1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+%</ebg>
+%    \end{macrocode}
 %
 %\subsubsection{Text companion}
 %
@@ -15815,8 +17913,8 @@
 %<ebg>     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
 %<pmn>     family   = {pmnx,pmnj},
 %<ugm>     family   = ugm,
-%<!ugm>     shape    = {it,sl} }
-%<ugm>     shape    = it }
+%<cmr|pmn>     shape    = {it,sl} }
+%<ebg|ugm>     shape    = it }
    {
 %<cmr>     \textquotestraightbase    = {300,600},
 %<ebg|pmn>     \textquotestraightbase    = {400,400},
@@ -17231,24 +19329,28 @@
 %\ifpdf
 %\GeneralChanges{Documentation}
 %^^A The OpenType configuration files are outsourced to an external file,
-%^^A since they are typeset with \luatex.
+%^^A since they have to be typeset with \luatex.
 %
-%\newwrite          \utftmp
-%\immediate\openout \utftmp=microtype-utf.tmp
-%\immediate\write   \utftmp{\string\setcounter{section}{\the\c at section}}
-%\immediate\write   \utftmp{\string\setcounter{CodelineNo}{\the\c at CodelineNo}}
-%\immediate\write   \utftmp{\string\setcounter{page}{\the\c at page}}
-%\immediate\write   \utftmp{\string\setcounter{footnote}{\the\c at footnote}}
-%\immediate\closeout\utftmp
+%\begingroup
+%\def\setcounter#1#2{\expandafter\ifnum\csname c@#1\endcsname=#2 \else\@tempswatrue\fi}
+%\InputIfFileExists{microtype-code.tmp}\@tempswafalse\@tempswatrue
+%\if at tempswa
+%\newwrite          \codetmp
+%\immediate\openout \codetmp=microtype-code.tmp
+%\immediate\write   \codetmp{\string\setcounter{section}{\the\c at section}}
+%\immediate\write   \codetmp{\string\setcounter{CodelineNo}{\the\c at CodelineNo}}
+%\immediate\write   \codetmp{\string\setcounter{page}{\the\c at page}}
+%\immediate\write   \codetmp{\string\setcounter{footnote}{\the\c at footnote}}
+%\immediate\closeout\codetmp
+%\fi
+%\endgroup
 %
-%\InputIfFileExists{microtype.tmp}\relax{\def\utfsectioni{1}\def\utfsectionii{1}}
+%\InputIfFileExists{microtype-utf.tmp}
+%  {\def\UTF at setbookmarks##1{\def\UTFBookmarks{##1}}}
+%  {\let\UTFBookmarks\@empty}
 %
 %\IfFileExists{microtype-utf.pdf}
-%   {\includepdf[pages=-,
-%                addtotoc={1,section,1,OpenType configuration files,sec:OpenType,
-%                          \utfsectioni,subsection,2,Character inheritance,sub:OT-inheritance,
-%                          \utfsectionii,subsection,2,Character protrusion,sub:OT-protrusion}]
-%               {microtype-utf.pdf}}
+%   {\edef\x{\noexpand\includepdf[pages=-,addtotoc={\UTFBookmarks}]{microtype-utf.pdf}}\x}
 %   {\section{OpenType configuration settings}
 %       To view the OpenType configuration settings, first typeset
 %       \file{microtype-utf.dtx} with \luatex.}
@@ -17262,119 +19364,65 @@
 %
 %\section{Auxiliary file for micro fine tuning}
 %
-% This file can be used to test protrusion and expansion settings.
+% This file may be used to test protrusion and (less so) expansion settings.
 %    \begin{macrocode}
 %<*test>
 \documentclass{article}
+%% options are passed through to microtype
+\usepackage[stretch=50]{microtype-show}
 
-%% Here you can specify the font you want to test, using
-%% the commands \fontfamily, \fontseries and \fontshape.
-%% Make sure to end all lines with a comment character!
-\newcommand*\TestFont{%
-  \fontfamily{ppl}%
-%%  \fontseries{b}%
-%%  \fontshape{it}% sc, sl
-}
+%% options for microtype-show
+\ShowGlyphIndextrue
+\ShowMissingGlyphstrue
+\def\GlyphScaleFactor{2}
 
-\usepackage{ifthen}
-\usepackage[T1]{fontenc}
-\usepackage[latin1]{inputenc}
-\usepackage[verbose,expansion=alltext,stretch=50]{microtype}
+%% load any required font packages:
+\ifpdftex
+ \usepackage[T1]{fontenc}
+\else
+ \usepackage{fontspec}
+\fi
 
-\pagestyle{empty}
-\setlength{\parindent}{0pt}
-\newcommand*\crulefill{\cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill}
-\newcommand*\testprotrusion[2][]{%
-  \ifthenelse{\equal{#1}{r}}{}{#2}%
-  lorem ipsum dolor sit amet,
-    \ifthenelse{\equal{#1}{r}}{\crulefill}{\leftarrowfill} #2
-    \ifthenelse{\equal{#1}{l}}{\crulefill}{\rightarrowfill}
-  you know the rest%
-  \ifthenelse{\equal{#1}{l}}{}{#2}%
-  \linebreak
-  {\fontencoding{\encodingdefault}%
-  \fontseries{\seriesdefault}%
-  \fontshape{\shapedefault}%
-  \selectfont
-  Here is the beginning of a line, \dotfill and here is its end}\linebreak
-}
-\newcommand*\showTestFont{\expandafter\stripprefix\meaning\TestFont}
-\def\stripprefix#1>{}
-\newcount\charcount
 \begin{document}
-
 \microtypesetup{expansion=false}
 
-{\centering The font in this document is called by:\\
- \texttt{\showTestFont}\par}\bigskip
+%% load your font here:
 
-\TestFont\selectfont
- This line intentionally left empty\linebreak
-%% A -- Z
-\charcount=65
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 91 \repeat
-%% a -- z
-\charcount=97
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 123 \repeat
-%% 0 -- 9
-\charcount=48
-\loop
-  \testprotrusion{\char\charcount}
-  \advance\charcount 1
-  \ifnum\charcount < 58 \repeat
-%%
- \testprotrusion[r]{,}
- \testprotrusion[r]{.}
- \testprotrusion[r]{;}
- \testprotrusion[r]{:}
- \testprotrusion[r]{?}
- \testprotrusion[r]{!}
- \testprotrusion[l]{\textexclamdown}
- \testprotrusion[l]{\textquestiondown}
- \testprotrusion[r]{)}
- \testprotrusion[l]{(}
- \testprotrusion{/}
- \testprotrusion{\char`\\}
- \testprotrusion{-}
- \testprotrusion{\textendash}
- \testprotrusion{\textemdash}
- \testprotrusion{\textquoteleft}
- \testprotrusion{\textquoteright}
- \testprotrusion{\textquotedblleft}
- \testprotrusion{\textquotedblright}
- \testprotrusion{\quotesinglbase}
- \testprotrusion{\quotedblbase}
- \testprotrusion{\guilsinglleft}
- \testprotrusion{\guilsinglright}
- \testprotrusion{\guillemotleft}
- \testprotrusion{\guillemotright}
+\ShowCharacterInheritance
 
 \newpage
-The following displays the current font stretched by 5\%,
-normal, and shrunk by 5\%:
+\ShowProtrusion
 
-\bigskip
+\newpage
+%% show single glyphs
+ %\ShowDummyLine
+ %\ShowProtrusionLineGlyph{A}
+ %\ShowProtrusionLineIndex{27}
+
+%% loop through all glyphs of the font;
+%% protrusion values are shown in 1000th of 1em
+ \ShowProtrusionDefined
+
+ %\ShowProtrusionMissing
+
+ %\ShowProtrusionAll
+
+\newpage %% -------------------------------------------------------------------
+This is the current font stretched by 5\%, normal, and shrunk by 5\%:
+
 \newlength{\MTln}
 \newcommand*\teststring
-  {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789}
+  {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}
 \settowidth{\MTln}{\teststring}
 \microtypesetup{expansion=true}
 
-\parbox{1.05\MTln}{\teststring\linebreak\\
-                   \teststring}\par\bigskip
-\parbox{0.95\MTln}{\teststring}
-
+\bigskip\noindent\parbox{1.05\MTln}{\teststring\linebreak\\\teststring}\par
+\bigskip\noindent\parbox{0.95\MTln}{\teststring}
 \end{document}
 %</test>
 %    \end{macrocode}
 % Needless to say that things may always be improved. For suggestions, mail to
-% \mailtoRS.
+% \mailtoRS\ or file an issue at \url{\githuburl/issues}.
 %
 % ^^A -------------------------------------------------------------------------
 %
@@ -17408,10 +19456,12 @@
 %   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %   Right brace   \}     Tilde         \~}
 %
-% \CheckSum{10847}
+% \CheckSum{12274}
 %
 % \Finale
 %
+% \InputIfFileExists{lppl.tex}\LPPLSettings\relax
+%
 \endinput
 %
 % -----------------------------------------------------------------------------
@@ -17418,24 +19468,23 @@
 
  *** Typesetting the documentation ***
 
-  The documentation of this package (microtype.pdf) can be found on CTAN,
-  if it isn't already installed in your TeX system, so there should be no
-  need to re-typeset it.
+  The documentation of this package (microtype.pdf and microtype-code.pdf)
+  can be found on CTAN, if it isn't already installed in your TeX system,
+  so there should be no need to re-typeset it.
   If you still want to do this, there are some requirements to consider
   and some steps to follow:
 
-#  (1) In microtype.ins, uncomment the lines:
+#  (1) In microtype.ins, uncomment the lines
 %\generate{\makefile{microtype-gind.ist}{docist}}
 #      and
 %\generate{\makefile{microtype-doc.sty}{docsty}}
-#  (2) Install the package by running:
+#  (2) Install the package by running
 pdflatex microtype.ins
 #  (3) Extract microtype-lssample.dtx and microtype-logo.dtx from
 #      microtype.pdf (ie., from the file you are about to recreate ...).
 #      This can be done, eg., with Adobe Reader or with the pdftk tool.
-#  (4) Run
+#  (4) To typeset the user documentation (microtype.pdf) run
 pdflatex microtype.dtx
-pdflatex microtype.dtx
 #      [ The following fonts are required:
 #        - Bitstream Charter
 #        - Bitstream LetterGothic
@@ -17444,11 +19493,11 @@
 #        - Adobe Zapf Chancery (alternatively URW Zapf Chancery)
 #        - Adobe Kepler MM (for microtype-logo.dtx, input by microtype.dtx)
 #        - Adobe Caslon (for microtype-lssample.dtx, input by microtype.dtx) ]
-#  (5) Run
+#  (5) To create the index run
 makeindex -s microtype-gind.ist microtype
-#  (6) Run
-makeindex -s gglo.ist -o microtype.gls microtype.glo microtype-utf.glo
-#  (7) Run
+#  (6) To typeset the implementation documentation (microtype-code.pdf) run
+pdflatex --jobname=microtype-code microtype.dtx
+#  (7) To typeset the OpenType configuration (to be included in microtype-code.pdf) run
 lualatex microtype-utf.dtx
 #      [ The following fonts are required:
 #        - Bitstream Charter (Type 1)
@@ -17456,16 +19505,16 @@
 #        - Adobe Source Sans Pro (Type 1)
 #        - Latin Modern Roman (OpenType)
 #        - Charis SIL (OpenType)
+#        - EB Garamond (OpenType)
 #        - TeX Gyre Pagella (OpenType) ]
-#  (8) Run
-pdflatex microtype.dtx
-#  (9) Run
-makeindex -s microtype-gind.ist microtype
-# (10) Run
-makeindex -s gglo.ist -o microtype.gls microtype.glo microtype-utf.glo
-# (11) Run
-pdflatex microtype.dtx
+#  (8) To create the code index and history run
+makeindex -r -s microtype-gind.ist -t microtype-code.ilg -o microtype-code.ind microtype.idx microtype-code.idx
+makeindex -s gglo.ist -t microtype-code.glg -o microtype-code.gls microtype.glo microtype-code.glo microtype-utf.glo
 #
+# All three output files (microtype.pdf, microtype-code.pdf, microtype-utf.pdf)
+# are interdependent, so you need to repeat steps 4 to 8 until all Rerun
+# warnings have been resolved.
+#
 # That's it, although I still may have forgotten some things ...
 %
 % -- RS
@@ -17472,4 +19521,5 @@
 % -----------------------------------------------------------------------------
 %
 % vim: ts=2:sw=2:et:
+
 %

Modified: trunk/Master/texmf-dist/source/latex/microtype/microtype.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/microtype/microtype.ins	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/source/latex/microtype/microtype.ins	2021-10-31 21:08:53 UTC (rev 60913)
@@ -1,4 +1,4 @@
-% !Mode:: "TeX:STY:UK"
+%
 % ------------------------------------------------------------------------
 \input docstrip
 \keepsilent
@@ -18,11 +18,12 @@
 http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 of all distributions of LaTeX version 2005/12/01 or later.
 
-This work has the LPPL maintenance status `author-maintained'.
+This work has the LPPL maintenance status `maintained'.
 
-This work consists of the files microtype.dtx and microtype.ins and the
-derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-microtype-xetex.def, microtype.lua and letterspace.sty.
+This work consists of the files microtype.dtx, microtype-utf.dtx and
+microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+and microtype-show.sty.
 
 % Modified versions of the configuration files (*.cfg) may be distributed
 % provided that: (1) the original copyright statement is not removed, and
@@ -74,9 +75,14 @@
   let me know.^^M
   When modifying this file, also change the identification line below.
 \endpreamble
+\declarepreamble\showpreamble
+  This companion package offers various commands that might be helpful
+  when creating protrusion settings. See the documentation in microtype's
+  User manual, section 10, and the examples in test-microtype.tex.
+\endpreamble
 \declarepreamble\testpreamble
   This file might be useful to test protrusion settings for a font.
-  You can do whatever you want with it.
+  You may do with it whatever you want.
 \endpreamble
 \let\firstpreamblepart\fontpreamble
 \let\lastpreamblepart \empty
@@ -90,6 +96,9 @@
       Harald Harders <h.harders{at}tu-bs.de> and
       Karl Karlsson <karl-karlsson{at}yandex.ru>.^^M
 \endpreamble
+\declarepreamble\antonispreamble^^M
+      Antonis Tsolomitis <antonis.tsolomitis{at}gmail.com>^^M
+\endpreamble
 \declarepreamble\lorenpreamble^^M
       Loren B. Davis.  (c) 2012
 
@@ -105,6 +114,9 @@
 \def\makefile#1#2{\file{#1}{\from{microtype.dtx}{#2}}}
 \def\makecfg#1#2{\makefile{mt-#2.cfg}{config,cfg-#1,#2}}
 \def\makeutfcfg#1{\file{mt-#1.cfg}{\from{microtype-utf.dtx}{#1}}}
+\def\makemixedcfg#1#2{\file{mt-#1.cfg}
+  {\from{microtype.dtx}{config,cfg-t,#2}
+   \from{microtype-utf.dtx}{#1}}}
 
 \usedir{tex/latex/microtype}
 \let\MetaPrefix\DoubleperCent
@@ -114,9 +126,9 @@
 \generate{
     \makefile{microtype.sty}{package\DEBUG}
   \usepreamble\defpreamble
-    \makefile{microtype-pdftex.def}{pdftex-def\DEBUG}
-    \makefile{microtype-luatex.def}{luatex-def\DEBUG}
-    \makefile{microtype-xetex.def} {xetex-def\DEBUG}
+    \makefile{microtype-pdftex.def}{pdf-\DEBUG}
+    \makefile{microtype-luatex.def}{lua-\DEBUG}
+    \makefile{microtype-xetex.def} {xe-\DEBUG}
   \usepreamble\lsppreamble
     \makefile{letterspace.sty}{letterspace,plain}
   \usepreamble\cfgpreamble
@@ -125,7 +137,6 @@
     \makecfg{t}{bch}
     \makecfg{t}{blg}
     \makecfg{t}{cmr}
-    \makefile{mt-EBGaramond.cfg}{config,cfg-t,ebg}
     \makecfg{t}{ppl}
     \makecfg{t}{ptm}
     \makecfg{t}{ugm}
@@ -138,12 +149,17 @@
     \makecfg{e}{mvs}
     \makeutfcfg{LatinModernRoman}
     \makeutfcfg{CharisSIL}
-    \makeutfcfg{Lato}
-    \makeutfcfg{FontAwesome}
+    \makeutfcfg{TU-basic}
+    \makeutfcfg{TU-empty}
+    \makemixedcfg{EBGaramond}{ebg}
   \usepreamble\haraldandkarlpreamble
     \makecfg{t}{pmn}
   \usepreamble\lorenpreamble
     \makeutfcfg{Palatino}
+  \usepreamble\antonispreamble
+    \makeutfcfg{NewComputerModern}
+  \usepreamble\showpreamble
+    \makefile{microtype-show.sty}{show\DEBUG}
   \usepreamble\testpreamble
     \makefile{test-microtype.tex}{test}
 }

Modified: trunk/Master/texmf-dist/tex/latex/microtype/letterspace.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/letterspace.sty	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/letterspace.sty	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a stand-alone version that only provides the letterspacing
@@ -33,7 +34,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage
   {letterspace}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    Robust letterspacing
    (RS)]
 \def\MT at MT
@@ -157,6 +158,10 @@
 \let\MT at tr@max\@m
 \let\MT at letterspace\m at ne
 \def\MT at letterspace@default{100}
+\MT at pdf@or at lua\relax{
+\ifx\newluafunction\@undefined \input ltluatex \fi
+\MT at lua{require("microtype")}
+}
 \def\MT at glet{\global\let}
 \def\MT at exp@cs#1#2{\expandafter#1\csname#2\endcsname}
 \def\MT at edef@n{\MT at exp@cs\edef}
@@ -229,12 +234,8 @@
 }
 \MT at pdf@or at lua{\let\MT at if@luaotf at font\@secondoftwo}{
 \def\MT at if@luaotf at font{\csname\MT at lua{%
-  local thefont = font.getfont(font.current())
-  if thefont and ( thefont.format == "opentype" or thefont.format == "truetype" )
-    then tex.write("@firstoftwo")
-    else tex.write("@secondoftwo")
-  end
- }\endcsname
+  microtype.if_luaotf_font()
+  }\endcsname
 }
 }
 \def\MT at do@font{\MT at while@num\z@\@cclvi}
@@ -274,10 +275,7 @@
     \expandafter\ifx\MT at lsfont\relax
       \MT at get@ls at basefont
       \MT at if@luaotf at font{%
-        \ifnum\MT at letterspace@<\z@\def\MT at minus{-}\else\let\MT at minus\@empty\fi
-        \global\expandafter\font\MT at lsfont=%
-          \expandafter\MT at exp@two at c\expandafter\MT at ls@fontspec at font
-            \expandafter\fontname\expandafter\font at name\space \@nil
+        \global\expandafter\font\MT at lsfont=\MT at ls@fontspec at font
       }{%
       \global\expandafter\letterspacefont\MT at lsfont\font at name\MT at letterspace@
       }%
@@ -315,14 +313,8 @@
         {MT at aftergroup@\number\currentgrouplevel}%
     }%
 }
-\def\MT at ls@fontspec at colon#1:#2:#3:#4\@nil{\ifx\\#3\\#1:#2\else#1:#2:#3\fi}
-\def\MT at ls@fontspec at font#1 #2\@nil{%
-  "\MT at ls@fontspec at colon#1:::\relax\@nil
-    kernfactor=\MT at minus \ifnum\MT at letterspace@=1000 1\else 0.%
-         \ifnum\MT at minus\MT at letterspace@<100 0\fi
-         \ifnum\MT at minus\MT at letterspace@<10  0\fi
-        \number\MT at minus\MT at letterspace@ \fi;"
-  \ifx\\#2\\ at \f at size pt\else#2\fi\relax
+\def\MT at ls@fontspec at font{%
+  \MT at lua{microtype.add_ls([[\MT at letterspace@]])}%
 }
 \MT at requires@latex2{
 \def\MT at set@lsfont{\MT at exp@two at c\let\font at name\MT at lsfont}
@@ -397,11 +389,11 @@
 \def\MT at ls@too at large#1{%
   \ifnum#1>\MT at tr@max
     \MT at warning{Maximum for option `letterspace' is \number\MT at tr@max}%
-    \let#1\MT at tr@max
+    \edef#1{\number\MT at tr@max}%
   \else
     \ifnum#1<\MT at tr@min
       \MT at warning{Minimum for option `letterspace' is \number\MT at tr@min}%
-      \let#1\MT at tr@min
+      \edef#1{\number\MT at tr@min}%
     \fi
   \fi
 }

Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def	2021-10-31 21:08:53 UTC (rev 60913)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% microtype.dtx  (with options: `luatex-def')
+%% microtype.dtx  (with options: `lua-')
 %% 
 %% ------------------------------------------------------------------------
 %% 
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This file contains enginge-specific definitions.
@@ -30,7 +31,7 @@
 %%
 \ProvidesFile
   {microtype-luatex.def}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    Definitions specific to
    luatex
    (RS)]
@@ -66,7 +67,7 @@
 \def\MT at ifstreq#1#2{\csname\MT at lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname}
 \def\MT at if@luaotf at font{\csname\MT at lua{%
   microtype.if_luaotf_font()
- }\endcsname
+  }\endcsname
 }
 \def\MT at do@font#1{%
   \MT at if@luaotf at font{%
@@ -156,13 +157,12 @@
       \MT at requires@luatex4{\pdffeedback fontsize}{\pdffontsize}\MT at font
     \MT at info{Fixing zero \string\fontdimen 6 for font `\MT@@font'\MessageBreak
              (new value: \the\fontdimen6\MT at font)}%
-    \MT at glet@nc{\MT@@font-fake6}\@empty
   \fi
   \edef\MT at dimen@six{\number\fontdimen6\MT at font}%
 }
-\def\MT at protrusion{\MT at maybe@do{pr}}
-\def\MT at set@pr at codes{%
-  \MT at nofamilyfalse
+\def\MT at set@pr at codes
+  {%
+ \MT at nofamilyfalse
   \MT at if@list at exists{%
     \ifMT at nofamily
       \MT at ifdefined@n at TF{\MT at encoding-\MT at family-settings}\relax{%
@@ -181,7 +181,9 @@
     \MT at set@listname
     \MT at let@cn\@tempc{MT at pr@c@\MT at pr@c at name}%
     \expandafter\MT at set@codes\@tempc,\relax,%
-  }\MT at reset@pr at codes
+    \MT at set@pr at prefixheirs
+  }%
+  \MT at reset@pr at codes
 }
 \def\MT at set@all at pr#1#2{%
   \let\MT at temp\@empty
@@ -213,15 +215,17 @@
     \fi
   \fi
 }
-\def\MT at pr@split at val#1,#2\relax{%
-  \def\@tempb{#1}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+\def\MT at pr@split at val#1,#2\relax
+  {\def\@tempb{#1}%
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \lpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \def\@tempb{#2}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \rpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \MT at ifdefined@c at T\MT at pr@inh at name{%
@@ -243,42 +247,32 @@
   \MT at count=\fontcharwd\MT at font\MT at char\relax
   \ifnum\MT at count=\z@ \MT at info@missing at char \fi
 }
-\def\MT at set@pr at heirs#1{%
-  \lpcode\MT at font #1=\lpcode\MT at font\MT at char\relax
-  \rpcode\MT at font #1=\rpcode\MT at font\MT at char\relax
-}
-\def\MT at preset@pr{%
-  \expandafter\expandafter\expandafter\MT at preset@pr@
-    \csname MT at pr@c@\MT at pr@c at name @preset\endcsname\@nil
-}
-\def\MT at preset@pr@#1,#2\@nil{%
-  \ifx\MT at pr@unit@\@empty
-    \MT at warn@preset at towidth{pr}%
-    \let\MT at preset@aux\MT at preset@aux at factor
-  \else
-    \def\MT at preset@aux{\MT at preset@aux at space2}%
+\def\MT at set@pr at prefixes#1{\MT at set@pr at prefixes@#1}
+\def\MT at set@pr at prefixes@#1#2#3#4%
+  {%
+  \@tempcnta=\z@
+  \ifnum#3>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#3/\MT at dimen@six\relax
   \fi
-  \MT at ifempty{#1}{\let\@tempa\@empty}{\MT at preset@aux{#1}\@tempa}%
-  \MT at ifempty{#2}{\let\@tempb\@empty}{\MT at preset@aux{#2}\@tempb}%
-  \MT at set@all at pr\@tempa\@tempb
+  \lpcode\MT at font #2=\numexpr\lpcode\MT at font#1+\@tempcnta\relax
+  \@tempcnta=\z@
+  \ifnum#4>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#4/\MT at dimen@six\relax
+  \fi
+  \rpcode\MT at font #2=\numexpr\rpcode\MT at font#1+\@tempcnta\relax
 }
-\def\MT at preset@aux at factor#1#2{%
-  \@tempcntb=#1\relax
-  \MT at scale@factor
-  \edef#2{\number\@tempcntb}%
+\def\MT at prot@addtoken at next#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \setbox\MT at tempbox\hbox{\the\MT at toks
+  }\setbox\MT at tempbox\hbox{\unhbox\MT at tempbox
+    \ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
+      \MT at prot@get at nextchar
+      {\MT at prot@l{\the\MT at toks}}%
 }
-\def\MT at preset@aux at space#1#2#3{%
-  \def\@tempb{#2}%
-  \MT at get@space at unit#1%
-  \MT at scale@to at em
-  \edef#3{\number\@tempcntb}%
-}
-\def\MT at warn@preset at towidth#1{%
-  \MT at warning@nl{%
-    Cannot preset characters relative to their widths\MessageBreak
-    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'. Presetting them%
-    \MessageBreak relative to 1em instead}%
-}
 \def\MT at expansion{\MT at maybe@do{ex}}
 \def\MT at set@ex at codes@s{%
   \MT at if@list at exists{%
@@ -416,15 +410,6 @@
   \MT at tracking@
 \def\MT at set@tr at codes{%
   \MT at vinfo{Tracking font `\MT@@font'\on at line}%
-  \MT at ifdefined@n at TF{\MT@@font-fake6}{%
-    \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty
-      \MT at warning@nl{%
-        Font `\MT@@font' does not specify its\MessageBreak
-        \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
-        \@nameuse{MT at abbr@\MT at feat} will not work with this font}%
-      \MT at glet@nc{\MT@@font-fake6}\relax
-    \fi
-  }{%
   \MT at if@list at exists
     \MT at get@tr at opt
     \relax
@@ -439,10 +424,7 @@
     \expandafter\ifx\MT at lsfont\relax
       \MT at get@ls at basefont
       \MT at if@luaotf at font{%
-        \ifnum\MT at letterspace@<\z@\def\MT at minus{-}\else\let\MT at minus\@empty\fi
-        \global\expandafter\font\MT at lsfont=%
-          \expandafter\MT at exp@two at c\expandafter\MT at ls@fontspec at font
-            \expandafter\fontname\expandafter\font at name\space \@nil
+        \global\expandafter\font\MT at lsfont=\MT at ls@fontspec at font
       }{%
       \global\expandafter\letterspacefont\MT at lsfont\font at name\MT at letterspace@
       }%
@@ -487,7 +469,6 @@
       \noexpand\MT at tr@outer at r
     }%
   \fi
-  }%
 }
 \def\MT at afteraftergroup#1{%
   \MT at maybe@gobble at with@tikz{%
@@ -499,14 +480,8 @@
     }%
   }%
 }
-\def\MT at ls@fontspec at colon#1:#2:#3:#4\@nil{\ifx\\#3\\#1:#2\else#1:#2:#3\fi}
-\def\MT at ls@fontspec at font#1 #2\@nil{%
-  "\MT at ls@fontspec at colon#1:::\relax\@nil
-    kernfactor=\MT at minus \ifnum\MT at letterspace@=1000 1\else 0.%
-         \ifnum\MT at minus\MT at letterspace@<100 0\fi
-         \ifnum\MT at minus\MT at letterspace@<10  0\fi
-        \number\MT at minus\MT at letterspace@ \fi;"
-  \ifx\\#2\\ at \f at size pt\else#2\fi\relax
+\def\MT at ls@fontspec at font{%
+  \MT at lua{microtype.add_ls([[\MT at letterspace@]])}%
 }
 \def\MT at get@tr at opt{%
   \MT at set@listname
@@ -965,6 +940,7 @@
 \def\MT at inh@split#1=#2=#3\relax{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty \else
+    \expandafter\MT at has@inh at prefix\@tempa()\relax\@nil
     \MT at get@slot
     \ifnum\MT at char > \m at ne
       \let\MT at val\MT at char
@@ -973,7 +949,12 @@
         \ifx\@tempa\@empty \else
           \MT at get@slot
           \ifnum\MT at char > \m at ne
-            \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \ifx\MT at inh@prefix\@empty
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \else
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @prefixes}%
+                  {{{\MT at val}{\MT at char}\MT at inh@prefix@}}%
+            \fi
           \fi
         \fi
       }%
@@ -980,6 +961,30 @@
     \fi
   \fi
 }
+\def\MT at has@inh at prefix#1(#2)#3#4\@nil{%
+  \let\MT at temp\relax
+  \ifx\relax#3%
+    \def\@tempa{#1#2}%
+    \let\MT at inh@prefix\@empty
+  \else
+    \MT at ifstreq{\MT at feat}{pr}{%
+      \MT at ifstreq{#2}{l}{\def\MT at inh@prefix@{{1000}{0}}\@firstoftwo}{%
+        \MT at ifstreq{#2}{r}{\def\MT at inh@prefix@{{0}{1000}}\@firstoftwo}{%
+          \MT at ifstreq{#2}{lr}{\def\MT at inh@prefix@{{500}{500}}\@firstoftwo}{%
+            \MT at warning@nl{`#2' is not a valid prefix in inheritance list%
+              \MessageBreak\MT at listname. Ignoring it}%
+            \@secondoftwo}}}%
+      {\def\@tempa{#3}%
+       \def\MT at inh@prefix{#2}%
+       \@gobble}%
+      {\@firstofone}%
+    }{\@firstofone}%
+   {\let\MT at char\m at ne
+    \let\MT at temp\@gobble
+   }%
+  \fi
+  \MT at temp
+}
 \MT at requires@luatex4{\let\pdfoutput\outputmode}\relax
 \MT at def@bool at opt{DVIoutput}{%
   \csname if\@tempa\endcsname

Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def	2021-10-31 21:08:53 UTC (rev 60913)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% microtype.dtx  (with options: `pdftex-def')
+%% microtype.dtx  (with options: `pdf-')
 %% 
 %% ------------------------------------------------------------------------
 %% 
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This file contains enginge-specific definitions.
@@ -30,14 +31,17 @@
 %%
 \ProvidesFile
   {microtype-pdftex.def}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    Definitions specific to
    pdftex
    (RS)]
-\def\MT at pdftex@no{7}
+\def\MT at pdftex@no{8}
 \ifnum\pdftexversion = 140
-  \ifnum\pdftexrevision < 4
-    \def\MT at pdftex@no{6}
+  \ifnum\pdftexrevision < 23
+    \def\MT at pdftex@no{7}
+    \ifnum\pdftexrevision < 4
+      \def\MT at pdftex@no{6}
+    \fi
   \fi
 \else
   \ifnum\pdftexversion < 140
@@ -236,13 +240,13 @@
       \pdffontsize\MT at font
     \MT at info{Fixing zero \string\fontdimen 6 for font `\MT@@font'\MessageBreak
              (new value: \the\fontdimen6\MT at font)}%
-    \MT at glet@nc{\MT@@font-fake6}\@empty
+    \MT at requires@pdftex8\relax{\MT at glet@nc{\MT@@font-fake6}\@empty}%
   \fi
   \edef\MT at dimen@six{\number\fontdimen6\MT at font}%
 }
-\def\MT at protrusion{\MT at maybe@do{pr}}
-\def\MT at set@pr at codes{%
-  \MT at nofamilyfalse
+\def\MT at set@pr at codes
+  {%
+ \MT at nofamilyfalse
   \MT at if@list at exists{%
     \ifMT at nofamily
       \MT at ifdefined@n at TF{\MT at encoding-\MT at family-settings}\relax{%
@@ -261,7 +265,9 @@
     \MT at set@listname
     \MT at let@cn\@tempc{MT at pr@c@\MT at pr@c at name}%
     \expandafter\MT at set@codes\@tempc,\relax,%
-  }\MT at reset@pr at codes
+    \MT at set@pr at prefixheirs
+  }%
+  \MT at reset@pr at codes
 }
 \def\MT at set@all at pr#1#2{%
   \let\MT at temp\@empty
@@ -293,15 +299,17 @@
     \fi
   \fi
 }
-\def\MT at pr@split at val#1,#2\relax{%
-  \def\@tempb{#1}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+\def\MT at pr@split at val#1,#2\relax
+  {\def\@tempb{#1}%
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \lpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \def\@tempb{#2}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \rpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \MT at ifdefined@c at T\MT at pr@inh at name{%
@@ -341,42 +349,32 @@
 }
 \def\MT at get@charwd{\MT at count=\MT at dimen@six}
 }
-\def\MT at set@pr at heirs#1{%
-  \lpcode\MT at font #1=\lpcode\MT at font\MT at char\relax
-  \rpcode\MT at font #1=\rpcode\MT at font\MT at char\relax
-}
-\def\MT at preset@pr{%
-  \expandafter\expandafter\expandafter\MT at preset@pr@
-    \csname MT at pr@c@\MT at pr@c at name @preset\endcsname\@nil
-}
-\def\MT at preset@pr@#1,#2\@nil{%
-  \ifx\MT at pr@unit@\@empty
-    \MT at warn@preset at towidth{pr}%
-    \let\MT at preset@aux\MT at preset@aux at factor
-  \else
-    \def\MT at preset@aux{\MT at preset@aux at space2}%
+\def\MT at set@pr at prefixes#1{\MT at set@pr at prefixes@#1}
+\def\MT at set@pr at prefixes@#1#2#3#4%
+  {%
+  \@tempcnta=\z@
+  \ifnum#3>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#3/\MT at dimen@six\relax
   \fi
-  \MT at ifempty{#1}{\let\@tempa\@empty}{\MT at preset@aux{#1}\@tempa}%
-  \MT at ifempty{#2}{\let\@tempb\@empty}{\MT at preset@aux{#2}\@tempb}%
-  \MT at set@all at pr\@tempa\@tempb
+  \lpcode\MT at font #2=\numexpr\lpcode\MT at font#1+\@tempcnta\relax
+  \@tempcnta=\z@
+  \ifnum#4>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#4/\MT at dimen@six\relax
+  \fi
+  \rpcode\MT at font #2=\numexpr\rpcode\MT at font#1+\@tempcnta\relax
 }
-\def\MT at preset@aux at factor#1#2{%
-  \@tempcntb=#1\relax
-  \MT at scale@factor
-  \edef#2{\number\@tempcntb}%
+\def\MT at prot@addtoken at next#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \setbox\MT at tempbox\hbox{\the\MT at toks
+    \relax
+    \ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
+      \MT at prot@get at nextchar
+      {\MT at prot@l{\the\MT at toks}}%
 }
-\def\MT at preset@aux at space#1#2#3{%
-  \def\@tempb{#2}%
-  \MT at get@space at unit#1%
-  \MT at scale@to at em
-  \edef#3{\number\@tempcntb}%
-}
-\def\MT at warn@preset at towidth#1{%
-  \MT at warning@nl{%
-    Cannot preset characters relative to their widths\MessageBreak
-    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'. Presetting them%
-    \MessageBreak relative to 1em instead}%
-}
 \def\MT at expansion{\MT at maybe@do{ex}}
 \def\MT at set@ex at codes@s{%
   \MT at if@list at exists{%
@@ -631,14 +629,16 @@
   \MT at tracking@
 \def\MT at set@tr at codes{%
   \MT at vinfo{Tracking font `\MT@@font'\on at line}%
-  \MT at ifdefined@n at TF{\MT@@font-fake6}{%
-    \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty
-      \MT at warning@nl{%
-        Font `\MT@@font' does not specify its\MessageBreak
-        \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
-        \@nameuse{MT at abbr@\MT at feat} will not work with this font}%
-      \MT at glet@nc{\MT@@font-fake6}\relax
-    \fi
+  \MT at requires@pdftex8\@firstofone{%
+    \MT at ifdefined@n at TF{\MT@@font-fake6}{%
+      \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty
+        \MT at warning@nl{%
+          Font `\MT@@font' does not specify its\MessageBreak
+          \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
+          tracking will not work with this font}%
+        \MT at glet@nc{\MT@@font-fake6}\relax
+      \fi
+    }%
   }{%
   \MT at if@list at exists
     \MT at get@tr at opt
@@ -1214,6 +1214,7 @@
 \def\MT at inh@split#1=#2=#3\relax{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty \else
+    \expandafter\MT at has@inh at prefix\@tempa()\relax\@nil
     \MT at get@slot
     \ifnum\MT at char > \m at ne
       \let\MT at val\MT at char
@@ -1222,7 +1223,12 @@
         \ifx\@tempa\@empty \else
           \MT at get@slot
           \ifnum\MT at char > \m at ne
-            \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \ifx\MT at inh@prefix\@empty
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \else
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @prefixes}%
+                  {{{\MT at val}{\MT at char}\MT at inh@prefix@}}%
+            \fi
           \fi
         \fi
       }%
@@ -1229,6 +1235,30 @@
     \fi
   \fi
 }
+\def\MT at has@inh at prefix#1(#2)#3#4\@nil{%
+  \let\MT at temp\relax
+  \ifx\relax#3%
+    \def\@tempa{#1#2}%
+    \let\MT at inh@prefix\@empty
+  \else
+    \MT at ifstreq{\MT at feat}{pr}{%
+      \MT at ifstreq{#2}{l}{\def\MT at inh@prefix@{{1000}{0}}\@firstoftwo}{%
+        \MT at ifstreq{#2}{r}{\def\MT at inh@prefix@{{0}{1000}}\@firstoftwo}{%
+          \MT at ifstreq{#2}{lr}{\def\MT at inh@prefix@{{500}{500}}\@firstoftwo}{%
+            \MT at warning@nl{`#2' is not a valid prefix in inheritance list%
+              \MessageBreak\MT at listname. Ignoring it}%
+            \@secondoftwo}}}%
+      {\def\@tempa{#3}%
+       \def\MT at inh@prefix{#2}%
+       \@gobble}%
+      {\@firstofone}%
+    }{\@firstofone}%
+   {\let\MT at char\m at ne
+    \let\MT at temp\@gobble
+   }%
+  \fi
+  \MT at temp
+}
 \MT at def@bool at opt{DVIoutput}{%
   \csname if\@tempa\endcsname
     \ifnum\pdfoutput>\z@ \MT at opt@DVItrue \fi

Added: trunk/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype-show.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype-show.sty	2021-10-31 21:08:53 UTC (rev 60913)
@@ -0,0 +1,367 @@
+%%
+%% This is file `microtype-show.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% microtype.dtx  (with options: `show')
+%% 
+%% ------------------------------------------------------------------------
+%% 
+%%                       The `microtype' package
+%%         Subliminal refinements towards typographical perfection
+%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
+%% 
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in:
+%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
+%% of all distributions of LaTeX version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
+%% 
+%% ------------------------------------------------------------------------
+%%   This companion package offers various commands that might be helpful
+%%   when creating protrusion settings. See the documentation in microtype's
+%%   User manual, section 10, and the examples in test-microtype.tex.
+%% ------------------------------------------------------------------------ 
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage
+  {microtype-show}
+  [2021/10/31 v3.0
+  Visual debugging for the microtype package
+   (RS)]
+\RequirePackage{iftex}
+\ifetex\else
+  \PackageError{microtype-show}
+               {This package only works with e-TeX}{Use e-TeX}
+\fi
+\ifxetex
+  \PackageError{microtype-show}
+               {This package only works with pdfTeX or luaTeX}{Don't use XeTeX}
+\fi
+\PackageWarning{microtype-show}{DO NOT USE THIS PACKAGE FOR REAL DOCUMENTS\@gobble}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{microtype}}
+\ProcessOptions\relax
+\PassOptionsToPackage{verbose}{microtype}
+\RequirePackage{microtype,graphicx,xcolor}
+\newif\ifShowGlyphIndex
+\newif\ifShowMissingGlyphs
+\newcommand*\GlyphScaleFactor{2}
+\newcommand*\Showbaselinecolor{\color{black!40}}
+\newcommand*\Showposcolor{\color{green!50}}
+\newcommand*\Shownegcolor{\color{red!50}}
+\ifluatex
+  \def\MTS at printtext#1{{\usefont{TU}{lmr}{m}{n}#1}}
+\else
+  \def\MTS at printtext#1{{\usefont{T1}{cmr}{m}{n}#1}}
+\fi
+\def\MTS at show@index#1{\ifShowGlyphIndex{\tiny$_{#1}%
+ %  \ifluatex^{\mathrm{%
+ %    \MT at lua{tex.print(luaotfload.aux.name_of_slot(tonumber([[#1]])))}}}\fi
+  $}\fi\space}
+\def\MTS at crulefill{\leaders\hrule height \dimexpr1ex/2+.4pt depth -\dimexpr1ex/2\hfill}
+\g at addto@macro\MT at setupfont{\MTS at Prot\MTS at Char}
+\let\MTS at Prot\relax
+\let\MTS at Char\relax
+\def\MTS at setup{%
+  \fboxsep=0pt
+  \fboxrule=.1pt
+  \raggedright
+  \let\MTS at glyphlist\@gobble
+  \def\MT at feat{pr}%
+}
+\newcommand*\ShowProtrusion{%
+  \begingroup
+    \MTS at setup
+    \let\MTS at Prot\MTS at Prot@do
+    \def\MT at cat{c}%
+    \selectfont
+}
+\def\MTS at Prot@do{%
+    \MT at ltx@pickupfont
+    \let\MT at pr@split at val\MTS at pr@split at val
+    \let\MT at load@list\MTS at load@list
+    \let\MT at set@pr at prefixes@\MTS at set@pr at prefixes@
+    \MTS at show@pr
+  \endgroup
+  \aftergroup\selectfont
+}
+\newcommand*\ShowCharacterInheritance{%
+  \begingroup
+    \MTS at setup
+    \let\MTS at Char\MTS at Char@do
+    \def\MT at cat{inh}%
+    \selectfont
+}
+\def\MTS at Char@do{%
+    \MT at ltx@pickupfont
+    \let\MT at set@pr at prefixes@\MTS at set@pr at prefixes@
+    \MTS at show@inheritance
+  \endgroup
+  \aftergroup\selectfont
+}
+\newcommand*\ShowProtrusionLineGlyph[1]{%
+  {\MTS at setup
+   \MTS at showprotrusionline{`#1}}%
+}
+\newcommand*\ShowProtrusionLineIndex[1]{%
+  {\MTS at setup
+   \MTS at showprotrusionline{#1}}%
+}
+\def\MTS at showprotrusionline#1{%
+  \edef\MTS at lpcode{\number\lpcode\font#1}%
+  \edef\MTS at rpcode{\number\rpcode\font#1}%
+  \char#1%
+    lorem ipsum dolor sit amet, \MTS at crulefill\ %
+    \MTS at printtext{\ifnum\MTS at lpcode=\z@\Showbaselinecolor\fi[\MTS at lpcode]}
+    \fbox{\char#1}\MTS at show@index{\number#1}
+    \MTS at printtext{\ifnum\MTS at rpcode=\z@\Showbaselinecolor\fi[\MTS at rpcode]}
+    \MTS at crulefill\ you know the rest%
+  \char#1\par
+  \ShowDummyLine
+}
+\newcommand*\ShowDummyLine{%
+ {\fontencoding{\encodingdefault}\fontseries{\seriesdefault}\fontshape{\shapedefault}%
+  \selectfont\noindent
+  here is the beginning of a line, \dotfill and here is its end}\par
+}
+\newcommand*\ShowProtrusionAll{%
+  {\MTS at setup
+   \MTS at lede{}%
+   \MT at do@font{\iffontchar\font\@tempcnta\MTS at showprotrusionline{\@tempcnta}\fi}}%
+}
+\newcommand*\ShowProtrusionDefined{%
+  {\MTS at setup
+   \MTS at lede{defined}%
+   \let\MTS at first\@gobble
+   \let\MTS at second\@firstofone
+   \MT at do@font{%
+     \MTS at firstorsecond
+     \MTS at temp{%
+       \iffontchar\font\@tempcnta\MTS at showprotrusionline{\@tempcnta}\else
+         \MT at warning@nl{Glyph \the\@tempcnta\space is missing in font
+                        \MessageBreak\font at name}%
+       \fi}}}%
+}
+\newcommand*\ShowProtrusionMissing{%
+  {\MTS at setup
+   \MTS at lede{missing}%
+   \let\MTS at first\@firstofone
+   \let\MTS at second\@gobble
+   \MT at do@font{%
+     \MTS at firstorsecond
+     \iffontchar\font\@tempcnta\MTS at temp{\MTS at showprotrusionline{\@tempcnta}}\fi}}%
+}
+\def\MTS at lede#1{%
+  \selectfont
+  \edef\MTS at font{\expandafter\string\font at name}%
+  \MTS at printtext{All glyphs \MT at ifempty{#1}{in}{#1 in protrusion list for}
+                 font \texttt{\MTS at font}:}\par
+  \ShowDummyLine
+}
+\def\MTS at firstorsecond{%
+  \let\MTS at temp\MTS at first
+  \ifnum\lpcode\font\@tempcnta=\z@ \else
+    \let\MTS at temp\MTS at second
+  \fi
+  \ifnum\rpcode\font\@tempcnta=\z@ \else
+    \let\MTS at temp\MTS at second
+  \fi
+}
+\newdimen\MTS at charwd
+\newdimen\MTS at lp@
+\newdimen\MTS at rp@
+\def\MTS at show@char at pr#1{%
+  \xdef\MTS at glyphlist{\MTS at glyphlist,#1}%
+  \scalebox{\GlyphScaleFactor}{\strut\escapechar`\\
+    \MTS at charwd=\fontcharwd\MT at font#1\relax
+    {\Showbaselinecolor\vrule width \dimexpr\MTS at charwd+.3em\relax height 1sp depth 0pt}%
+    \hskip-\dimexpr\MTS at charwd+.15em\relax
+    {\ifdim\MTS at lp@<\z@\Shownegcolor\else\Showposcolor\fi
+     \vrule width \ifdim\MTS at lp@<\z@ -\fi\MTS at lp@ height 1em depth .2em}%
+    \hskip\dimexpr\MTS at charwd\ifdim\MTS at lp@>\z at -\MTS at lp@\fi
+                             \ifdim\MTS at rp@>\z at -\MTS at rp@\fi\relax
+    {\ifdim\MTS at rp@<\z@\Shownegcolor\else\Showposcolor\fi
+     \vrule width \ifdim\MTS at rp@<\z@ -\fi\MTS at rp@ height 1em depth .2em}%
+    \hskip-\dimexpr\MTS at charwd+\fboxrule\ifdim\MTS at rp@<\z at -\MTS at rp@\fi\relax
+    \fbox{\char#1}}\,%
+    \MTS at show@index{#1}%
+}
+\def\MTS at show@char#1{\scalebox{\GlyphScaleFactor}{%
+  \strut\fbox{\char#1}}\MTS at show@index{#1}}
+\def\MTS at show@char at x#1{\xdef\MTS at glyphlist{\MTS at glyphlist,#1}\MTS at show@char{#1}}
+\def\MTS at show@missing{%
+  \MT at ifdefined@c at T\MT at pr@inh at name{%
+    \MTS at lp@=\z@ \MTS at rp@=\z@
+    \par \MTS at printtext{Glyphs not included in configuration (with defined heirs):}%
+    \MT at do@font{%
+      \edef\MT at temp{\the\@tempcnta}%
+      \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @\MT at temp @}{%
+        \MT at exp@one at n\MT at in@clist\MT at temp\MTS at glyphlist
+        \ifMT at inlist@\else \newline
+        \llap{\MTS at show@char at pr{\MT at temp} \MTS at printtext{=} }%
+         \MT at exp@cs\MT at map@tlist at c
+           {MT at inh@\MT at pr@inh at name @\the\@tempcnta @}%
+           \MTS at show@char at x
+        \fi
+      }%
+    }%
+  }%
+  \MTS at show@missing@
+}
+\def\MTS at show@missing@{%
+  \par \MTS at printtext{Other glyphs not in configuration:}\newline
+  \MT at do@font{%
+    \edef\MT at temp{\the\@tempcnta}%
+    \MT at exp@one at n\MT at in@clist\MT at temp\MTS at glyphlist
+    \ifMT at inlist@\else
+      \MTS at show@char\MT at temp
+    \fi
+  }%
+}
+\def\MTS at show@inheritance{%
+  \MT at get@inh at list
+  \MTS at printtext{Character inheritance for font `\texttt{\MT@@font}':}\\
+  \MT at ifdefined@c at TF\MT at listname{%
+    \MTS at printtext{First matching list is for `\texttt{\@tempa}':\\
+              \texttt{\MT at listname}:}\par\leavevmode
+    \MT at do@font{%
+      \MT at ifdefined@n at T{MT at inh@\MT at listname @\the\@tempcnta @}{%
+        \newline
+        \xdef\MTS at glyphlist{\MTS at glyphlist,\the\@tempcnta}%
+        \llap{\MTS at show@char{\the\@tempcnta}\MTS at printtext{= }}%
+        \MT at exp@cs\MT at map@tlist at c
+          {MT at inh@\MT at listname @\the\@tempcnta @}%
+          \MTS at show@char at x
+      }%
+    }%
+    \MT at ifdefined@n at T{MT at inh@\MT at listname @prefixes}{%
+      \par \MTS at printtext{(with prefixes:)}%
+      \@tempcntb=\z@
+      \let\MTS at show@char at pr\MTS at show@char at x
+      \MT at set@pr at prefixheirs}%
+    \ifShowMissingGlyphs\MTS at show@missing@\fi
+  }{%
+    \MTS at printtext{NOT DEFINED}%
+  }%
+  \par
+}
+\def\MTS at show@pr
+  {%
+  \MTS at printtext{Protrusion settings for font `\texttt{\MT@@font}':}\\
+  \MT at if@list at exists{%
+    \MTS at printtext{First matching list is for `\texttt{\@tempa}':\\\texttt{\MT at pr@c at name}}%
+    \MT at get@opt
+    \MT at reset@pr at codes
+    \MT at get@inh at list
+    \MT at set@inputenc{c}%
+    \MT at load@list\MT at pr@c at name
+    \MT at set@listname
+    \MT at let@cn\@tempc{MT at pr@c@\MT at pr@c at name}%
+    \expandafter\MT at set@codes\@tempc,\relax,%
+    \vrule width 4cm height .5pt \\
+    \MTS at printtext{End of list `\texttt{\MT at pr@c at name}'}\\[.5em]
+    \MT at ifdefined@c at T\MT at pr@inh at name{%
+      \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @prefixes}{%
+        \par \MTS at printtext{(with prefixes:)}%
+        \@tempcntb=\z@
+    \MT at set@pr at prefixheirs
+    }}%
+    \ifShowMissingGlyphs\MTS at show@missing\fi
+  }%
+  {\MTS at printtext{NOT DEFINED}%
+  \MT at reset@pr at codes
+  }\par
+}
+\def\MTS at pr@split at val#1,#2\relax
+  {\def\@tempb{#1}%
+  \MT at ifempty\@tempb
+  {\MTS at lp@=\z@ \let\MTS at lpcode\@empty}%
+  {\MT at scale@to at em
+    \MTS at lp@=\dimexpr\@tempcntb em/1000\relax\relax
+    \edef\MTS at lpcode{[\@tempb] \the\@tempcntb/\the\MTS at lp@}%
+  }%
+  \def\@tempb{#2}%
+  \MT at ifempty\@tempb
+  {\MTS at rp@=\z@ \let\MTS at rpcode\@empty}%
+  {\MT at scale@to at em
+    \MTS at rp@=\dimexpr\@tempcntb em/1000\relax\relax
+    \edef\MTS at rpcode{[\@tempb] \the\@tempcntb/\the\MTS at rp@}%
+  }%
+  \llap{\MTS at show@char at pr\MT at char\quad}%
+  \parbox[b][][b]{3.5cm}{\MTS at printtext{%
+      \footnotesize\makebox[.4cm][l]{L:} \MT at ifempty{\MTS at lpcode}{---}{\MTS at lpcode}\\
+                   \makebox[.4cm][l]{R:} \MT at ifempty{\MTS at rpcode}{---}{\MTS at rpcode}}}%
+  \parbox[t][][t]{\dimexpr\textwidth-3.5cm}{%
+  \MT at ifdefined@c at T\MT at pr@inh at name{%
+    \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @\MT at char @}{%
+      \MT at exp@cs\MT at map@tlist at c
+        {MT at inh@\MT at pr@inh at name @\MT at char @}%
+      \MTS at show@char at pr
+    }%
+  }%
+  }\newline
+}
+\def\MTS at set@pr at prefixes@#1#2#3#4%
+  {%
+  \MTS at lp@=\z@ \MTS at rp@=\z@
+  \ifnum#1=\@tempcntb \else
+    \par\leavevmode
+    \llap{\MTS at show@char at pr{#1} \MTS at printtext{=} }%
+  \fi
+  \@tempcnta=\z@
+  \ifnum#3>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#3/\MT at dimen@six\relax
+  \fi
+  \MTS at lp@=\dimexpr\numexpr\lpcode\MT at font#1+\@tempcnta\relax em/1000\relax
+  \@tempcnta=\z@
+  \ifnum#4>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font#2-\fontcharwd\MT at font#1)%
+      *#4/\MT at dimen@six\relax
+  \fi
+  \MTS at rp@=\dimexpr\numexpr\rpcode\MT at font#1+\@tempcnta\relax em/1000\relax
+  \MTS at show@char at pr{#2}%
+  \@tempcntb=#1\relax
+}
+\def\MTS at load@list#1%
+  {\edef\@tempa{#1}%
+  \MT at let@cn\@tempb{MT@\MT at feat @c@\@tempa @load}%
+  \MT at ifstreq\@tempa\@tempb{%
+    \MT at error{\@nameuse{MT at abbr@\MT at feat} list `\@tempa' cannot load itself}{}%
+  }{%
+    \ifx\@tempb\relax
+    :\par\medskip\leavevmode
+    \else
+      \MT at ifdefined@n at TF{MT@\MT at feat @c@\@tempb}{%
+        \MTS at printtext{, loading \texttt{\@tempb}}%
+        \MT at vinfo{... : First loading \@nameuse{MT at abbr@\MT at feat} list `\@tempb'}%
+        \begingroup
+          \MT at load@list\@tempb
+        \endgroup
+        \edef\MT at curr@list at name{%
+                  `\@tempb'}%
+        \MT at let@cn\@tempc{MT@\MT at feat @c@\@tempb}%
+        \expandafter\MT at set@codes\@tempc,\relax,%
+        \vrule width 4cm height .5pt \\
+        \MTS at printtext{End of list \texttt{\MT at curr@list at name}}%
+        \par\medskip\leavevmode
+      }{%
+        \MT at error{\@nameuse{MT at abbr@\MT at feat} list `\@tempb' undefined.\MessageBreak
+                    Cannot load it from list `\@tempa'}{}%
+      }%
+    \fi
+  }%
+}
+\endinput
+%%
+%% End of file `microtype-show.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def	2021-10-31 21:08:53 UTC (rev 60913)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% microtype.dtx  (with options: `xetex-def')
+%% microtype.dtx  (with options: `xe-')
 %% 
 %% ------------------------------------------------------------------------
 %% 
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This file contains enginge-specific definitions.
@@ -30,7 +31,7 @@
 %%
 \ProvidesFile
   {microtype-xetex.def}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    Definitions specific to
    xetex
    (RS)]
@@ -128,13 +129,12 @@
       \MT at size pt
     \MT at info{Fixing zero \string\fontdimen 6 for font `\MT@@font'\MessageBreak
              (new value: \the\fontdimen6\MT at font)}%
-    \MT at glet@nc{\MT@@font-fake6}\@empty
   \fi
   \edef\MT at dimen@six{\number\fontdimen6\MT at font}%
 }
-\def\MT at protrusion{\MT at maybe@do{pr}}
-\def\MT at set@pr at codes{%
-  \MT at nofamilyfalse
+\def\MT at set@pr at codes
+  {%
+ \MT at nofamilyfalse
   \MT at if@list at exists{%
     \ifMT at nofamily
       \MT at ifdefined@n at TF{\MT at encoding-\MT at family-settings}\relax{%
@@ -153,7 +153,9 @@
     \MT at set@listname
     \MT at let@cn\@tempc{MT at pr@c@\MT at pr@c at name}%
     \expandafter\MT at set@codes\@tempc,\relax,%
-  }\MT at reset@pr at codes
+    \MT at set@pr at prefixheirs
+  }%
+  \MT at reset@pr at codes
 }
 \def\MT at set@all at pr#1#2{%
   \let\MT at temp\@empty
@@ -180,15 +182,17 @@
     \fi
   \fi
 }
-\def\MT at pr@split at val#1,#2\relax{%
-  \def\@tempb{#1}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+\def\MT at pr@split at val#1,#2\relax
+  {\def\@tempb{#1}%
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \lpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \def\@tempb{#2}%
-  \MT at ifempty\@tempb\relax{%
-    \MT at scale@to at em
+  \MT at ifempty\@tempb
+    \relax
+  {\MT at scale@to at em
     \rpcode\MT at font\MT at char=\MT at the@pr at code
   }%
   \MT at ifdefined@c at T\MT at pr@inh at name{%
@@ -215,42 +219,34 @@
   \fi
   \ifnum\MT at count=\z@ \MT at info@missing at char \fi
 }
-\def\MT at set@pr at heirs#1{%
-  \lpcode\MT at font #1=\lpcode\MT at font\MT at char\relax
-  \rpcode\MT at font #1=\rpcode\MT at font\MT at char\relax
-}
-\def\MT at preset@pr{%
-  \expandafter\expandafter\expandafter\MT at preset@pr@
-    \csname MT at pr@c@\MT at pr@c at name @preset\endcsname\@nil
-}
-\def\MT at preset@pr@#1,#2\@nil{%
-  \ifx\MT at pr@unit@\@empty
-    \MT at warn@preset at towidth{pr}%
-    \let\MT at preset@aux\MT at preset@aux at factor
-  \else
-    \def\MT at preset@aux{\MT at preset@aux at space2}%
+\def\MT at set@pr at prefixes#1{\MT at set@pr at prefixes@#1}
+\def\MT at set@pr at prefixes@#1#2#3#4%
+  {%
+  \edef\@tempa{\expandafter\ifx\@car#1\@nil U\@gobble#1\else\number\XeTeXglyphindex"#1" \fi}%
+  \edef\@tempb{\expandafter\ifx\@car#2\@nil U\@gobble#2\else\number\XeTeXglyphindex"#2" \fi}%
+  \@tempcnta=\z@
+  \ifnum#3>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font\@tempb-\fontcharwd\MT at font\@tempa)%
+      *#3/\MT at dimen@six\relax
   \fi
-  \MT at ifempty{#1}{\let\@tempa\@empty}{\MT at preset@aux{#1}\@tempa}%
-  \MT at ifempty{#2}{\let\@tempb\@empty}{\MT at preset@aux{#2}\@tempb}%
-  \MT at set@all at pr\@tempa\@tempb
+  \lpcode\MT at font #2=\numexpr\lpcode\MT at font#1+\@tempcnta\relax
+  \@tempcnta=\z@
+  \ifnum#4>\z@
+    \@tempcnta=\numexpr
+      (\fontcharwd\MT at font\@tempb-\fontcharwd\MT at font\@tempa)%
+      *#4/\MT at dimen@six\relax
+  \fi
+  \rpcode\MT at font #2=\numexpr\rpcode\MT at font#1+\@tempcnta\relax
 }
-\def\MT at preset@aux at factor#1#2{%
-  \@tempcntb=#1\relax
-  \MT at scale@factor
-  \edef#2{\number\@tempcntb}%
+\def\MT at prot@addtoken at next#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \setbox\MT at tempbox\hbox{\the\MT at toks
+    \relax
+    \ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
+      \MT at prot@get at nextchar
+      {\MT at prot@l{\the\MT at toks}}%
 }
-\def\MT at preset@aux at space#1#2#3{%
-  \def\@tempb{#2}%
-  \MT at get@space at unit#1%
-  \MT at scale@to at em
-  \edef#3{\number\@tempcntb}%
-}
-\def\MT at warn@preset at towidth#1{%
-  \MT at warning@nl{%
-    Cannot preset characters relative to their widths\MessageBreak
-    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'. Presetting them%
-    \MessageBreak relative to 1em instead}%
-}
 \DeclareRobustCommand\lsstyle{%
   \MT at error{Letterspacing currently doesn't work with xetex}
            {Run pdftex or luatex, or use the `soul' package instead.}%
@@ -343,6 +339,7 @@
 \def\MT at inh@split#1=#2=#3\relax{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty \else
+    \expandafter\MT at has@inh at prefix\@tempa()\relax\@nil
     \MT at get@slot
     \ifx\MT at char\@empty\else
       \let\MT at val\MT at char
@@ -351,7 +348,12 @@
         \ifx\@tempa\@empty \else
           \MT at get@slot
           \ifx\MT at char\@empty\else
-            \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \ifx\MT at inh@prefix\@empty
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @\MT at val @}{{\MT at char}}%
+            \else
+              \MT at exp@cs\MT at xadd{MT at inh@\MT at listname @prefixes}%
+                  {{{\MT at val}{\MT at char}\MT at inh@prefix@}}%
+            \fi
           \fi
         \fi
       }%
@@ -358,6 +360,30 @@
     \fi
   \fi
 }
+\def\MT at has@inh at prefix#1(#2)#3#4\@nil{%
+  \let\MT at temp\relax
+  \ifx\relax#3%
+    \def\@tempa{#1#2}%
+    \let\MT at inh@prefix\@empty
+  \else
+    \MT at ifstreq{\MT at feat}{pr}{%
+      \MT at ifstreq{#2}{l}{\def\MT at inh@prefix@{{1000}{0}}\@firstoftwo}{%
+        \MT at ifstreq{#2}{r}{\def\MT at inh@prefix@{{0}{1000}}\@firstoftwo}{%
+          \MT at ifstreq{#2}{lr}{\def\MT at inh@prefix@{{500}{500}}\@firstoftwo}{%
+            \MT at warning@nl{`#2' is not a valid prefix in inheritance list%
+              \MessageBreak\MT at listname. Ignoring it}%
+            \@secondoftwo}}}%
+      {\def\@tempa{#3}%
+       \def\MT at inh@prefix{#2}%
+       \@gobble}%
+      {\@firstofone}%
+    }{\@firstofone}%
+   {\let\MT at char\m at ne
+    \let\MT at temp\@gobble
+   }%
+  \fi
+  \MT at temp
+}
 \MT at def@bool at opt{DVIoutput}{%
   \csname if\@tempa\endcsname
     \MT at warning@nl{Ignoring `DVIoutput' option}%

Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is the main configuration file for the `microtype' package.
@@ -40,7 +41,7 @@
 %%
 \ProvidesFile
   {microtype.cfg}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    microtype main configuration file
    (RS)]
 
@@ -132,9 +133,8 @@
 \DeclareMicrotypeAlias{mlmr}{cmr}          % mlmodern
 \DeclareMicrotypeAlias{mlmsy}{cmsy}        %   "
 \DeclareMicrotypeAlias{mlmm} {cmm}         %   "
-\DeclareMicrotypeAlias{New Computer Modern}{Latin Modern Roman}
-\DeclareMicrotypeAlias{NewCM10-Book.otf}   {Latin Modern Roman}
-\DeclareMicrotypeAlias{NewCM10-Regular.otf}{Latin Modern Roman}
+\DeclareMicrotypeAlias{NewCM10-Book.otf}   {New Computer Modern}
+\DeclareMicrotypeAlias{NewCM10-Regular.otf}{New Computer Modern}
 %% -- Palatino
 \DeclareMicrotypeAlias{pxr} {ppl}          % pxfonts
 \DeclareMicrotypeAlias{qpl} {ppl}          % TeX Gyre Pagella (formerly: qfonts/QuasiPalatino)
@@ -184,6 +184,15 @@
 \DeclareMicrotypeAlias{zeus}{eus}          %    "
 \DeclareMicrotypeAlias{zpeus}   {zpeu}     % Adobe Euro sans -> serif
 \DeclareMicrotypeAlias{eurosans}{zpeu}     % Adobe Euro sans -> serif
+\DeclareMicrotypeAlias{Lato}             {TU-basic}
+\DeclareMicrotypeAlias{Lato-Regular}     {TU-basic}
+\DeclareMicrotypeAlias{Fontin}           {TU-basic}
+\DeclareMicrotypeAlias{Fontin-Regular}   {TU-basic}
+\DeclareMicrotypeAlias{Bergamo Std}      {TU-basic}
+\DeclareMicrotypeAlias{FontAwesome}      {TU-empty} % fontawesome
+\DeclareMicrotypeAlias{fontawesomefree}  {TU-empty} % fontawesome5
+\DeclareMicrotypeAlias{fontawesomepro}   {TU-empty}
+\DeclareMicrotypeAlias{fontawesomebrands}{TU-empty}
 
 %%% -----------------------------------------------------------------------
 %%% INTERACTION WITH THE `babel' PACKAGE
@@ -396,6 +405,29 @@
      z = {\'z,\.z,\v z}
    }
 
+\DeclareCharacterInheritance
+  { encoding = LGR,
+  }
+  {
+    A = {012},
+    I = {219},
+    O = J,
+    U = {013,223},
+    W = {011},
+    a = {014,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
+         144,145,146,148,149,150,248},
+    e = {224,225,226,227,232,233,234,235},
+    h = {152,153,154,156,157,158,160,161,162,163,164,165,166,167,168,169,170,
+         171,172,173,174,175,249},
+    i = {200,201,202,203,208,209,210,211,216,217,218,240,241,242,243},
+    o = {228,229,230,231,236,237,238,239},
+    r = {251,252},
+    u = {015,204,205,206,207,212,213,214,215,220,221,222,244,245,246,247},
+    w = {176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
+         193,194,196,197,198,250},
+    . = {059}  % ano teleia
+  }
+
 %%% -----------------------------------------------------------------------
 %%% TRACKING/LETTERSPACING
 

Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype.lua	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype.lua	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 -- http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 -- of all distributions of LaTeX version 2005/12/01 or later.
 -- 
--- This work has the LPPL maintenance status `author-maintained'.
+-- This work has the LPPL maintenance status `maintained'.
 -- 
--- This work consists of the files microtype.dtx and microtype.ins and the
--- derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
--- microtype-xetex.def, microtype.lua and letterspace.sty.
+-- This work consists of the files microtype.dtx, microtype-utf.dtx and
+-- microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+-- microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+-- and microtype-show.sty.
 -- 
 -- ------------------------------------------------------------------------
 --   This file contains auxiliary lua functions.
@@ -34,8 +35,8 @@
 local microtype  = microtype
 microtype.module = {
     name         = "microtype",
-    version      = "2.8c",
-    date         = "2021/03/14",
+    version      = "3.0",
+    date         = "2021/10/31",
     description  = "microtype module.",
     author       = "E. Roux, R. Schlicht and P. Gesang",
     copyright    = "E. Roux, R. Schlicht and P. Gesang",
@@ -101,7 +102,7 @@
   local thefont = font.getfont(font.current())
   if thefont then
     for i,v in next,thefont.characters do
-      if v.index == nil or v.index > 0 then
+      if v.index == nil or ( v.index > 0 and i < 1114112 ) then
         microtype.sprint([[\@tempcnta=]]..i..[[\relax\MT at dofont@function]])
       end
     end
@@ -109,6 +110,24 @@
 end
 microtype.do_font = do_font
 
+local function add_ls(k)
+  local f = tex.fontname(font.current())
+  local spec,size = match(f,'^(.+)( at .+)$')
+  if not spec then spec = f end
+  local a,b,c = match(spec,'^([^:]+):?([^:]*):?(.*)$')
+  local ls = "kernfactor=" .. k/1000 .. ';'
+  microtype.sprint(a..':')
+  if (a == "name" or a == "file") then
+    microtype.sprint(b..':'..ls..c)
+  else
+    microtype.sprint(ls..b)
+  end
+  if size then
+    microtype.sprint(size)
+  end
+end
+microtype.add_ls = add_ls
+
 microtype.ligs = microtype.ligs or { }
 
 local function noligatures(fontcs,liga)
@@ -153,7 +172,9 @@
 if luaotfload and luaotfload.aux and luaotfload.aux.slot_of_name then
   local slot_of_name = luaotfload.aux.slot_of_name
   microtype.name_to_slot = function(name, unsafe)
-    return slot_of_name(font.current(), name, unsafe)
+    local n = math.tointeger(slot_of_name(font.current(), name, unsafe))
+    if n and n > 1114111 then n = -1 end
+    return n
   end
 else
   -- we dig into internal structure (should be avoided)

Modified: trunk/Master/texmf-dist/tex/latex/microtype/microtype.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/microtype.sty	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/microtype.sty	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %% 
@@ -29,7 +30,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage
   {microtype}
-  [2021/03/14 v2.8c
+  [2021/10/31 v3.0
    Micro-typographical refinements
    (RS)]
 \def\MT at MT
@@ -93,9 +94,9 @@
 \@onlypreamble\DeclareMicrotypeBabelHook
 \expandafter\let\csname ver at letterspace.sty\endcsname\@empty
 \def\MT at old@cmd#1#2{%
-  \newcommand*#1{\MT at warning{%
+  \newcommand*#1{\MT at error{%
     \string#1 is deprecated. Please use\MessageBreak
-    \string#2 instead}%
+    \string#2 instead}{As I said}%
     \let #1#2#2}}
 \MT at old@cmd\DeclareMicroTypeAlias\DeclareMicrotypeAlias
 \MT at old@cmd\DeclareMicroTypeSet  \DeclareMicrotypeSet
@@ -149,6 +150,7 @@
   \fi
 \fi
 \RequirePackage{keyval}[1997/11/10]
+^^X\RequirePackage{etoolbox}
 \newtoks\MT at toks
 \newif\ifMT at if@
 \newif\ifMT at protrusion
@@ -157,6 +159,7 @@
 \newif\ifMT at selected
 \newif\ifMT at noligatures
 \newif\ifMT at draft
+\newif\ifMT at disable
 \newif\ifMT at spacing
 \newif\ifMT at kerning
 \newif\ifMT at tracking
@@ -431,7 +434,9 @@
 \newif\ifMT at xunicode
 \MT at with@package at T{xunicode}\MT at xunicodetrue
 \@ifl at t@r\fmtversion{2020/10/01}
-  {\AddToHook{package/after/fontspec}{\MT at fontspectrue}}\relax
+  {\IfFormatAtLeastTF{2021/11/15}
+    {\AddToHook{package/fontspec/after}{\MT at fontspectrue}}
+    {\AddToHook{package/after/fontspec}{\MT at fontspectrue}}}\relax
 \let\MT at maybe@gobble at with@tikz\@firstofone
 \def\MT at tikz@setup{%
   \def\MT at maybe@gobble at with@tikz{%
@@ -469,6 +474,8 @@
   \MT at with@package at T{xunicode}\MT at xunicodetrue
   \MT at with@package at T{fontspec}\MT at fontspectrue
   \MT at glet\MT at setupfont@hook\@empty
+  %\gdef\MT at setupfont@hook{\tracingnone
+  %  \MT at info{Silently doing my `magic' (Mittelbach) for font\MessageBreak\MT@@font}}%
   \MT at if@false
   \MT at with@babel at and@T{spanish} \MT at if@true
   \MT at with@babel at and@T{galician}\MT at if@true
@@ -535,7 +542,121 @@
         \MT at MT@pickupfont}%
     }%
   }%
+  \MT at with@package at T{unicode-math}{%
+    \MT at let@nc{__um_sub_or_super:n}\relax
+  }%
 }
+\newif\ifMT at patch@ok
+\def\MT at patch@info#1{\MT at info{Applying patch `#1'}}
+\def\MT at patch@warn#1{\MT at warning{Unable to apply patch `#1'}}
+\def\MT at patch@undef#1{\MT at warning{Patch `#1' undefined. Cannot apply it}}
+\let\MT at patches@def\@gobble
+\def\MT at define@patch#1#2#3{%
+  \g at addto@macro\MT at patches@def{,#1}%
+  \MT at def@n{MT at patch@@#1}{#2}%
+  \MT at def@n{MT at patch@undo@@#1}{#3}%
+}
+\def\MT at append@patch#1#2{%
+  \MT at remember@patch{#1}%
+  \apptocmd#1{#2}\relax\MT at patch@okfalse
+}
+\def\MT at patch@patch#1#2#3{%
+  \MT at remember@patch{#1}%
+  \patchcmd#1{#2}{#3}\relax\MT at patch@okfalse
+}
+\def\MT at remember@patch#1{%
+  \MT at ifdefined@n at TF{MT at patch@saved@\string#1}\relax
+    {\MT at let@nc{MT at patch@saved@\string#1}#1%
+     \MT at exp@cs\g at addto@macro{MT at patch@undo@@\MT at patch@name}%
+       {\MT at let@cn#1{MT at patch@saved@\string#1}}}%
+}
+\let\MT at patches@applied\@gobble
+\def\MT at apply@patch#1{%
+  \MT at patch@oktrue
+  \MT at ifdefined@n at TF{MT at patch@@#1}
+    {\MT at in@clist{#1}\MT at patches@applied
+     \ifMT at inlist@
+       \MT at warning{Patch `#1' has already been applied,\MessageBreak
+                   cannot reapply it}%
+     \else
+       \def\MT at patch@name{#1}%
+       \g at addto@macro\MT at patches@applied{,#1}%
+       \@nameuse{MT at patch@@#1}%
+       \@nameuse{MT at patch@\ifMT at patch@ok info\else warn\fi}{#1}%
+     \fi}
+    {\MT at patch@undef{#1}}%
+}
+\def\MT at undo@patch#1{%
+  \MT at in@clist{#1}\MT at patches@applied
+  \ifMT at inlist@
+    \MT at rem@from at clist{#1}\MT at patches@applied
+    \@nameuse{MT at patch@undo@@#1}%
+  \else
+    \MT at warning{Patch `#1' hasn't been applied,\MessageBreak cannot revert it}%
+  \fi
+}
+{\catcode`\#=12
+\MT at addto@setup{%
+  \@ifclassloaded{beamer}
+    {\MT at define@patch{item}
+      {\MT at append@patch\@item\leftprotrusion
+       \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}%
+       \MT at append@patch\beamer@@callorigitem\leftprotrusion
+       \MT at patch@patch\beamer at callorigitem{\ignorespaces}{\ignorespaces\leftprotrusion}}
+      {}}
+    {\@ifclassloaded{simplecv}
+      {\MT at define@patch{item}
+        {\MT at append@patch\@item\leftprotrusion
+         \MT at append@patch\@topic at item\leftprotrusion
+         \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}}
+        {}}%
+      {\MT at define@patch{item}
+        {\MT at append@patch\@item\leftprotrusion
+         \MT at patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}}
+        {}}}%
+  \@ifclassloaded{memoir}
+    {\MT at define@patch{toc}
+      {\MT at append@patch\numberline\leftprotrusion
+       \MT at append@patch\booknumberline\leftprotrusion
+       \MT at append@patch\partnumberline\leftprotrusion
+       \MT at append@patch\chapternumberline\leftprotrusion
+       \MT at append@patch\cftbookafterpnum\noprotrusion
+       \MT at append@patch\cftpartafterpnum\noprotrusion
+       \MT at append@patch\cftchapterafterpnum\noprotrusion
+       \MT at append@patch\cftsectionafterpnum\noprotrusion
+       \MT at append@patch\cftsubsectionafterpnum\noprotrusion
+       \MT at append@patch\cftsubsubsectionafterpnum\noprotrusion
+       \MT at append@patch\cftparagraphafterpnum\noprotrusion
+       \MT at append@patch\cftsubparagraphafterpnum\noprotrusion
+       \MT at append@patch\cftfigureafterpnum\noprotrusion
+       \MT at append@patch\cfttableafterpnum\noprotrusion}
+      {}}
+      {\MT at define@patch{toc}
+        {\MT at append@patch\numberline\leftprotrusion}
+        {}}%
+  \@ifpackageloaded{amsmath}
+    {\MT at define@patch{eqnum}
+      {\MT at patch@patch\tagform@{(}{\leftprotrusion{(}}%
+       \MT at patch@patch\tagform@{)}{\rightprotrusion{)}}%
+       \MT at patch@patch\eqref{\tagform@}{\@nameuse{MT at patch@saved@\string\tagform@}}}%
+      {}}
+    {\MT at define@patch{eqnum}
+      {\MT at patch@patch\@eqnnum{(}{\leftprotrusion{(}}%
+       \MT at patch@patch\@eqnnum{)}{\rightprotrusion{)}}}%
+      {}}%
+  \@ifclassloaded{memoir}
+    {\MT at define@patch{footnote}
+      {\MT at patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}%
+       \MT at patch@patch\@footnotetext{\foottextfont #1}{\foottextfont\leftprotrusion #1}}
+      {}}
+    {\@ifpackageloaded{scrbase}
+      {\MT at define@patch{footnote}
+        {\MT at patch@patch\scr at saved@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}
+        {}}
+      {\MT at define@patch{footnote}
+        {\MT at patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}
+        {}}}%
+}}
 \expandafter\ifx\the\font\nullfont\normalfont\fi
 \def\MT at split@name#1/#2/#3/#4/#5/#6\@nil{%
   \def\MT at encoding{#1}%
@@ -646,6 +767,7 @@
   }%
 }
 \newif\ifMT at nofamily
+\def\MT at protrusion{\MT at maybe@do{pr}}
 \def\MT at get@font at dimen#1{%
   \ifnum\fontdimen#1\MT at font=\z@
     \MT at warning@nl{Font `\MT@@font' does not specify its\MessageBreak
@@ -786,6 +908,208 @@
   \MT at cfg@catcodes
   \inputencoding{\@nameuse{\@tempa}}%
 }
+\def\MT at set@pr at heirs#1{%
+  \lpcode\MT at font #1=\lpcode\MT at font\MT at char\relax
+  \rpcode\MT at font #1=\rpcode\MT at font\MT at char\relax
+}
+\def\MT at set@pr at prefixheirs{%
+  \MT at ifdefined@c at T\MT at pr@inh at name{%
+    \MT at ifdefined@n at T{MT at inh@\MT at pr@inh at name @prefixes}{%
+      \MT at exp@cs\MT at map@tlist at c
+        {MT at inh@\MT at pr@inh at name @prefixes}%
+        \MT at set@pr at prefixes
+    }%
+  }%
+}
+\def\MT at preset@pr{%
+  \expandafter\expandafter\expandafter\MT at preset@pr@
+    \csname MT at pr@c@\MT at pr@c at name @preset\endcsname\@nil
+}
+\def\MT at preset@pr@#1,#2\@nil{%
+  \ifx\MT at pr@unit@\@empty
+    \MT at warn@preset at towidth{pr}%
+    \let\MT at preset@aux\MT at preset@aux at factor
+  \else
+    \def\MT at preset@aux{\MT at preset@aux at space2}%
+  \fi
+  \MT at ifempty{#1}{\let\@tempa\@empty}{\MT at preset@aux{#1}\@tempa}%
+  \MT at ifempty{#2}{\let\@tempb\@empty}{\MT at preset@aux{#2}\@tempb}%
+  \MT at set@all at pr\@tempa\@tempb
+}
+\def\MT at preset@aux at factor#1#2{%
+  \@tempcntb=#1\relax
+  \MT at scale@factor
+  \edef#2{\number\@tempcntb}%
+}
+\def\MT at preset@aux at space#1#2#3{%
+  \def\@tempb{#2}%
+  \MT at get@space at unit#1%
+  \MT at scale@to at em
+  \edef#3{\number\@tempcntb}%
+}
+\def\MT at warn@preset at towidth#1{%
+  \MT at warning@nl{%
+    Cannot preset characters relative to their widths\MessageBreak
+    for \@nameuse{MT at abbr@#1} list `\@nameuse{MT@#1 at c@name}'.
+    Presetting them\MessageBreak relative to 1em instead}%
+}
+\MT at ifdefined@c at TF\noprotrusion\relax{
+  \DeclareRobustCommand\noprotrusion{\leavevmode\kern-\p@\kern\p@}
+}
+\newbox\MT at tempbox
+\newdimen\MT at leftmarginkern
+\newdimen\MT at rightmarginkern
+\DeclareRobustCommand\leftprotrusion{%
+  \MT at toks{}%
+  \MT at prot@get at firstchar
+}
+\long\def\MT at prot@l#1{%
+  \MT at get@prot{#1}%
+  \ifdim\MT at leftmarginkern=\z@ \else
+    \leavevmode
+    \MT at vinfo{|<< adding left margin kern for `\@tempa':\MessageBreak
+                  \the\MT at leftmarginkern \on at line}%
+    \kern\MT at leftmarginkern
+  \fi
+  #1%
+}
+\DeclareRobustCommand\rightprotrusion{\MT at prot@r}
+\long\def\MT at prot@r#1{%
+  #1%
+  \MT at get@prot{#1}%
+  \ifdim\MT at rightmarginkern=\z@ \else
+    \MT at vinfo{>>| adding right margin kern for `\@tempa':\MessageBreak
+                  \the\MT at rightmarginkern \on at line}%
+    \kern\MT at rightmarginkern
+  \fi
+}
+\long\def\MT at get@prot#1{%
+  \MT at leftmarginkern=\z@
+  \MT at rightmarginkern=\z@
+  \begingroup
+    \setbox\MT at tempbox\vbox{%
+      \everypar{}%
+      \parfillskip=\z at skip
+      \hbadness\@M
+      \@newlistfalse
+      \noindent #1}%
+    \vbadness=\@M
+    \splittopskip=\z@
+    \setbox\MT at tempbox\vbox{%
+      \global\setbox\MT at tempbox=\vsplit\MT at tempbox to \normalbaselineskip
+      \unvbox\MT at tempbox
+      \global\setbox\MT at tempbox=\lastbox
+    }%
+  \endgroup
+  \ifhbox\MT at tempbox
+    \def\@tempa{#1}%
+    \MT at leftmarginkern=\leftmarginkern\MT at tempbox\relax
+    \MT at rightmarginkern=\rightmarginkern\MT at tempbox\relax
+  \fi
+}
+\def\MT at prot@ifx#1{%
+  \ifx\MT at prot@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+\def\MT at prot@ifcat#1{%
+  \ifcat#1\noexpand\MT at prot@next\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+^^X\def\MT at prot@ifmacro{%
+^^X  \expandafter\MT at prot@ifmacro@\meaning\MT at prot@next\@nil
+^^X}
+^^X\edef\MT at prot@ifmacro@#1\@nil{%
+^^X  \noexpand\MT at prot@ifmacro@@#1{}{}\detokenize{macro:->}\noexpand\@nil
+^^X}
+^^X\edef\MT at temp{%
+^^X  \def\noexpand\MT at prot@ifmacro@@##1\detokenize{macro:->}##2\noexpand\@nil{%
+^^X    \noexpand\ifx\relax##1\relax
+^^X    \unexpanded{\expandafter\@firstofone\else\expandafter\@gobble\fi}%
+^^X  }%
+^^X}
+^^X\MT at temp
+^^Q\let\MT at prot@ifmacro\@gobble
+\def\MT at prot@iffirstcmd#1{%
+  \ifx\relax#1\relax\expandafter\@secondoftwo\else
+    \MT at exp@two at c\ifx\@car\MT at prot@next\relax\@empty\@nil#1%
+      \expandafter\expandafter\expandafter\@firstoftwo
+    \else
+      \expandafter\expandafter\expandafter\@secondoftwo
+    \fi
+  \fi
+}
+\def\MT at getthird#1#2#3#4\@nil{#3}
+\def\MT at prot@iflicrcmd#1{%
+  \MT at exp@cs\MT at prot@iffirstcmd{#1-cmd}{%
+    \expandafter\expandafter\expandafter\let
+      \expandafter\expandafter\expandafter\@tempa
+      \expandafter\MT at getthird\MT at prot@next\relax\@nil
+    \MT at exp@two at c\ifx\@car\@tempa\relax\@nil\@text at composite
+      \def\MT at temp*##1##2{\MT at prot@l{##1##2}}%
+    \else
+      \def\MT at temp*##1{\MT at prot@l{##1}}%
+    \fi
+    \@gobble
+  }\@firstofone
+}
+\def\MT at prot@get at firstchar{\futurelet\MT at prot@next\MT at prot@get at first@char}
+\def\MT at prot@get at nextchar{\futurelet\MT at prot@next\MT at prot@get at next@char}
+\def\MT at prot@get at first@char{%
+  \def\MT at temp*##1{\MT at prot@get at firstchar}%
+  \MT at prot@ifcat\bgroup{%
+    \long\def\MT at temp*##1{{\MT at prot@l{##1}}}%
+  }{%
+    \MT at prot@ifx\ignorespaces\relax{%
+      \MT at prot@ifx\relax\relax{%
+        \MT at prot@ifx\@sptoken{%
+          \def\MT at temp* {\MT at prot@get at firstchar}%
+        }{%
+          \def\MT at temp*{\MT at prot@addtoken at first}%
+          \MT at prot@ifcat{a}\relax{%
+            \MT at prot@ifcat{!}\relax{%
+              \def\MT at temp*{}%
+              \MT at prot@ifmacro{%
+                \MT at prot@iffirstcmd\UTFviii at two@octets{%
+                  \def\MT at temp*##1##2{\MT at prot@l{##1##2}}%
+                }{%
+                  \MT at prot@iffirstcmd\UTFviii at three@octets{%
+                    \def\MT at temp*##1##2##3{\MT at prot@l{##1##2##3}}%
+                  }{%
+                    \MT at prot@iffirstcmd\UTFviii at four@octets{%
+                      \def\MT at temp*##1##2##3##4{\MT at prot@l{##1##2##3##4}}%
+                    }{%
+                      \MT at prot@iflicrcmd{T1}{%
+                        \MT at prot@iflicrcmd{TU}{%
+                          \MT at prot@iflicrcmd{LY1}{%
+                            \MT at prot@iflicrcmd{OT1}{%
+                              \MT at prot@iflicrcmd{T2A}\relax % should we add more encodings?
+                            }%
+                          }%
+                        }%
+                      }%
+                    }%
+                  }%
+                }%
+              }%
+            }%
+          }%
+        }%
+      }%
+    }%
+  }%
+  \MT at temp*%
+}
+\def\MT at prot@get at next@char{%
+  \def\MT at temp*{\MT at prot@addtoken at next}%
+  \MT at prot@ifcat{a}\relax{%
+    \MT at prot@ifcat{!}\relax{%
+      \def\MT at temp*{\MT at prot@l{\the\MT at toks}}%
+    }%
+  }%
+  \MT at temp*%
+}
+\def\MT at prot@addtoken at first#1{%
+  \edef\MT at temp{\MT at toks={\the\MT at toks\noexpand#1}}\MT at temp
+  \MT at prot@get at nextchar
+}
 \newif\ifMT at nonselected
 \DeclareRobustCommand\textls{%
   \@ifstar{\let\MT at ls@adjust@\MT at ls@adjust at empty\MT at textls}%
@@ -815,29 +1139,31 @@
 \def\MT at ls@too at large#1{%
   \ifnum#1>\MT at tr@max
     \MT at warning{Maximum for option `letterspace' is \number\MT at tr@max}%
-    \let#1\MT at tr@max
+    \edef#1{\number\MT at tr@max}%
   \else
     \ifnum#1<\MT at tr@min
       \MT at warning{Minimum for option `letterspace' is \number\MT at tr@min}%
-      \let#1\MT at tr@min
+      \edef#1{\number\MT at tr@min}%
     \fi
   \fi
 }
 \newdimen\MT at outer@kern
-\def\MT at load@list#1{%
-  \edef\@tempa{#1}%
+\def\MT at load@list#1%
+  {\edef\@tempa{#1}%
   \MT at let@cn\@tempb{MT@\MT at feat @c@\@tempa @load}%
   \MT at ifstreq\@tempa\@tempb{%
     \MT at error{\@nameuse{MT at abbr@\MT at feat} list `\@tempa' cannot load itself}{}%
   }{%
-    \ifx\@tempb\relax \else
+    \ifx\@tempb\relax
+    \else
       \MT at ifdefined@n at TF{MT@\MT at feat @c@\@tempb}{%
         \MT at vinfo{... : First loading \@nameuse{MT at abbr@\MT at feat} list `\@tempb'}%
         \begingroup
           \MT at load@list\@tempb
         \endgroup
-        \edef\MT at curr@list at name{\@nameuse{MT at abbr@\MT at feat} list
-          \noexpand\MessageBreak`\@tempb'}%
+        \edef\MT at curr@list at name{%
+                  \@nameuse{MT at abbr@\MT at feat} list \noexpand\MessageBreak
+                  `\@tempb'}%
         \MT at let@cn\@tempc{MT@\MT at feat @c@\@tempb}%
         \expandafter\MT at set@codes\@tempc,\relax,%
       }{%
@@ -1107,12 +1433,12 @@
   \fi
 }
 \def\MT at is@opt at char#1\iffontchar#2\char#3\else#4\fi\relax{%
-  \ifx\\#1\\%
+  \MT at ifempty{#1}{%
     \iffontchar#2%
       \expandafter\chardef
         \csname\MT at encoding\MT at detokenize@c\@tempa\endcsname=#3\relax
     \fi
-  \fi
+  }\relax
 }
 \begingroup
   \catcode`\/=\z@
@@ -1227,7 +1553,7 @@
     \MT at warning@nl{One or more slots in the configuration are unknown.\MessageBreak
                    Make sure that no text commands are used.\MessageBreak
                    See the documentation for details (the note\MessageBreak
-                   on `#1' in section 9: `Hints and caveats')}%
+                   on `#1' in section 11: `Hints and caveats')}%
     \MT at glet\MT at warn@unknown\relax}%
 }
 \let\MT at font@list\@empty
@@ -1426,9 +1752,9 @@
 }
 \newcommand\MT at DeclareSet[3][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at declare@sets{##1}{#2}{#3}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at declare@sets{##1}{#2}{#3}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{set declaration `#2'}{%
           \MT at exp@one at n\MT at declare@sets
@@ -1435,7 +1761,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}{#3}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -1645,9 +1971,9 @@
 }
 \newcommand*\MT at UseMicrotypeSet[2][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at use@set{##1}{#2}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at use@set{##1}{#2}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{activation of set `#2'}{%
           \MT at exp@one at n\MT at use@set
@@ -1654,7 +1980,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -1676,9 +2002,9 @@
 }
 \newcommand*\MT at DeclareMicrotypeSetDefault[2][]{%
   \MT at ifempty{#1}{%
-    \MT at map@clist at c\MT at features{{\MT at set@default at set{##1}{#2}}}%
+    \MT at map@clist at c\MT at features{\begingroup\MT at set@default at set{##1}{#2}\endgroup}%
   }{%
-    \MT at map@clist at n{#1}{{%
+    \MT at map@clist at n{#1}{\begingroup
       \MT at ifempty{##1}\relax{%
         \MT at is@feature{##1}{declaration of default set `#2'}{%
           \MT at exp@one at n\MT at set@default at set
@@ -1685,7 +2011,7 @@
             {\csname MT at rbba@##1\endcsname}{#2}%
         }%
       }%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -1871,17 +2197,17 @@
 }
 \def\MT at set@inh at list#1#2{%
   \MT at ifempty\MT at inh@feat{%
-    \MT at map@clist at c\MT at features{{%
+    \MT at map@clist at c\MT at features{\begingroup
       \MT at ifstreq{##1}{tr}\relax{\MT at declare@char at inh{##1}{#1}{#2}}%
-    }}%
+    \endgroup}%
   }{%
-    \MT at map@clist at c\MT at inh@feat{{%
+    \MT at map@clist at c\MT at inh@feat{\begingroup
       \KV@@sp at def\@tempa{##1}%
       \MT at ifempty\@tempa\relax{%
         \edef\@tempa{\csname MT at rbba@\@tempa\endcsname}%
         \MT at ifstreq\@tempa{tr}\relax{%
           \MT at exp@one at n\MT at declare@char at inh{\@tempa}{#1}{#2}}}%
-    }}%
+    \endgroup}%
   }%
   \MT at end@catcodes
 }
@@ -2159,12 +2485,16 @@
     }%
   \fi
 }
-\MT at def@bool at opt{final}{%
-  \csname if\@tempa\endcsname
-    \MT at draftfalse
-  \else
-    \MT at drafttrue
-  \fi
+\MT at def@bool at opt{final}{}
+\define at key{MT}{disable}[true]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{true}\MT at disabletrue{%
+    \MT at ifstreq\@tempa{ifdraft}{\ifMT at draft\MT at disabletrue\fi}{%
+      \MT at ifstreq\@tempa{false}\relax{%
+        \MT at optwarn@admissible{#1}{disable}%
+      }%
+    }%
+  }%
 }
 \define at key{MT}{verbose}[true]{%
   \let\MT at vinfo\MT at info@nl
@@ -2210,6 +2540,40 @@
               character widths}}%
   }%
 }
+\let\MT at patches@list\relax
+\let\MT at nopatches@list\@empty
+\define at key{MT}{patch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\MT at patches@list\@empty}
+      {\def\MT at patches@list{#1}}}%
+}
+\define at key{MT}{nopatch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    {\let\MT at nopatches@list\relax}
+    {\MT at ifstreq\@tempa{none}
+      \relax
+      {\def\MT at nopatches@list{#1}}}%
+}
+\MT at addto@setup{%
+  \ifx\MT at patches@list\relax
+    \let\MT at patches@list\MT at patches@def
+  \fi
+  \ifx\MT at nopatches@list\@empty\else
+    \ifx\MT at nopatches@list\relax
+      \let\MT at nopatches@list\MT at patches@def
+    \fi
+    \MT at map@clist at c\MT at nopatches@list{%
+      \MT at rem@from at clist{#1}\MT at patches@list}%
+  \fi
+  \ifx\MT at patches@list\@empty\else
+^^X    \MT at map@clist at c\MT at patches@list{\MT at apply@patch{#1}}%
+^^Q    \MT at warning@nl{Patches require the etex extensions. Ignoring them}%
+  \fi
+}
 \let\MT at endinput\relax
 \ifx\MT at engine\relax
   \MT at warning@nl{You don't seem to be using pdftex, luatex or xetex.\MessageBreak
@@ -2256,21 +2620,45 @@
     }%
   }%
 }
-\MT at ifdefined@c at T\MicroType at Hook{\MT at warning{%
+\MT at ifdefined@c at T\MicroType at Hook{\MT at error{%
   Command \string\MicroType at Hook\space is deprecated.\MessageBreak
-      Use \string\Microtype at Hook\space instead}\MicroType at Hook}
+  Use \string\Microtype at Hook\space instead}
+  {You might want to inform the font package authors.}\MicroType at Hook}
 \MT at ifdefined@c at T\Microtype at Hook\Microtype at Hook
 \def\microtypesetup{\setkeys{MT}}
 \MT at addto@setup{\def\microtypesetup#1{\setkeys{MTX}{#1}\selectfont}}
 \let\MT at saved@setupfont\MT at setupfont
-\define at key{MTX}{disable}[]{%
-  \MT at info{Inactivate `\MT at MT' package}%
+\define at key{MTX}{deactivate}[]{%
+  \MT at info{Deactivate `\MT at MT' package}%
   \let\MT at setupfont\relax
 }
-\define at key{MTX}{enable}[]{%
+\define at key{MTX}{reactivate}[]{%
   \MT at info{Reactivate `\MT at MT' package}%
   \let\MT at setupfont\MT at saved@setupfont
 }
+\define at key{MTX}{patch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\@tempa\@empty}
+      \relax}%
+  \ifx\@tempa\@empty\else
+^^X    \MT at map@clist at c\@tempa{\MT at apply@patch{##1}}%
+^^Q    \MT at warning@nl{Patches require the etex extensions. Ignoring them}%
+  \fi
+}
+\define at key{MTX}{nopatch}[all]{%
+  \def\@tempa{#1}%
+  \MT at ifstreq\@tempa{all}
+    \relax
+    {\MT at ifstreq\@tempa{none}
+      {\let\@tempa\@empty}
+      \relax}%
+  \ifx\@tempa\@empty\else
+^^X    \MT at map@clist at c\@tempa{\MT at undo@patch{##1}}%
+  \fi
+}
 \def\MT at ProcessOptionsWithKV#1{%
   \let\@tempc\relax
   \let\MT at temp\@empty
@@ -2290,8 +2678,8 @@
 \def\MT at getkey#1=#2\@nil{#1}
 \MT at ProcessOptionsWithKV{MT}
 \MT at addto@setup{%
-\ifMT at draft
-  \MT at warning@nl{`draft' option active.\MessageBreak
+\ifMT at disable
+  \MT at warning@nl{The `disable' option is in effect.\MessageBreak
                  Disabling all micro-typographic extensions.\MessageBreak
                  This might lead to different line and page breaks}%
   \let\MT at setupfont\relax

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.
@@ -164,10 +165,9 @@
      ү = {ұ},
      Г = {Γ}, % Greek
      П = {Π}, % Greek
+   % missing: tipa, math, symbols, ...
    }
 
-   % missing: tipa, math, symbols, ...
-
 %%% -----------------------------------------------------------------------
 %%% PROTRUSION
 
@@ -485,7 +485,6 @@
      family   = Charis SIL,
      shape    = {sc}  }
    {
-    % ᴀ = {100,100}, % etc., doesn't work with \textsc
      /a.\MT at CHARIS@SC = {100,100},
      /c.\MT at CHARIS@SC = {50,  },
      /d.\MT at CHARIS@SC = {  ,50},

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-EBGaramond.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-EBGaramond.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-EBGaramond.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -5,6 +5,7 @@
 %% The original source files were:
 %%
 %% microtype.dtx  (with options: `config,cfg-t,ebg')
+%% microtype-utf.dtx  (with options: `EBGaramond')
 %% 
 %% ------------------------------------------------------------------------
 %% 
@@ -18,11 +19,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.
@@ -38,15 +40,47 @@
 %% ------------------------------------------------------------------------ 
 %%
 \ProvidesFile
-  {mt-EBGaramond.cfg}[2021/02/22 v1.6 microtype config. file: EB Garamond / Adobe Garamond (RS)]
+  {mt-EBGaramond.cfg}[2021/10/25 v2.0 microtype config. file: EB Garamond / Adobe Garamond (RS)]
 
 %%% -----------------------------------------------------------------------
+%%% CHARACTER INHERITANCE
+
+\DeclareCharacterInheritance
+  { encoding = LGR,
+    family = {EBGaramond-OsF,EBGaramond-TOsF,EBGaramond-LF,EBGaramond-TLF}
+  }
+  {
+    A = {009,012,253},
+ (l)E = {199},
+    H = {010},
+ (l)H = {159},
+    I = {219},
+ (l)I = {155},
+    O = J,
+ (l)O = {151},
+    U = {013,223},
+    W = {011},
+    a = {014,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
+         144,145,146,148,149,150,248},
+    e = {224,225,226,227,232,233,234,235},
+    h = {152,153,154,156,157,158,160,161,162,163,164,165,166,167,168,169,170,
+         171,172,173,174,175,249},
+    i = {008,200,201,202,203,208,209,210,211,216,217,218,240,241,242,243},
+    o = {228,229,230,231,236,237,238,239},
+    r = {251,252},
+    u = {015,204,205,206,207,212,213,214,215,220,221,222,244,245,246,247},
+    w = {176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
+         193,194,196,197,198,250},
+    \textstigma = \textvarstigma,
+    . = {059}  % ano teleia
+  }
+
+%%% -----------------------------------------------------------------------
 %%% PROTRUSION
 
 \SetProtrusion
    [ name     = EBGaramond-default ]
-   { encoding = OT1,
-     family   = {EBGaramond-LF,EBGaramond-OsF,EBGaramond-TLF,EBGaramond-TOsF} }
+   { }
    {
      A = {50,50},
    \AE = {50,  },
@@ -60,13 +94,14 @@
      O = {50,50},
    \OE = {50,  },
      Q = {50,70},
-     T = {50,50},
+     R = {  ,70},
+     T = {70,70},
      V = {50,50},
      W = {50,50},
      X = {50,50},
      Y = {50,50},
      k = {  ,50},
-     p = {50,50},
+     p = {  ,50},
      q = {50,  },
      r = {  ,50},
      t = {  ,70},
@@ -74,17 +109,9 @@
      w = {50,50},
      x = {50,50},
      y = {  ,50},
-     1 = {150,150},
-     2 = {50,50},
-     3 = {50,50},
-     4 = {50,50},
-     5 = {50,50},
-     6 = {50,50},
-     7 = {50,80},
-     9 = {50,50},
-     . = { ,700},
+     . = { ,600},
     {,}= { ,500},
-     : = { ,500},
+     : = { ,400},
      ; = { ,300},
      ! = { ,100},
      ? = { ,100},
@@ -93,19 +120,65 @@
      & = {50,100},
     \% = {50,50},
      * = {300,300},
-     + = {300,300},
+     + = {250,250},
      ( = {100,   },    ) = {   ,200},
      / = {100,200},
      - = {300,500},
      \textendash       = {300,300},   \textemdash        = {200,200},
-     \textquoteleft    = {500,700},   \textquoteright    = {500,700},
-     \textquotedblleft = {300,400},   \textquotedblright = {300,400}
+     \textquoteleft    = {300,500},   \textquoteright    = {400,400},
+     \textquotedblleft = {300,300},   \textquotedblright = {300,300}
    }
 
 \SetProtrusion
+   [ name     = EBGaramond-OT1,
+     load     = EBGaramond-default ]
+   { }
+   {
+     "00 = {   ,150}, % \Gamma
+     "01 = {100,100}, % \Delta
+     "02 = { 50, 50}, % \Theta
+     "03 = {100,100}, % \Lambda
+     "04 = { 50, 50}, % \Xi
+     "07 = {100,100}, % \Upsilon
+     "08 = { 50, 50}, % \Phi
+     "09 = { 50, 50}, % \Psi
+     "0A = { 50, 50}, % \Omega
+     138 = {   , 50}, % \L
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-OT1-LF,
+     load     = EBGaramond-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-OT1-TOsF,
+     load     = EBGaramond-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+\SetProtrusion
    [ name     = EBGaramond-T1,
      load     = EBGaramond-default ]
-   { encoding = {T1,LY1},
+   { encoding = {LY1},
      family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF} }
    {
        _ = {100,100},
@@ -112,7 +185,7 @@
      \textbackslash    = {100,200},
      \quotesinglbase   = {400,400},   \quotedblbase      = {400,400},
      \guilsinglleft    = {400,400},   \guilsinglright    = {300,500},
-     \guillemotleft    = {300,300},   \guillemotright    = {200,400},
+     \guillemotleft    = {300,300},   \guillemotright    = {200,300},
      \textexclamdown   = {100,   },   \textquestiondown  = {100,   },
      \textbraceleft    = {400,200},   \textbraceright    = {200,400},
      \textless         = {200,100},   \textgreater       = {100,200}
@@ -119,10 +192,101 @@
    }
 
 \SetProtrusion
+   [ name     = EBGaramond-T1-LF,
+     load     = EBGaramond-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-T1-TOsF,
+     load     = EBGaramond-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+\SetProtrusion
+  [ name = EBGaramond-LGR ]
+  { }
+  {
+     A = {50,50},
+     D = {100,100},
+     F = {50,50},
+     G = {  ,150},
+     K = {  ,50},
+     L = {100,100},
+     O = {50,50},
+     U = {100,100},
+     T = {50,50},
+     W = {  ,50},
+     Y = {50,50},
+     . = { ,600},
+    {,}= { ,500},
+     : = { ,400},
+     ; = { ,300},
+     ! = { ,100},
+     ? = { ,100},
+     ~ = {200,250},
+    \% = {50,50},
+     * = {300,300},
+     + = {250,250},
+    {=}= { 50, 50},
+     ( = {100,   },    ) = {   ,200},
+     / = {100,200},
+     - = {300,500},
+     \texteuro = { 50,100},
+     \textendash       = {300,300},   \textemdash        = {200,200},
+     \textquoteleft    = {300,500},   \textquoteright    = {400,400},
+     \guillemotleft    = {300,300},   \guillemotright    = {200,400},
+  }
+
+\SetProtrusion
+   [ name     = EBGaramond-LGR-LF,
+     load     = EBGaramond-LGR ]
+   { encoding = LGR,
+     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF} }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-LGR-TOsF,
+     load     = EBGaramond-LGR ]
+   { encoding = LGR,
+     family   = {EBGaramond-TOsF} }
+   {
+     1 = {150,150},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,80},
+     8 = {50,50},
+     9 = {50,50},
+   }
+
+\SetProtrusion
    [ name     = EBGaramond-it   ]
-   { encoding = OT1,
-     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
-     shape    = {it,sl}  }
+   { }
    {
      A = {50,  },
    \AE = {50,  },
@@ -172,11 +336,79 @@
    }
 
 \SetProtrusion
+   [ name     = EBGaramond-it-OT1,
+     load     = EBGaramond-it   ]
+   { }
+   {
+     "00 = {   ,150}, % \Gamma
+     "01 = {100,100}, % \Delta
+     "02 = { 50, 50}, % \Theta
+     "03 = {100,100}, % \Lambda
+     "04 = { 50, 50}, % \Xi
+     "07 = {100,100}, % \Upsilon
+     "08 = { 50, 50}, % \Phi
+     "09 = { 50, 50}, % \Psi
+     "0A = { 50, 50}, % \Omega
+     138 = {   , 50}, % \L
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-OT1-LF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-TLF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {80,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,50},
+     8 = {50,50},
+     9 = {50,  },
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-OT1-OsF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-OsF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {  ,80},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-OT1-TOsF,
+     load     = EBGaramond-it-OT1 ]
+   { encoding = OT1,
+     family   = {EBGaramond-TOsF},
+     shape    = it }
+   {
+     0 = {150,150},
+     1 = {150,150},
+     2 = {80,80},
+     3 = {50,80},
+     4 = {50,80},
+     5 = {50,80},
+     6 = {50,50},
+     7 = {50,100},
+     8 = {50,50},
+     9 = {50,80},
+   }
+
+\SetProtrusion
    [ name     = EBGaramond-it-T1,
      load     = EBGaramond-it   ]
-   { encoding = {T1,LY1},
+   { encoding = {LY1},
      family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
-     shape    = {it,sl}  }
+     shape    = it       }
    {
      _ = {100,100},
      156 = {50,  },  % IJ
@@ -190,10 +422,61 @@
   }
 
 \SetProtrusion
-   [ name     = EBGaramond-sc,
-     load     = EBGaramond-default ]
+   [ name     = EBGaramond-it-T1-LF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-TLF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {80,50},
+     4 = {50,50},
+     5 = {50,50},
+     6 = {50,50},
+     7 = {50,50},
+     8 = {50,50},
+     9 = {50,  },
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-T1-OsF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-OsF},
+     shape    = it }
+   {
+     1 = {50,50},
+     2 = {50,50},
+     3 = {  ,80},
+     4 = {50,50},
+     7 = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-it-T1-TOsF,
+     load     = EBGaramond-it-T1 ]
+   { encoding = T1,
+     family   = {EBGaramond-TOsF},
+     shape    = it }
+   {
+     0 = {150,150},
+     1 = {150,150},
+     2 = {80,80},
+     3 = {50,80},
+     4 = {50,80},
+     5 = {50,80},
+     6 = {50,50},
+     7 = {50,100},
+     8 = {50,50},
+     9 = {50,80},
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-sc-OT1-Prop,
+     load     = EBGaramond-OT1-LF ]
    { encoding = OT1,
-     family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
+     family   = {EBGaramond-LF,EBGaramond-OsF},
      shape    = sc }
    {
      a = {50,50},
@@ -203,7 +486,6 @@
      g = {50,  },
      j = {50,  },
      l = {  ,50},
-   013 = {  ,50}, % fl
      o = {50,50},
    \oe = {50,  },
      q = {50,70},
@@ -213,9 +495,31 @@
    }
 
 \SetProtrusion
+   [ name     = EBGaramond-sc-OT1-Tab,
+     load     = EBGaramond-OT1-TOsF ]
+   { encoding = OT1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
    [ name     = EBGaramond-sc-T1,
      load     = EBGaramond-T1     ]
-   { encoding = {T1,LY1},
+   { encoding = {LY1},
      family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
      shape    = sc }
    {
@@ -226,7 +530,6 @@
      g = {50,  },
      j = {50,  },
      l = {  ,50},
-   029 = {  ,50}, % fl
      o = {50,50},
    \oe = {50,  },
      q = {50,70},
@@ -236,6 +539,138 @@
    }
 
 \SetProtrusion
+   [ name     = EBGaramond-sc-T1-Prop,
+     load     = EBGaramond-T1-LF ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-sc-T1-Tab,
+     load     = EBGaramond-T1-TOsF ]
+   { encoding = T1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = sc }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-OT1-Prop,
+     load     = EBGaramond-it-OT1-LF ]
+   { encoding = OT1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-OT1-Tab,
+     load     = EBGaramond-it-OT1-TOsF ]
+   { encoding = OT1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-T1-Prop,
+     load     = EBGaramond-it-T1-LF ]
+   { encoding = T1,
+     family   = {EBGaramond-LF,EBGaramond-OsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
+   [ name     = EBGaramond-scit-T1-Tab,
+     load     = EBGaramond-it-T1-TOsF ]
+   { encoding = T1,
+     family   = {EBGaramond-TLF,EBGaramond-TOsF},
+     shape    = scit }
+   {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50}
+   }
+
+\SetProtrusion
    [ name     = EBGaramond-textcomp ]
    { encoding = TS1,
      family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF} }
@@ -281,7 +716,7 @@
    [ name     = EBGaramond-textcomp-it ]
    { encoding = TS1,
      family   = {EBGaramond-LF,EBGaramond-TLF,EBGaramond-OsF,EBGaramond-TOsF},
-     shape    = {it,sl} }
+     shape    = it }
    {
      \textquotestraightbase    = {400,400},
      \textquotestraightdblbase = {300,400},
@@ -318,6 +753,478 @@
      \textdiv                  = {200,200}
    }
 
+
+%%% -----------------------------------------------------------------------
+%%% INHERITANCE
+
+%% for xetex (EU1) and luatex (EU2), resp. both (TU)
+\DeclareCharacterInheritance
+   { encoding = {TU,EU1,EU2},
+     family   = EBGaramond }
+   {
+     A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǎ,Ǟ,Ǡ,Ǻ,Ȁ,Ȃ,Ȧ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ẵ,Ặ,Å,/Adieresis.deu,
+          А,Ӑ,Ӓ,                % Cyrillic
+          Α,Ά,Ἀ,Ἁ,Ἂ,Ἃ,Ἄ,Ἅ,Ἆ,Ἇ,ᾈ,ᾉ,ᾊ,ᾋ,ᾌ,ᾍ,ᾎ,ᾏ,Ᾰ,Ᾱ,Ὰ,Ά,ᾼ}, % Greek
+     B = {Ḃ,Ḅ,Ḇ,
+          В,                    % Cyrillic
+          Β},                   % Greek
+     C = {Ç,Ć,Ĉ,Ċ,Č,Ḉ,
+          Ϲ,С,Ҫ,                % Cyrillic
+          Ⅽ},                   % Roman numeral
+     D = {Ď,Đ,Ð,Ḋ,Ḍ,Ḏ,Ḑ,Ḓ,
+          Ɖ,Ɗ,                  % Cyrillic
+          Ⅾ},                   % Roman numeral
+     E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ḕ,Ḗ,Ȩ,Ḙ,Ḛ,Ḝ,Ẹ,Ẻ,Ẽ,Ế,Ề,Ể,Ễ,Ệ,Ȅ,Ȇ,
+          Ѐ,Ё,Ӗ,Е,              % Cyrillic
+          Ε},                   % Greek
+  (l)Ε = {Έ,Ἐ,Ἑ,Ἒ,Ἓ,Ἔ,Ἕ,Ὲ,Έ},   % Greek (accents protruded)
+     F = {Ḟ},
+     G = {Ĝ,Ğ,Ġ,Ģ,Ǥ,Ǧ,Ǵ,Ḡ},
+     H = {Ĥ,Ħ,Ȟ,Ḣ,Ḥ,Ḧ,Ḩ,Ḫ,ῌ,Ⱨ,
+          Н,Ң,Ӊ,Ӈ,  %  Ҥ        % Cyrillic
+          Η},                   % Greek
+  (l)Η = {Ή,Ἠ,Ἡ,Ἢ,Ἣ,Ἤ,Ἥ,Ἦ,Ἧ,Ὴ,Ή,ᾘ,ᾙ,ᾚ,ᾛ,ᾜ,ᾝ,ᾞ,ᾟ},
+     I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ǐ,Ȉ,Ȋ,Ḭ,Ḯ,Ỉ,Ị,
+          І,Ї,Ӏ,                % Cyrillic
+          Ι,                    % Greek
+          Ⅰ,Ⅱ,Ⅲ},               % Roman numeral
+  (l)Ι = {Ί,Ϊ,Ἰ,Ἱ,Ἲ,Ἳ,Ἴ,Ἵ,Ἶ,Ἷ,Ῐ,Ῑ,Ὶ,Ί}, % Greek
+     J = {Ĵ,
+          Ј},                   % Cyrillic
+     K = {Ķ,Ǩ,Ḱ,Ḳ,Ḵ,Ⱪ,
+          Κ,K},                 % Greek
+     L = {Ĺ,Ļ,Ľ,Ŀ,Ł,Ḷ,Ḹ,Ḻ,Ḽ,Ⱡ,Ɫ,
+          Ⅼ},                   % Roman numeral
+     M = {Ḿ,Ṁ,Ṃ,
+          М,Ӎ,                  % Cyrillic
+          Μ,                    % Greek
+          Ⅿ},                   % Roman numeral
+     N = {Ñ,Ń,Ņ,Ň,Ŋ,Ǹ,Ṅ,Ṇ,Ṉ,Ṋ,
+          Ν},                    % Greek
+     O = {Ò,Ó,Ô,Õ,Ö,Ø,Ō,Ŏ,Ő,Ǒ,Ǫ,Ǭ,Ǿ,Ȍ,Ȏ,Ȫ,Ȭ,Ȯ,Ȱ,Ṍ,Ṏ,Ṑ,Ṓ,Ọ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ở,Ỡ,Ợ,Ơ,/Odieresis.deu,
+          О,Ӧ,Ө,Ӫ,              % Cyrillic
+          Ο,Ό,Ὀ,Ὁ,Ὂ,Ὃ,Ὄ,Ὅ,Ὸ,Ό}, % Greek
+     P = {Ṕ,Ṗ,Ᵽ,
+          Р,Ҏ,                  % Cyrillic
+          Ρ},                   % Greek
+  (l)Ρ = {Ῥ},                   % Greek
+     Q = {Ԛ},                   % Cyrillic
+     R = {Ŕ,Ŗ,Ř,Ȑ,Ȓ,Ṙ,Ṛ,Ṝ,Ṟ,Ɽ,},
+     S = {Ś,Ŝ,Ş,Š,Ș,Ṡ,Ṣ,Ṥ,Ṧ,Ṩ,
+          Ѕ},                   % Cyrillic
+     T = {Ţ,Ť,Ŧ,Ț,Ṫ,Ṭ,Ṯ,Ṱ,
+          Т,Ҭ,                  % Cyrillic
+          Τ},                   % Greek
+     U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ǔ,Ǖ,Ǘ,Ǚ,Ǜ,Ȕ,Ȗ,Ṳ,Ṵ,Ṷ,Ṹ,Ṻ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự}, % /Udieresis.deu ?
+     V = {Ṽ,Ṿ,/U.LAT,
+          Ⅴ},                   % Roman numeral
+     W = {Ŵ,Ẁ,Ẃ,Ẅ,Ẇ,Ẉ,
+          Ԝ},                   % Cyrillic
+     X = {Ẋ,Ẍ,
+          Х,Ҳ,Ӽ,Ӿ,              % Cyrillic
+          Χ,                    % Greek
+          Ⅹ},                   % Roman numeral
+     Y = {Ý,Ŷ,Ÿ,Ȳ,Ẏ,Ỳ,Ỵ,Ỷ,Ỹ,
+          Ү,Ұ},  % Cyrillic
+     Z = {Ź,Ż,Ž,Ẑ,Ẓ,Ẕ,Ⱬ,
+          Ζ},                   % Greek
+     a = {à,á,â,ã,ä,å,ā,ă,ą,ǎ,ǟ,ǡ,ǻ,ȁ,ȃ,ȧ,ḁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ,ặ,ẚ,
+          а,ӑ,ӓ},               % Cyrillic
+     b = {ḃ,ḅ,ḇ},
+     c = {ç,ć,ĉ,ċ,č,ḉ,
+          с,ҫ,                  % Cyrillic
+          ⅽ},                   % Roman numeral
+     d = {ď,đ,ḋ,ḍ,ḏ,ḑ,ḓ,
+          ⅾ},                   % Roman numeral
+     e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȩ,ḕ,ḗ,ḙ,ḛ,ḝ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ,ȅ,ȇ,
+          е,ѐ,ё,ӗ},             % Cyrillic
+     f = {ḟ,ff,/f.long,/f.DEU,/f_f},
+     fl = {ffl,/longs_l,/longs_longs_l,/f_l},
+     fi = {ffi,/longs_i,/longs_longs_i,/f_i},
+     /f.short = {/f_f.short},
+     g = {ĝ,ğ,ġ,ģ,ḡ,ǥ,ǧ,ǵ},
+     h = {ĥ,ħ,ḣ,ḥ,ḧ,ḩ,ḫ,ẖ,ȟ,ⱨ,
+          ԧ,ԧ},                 % Cyrillic
+     i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ǐ,ȉ,ȋ,ḭ,ỉ,ị,ḯ,/i.TRK,
+          і,ї,                  % Cyrillic
+          ⅰ,ⅱ,ⅲ},               % Roman numeral
+     j = {ĵ,ǰ,
+          ј},                   % Cyrillic
+     k = {ķ,ǩ,ḱ,ḳ,ḵ,ⱪ},
+     l = {ĺ,ļ,ľ,ŀ,ł,ḷ,ḹ,ḻ,ḽ,ⱡ,
+          ӏ,                    % palochka
+          ⅼ},                   % Roman numeral
+     m = {ḿ,ṁ,ṃ,
+          ⅿ},                   % Roman numeral
+     n = {ñ,ń,ņ,ň,ŋ,ṅ,ṇ,ṉ,ṋ,ǹ}, % ʼn
+     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ǒ,ǫ,ǭ,ǿ,ȍ,ȏ,ȫ,ȭ,ȯ,ȱ,ṍ,ṏ,ṑ,ṓ,ọ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ở,ỡ,ợ,
+          о,ӧ},                 % Cyrillic
+     p = {ṕ,ṗ,
+          р,ҏ},                 % Cyrillic
+     q = {ԛ},                   % Cyrillic
+     r = {ŕ,ŗ,ř,ȑ,ȓ,ṙ,ṛ,ṝ,ṟ},
+     s = {ś,ŝ,ş,š,ș,ṡ,ṣ,ṥ,ṧ,ṩ,
+          ѕ},                   % Cyrillic
+     t = {ţ,ť,ŧ,ț,ṫ,ṭ,ṯ,ṱ,ẗ},
+     u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ǔ,ǖ,ǘ,ǚ,ǜ,ȕ,ȗ,ṳ,ṵ,ṷ,ṹ,ṻ,ụ,ủ,ứ,ừ,ử,ữ,ự,/u.LATmedi},
+     v = {ṽ,ṿ,
+          ⅴ},                   % Roman numeral
+     w = {ŵ,ẁ,ẃ,ẅ,ẇ,ẉ,ẘ,
+          ԝ},                   % Cyrillic
+     x = {ẋ,ẍ,
+          х,ҳ,                  % Cyrillic
+          ⅹ},                   % Roman numeral
+     y = {ý,ÿ,ŷ,ȳ,ẏ,ẙ,ỳ,ỵ,ỷ,ỹ,
+          у,ӯ,ӱ,ӳ,ў},           % Cyrillic
+     z = {ź,ż,ž,ⱬ,ẑ,ẓ,ẕ},
+     Æ = {Ǣ,Ǽ,
+          Ӕ},                   % Cyrillic
+     æ = {ǣ,ǽ,
+          ӕ},                   % Cyrillic
+     DZ = {DŽ},
+     Dz = {Dž},
+     dz = {dž},
+   % Smallcaps
+     /a.sc = {/A.sc},
+     /ae.sc = {/AE.sc},
+     /d.sc = {/D.sc},
+     /f.sc = {/F.sc},
+     /g.sc = {/G.sc},
+     /j.sc = {/J.sc},
+     /l.sc = {/L.sc},
+     /o.sc = {/O.sc},
+     /oe.sc = {/OE.sc},
+     /q.sc = {/Q.sc},
+     /r.sc = {/R.sc},
+     /t.sc = {/T.sc},
+     /y.sc = {/Y.sc},
+   % Cyrillic
+     Г = {Ґ,Ғ,Ѓ,Ӷ},
+     Ж = {Җ,Ӝ,Ӂ,Ѫ},
+     З = {Ҙ,Ӟ},
+     И = {Й,Ҋ,Ӣ,Ӥ,Ѝ},
+     К = {Қ,Ҝ,Ҟ,Ҡ,Ќ,Ӄ},
+     Л = {Ӆ,Ԓ,Ԯ},
+     П = {Ԥ},
+     У = {Ӯ,Ӱ,Ӳ,Ў},
+     Ц = {Ҵ,Џ},
+     Ч = {Ҷ,Ҹ,Ӌ,Ӵ},
+     Ш = {Щ},
+     Ы = {Ӹ},
+     Ь = {Ҍ},
+     Э = {Ӭ},
+     Ѵ = {Ѷ},
+     Ҽ = {Ҿ},
+     Ә = {Ӛ},
+     г = {ѓ,ґ,ғ,ӷ},
+     ж = {җ,ӂ,ӝ,ѫ},
+     з = {ҙ,ӟ},
+     и = {й,ѝ,ҋ,ӣ,ӥ},
+     к = {ќ,қ,ҝ,ӄ}, % ҟ,ҡ
+     л = {ӆ,ԓ,ԯ},
+     м = {ӎ},
+     н = {ң,ӈ,ӊ,ԩ}, %  ҥ
+     п = {ԥ},
+     т = {ҭ},
+     ц = {ҵ},
+     ч = {ҷ,ҹ,ӌ,ӵ},
+     ш = {щ},
+     ы = {ӹ},
+     э = {ӭ},
+     ѳ = {ө,ӫ},
+     ѵ = {ѷ},
+     ү = {ұ},
+     ҽ = {ҿ},
+     ә = {ӛ},
+   % Greek
+     Υ = {Ϋ,ϒ,ϔ,Ῠ,Ῡ},
+  (l)Υ = {Ύ,ϓ,Ὑ,Ὓ,Ὕ,Ὗ,Ὺ,Ύ},
+  (l)Ω = {Ώ,Ὠ,Ὡ,Ὢ,Ὣ,Ὤ,Ὥ,Ὦ,Ὧ,ᾨ,ᾩ,ᾪ,ᾫ,ᾬ,ᾭ,ᾮ,ᾯ,Ὼ,Ώ},
+     Ω = {ῼ,Ω}, % math
+     Δ = {∆}, % math
+     Π = {∏}, % math
+     α = {ά,ἀ,ἁ,ἂ,ἃ,ἄ,ἅ,ἆ,ἇ,ὰ,ά,ᾀ,ᾁ,ᾂ,ᾃ,ᾄ,ᾅ,ᾆ,ᾇ,ᾰ,ᾱ,ᾲ,ᾳ,ᾴ,ᾶ,ᾷ},
+     ε = {έ,ἐ,ἑ,ἒ,ἓ,ἔ,ἕ,ὲ,έ},
+     η = {ή,ἠ,ἡ,ἢ,ἣ,ἤ,ἥ,ἦ,ἧ,ὴ,ή,ῂ,ῃ,ῄ,ῆ,ῇ,ᾐ,ᾑ,ᾒ,ᾓ,ᾔ,ᾕ,ᾖ,ᾗ},
+     ι = {ί,ϊ,ἰ,ἱ,ἲ,ἳ,ἴ,ἵ,ἶ,ἷ,ὶ,ί,ῐ,ῑ,ῒ,ΐ,ῖ,ῗ,ΐ},
+     ο = {ό,ϙ,ὀ,ὁ,ὂ,ὃ,ὄ,ὅ,ὸ,ό},
+     ρ = {ῤ,ῥ},
+     υ = {ΰ,ϋ,ύ,ὐ,ὑ,ὒ,ὓ,ὔ,ὕ,ὖ,ὗ,ὺ,ύ,ῠ,ῡ,ῢ,ΰ,ῦ,ῧ},
+     ω = {ώ,ὠ,ὡ,ὢ,ὣ,ὤ,ὥ,ὦ,ὧ,ὼ,ώ,ᾠ,ᾡ,ᾢ,ᾣ,ᾤ,ᾥ,ᾦ,ᾧ,ῲ,ῳ,ῴ,ῶ,ῷ},
+   % other
+     ⑴  = {⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇},
+     ⒜  = {⒝,⒞,⒟,⒠,⒡,⒢,⒣,⒤,⒥,⒦,⒧,⒨,⒩,⒪,⒫,⒬,⒭,⒮,⒯,⒰,⒱,⒲,⒳,⒴,⒵},
+     🇦  = {🇧,🇨,🇩,🇪,🇫,🇬,🇭,🇮,🇯,🇰,🇱,🇲,🇳,🇴,🇵,🇶,🇷,🇸,🇹,🇺,🇻,🇼,🇽,🇾,🇿},
+     ! = {‼},
+     ? = {⁇},
+     . = {/onedotenleader},
+     /endash = {/figuredash},
+   }
+
+%%% -----------------------------------------------------------------------
+%%% PROTRUSION
+
+\SetProtrusion
+  [ name     = EBGaramond-TU,
+    load     = EBGaramond-T1-LF ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond }
+  {
+   /one.tosf   = {150,150},
+   /two.tosf   = {50,50},
+   /three.tosf = {50,50},
+   /four.tosf  = {50,50},
+   /five.tosf  = {50,50},
+   /six.tosf   = {50,50},
+   /seven.tosf = {50,80},
+   /eight.tosf = {50,50},
+   /nine.tosf  = {50,50},
+   /one.lf     = {50,50},
+   /two.lf     = {50,50},
+   /four.lf    = {50,50},
+   /seven.lf   = {50,50},
+   /one.osf    = {50,50},
+   /two.osf    = {50,50},
+   /four.osf   = {50,50},
+   /seven.osf  = {50,50},
+    Ⅳ =  {   , 35},
+    Ⅵ =  { 35,   },
+    Ⅶ  = { 30,   },
+    Ⅷ  = { 25,   },
+    Ⅸ =  {   , 35},
+    Ⅺ =  { 35,   },
+    Ⅻ =  { 30,   },
+    ⅳ =  {   , 25},
+    ⅵ =  { 25,   },
+    ⅶ  = { 20,   },
+    ⅷ  = { 20,   },
+    ⅸ =  {   , 25},
+    ⅺ =  { 25,   },
+    ⅻ  = { 20,   },
+  % textcomp
+   \textquotesingle = {400,500},
+    ˷ = {200,250},
+    ƒ = {   ,100},
+    ₡ = { 50,   },
+    † = {100,100},
+    ‡ = { 80, 80},
+    • = {   ,100},
+    · = {300,400}, % periodcentered
+   /twodotenleader = {150,200},
+   /ellipsis  = {100,150},
+    ℃ = { 80,   },
+    ° = {400,400},
+    ™ = {100,100},
+    © = {100,100},
+    ® = {100,100},
+    ª = {200,200},
+    º = {200,200},
+    ¹ = {200,200},
+    ² = {200,200},
+    ³ = {200,200},
+    ¬ = {200,   },
+    ¶ = {   ,100},
+    − = {300,300}, % minus
+    ± = {150,200},
+    × = {100,150},
+    ÷ = {150,200},
+    € = { 50,100},
+    ¥ = { 50, 50},
+  % Greek
+    Γ = {   ,150},
+    Δ = {100,100},
+    Θ = { 50, 50},
+    Λ = {100,100},
+    Ξ = { 50, 50},
+    Υ = {100,100},
+    Φ = { 50, 50},
+    Ψ = { 50, 50},
+    Ω = {   , 50},
+    ζ = {   , 50},
+    λ = { 50, 50},
+    γ = { 50, 50},
+    π = { 50, 50},
+    ρ = {   , 50},
+    σ = { 50, 50},
+    τ = { 50, 50},
+    χ = { 50, 50},
+    φ = { 50, 50},
+    ϙ = { 50, 50},
+    ψ = { 50, 50},
+  % Cyrillic
+    Г = {   ,150},
+    Д = { 50, 50},
+    Ж = { 50, 50},
+    К = {   , 50},
+    Л = { 50,   },
+    Љ = { 50, 50},
+    З = { 50, 50},
+    У = { 50,100},
+    Ф = { 50, 50},
+    Ч = { 70,   },
+    Я = { 50,   },
+    Ъ = { 50, 50},
+    Ь = {   , 50},
+    ж = { 50, 50},
+    ф = { 50, 50},
+    ъ = { 50, 50},
+    Ѱ = { 50, 50},
+    г = {   , 50},
+    Ѵ = { 50, 50},
+  % other
+    Þ = {   , 50},
+    þ = {   , 50},
+    Ʌ = {100,100},
+    ⑴  = { 35, 65},
+    ⒜  = { 30, 60},
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-it-TU,
+    load     = EBGaramond-it-T1-LF ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = it }
+  {
+   /zero.tosf  = {150,150},
+   /one.tosf   = {150,150},
+   /two.tosf   = {80,80},
+   /three.tosf = {50,80},
+   /four.tosf  = {50,80},
+   /five.tosf  = {50,80},
+   /six.tosf   = {50,50},
+   /seven.tosf = {50,100},
+   /eight.tosf = {50,50},
+   /nine.tosf  = {50,80},
+   /one.lf     = {50,50},
+   /two.lf     = {50,50},
+   /three.lf   = {80,50},
+   /four.lf    = {50,50},
+   /five.lf    = {50,50},
+   /six.lf     = {50,50},
+   /seven.lf   = {50,50},
+   /eight.lf   = {50,50},
+   /nine.lf    = {50,  },
+   /one.osf    = {50,50},
+   /two.osf    = {50,50},
+   /three.osf  = {  ,80},
+   /four.osf   = {50,50},
+   /seven.osf  = {50,50},
+  % textcomp
+    \textquotesingle = {800,100},
+    − = {300,300}, % minus
+    ˷ = {200,250},
+    † = {200,100},
+    ‡ = { 80, 80},
+    • = {300,   },
+    ℃ = {200,   },
+    ƒ = {100,   },
+    ₡ = {100,   },
+    ™ = {200,   },
+    © = {200,100},
+    ® = {200,100},
+    ¬ = {300,   },
+    ° = {500,100},
+    ± = {200,150},
+    ¹ = {300,100},
+    ² = {300,   },
+    ³ = {300,   },
+    · = {300,500}, % periodcentered
+   /twodotenleader = {150,300},
+   /ellipsis  = {100,200},
+    € = {100,   },
+    × = {200,100},
+    ÷ = {200,200},
+    ¶ = {   ,100},
+    ª = {200,200},
+    º = {200,200},
+    ¥ = { 50, 50},
+  % Greek
+    Δ = {150,   },
+    Θ = { 50,   },
+    Λ = {150,   },
+    Υ = {100, 50},
+    Φ = { 50,   },
+    Χ = { 50,   },
+    Ψ = {100,   },
+    Ω = { 50,   },
+    γ = {   , 50},
+    λ = { 50,   },
+  % Cyrillic
+    Ү = { 50,   },
+    Ч = {100,   },
+    З = {100,   },
+  % other
+    Þ = { 50, 50},
+    þ = {   , 50},
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-sc-TU,
+    load     = EBGaramond-TU ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = sc }
+  {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50},
+  % Greek
+     α = {50,50},
+     γ = {  ,50},
+     δ = {50,50},
+     λ = {50,50},
+     ο = {50,50},
+     τ = {50,50},
+     υ = {50,50},
+     ψ = {50,50},
+  % Cyrillic
+     т = {50,50},
+  }
+
+\SetProtrusion
+  [ name     = EBGaramond-scit-TU,
+    load     = EBGaramond-it-TU ]
+  { encoding = {TU,EU1,EU2},
+    family   = EBGaramond,
+    shape    = scit }
+  {
+     a = {50,50},
+   \ae = {50,  },
+     d = {  ,50},
+     f = {  ,50},
+     g = {50,  },
+     j = {50,  },
+     l = {  ,50},
+     o = {50,50},
+   \oe = {50,  },
+     q = {50,70},
+     r = {  , 0},
+     t = {50,50},
+     y = {50,50},
+  % Greek
+     α = {50,50},
+     γ = {  ,50},
+     δ = {50,50},
+     λ = {50,50},
+     ο = {50,50},
+     τ = {50,50},
+     υ = {50,50},
+     ψ = {50,50},
+  % Cyrillic
+     т = {50,50},
+  }
+
 \endinput
 %%
 %% End of file `mt-EBGaramond.cfg'.

Deleted: trunk/Master/texmf-dist/tex/latex/microtype/mt-FontAwesome.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-FontAwesome.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-FontAwesome.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -1,63 +0,0 @@
-%%
-%% This is file `mt-FontAwesome.cfg',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% microtype-utf.dtx  (with options: `FontAwesome')
-%% 
-%% ------------------------------------------------------------------------
-%% 
-%%                       The `microtype' package
-%%         Subliminal refinements towards typographical perfection
-%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
-%% 
-%% This work may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License, either version 1.3c of this license or (at
-%% your option) any later version. The latest version of this license is in:
-%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
-%% of all distributions of LaTeX version 2005/12/01 or later.
-%% 
-%% This work has the LPPL maintenance status `author-maintained'.
-%% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
-%% 
-%% ------------------------------------------------------------------------
-%%   This is a font-specific configuration file for the `microtype' package.
-%%   It may contain settings for font expansion and character protrusion,
-%%   tracking, interword spacing and additional kerning, as well as
-%%   character inheritance declarations.
-%%   Please consult the documentation for details.
-%% 
-%%   If you think you have found improvements to these settings, please
-%%   let me know.
-%% 
-%%   When modifying this file, also change the identification line below.
-%% ------------------------------------------------------------------------ 
-%%
-\ProvidesFile
-  {mt-FontAwesome.cfg}[2021/02/22 v1.0 microtype config. file: Font Awesome (RS)]
-
-%%% -----------------------------------------------------------------------
-%%% INHERITANCE
-
-%% for xetex (EU1) and luatex (EU2), resp. both (TU)
-\DeclareCharacterInheritance
-  { encoding = {TU,EU1,EU2},
-    family   = {FontAwesome} }
-  { }
-
-%%% -----------------------------------------------------------------------
-%%% PROTRUSION
-
-\SetProtrusion
-   [ name = empty ]
-   { encoding = {TU,EU1,EU2},
-     family   = {FontAwesome} }
-   { }
-
-\endinput
-%%
-%% End of file `mt-FontAwesome.cfg'.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.
@@ -47,8 +48,10 @@
 \DeclareCharacterInheritance
    { encoding = {EU1,EU2,TU},
      family   = Latin Modern Roman }
-   { A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ,
-          Α},  % Greek
+   {
+     A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ,
+           Α  % Greek
+         },
      Æ = {Ǽ},
      B = {฿,
           Β},  % Greek
@@ -58,9 +61,11 @@
           Ε},  % Greek
      G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ},
      H = {Ĥ,Ħ,Ḥ,Ḧ,Ḫ,
-          Η},  % Greek
+           Η  % Greek
+          },
      I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ȉ,Ỉ,Ị,
-          Ι},  % Greek
+          Ι  % Greek
+          },
      J = {Ĵ},
      K = {Ķ,
           Κ},  % Greek
@@ -86,7 +91,7 @@
      c = {ç,ć,ĉ,ċ,č},
      d = {đ,ḍ,ḏ},
      e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ},
-     f = {ff}, % Unicode 64256, glyph name in Latin Modern: /f_f ; in New Computer Modern: /ff
+     f = {ff}, % Unicode 64256, glyph name in Latin Modern Roman: /f_f ; in New Computer Modern: /ff
      g = {ĝ,ğ,ġ,ģ,ǧ,ǵ},
      h = {ĥ,ħ,ḥ,ḧ,ḫ},
      i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ȉ,ỉ,ị},
@@ -94,7 +99,8 @@
      k = {ķ},
      l = {ĺ,ļ,ł,ḷ,ḹ}, % ľ,l·
      n = {ñ,ń,ņ,ň,ṅ,ṇ},
-     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ},
+     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ
+         },
      r = {ŕ,ŗ,ř,ȑ,ṛ,ṙ,ṝ},
      s = {ś,ŝ,ş,š,ș,ṣ},
      t = {ţ,ț,ṭ,ṯ,ẗ}, % ť
@@ -158,8 +164,8 @@
      / = {200,300},
     /backslash    = {200,300},
      ' = {300,400}, % /quotesingle
-     ‘ = {500,700},  ’ = {500,600},
-     “ = {500,300},  ” = {200,600},
+     ‘ = {300,400},  ’ = {300,400},
+     “ = {300,300},  ” = {300,300},
      ‚ = {400,400},  „ = {400,400},
      ‹ = {400,400},  › = {300,500},
      « = {300,200},  » = {100,400},

Deleted: trunk/Master/texmf-dist/tex/latex/microtype/mt-Lato.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-Lato.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-Lato.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -1,82 +0,0 @@
-%%
-%% This is file `mt-Lato.cfg',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% microtype-utf.dtx  (with options: `Lato')
-%% 
-%% ------------------------------------------------------------------------
-%% 
-%%                       The `microtype' package
-%%         Subliminal refinements towards typographical perfection
-%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
-%% 
-%% This work may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License, either version 1.3c of this license or (at
-%% your option) any later version. The latest version of this license is in:
-%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
-%% of all distributions of LaTeX version 2005/12/01 or later.
-%% 
-%% This work has the LPPL maintenance status `author-maintained'.
-%% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
-%% 
-%% ------------------------------------------------------------------------
-%%   This is a font-specific configuration file for the `microtype' package.
-%%   It may contain settings for font expansion and character protrusion,
-%%   tracking, interword spacing and additional kerning, as well as
-%%   character inheritance declarations.
-%%   Please consult the documentation for details.
-%% 
-%%   If you think you have found improvements to these settings, please
-%%   let me know.
-%% 
-%%   When modifying this file, also change the identification line below.
-%% ------------------------------------------------------------------------ 
-%%
-\ProvidesFile
-  {mt-Lato.cfg}[2021/02/22 v1.0 microtype config. file: Lato (RS)]
-
-%%% -----------------------------------------------------------------------
-%%% INHERITANCE
-
-%% for xetex (EU1) and luatex (EU2), resp. both (TU)
-\DeclareCharacterInheritance
-   { encoding = {TU,EU1,EU2},
-     family   = {Lato} }
-   { A = {À,Á,Â,Ã,Ä,Å,Ą},
-     a = {à,á,â,ã,ä,å,ą},
-     C = {Ć,Ç},
-     c = {ć,ç},
-     D = {Ð},
-     E = {È,É,Ê,Ë,Ę},
-     e = {è,é,ê,ë,ę},
-     I = {Ì,Í,Î,Ï},
-     i = {ì,í,î,ï,ı},
-     L = {Ł},
-     l = {ł},
-     N = {Ń,Ñ},
-     n = {ń,ñ},
-     O = {Ø,Ò,Ó,Ô,Õ,Ö},
-     o = {ø,ò,ó,ô,õ,ö},
-     S = {Ś,Š},
-     s = {ś,š},
-     U = {Ù,Ú,Û,Ü},
-     u = {ù,ú,û,ü},
-     Y = {Ý,Ÿ},
-     y = {ý,ÿ},
-     Z = {Ź,Ż,Ž},
-     z = {ź,ż,ž}
-   }
-
-%%% -----------------------------------------------------------------------
-%%% PROTRUSION
-
- %% No settings yet.
-
-\endinput
-%%
-%% End of file `mt-Lato.cfg'.

Added: trunk/Master/texmf-dist/tex/latex/microtype/mt-NewComputerModern.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-NewComputerModern.cfg	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-NewComputerModern.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -0,0 +1,560 @@
+%%
+%% This is file `mt-NewComputerModern.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% microtype-utf.dtx  (with options: `NewComputerModern')
+%% 
+%% ------------------------------------------------------------------------
+%% 
+%%                       The `microtype' package
+%%         Subliminal refinements towards typographical perfection
+%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
+%% 
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in:
+%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
+%% of all distributions of LaTeX version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
+%% 
+%% ------------------------------------------------------------------------
+%%   This is a font-specific configuration file for the `microtype' package.
+%%   It may contain settings for font expansion and character protrusion,
+%%   tracking, interword spacing and additional kerning, as well as
+%%   character inheritance declarations.
+%%   Please consult the documentation for details.
+%% 
+%%   If you think you have found improvements to these settings, please
+%%   let me know.
+%% 
+%%   When modifying this file, also change the identification line below.
+%% ------------------------------------------------------------------------ 
+%%
+%%     These settings have been prepared by, and are copied with the
+%%     generous permission of:
+%%       Antonis Tsolomitis <antonis.tsolomitis{at}gmail.com>
+%% 
+%% ------------------------------------------------------------------------ 
+%%
+\ProvidesFile
+  {mt-NewComputerModern.cfg}[2021/08/08 v1.0 microtype config. file: New Computer Modern (AT)]
+
+%%% -----------------------------------------------------------------------
+%%% INHERITANCE
+
+%% for xetex (EU1) and luatex (EU2), resp. both (TU)
+\DeclareCharacterInheritance
+   { encoding = {EU1,EU2,TU},
+     family   = {New Computer Modern} }
+   {
+     A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ,
+           Α,Ά,ᾼ,Ά,Ᾰ,Ᾱ  % Ἁ,Ἂ,Ἃ,Ἄ,Ἅ,Ἆ,Ἇ,ᾈ,ᾉ,ᾊ,ᾋ,ᾌ,ᾍ,ᾎ,ᾏ,Ὰ,  % Greek
+         },
+     Æ = {Ǽ},
+     B = {฿,
+          Β},  % Greek
+     C = {Ç,Ć,Ĉ,Ċ,Č},
+     D = {Ð,Ď,Đ,Ḍ,Ḏ},
+     E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ȅ,Ẹ,Ẻ,Ẽ,Ề,Ế,Ễ,Ể,Ệ,
+          Ε},  % Greek
+  (l)E = {Έ,Ἐ,Ἑ,Ἒ,Ἓ,Ἔ,Ἕ,Ὲ,Έ}, % Greek accents fully protruded left
+     G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ},
+     H = {Ĥ,Ħ,Ḥ,Ḧ,Ḫ,
+           Η,ῌ  % Greek
+          },
+   (l)H = {Ἠ,Ἡ,Ἢ,Ἣ,Ἤ,Ἥ,Ἦ,Ἧ,ᾘ,ᾙ,ᾚ,ᾛ,ᾜ,ᾝ,ᾞ,ᾟ}, % Greek accents fully protruded left
+  %(l)/uni1FCC.alt = {/uni1F98.alt},
+     I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ȉ,Ỉ,Ị,
+          Ι,Ῐ,Ῑ  % Greek
+          },
+  (l)I = {Ἰ,Ἱ,Ἲ,Ἳ,Ἴ,Ἵ,Ἶ,Ἷ,Ὶ,Ί}, % Greek
+     J = {Ĵ},
+     K = {Ķ,
+          Κ},  % Greek
+     L = {Ĺ,Ļ,Ł,Ḷ}, % Ľ,Ŀ,Ḹ
+     M = {Μ},  % Greek
+     N = {Ñ,Ń,Ņ,Ň,Ṅ,Ṇ,
+          Ν},  % Greek
+     O = {Ò,Ó,Ô,Õ,Ö,Ø,Ō,Ŏ,Ő,Ọ,Ơ,Ǫ,Ǿ,Ȍ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ỡ,Ở,Ợ,
+          Ο},  % Greek
+  (l)O = {Ό,Ὀ,Ὁ,Ὂ,Ὃ,Ὄ,Ὅ,Ὸ}, % Greek accents except Ό that has indep. protrusion numbers (below)
+     P = {Ρ},  % Greek
+  (l)P = {Ῥ}, % Greek accents fully protruded left
+     R = {Ŕ,Ŗ,Ř,Ȑ,Ṛ,Ṙ,Ṝ},
+     S = {Ś,Ŝ,Ş,Š,Ș,Ṣ},
+     T = {Ţ,Ť,Ț,Ṭ,Ṯ,
+          Τ},  % Greek
+     U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ư,Ȕ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự},
+     W = {Ŵ,Ẁ,Ẃ,Ẅ},
+     X = {Χ},  % Greek
+     Y = {Ý,Ŷ,Ÿ,Ỵ,Ỷ,Ỹ},
+     Υ = {Ϋ,Ῠ,Ῡ},
+  (l)Υ = {Ύ,Ὺ,Ύ,Ὑ,Ὓ,Ὕ,Ὗ},
+     Z = {Ź,Ż,Ž,Ẓ,
+          Ζ},  % Greek
+     a = {à,á,â,ã,ä,å,ā,ă,ą,ǻ,ȁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ},
+     æ = {ǽ},
+     c = {ç,ć,ĉ,ċ,č},
+     d = {đ,ḍ,ḏ},
+     e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ},
+     f = {ff}, % Unicode 64256, glyph name in Latin Modern Roman: /f_f ; in New Computer Modern: /ff
+     g = {ĝ,ğ,ġ,ģ,ǧ,ǵ},
+     h = {ĥ,ħ,ḥ,ḧ,ḫ},
+     i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ȉ,ỉ,ị},
+     j = {ĵ},
+     k = {ķ},
+     l = {ĺ,ļ,ł,ḷ,ḹ}, % ľ,l·
+     n = {ñ,ń,ņ,ň,ṅ,ṇ},
+     o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ
+         ,ο,ό,ὀ,ὁ,ὂ,ὃ,ὄ,ὅ,ὸ,ό % Greek
+         },
+     r = {ŕ,ŗ,ř,ȑ,ṛ,ṙ,ṝ},
+     s = {ś,ŝ,ş,š,ș,ṣ},
+     t = {ţ,ț,ṭ,ṯ,ẗ}, % ť
+     u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ư,ȕ,ụ,ủ,ứ,ừ,ử,ữ,ự},
+     w = {ŵ,ẁ,ẃ,ẅ},
+     y = {ý,ŷ,ÿ,ỳ,ỵ,ỷ,ỹ},
+     z = {ź,ż,ž,ẓ},
+     α = {ἁ,ἂ,ἃ,ἄ,ἅ,ἆ,ἇ,ᾀ,ᾁ,ᾂ,ᾃ,ᾄ,ᾅ,ᾆ,ᾇ,ὰ},
+     ε = {έ,ἐ,ἑ,ἒ,ἓ,ἔ,ἕ,ὲ,έ},
+     η = {ἠ,ἡ,ἢ,ἣ,ἤ,ἥ,ἦ,ἧ,ᾐ,ᾑ,ᾒ,ᾓ,ᾔ,ᾕ,ᾖ},
+     ι = {ἰ,ἱ,ὶ,ί,ῐ,ῑ,ϊ,ΐ},
+     ϊ = {ἲ,ἳ,ἴ,ἵ,ἶ,ἷ,ῐ,ῑ,ΐ},
+     υ = {ύ,ὺ,ύ,ὑ,ὓ,ὕ,ὗ,ϋ,ῠ,ῡ,ϋ,ΰ},
+     ω = {ώ,ὠ,ὡ,ὢ,ὣ,ὤ,ὥ,ὦ,ὧ,ᾠ,ᾡ,ᾢ,ᾣ,ᾤ,ᾥ,ᾦ},
+   }
+
+%%% -----------------------------------------------------------------------
+%%% PROTRUSION
+
+\SetProtrusion
+   [ name     = NCM-default ]
+   { encoding = {EU1,EU2,TU},
+     family   = {New Computer Modern} }
+   {
+     A = {50,50},
+     Æ = {50,  },
+     F = {  ,50},
+     J = {50,  },
+     K = {  ,50},
+     L = {  ,50},
+     T = {50,50},
+     V = {50,50},
+     W = {50,50},
+     X = {50,50},
+     Y = {50,50},
+     /a.end = {,330},
+     /e.end = {,350},
+     k = {  ,50},
+     /k.alt = { ,50},
+     r = {  ,50},
+     /r.end = {,300},
+     /m.end = {,200},
+     /n.end = {,300},
+     t = {  ,70},
+     v = {50,50},
+     w = {50,50},
+     x = {50,50},
+     y = {50,70},
+     0 = {  ,50},
+     1 = {100,200},
+     2 = {50,50},
+     3 = {50,50},
+     4 = {70,70},
+     5 = {  ,50},
+     6 = {  ,50},
+     7 = {50,100},
+     8 = {  ,50},
+     9 = {  ,50},
+     . = { ,700},
+    {,}= { ,500},
+     : = { ,500},
+     ; = { ,500},
+     ! = { ,100},
+     ? = { ,200},
+     @ = {50,50},
+     ~ = {200,250},
+    \% = {50,50},
+     * = {300,300},
+     + = {250,250},
+     - = {400,500},  % /hyphen
+     – = {400,300},  % /endash
+     — = {300,200},  % /emdash
+     _ = {200,200},  % /underscore
+     / = {200,300},
+    /backslash    = {200,300},
+     ' = {300,400}, % /quotesingle
+     ‘ = {300,400},  ’ = {300,400},
+     “ = {300,300},  ” = {300,300},
+     ‚ = {400,400},  „ = {400,400},
+     ‹ = {400,400},  › = {300,500},
+     « = {300,200},  » = {100,400},
+     ¡ = {100,   },  ¿ = {100,   },
+     ( = {300,   },  ) = {   ,300},
+     <  = {200,100}, > = {100,200},
+    /braceleft = {400,200}, /braceright = {200,400},
+    /angleleft = {400,   }, /angleright = {   ,400},
+     † = {100,100},
+     ‡ = { 80, 80},
+     • = {200,200},
+     · = {400,450}, % / periodcentered
+     ℃ = { 80, 50},
+     ₡ = {   , 50},
+     ° = {400,400},
+     ™ = {100,200},
+     © = {100,100},
+     ® = {100,100},
+     ª = {100,200},
+     º = {100,200},
+     ¹ = {200,250},
+     ² = { 50,100},
+     ³ = { 50,100},
+     ¬ = {200,   },
+     − = {300,300},
+     ± = {150,200},
+     × = {150,250},
+     ÷ = {150,250},
+     € = {100,   },
+    /one.oldstyle   = {100,100},
+    /two.oldstyle   = { 50, 50},
+    /three.oldstyle = { 30, 80},
+    /four.oldstyle  = { 50, 50},
+    /seven.oldstyle = { 50, 80},
+     Ά = {50,50},   % /Alphatonos
+     Ὰ = {120,50},  %
+     Ἀ = {120,50},  %
+     Ἁ = {80,50},  %
+     Ἂ = {220,50}, %
+     Ἃ = {220,50}, %
+     Ἄ = {170,50}, %
+     Ἅ = {170,50}, %
+     Ἆ = {190,50}, %
+     Ἇ = {190,50}, %
+     ᾈ = {150,50}, %
+     ᾉ = {80,50},  %
+     ᾊ = {220,50}, %
+     ᾋ = {220,50}, %
+     ᾌ = {170,50}, %
+     ᾍ = {170,50}, %
+     ᾎ = {210,50}, %
+     ᾏ = {210,50}, %
+     /uni1FBC.alt = {,205}, % Alpha prosgegrammeni
+     /uni1F88.alt = {50,190}, %Alpha psili prosgegrammeni
+     /uni1F89.alt = {,200}, %Alpha dasia prosgegrammeni
+     /uni1F8A.alt = {130,180}, %Alpha psili baria prosgegrammeni
+     /uni1F8B.alt = {130,190}, %Alpha dasia baria prosgegrammeni
+     /uni1F8C.alt = {100,190}, %Alpha psili oxia prosgegrammeni
+     /uni1F8D.alt = {70,190}, %Alpha dasia oxia prosgegrammeni
+     /uni1F8E.alt = {120,190}, %Alpha psili perispomeni prosgegrammeni
+     /uni1F8F.alt = {120,190}, %Alpha dasia perispomeni prosgegrammeni
+   %
+     /uni1FCC.alt = {,205}, % Eta prosgegrammeni
+     /uni1F98.alt = {185,170}, %Eta psili prosgegrammeni
+     /uni1F99.alt = {185,170}, %Eta dasia prosgegrammeni
+     /uni1F9A.alt = {220,170}, %Eta psili baria prosgegrammeni
+     /uni1F9B.alt = {220,170}, %Eta dasia baria prosgegrammeni
+     /uni1F9C.alt = {220,170}, %Eta psili oxia prosgegrammeni
+     /uni1F9D.alt = {220,170}, %Eta dasia oxia prosgegrammeni
+     /uni1F9E.alt = {255,170}, %Eta psili perispomeni prosgegrammeni
+     /uni1F9F.alt = {255,170}, %Eta dasia perispomeni prosgegrammeni
+   %
+     Ό = {95,50}, %
+     Γ = {   ,180}, % /Gamma
+     Δ = {50,50}, % /Delta
+     Θ = { 50, 50}, % /Theta
+     Λ = {50,50}, % /Lambda
+     Σ = { 50, 50}, % /Sigma
+     Υ = {80,80}, % /Upsilon
+     Φ = { 50, 50}, % /Phi
+     Ψ = { 50, 50}, % /Psi
+     Ω = { 20, 30}, % /Omega
+     Ώ = {150,30},
+     Ὠ = {220,30},
+     Ὡ = {205,30},
+     Ὢ = {285,30},
+     Ὣ = {285,30},
+     Ὤ = {270,30},
+     Ὥ = {270,30},
+     Ὦ = {310,30},
+     Ὧ = {310,30},
+     ᾨ = {205,30},
+     ᾩ = {205,30},
+     ᾪ = {285,30},
+     ᾫ = {285,30},
+     ᾬ = {270,30},
+     ᾭ = {270,30},
+     ᾮ = {310,30},
+     ᾯ = {310,30},
+     /uni1FFC.alt = {,230}, % Omega prosgegrammeni
+     /uni1FA8.alt = {185,190}, %Omega psili prosgegrammeni
+     /uni1FA9.alt = {185,190}, %Omega dasia prosgegrammeni
+     /uni1FAA.alt = {220,190}, %Omega psili baria prosgegrammeni
+     /uni1FAB.alt = {220,190}, %Omega dasia baria prosgegrammeni
+     /uni1FAC.alt = {220,190}, %Omega psili oxia prosgegrammeni
+     /uni1FAD.alt = {220,190}, %Omega dasia oxia prosgegrammeni
+     /uni1FAE.alt = {255,190}, %Omega psili perispomeni prosgegrammeni
+     /uni1FAF.alt = {255,190}, %Omega dasia perispomeni prosgegrammeni
+   %
+     α = {,50},
+     γ = {50,50},
+     ζ = {,50},
+     θ = {30,40},
+     ι = {,50},
+     ϊ = {-20,-30},
+     κ = {50,50},
+     λ = {50,50},
+     ν = {50,25},
+     π = {50,50},
+     σ = {,50},
+     ς = {,50},
+     τ = {50,50},
+     χ = {50,50},
+     ψ = {50,50},
+   }
+
+\SetProtrusion
+   [ name     = NCM-it ]
+   { encoding = {EU1,EU2,TU},
+     family   = {New Computer Modern},
+     shape    = {it,sl}       }
+   {
+     A = {125,100},
+     Æ = {125,-55},
+     B = {90,-40},
+     C = {145,-75},
+     D = {75, -28},
+     E = {80,-55},
+     F = {85,-80},
+     G = {153,-15},
+     H = {73,-60},
+     I = {140,-120},
+     IJ = {140,-80},
+     J = {135,-80},
+     K = {70,-30},
+     L = {87, 40},
+     M = {67,-45},
+     N = {75,-55},
+     O = {150,-30},
+     Œ = {150,-55},
+     P = {82,-50},
+     Q = {150,-30},
+     R = {75, 15},
+     S = {90,-65},
+     $ = {100,-20},
+     T = {220,-85},
+     U = {230,-55},
+     V = {260,-60},
+     W = {185,-55},
+     X = {70,-30},
+     Y = {250,-60},
+     Z = {90,-60},
+     a = {150,-10},
+     b = {170,   },
+     c = {173,-10},
+     d = {150,-55},
+     e = {180, },
+     f = {  ,-250},
+     g = {150,-10},
+     h = {100, },
+     i = {210, },
+     ij = {210,-40},
+     j = {  ,-40},
+     k = {110,-50},
+     l = {240,-110},
+     m = {80, },
+     n = {115, },
+     o = {155, },
+     q = {170,-40},
+     r = {155,-40},
+     s = {130, },
+     t = {230,-10},
+     u = {120, },
+     v = {140,-25},
+     w = {98,-20},
+     x = {65,-40},
+     y = {130,-20},
+     z = {110,-80},
+     /a.end = {,330}, %Fix
+     /e.end = {,350}, %Fix
+     /k.alt = {  ,50}, %Fix
+     /r.end = {,300}, %Fix
+     /m.end = {,200}, %Fix
+     /n.end = {,300}, %Fix
+     0 = {170,-85},
+     1 = {230,110},
+     2 = {130,-70},
+     3 = {140,-70},
+     4 = {130,80},
+     5 = {160, },
+     6 = {175,-30},
+     7 = {250,-150},
+     8 = {130,-40},
+     9 = {155,-80},
+     . = { ,500},
+    {,}= { ,450},
+     : = { ,300},
+     ; = { ,300},
+     & = {130,30},
+    \% = {180,50},
+     * = {380,20},
+     + = {180,200},
+     @ = {180,10},
+     ~ = {200,150},
+     ( = {300, },    ) = {  ,70},
+     / = {100,100},
+     - = {500,300}, % /hyphen
+     – = {500,300}, % /endash
+     — = {400,170}, % /emdash
+     _ = {100,200}, % /underscore
+     ' = {300,400}, % /quotesingle
+     " = {500,300},
+     ‘ = {800,200},  ’ = {800,-20},
+     “ = {540,100},  ” = {500,100},
+     ‚ = {300,700},  „ = {200,600},
+     ‹ = {500,300},  › = {400,400},
+     « = {400,100},  » = {200,300},
+     ¡ = {200,   },  ¿ = {200,   },
+     < = {300,100},  > = {200,100},
+    /backslash   = {300,300},
+    /braceleft   = {400,100},   /braceright    = {200,200},
+     † = {200, 80},
+     ‡ = {120, 80},
+     • = {220,100},
+     · = {550,300}, % / periodcentered
+     ℃ = {170,   },
+     ₡ = {100, 50},
+     ¶ = {200,   },
+     ° = {500,300},
+     ™ = {200, 70},
+     © = { 50, 70},
+     ® = { 50, 70},
+     ª = {140,100},
+     º = {140,100},
+     ¹ = {400,150},
+     ² = {250, 80},
+     ³ = {250, 80},
+     ¬ = {250, 80},
+     − = {300,200},
+     ± = {150,170},
+     × = {200,200},
+     ÷ = {200,200},
+     € = {150,   },
+    /one.oldstyle   = {100,100},
+    /two.oldstyle   = {100, 80},
+    /three.oldstyle = { 80, 50},
+    /four.oldstyle  = { 80, 80},
+    /five.oldstyle  = { 50,   },
+    /six.oldstyle   = { 50,   },
+    /seven.oldstyle = { 80, 80},
+    /eight.oldstyle = { 50,   },
+     Γ = {100,120}, % /Gamma
+     Δ = {120,100}, % /Delta
+     Θ = {120, 50}, % /Theta
+     Λ = {160,100}, % /Lambda
+     Ξ = {100,},    % /Xi
+     Π = {100,},    % /Pi
+     Σ = {100, 50}, % /Sigma
+     Υ = {260,100}, % /Upsilon
+     Φ = {130, 70}, % /Phi
+     Ψ = {130, 50}, % /Psi
+     Ω = { 50,},    % /Omega
+     Ὰ = {190,50},  %
+     Ἀ = {220,50},  %
+     Ἁ = {200,50},  %
+     Ἂ = {300,50}, %
+     Ἃ = {300,50}, %
+     Ἄ = {300,50}, %
+     Ἅ = {300,50}, %
+     Ἆ = {320,50}, %
+     Ἇ = {320,50}, %
+     ᾈ = {200,50}, %
+     ᾉ = {200,50},  %
+     ᾊ = {300,50}, %
+     ᾋ = {300,50}, %
+     ᾌ = {300,50}, %
+     ᾍ = {300,50}, %
+     ᾎ = {320,50}, %
+     ᾏ = {320,50}, %
+     /uni1FBC.alt = {,205}, % Alpha prosgegrammeni
+     /uni1F88.alt = {50,190}, %Alpha psili prosgegrammeni
+     /uni1F89.alt = {,200}, %Alpha dasia prosgegrammeni
+     /uni1F8A.alt = {130,180}, %Alpha psili baria prosgegrammeni
+     /uni1F8B.alt = {130,190}, %Alpha dasia baria prosgegrammeni
+     /uni1F8C.alt = {100,190}, %Alpha psili oxia prosgegrammeni
+     /uni1F8D.alt = {70,190}, %Alpha dasia oxia prosgegrammeni
+     /uni1F8E.alt = {120,190}, %Alpha psili perispomeni prosgegrammeni
+     /uni1F8F.alt = {120,190}, %Alpha dasia perispomeni prosgegrammeni
+   %
+     /uni1FCC.alt = {,205}, % Eta prosgegrammeni
+     /uni1F98.alt = {185,170}, %Eta psili prosgegrammeni
+     /uni1F99.alt = {185,170}, %Eta dasia prosgegrammeni
+     /uni1F9A.alt = {220,170}, %Eta psili baria prosgegrammeni
+     /uni1F9B.alt = {220,170}, %Eta dasia baria prosgegrammeni
+     /uni1F9C.alt = {220,170}, %Eta psili oxia prosgegrammeni
+     /uni1F9D.alt = {220,170}, %Eta dasia oxia prosgegrammeni
+     /uni1F9E.alt = {255,170}, %Eta psili perispomeni prosgegrammeni
+     /uni1F9F.alt = {255,170}, %Eta dasia perispomeni prosgegrammeni
+   %
+     Ό = {95,50}, %
+     Ω = {120, 30}, % /Omega
+     Ώ = {160,30},
+     Ὠ = {250,30},
+     Ὡ = {250,30},
+     Ὢ = {300,30},
+     Ὣ = {300,30},
+     Ὤ = {300,30},
+     Ὥ = {300,30},
+     Ὦ = {330,30},
+     Ὧ = {330,30},
+     ῼ = {30,30},
+     ᾨ = {230,30},
+     ᾩ = {230,30},
+     ᾪ = {300,30},
+     ᾫ = {300,30},
+     ᾬ = {300,30},
+     ᾭ = {300,30},
+     ᾮ = {330,30},
+     ᾯ = {330,30},
+     /uni1FFC.alt = {,230}, % Omega prosgegrammeni
+     /uni1FA8.alt = {185,190}, %Omega psili prosgegrammeni
+     /uni1FA9.alt = {185,190}, %Omega dasia prosgegrammeni
+     /uni1FAA.alt = {220,190}, %Omega psili baria prosgegrammeni
+     /uni1FAB.alt = {220,190}, %Omega dasia baria prosgegrammeni
+     /uni1FAC.alt = {220,190}, %Omega psili oxia prosgegrammeni
+     /uni1FAD.alt = {220,190}, %Omega dasia oxia prosgegrammeni
+     /uni1FAE.alt = {255,190}, %Omega psili perispomeni prosgegrammeni
+     /uni1FAF.alt = {255,190}, %Omega dasia perispomeni prosgegrammeni
+   %
+     α = {50,50},
+     γ = {100,50},
+     δ = {30,50},
+     ε = {30,},
+     ζ = {20,50},
+     θ = {30,40},
+     ι = {,50},
+     ϊ = {-20,-30},
+     κ = {50,50},
+     λ = {-20,50},
+     ν = {50,25},
+     ο ={40,},
+     π = {50,50},
+     σ = {40,50},
+     ς = {20,50},
+     τ = {50,50},
+     υ = {80,},
+     φ = {80,},
+     χ = {20,},
+     ψ = {80,},
+   }
+
+\endinput
+%%
+%% End of file `mt-NewComputerModern.cfg'.


Property changes on: trunk/Master/texmf-dist/tex/latex/microtype/mt-NewComputerModern.cfg
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-Palatino.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-Palatino.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-Palatino.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Added: trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-basic.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-basic.cfg	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-basic.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -0,0 +1,83 @@
+%%
+%% This is file `mt-TU-basic.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% microtype-utf.dtx  (with options: `TU-basic')
+%% 
+%% ------------------------------------------------------------------------
+%% 
+%%                       The `microtype' package
+%%         Subliminal refinements towards typographical perfection
+%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
+%% 
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in:
+%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
+%% of all distributions of LaTeX version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
+%% 
+%% ------------------------------------------------------------------------
+%%   This is a font-specific configuration file for the `microtype' package.
+%%   It may contain settings for font expansion and character protrusion,
+%%   tracking, interword spacing and additional kerning, as well as
+%%   character inheritance declarations.
+%%   Please consult the documentation for details.
+%% 
+%%   If you think you have found improvements to these settings, please
+%%   let me know.
+%% 
+%%   When modifying this file, also change the identification line below.
+%% ------------------------------------------------------------------------ 
+%%
+\ProvidesFile
+  {mt-TU-basic.cfg}[2021/06/22 v1.1 microtype config. file: fonts with basic glyph set (RS)]
+
+%%% -----------------------------------------------------------------------
+%%% INHERITANCE
+
+%% for xetex (EU1) and luatex (EU2), resp. both (TU)
+\DeclareCharacterInheritance
+   { encoding = {TU,EU1,EU2},
+     family   = {TU-basic} }
+   { A = {À,Á,Â,Ã,Ä,Å},
+     a = {à,á,â,ã,ä,å},
+     C = {Ç},
+     c = {ç},
+     D = {Ð},
+     E = {È,É,Ê,Ë},
+     e = {è,é,ê,ë},
+     I = {Ì,Í,Î,Ï},
+     i = {ì,í,î,ï,ı},
+     L = {Ł},
+     l = {ł},
+     N = {Ñ},
+     n = {ñ},
+     O = {Ø,Ò,Ó,Ô,Õ,Ö},
+     o = {ø,ò,ó,ô,õ,ö},
+     S = {Š},
+     s = {š},
+     U = {Ù,Ú,Û,Ü},
+     u = {ù,ú,û,ü},
+     Y = {Ý,Ÿ},
+     y = {ý,ÿ},
+     Z = {Ž},
+     z = {ž}
+   }
+
+%%% -----------------------------------------------------------------------
+%%% PROTRUSION
+
+ %% No settings.
+
+\endinput
+%%
+%% End of file `mt-TU-basic.cfg'.


Property changes on: trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-basic.cfg
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -0,0 +1,64 @@
+%%
+%% This is file `mt-TU-empty.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% microtype-utf.dtx  (with options: `TU-empty')
+%% 
+%% ------------------------------------------------------------------------
+%% 
+%%                       The `microtype' package
+%%         Subliminal refinements towards typographical perfection
+%%           Copyright (c) 2004--2021 R Schlicht <w.m.l at gmx.net>
+%% 
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in:
+%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
+%% of all distributions of LaTeX version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
+%% 
+%% ------------------------------------------------------------------------
+%%   This is a font-specific configuration file for the `microtype' package.
+%%   It may contain settings for font expansion and character protrusion,
+%%   tracking, interword spacing and additional kerning, as well as
+%%   character inheritance declarations.
+%%   Please consult the documentation for details.
+%% 
+%%   If you think you have found improvements to these settings, please
+%%   let me know.
+%% 
+%%   When modifying this file, also change the identification line below.
+%% ------------------------------------------------------------------------ 
+%%
+\ProvidesFile
+  {mt-TU-empty.cfg}[2021/06/22 v1.1 microtype config. file: fonts with nonstandard glyph set (RS)]
+
+%%% -----------------------------------------------------------------------
+%%% INHERITANCE
+
+%% for xetex (EU1) and luatex (EU2), resp. both (TU)
+\DeclareCharacterInheritance
+  { encoding = {TU,EU1,EU2},
+    family   = {TU-empty} }
+  { }
+
+%%% -----------------------------------------------------------------------
+%%% PROTRUSION
+
+\SetProtrusion
+   [ name = empty ]
+   { encoding = {TU,EU1,EU2},
+     family   = {TU-empty} }
+   { }
+
+\endinput
+%%
+%% End of file `mt-TU-empty.cfg'.


Property changes on: trunk/Master/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.
@@ -107,7 +108,7 @@
      "06 = { 50, 50}, % \Sigma
      "07 = {100,100}, % \Upsilon
      "08 = { 50, 50}, % \Phi
-     "09 = { 50, 50}  % \Psi
+     "09 = { 50, 50}, % \Psi
    }
 
 \SetProtrusion
@@ -280,7 +281,7 @@
      "07 = {200,150}, % \Upsilon
      "08 = {150, 50}, % \Phi
      "09 = {150,100}, % \Psi
-     "0A = { 50, 50}  % \Omega
+     "0A = { 50, 50}, % \Omega
    }
 
 \SetProtrusion

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.

Modified: trunk/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg	2021-10-31 21:08:28 UTC (rev 60912)
+++ trunk/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg	2021-10-31 21:08:53 UTC (rev 60913)
@@ -18,11 +18,12 @@
 %% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part
 %% of all distributions of LaTeX version 2005/12/01 or later.
 %% 
-%% This work has the LPPL maintenance status `author-maintained'.
+%% This work has the LPPL maintenance status `maintained'.
 %% 
-%% This work consists of the files microtype.dtx and microtype.ins and the
-%% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
-%% microtype-xetex.def, microtype.lua and letterspace.sty.
+%% This work consists of the files microtype.dtx, microtype-utf.dtx and
+%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
+%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
+%% and microtype-show.sty.
 %% 
 %% ------------------------------------------------------------------------
 %%   This is a font-specific configuration file for the `microtype' package.



More information about the tex-live-commits mailing list.