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.