summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/microtype/microtype-utf.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-11-01 03:02:12 +0000
committerNorbert Preining <norbert@preining.info>2021-11-01 03:02:12 +0000
commitb27d5ecc7cba92635475b78660b083793d93a3e7 (patch)
tree19a78e0cdc4b9270d4ce8ab2d2b492dd332c7f2a /macros/latex/contrib/microtype/microtype-utf.dtx
parent7d4662184ed36e01faf1fbe7b6e19567a331da2f (diff)
CTAN sync 202111010302
Diffstat (limited to 'macros/latex/contrib/microtype/microtype-utf.dtx')
-rw-r--r--macros/latex/contrib/microtype/microtype-utf.dtx994
1 files changed, 897 insertions, 97 deletions
diff --git a/macros/latex/contrib/microtype/microtype-utf.dtx b/macros/latex/contrib/microtype/microtype-utf.dtx
index c553e53e2d..9db817002d 100644
--- a/macros/latex/contrib/microtype/microtype-utf.dtx
+++ b/macros/latex/contrib/microtype/microtype-utf.dtx
@@ -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,26 +11,30 @@
% 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
% (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@directlua{luatexbase.remove_from_callback('process_input_buffer', 'luainputenc.fake_utf_read')}
\def\setmacrofont#1{\par\def\macro@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 @@ local nodeprocessor = function (head)
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 @@ local nodeprocessor = function (head)
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@bookmarks\@gobble
+\def\addto@UTF@bookmarks#1{\edef\UTF@bookmarks{\UTF@bookmarks,#1}}
+\def\MT@rempt#1.#2\@nil{#1}
+\def\addtoUTFbookmarks#1{%
+ \protected@write\@auxout{}{%
+ \string\addto@UTF@bookmarks{% page,section,level,heading,label
+ \string\number\numexpr\thepage-\startpage,%
+ \expandafter\MT@rempt\@currentHref\@nil,%
+ \the\c@section@level,\@currentlabelname,#1}}}
+\AddToHook{enddocument/afteraux}{
+ \begingroup
+ \def\setcounter#1#2{\expandafter\ifnum\csname c@#1\endcsname=#2 \else\@tempswatrue\fi}
+ \def\UTF@setbookmarks#1{\MT@ifstreq{#1}{\UTF@bookmarks}\relax\@tempswatrue}
+ \InputIfFileExists{microtype-utf.tmp}\@tempswafalse\@tempswatrue
+ \if@tempswa % only write file if anything has changed
+ \newwrite\utftmp
+ \immediate\openout \utftmp=microtype-utf.tmp
+ \immediate\write \utftmp{\string\setcounter{CodelineNo}{\the\c@CodelineNo}}
+ \immediate\write \utftmp{\string\setcounter{footnote}{\the\c@footnote}}
+ \immediate\write \utftmp{\string\UTF@setbookmarks{\UTF@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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
%\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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
%
%\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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
%%% 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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
Ν}, % 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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
W = {Ŵ,Ẁ,Ẃ,Ẅ},
X = {Χ}, % Greek
Y = {Ý,Ŷ,Ÿ,Ỵ,Ỷ,Ỹ},
+%<NewComputerModern> Υ = {Ϋ,Ῠ,Ῡ},
+%<NewComputerModern> (l)Υ = {Ύ,Ὺ,Ύ,Ὑ,Ὓ,Ὕ,Ὗ},
Z = {Ź,Ż,Ž,Ẓ,
Ζ}, % Greek
a = {à,á,â,ã,ä,å,ā,ă,ą,ǻ,ȁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ},
@@ -214,7 +265,7 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
k = {ķ},
l = {ĺ,ļ,ł,ḷ,ḹ}, % ľ,l·
n = {ñ,ń,ņ,ň,ṅ,ṇ},
- o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ},
+ o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ
+%<NewComputerModern> ,ο,ό,ὀ,ὁ,ὂ,ὃ,ὄ,ὅ,ὸ,ό % Greek
+ },
r = {ŕ,ŗ,ř,ȑ,ṛ,ṙ,ṝ},
s = {ś,ŝ,ş,š,ș,ṣ},
t = {ţ,ț,ṭ,ṯ,ẗ}, % ť
@@ -230,11 +283,24 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
ү = {ұ},
Г = {Γ}, % Greek
П = {Π}, % Greek
- }
-
% 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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
% 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,76 +720,92 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
% \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 = {Ý,Ÿ},
- y = {ý,ÿ},
- Z = {Ź,Ż,Ž},
- z = {ź,ż,ž}
- }
% \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}
-%</Lato>
+ y = {ý,ÿ},
+ Z = {Ž},
+ z = {ž}
+ }
+%</TU-basic>
% \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}
%%% -----------------------------------------------------------------------
%%% 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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
/ = {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,30 +895,121 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
/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}
}
\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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
Γ = {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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
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@CHARIS@SC = {100,100},
/c.\MT@CHARIS@SC = {50, },
/d.\MT@CHARIS@SC = { ,50},
@@ -1113,11 +1613,303 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
/w.\MT@CHARIS@SC = {50,50},
/x.\MT@CHARIS@SC = {50,50},
/y.\MT@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 @@ luatexbase.add_to_callback("pre_linebreak_filter", nodeprocessor, "replace missi
% \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@CodelineNo}}
-%\immediate\write \utftmp{\string\setcounter{footnote}{\the\c@footnote}}
-%\immediate\closeout\utftmp
%
\endinput
+%
+% % vim: ts=2:sw=2:et: