summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-03-10 03:04:05 +0000
committerNorbert Preining <norbert@preining.info>2023-03-10 03:04:05 +0000
commitf6cb3d263826846efe7b926e6ad2092198db0522 (patch)
tree16abd399e7b120d3c3ac7d75efc4d04cf7bb022f /macros/latex
parent716c428e47ad2e893c0f970b9fa866d2a88f00e4 (diff)
CTAN sync 202303100304
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.pdfbin186723 -> 187963 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.tex16
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.dtx60
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.pdfbin364942 -> 367390 bytes
-rw-r--r--macros/latex/contrib/genealogytree/CHANGES.md21
-rw-r--r--macros/latex/contrib/genealogytree/README.md4
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-1.pdfbin207760 -> 208264 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-2.pdfbin259457 -> 259473 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-3.pdfbin205130 -> 205145 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-4.pdfbin307952 -> 307948 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-languages.pdfbin468253 -> 600599 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree.pdfbin9292843 -> 9338306 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree.sty10
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.contour.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.node.code.tex30
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.options.code.tex8
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.parser.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.processing.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.catalan.code.tex87
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.chinese.code.tex94
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.danish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.english.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.french.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.german.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.italian.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.debug.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.templates.code.tex6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty3888
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin962540 -> 962873 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx95
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin686472 -> 691708 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin587431 -> 587721 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin515050 -> 515314 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin558354 -> 558634 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin541395 -> 541673 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin543671 -> 543976 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin536785 -> 537067 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin592206 -> 592524 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin516032 -> 516300 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin750122 -> 750467 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin566285 -> 566543 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin681952 -> 682288 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx23
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin811796 -> 812732 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin526936 -> 527235 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin426770 -> 427013 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin588866 -> 589232 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/luaotfload-l3color-tmp.lua78
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin386480 -> 386566 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx37
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin444499 -> 443702 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin456334 -> 456571 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/tugboat/NEWS11
-rw-r--r--macros/latex/contrib/tugboat/ltubguid.pdfbin363980 -> 363060 bytes
-rw-r--r--macros/latex/contrib/tugboat/tugboat.bst7
-rw-r--r--macros/latex/contrib/tugboat/tugboat.dtx46
-rw-r--r--macros/latex/contrib/tugboat/tugboat.pdfbin516448 -> 516315 bytes
85 files changed, 532 insertions, 4155 deletions
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
index a877bbe57c..dae1c3f742 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
index f944831c59..584b8b980f 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
@@ -121,7 +121,7 @@
\title{Mode d’emploi du module \ext{babel-french}}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.5p}
+\newcommand*{\latestversion}{3.5q}
\date{Version {\latestversion} -- \today}
\begin{document}
@@ -158,8 +158,6 @@
\vspace{-\baselineskip}\noindent
\descindentFB=0pt
\begin{description}
- \item[15 janvier 2017] La version~3.2f est compatible avec l’extension
- \ext{icomma}.
\item[30 janvier 2017] Le comportement par défaut de la commande
|\frquote{}| sous LuaTeX est modifié, voir p.~\pageref{frquote}.
\item[30 avril 2017] Utiliser |\frenchsetup{}| de préférence à
@@ -182,8 +180,10 @@
\item[11 nov. 2022] Avec Lua(La)TeX le codage |«~abc~»| ne produit plus
d’espace parasite. La redéfinition de |\shorthandoff{}|,
|\shorthandon{}| sous LuaTeX/XeTeX est supprimée.
- \item[3 janvier 2022] Modification de la commande |\DecimalMathComma|,
+ \item[3 janvier 2023] Modification de la commande |\DecimalMathComma|,
voir p.~\pageref{decimalmathcomma}.
+ \item[8 mars 2023] Correction de bug dans les listes,
+ voir p.~\pageref{par-in-lists}.
\end{description}
\end{abstract}
\egroup
@@ -1579,6 +1579,14 @@ remarque de Fabrice Eudes : elle peut désormais être utilisée dans le préamb
Voir section~\ref{decimalmathcomma} p.~\pageref{decimalmathcomma} pour plus de
détails.
+\vspace{\parskip}
+La version 3.5q corrige un bug concernant les listes signalé par Denis Bitouzé :
+les alinéas inclus dans une liste n’étaient pas distinguables. Dorénavant
+|\listparindent| est défini comme |\parindent| et si|\parskip > 0|, |\parsep|
+est défini comme |\parskip|. Il est possible de revenir à l’ancienne
+présentation en ajoutant \emph{dans l’environnement de liste} les commandes
+|\parskip=0pt| et |\parindent=0pt|.\hlabel{par-in-lists}
+
\subsection{Changements entre les versions 3.4d et 3.3d}
\label{ssec:changes-3.4}
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.dtx b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
index 441b411aee..fa68afd071 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.dtx
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
@@ -11,7 +11,7 @@
%<frenchb>\ProvidesLanguage{frenchb}
%<lua>--[[
%<lua> File `frenchb.lua’ generated from frenchb.dtx
- [2023/01/02 v3.5p French support from the babel system]
+ [2023/03/08 v3.5q French support from the babel system]
%<*internal>
\iffalse
%</internal>
@@ -40,8 +40,7 @@
%%
%</dtx>
%<*filedriver>
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b, lang=en-US}
+\DocumentMetadata{pdfstandard=A-2b, lang=en-US}
\documentclass[a4paper]{ltxdoc}
\usepackage[left=38mm,right=38mm,top=30mm,bottom=50mm]{geometry}
\usepackage[dvipsnames]{xcolor}
@@ -828,6 +827,13 @@
% Version 3.5n introduces a new command |\bname{}| (an alternative to
% |\bsc{}|).
%
+% Version 3.5q corrects a bug in lists layout: |\listparindent|
+% (formely 0pt) is defined as |\parindent| and if |\parskip > 0pt|,
+% |\parsep| is now defined as |\parskip|. This ensures that
+% paragraphs included in lists are now visible. The former behaviour
+% can be recovered by adding |\parskip=0pt|, |\parindent=0pt|
+% \emph{inside} the list environment.
+%
% \subsubsection*{What’s new in version 3.4?}
%
% Version 3.4a adds a new command |\frenchdate| (see
@@ -5250,6 +5256,8 @@ return french_punctuation
% An option for backward compatibility is provided.}
%
% \begin{macro}{\listFB}
+% \changes{v3.5q}{2023/02/15}{Bug correction: \cs{parsep} should be
+% related to \cs{parskip} and \cs{listparindent} to \cs{parindent}.}
% \begin{macro}{\listORI}
% \begin{macro}{\FB@listVsettings}
% Vertical spacing in lists should be shorter in French texts than
@@ -5274,20 +5282,31 @@ return french_punctuation
% \begin{macrocode}
\let\listORI\list
\let\endlistORI\endlist
+\newdimen\FB@parskip
\def\FB@listVsettings{%
- \setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}%
- \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}%
\setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}%
\setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}%
% \end{macrocode}
% |\parskip| is of type `skip’, its mean value only (\emph{not
% the glue}) should be subtracted from |\topsep| and added to
% |\partopsep|, so convert |\parskip| to a `dimen’ using
-% |\@tempdima|.
+% |\FB@parskip|.
+% \begin{macrocode}
+ \FB@parskip=\parskip
+ \addtolength{\topsep}{-\FB@parskip}%
+ \addtolength{\partopsep}{\FB@parskip}%
+ \setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}%
+ \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}%
+% \end{macrocode}
+% (v3.5q) If |\parskip| is not null, |\parsep| is set to |\parskip|,
+% so paragraphs inside items will be preceeded by the same vertical
+% space as paragraphs located outside lists; the vertical skip before
+% items (|\itemsep| + |\parsep|) doesn’t need to be enlarged.
% \begin{macrocode}
- \@tempdima=\parskip
- \addtolength{\topsep}{-\@tempdima}%
- \addtolength{\partopsep}{\@tempdima}%
+ \ifdim\FB@parskip>0pt
+ \setlength{\parsep}{\FB@parskip}%
+ \addtolength{\itemsep}{-\FB@parskip}%
+ \fi
}
\def\listFB#1#2{\listORI{#1}{\FB@listVsettings #2}}
\let\endlistFB\endlistORI
@@ -5387,7 +5406,7 @@ return french_punctuation
\labelindentFB}%
\else
% \end{macrocode}
-% Default layout: labels hanging into the left margin.
+% Default layout: labels hanging into the list left margin.
% \begin{macrocode}
\leftmarginFB=\labelwidthFB
\advance\leftmarginFB by \labelsep
@@ -5395,6 +5414,11 @@ return french_punctuation
{\csname leftmargin\romannumeral\FB@dp\endcsname =
\leftmarginFB}%
\advance\leftmargini by \listindentFB
+% \end{macrocode}
+% (v3.5q) Same `parindent’ for paragraphs in lists’ items (was null
+% as in standard lists).
+% \begin{macrocode}
+ \listparindent=\parindent
\fi
\leftmargin=\csname leftmargin%
\ifnum\@listdepth=\@ne i\else ii\fi\endcsname
@@ -5419,18 +5443,22 @@ return french_punctuation
% unless option \fbo{StandardListSpacing} is set, then set horizontal
% indentations according to |\FB@listHsettings| unless option
% \fbo{ListOldLayout} is \fbo{true} (compatibility with lists
-% up to v.~2.5k).
+% up to v2.5k).
% \begin{macrocode}
\def\FB@itemizesettings{%
\ifFBStandardListSpacing
\else
- \setlength{\itemsep}{\z@}%
- \setlength{\parsep}{\z@}%
\setlength{\topsep}{\z@}%
\setlength{\partopsep}{\z@}%
- \@tempdima=\parskip
- \addtolength{\topsep}{-\@tempdima}%
- \addtolength{\partopsep}{\@tempdima}%
+ \FB@parskip=\parskip
+ \addtolength{\topsep}{-\FB@parskip}%
+ \addtolength{\partopsep}{\FB@parskip}%
+ \setlength{\itemsep}{\z@}%
+ \setlength{\parsep}{\z@}%
+ \ifdim\FB@parskip>0pt
+ \setlength{\parsep}{\FB@parskip}%
+ \addtolength{\itemsep}{-\FB@parskip}%
+ \fi
\fi
\settowidth{\labelwidth}{\csname\@itemitem\endcsname}%
\ifFBListOldLayout
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.pdf b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
index 11268e191f..395080ae3f 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/CHANGES.md b/macros/latex/contrib/genealogytree/CHANGES.md
index 186d064592..efae235b48 100644
--- a/macros/latex/contrib/genealogytree/CHANGES.md
+++ b/macros/latex/contrib/genealogytree/CHANGES.md
@@ -17,6 +17,23 @@ and this project adheres to
+## [2.3.0] - 2023-03-09
+
+### Added
+- Catalan translation provided by Josep Tebé i Cetó
+- Chinese translation provided by Chen Yanzheng
+- Value `catalan` for option `language`
+- Value `chinese` for option `language`
+
+### Fixed
+- Option `autofill parents unspecific` was broken (issue #41)
+- Internal documentation macro adapted to newer interal tcolorbox syntax
+- Options `fill zoom DBimage` and `fill overzoom DBimage` adapted to be
+ compatible to the tikzfill package (expansion problem).
+ `\gtrincludeDBimage` also changed accordingly.
+
+
+
## [2.2.0] - 2022-03-17
### Added
@@ -425,7 +442,7 @@ and this project adheres to
- Pre publication development.
-
-[v2.1.0] https://github.com/T-F-S/genealogytree/compare/v2.01...2.1.0
+[v2.2.0] https://github.com/T-F-S/genealogytree/compare/v2.1.0...v2.2.0
+[v2.1.0] https://github.com/T-F-S/genealogytree/compare/v2.01...v2.1.0
[v2.01] https://github.com/T-F-S/genealogytree/compare/v2.00...v2.01
diff --git a/macros/latex/contrib/genealogytree/README.md b/macros/latex/contrib/genealogytree/README.md
index 25c4d06ef4..c441228cfc 100644
--- a/macros/latex/contrib/genealogytree/README.md
+++ b/macros/latex/contrib/genealogytree/README.md
@@ -1,6 +1,6 @@
-# The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+# The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
-> Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+> Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
> This work may be distributed and/or modified under the
> conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
index 0b893c644a..ab59ba00b9 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
index ec8a2ea0fc..b84b9ac1eb 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
index 8fa4eb74cc..6bbe1e3096 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
index 9995cbd07a..87dd10be43 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
index 58f985e5db..7307ad730d 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree.pdf b/macros/latex/contrib/genealogytree/genealogytree.pdf
index 9c75dfe74e..3d110c0514 100644
--- a/macros/latex/contrib/genealogytree/genealogytree.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree.sty b/macros/latex/contrib/genealogytree/genealogytree.sty
index 8ab1ac5fd4..6704428ff3 100644
--- a/macros/latex/contrib/genealogytree/genealogytree.sty
+++ b/macros/latex/contrib/genealogytree/genealogytree.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% genealogytree.sty: genealogy trees (graphs)
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{genealogytree}[2022/03/17 version 2.2.0 genealogy trees]
-\def\gtr@version{2.2.0}
+\ProvidesPackage{genealogytree}[2023/03/09 version 2.3.0 genealogy trees]
+\def\gtr@version{2.3.0}
\RequirePackage{expl3}[2020/02/25]
\RequirePackage{xparse,xfp}
@@ -134,6 +134,8 @@
\gtr@add@library{core.options}{gtrcore.options.code.tex}
\gtr@add@library{core.symbols}{gtrcore.symbols.code.tex}
+\gtr@add@library{lang.catalan}{gtrlang.catalan.code.tex}
+\gtr@add@library{lang.chinese}{gtrlang.chinese.code.tex}
\gtr@add@library{lang.danish}{gtrlang.danish.code.tex}
\gtr@add@library{lang.dutch}{gtrlang.dutch.code.tex}
\gtr@add@library{lang.english}{gtrlang.english.code.tex}
diff --git a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
index 1d2644f484..b70f50415c 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.contour.code.tex: Contours
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Contour
diff --git a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
index effbc01f08..3f750e241b 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.drawing.code.tex: Drawing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Auxiliary Tools
diff --git a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
index 2b6c7081cc..a7bd386551 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.node.code.tex: Node Boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%
% Processors %
@@ -1272,13 +1272,27 @@
\ifdefvoid{\gtrDBimage}{#2}{#1}%
}
-\def\gtrincludeDBimage#1{%
- \begingroup\edef\x{\endgroup\noexpand\includegraphics[\gtrDBimageopt,#1]}\x{\gtrDBimage}%
-}
+\ExplSyntaxOn
+
+\NewDocumentCommand \gtrincludeDBimage { m }
+ {
+ \exp_last_unbraced:NNV \includegraphics [ \gtrDBimageopt, #1 ] { \gtrDBimage }
+ }
+
+\tikzset
+ {
+ fill@gtrDB@image@options/.code=
+ {
+ \tl_set:Nx \l_tmpa_tl { fill~image~options = { \exp_not:V \gtrDBimageopt } }
+ \pgfkeysalsofrom { \l_tmpa_tl }
+ }
+ }
+
+\ExplSyntaxOff
\tikzset{%
- fill overzoom DBimage/.style={fill image options=\gtrDBimageopt,fill overzoom image=\gtrDBimage},%
- fill zoom DBimage/.style={fill image options=\gtrDBimageopt,fill zoom image=\gtrDBimage},%
+ fill overzoom DBimage/.style={fill@gtrDB@image@options,fill overzoom image=\gtrDBimage},%
+ fill zoom DBimage/.style={fill@gtrDB@image@options,fill zoom image=\gtrDBimage},%
}
\gtrset{%
diff --git a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
index cc06b0d245..30b96faa84 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.options.code.tex: Options
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% General handling
@@ -458,7 +458,7 @@
\let\gtr@parent@@p\gtr@parent@@p@unspecific%
},
autofill parents unspecific*/.default=5,
- autofill parents unspecific/.code={%
+ autofill parents unspecific/.style={%
autofill parents unspecific*={#1},
ignore level={\the\numexpr#1+1\relax},
},
diff --git a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
index ae6c57edce..d8e44d1468 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.parser.code.tex: Parser
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%% (local) stack implementation
\def\gtrnewstack#1{%
diff --git a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
index e2766e6db5..b00f9a7bce 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.processing.code.tex: Processing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Processing - common
%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
index defe242cfd..526c998371 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrcore.symbols.code.tex: Symbols
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Symbols
diff --git a/macros/latex/contrib/genealogytree/gtrlang.catalan.code.tex b/macros/latex/contrib/genealogytree/gtrlang.catalan.code.tex
new file mode 100644
index 0000000000..c101559106
--- /dev/null
+++ b/macros/latex/contrib/genealogytree/gtrlang.catalan.code.tex
@@ -0,0 +1,87 @@
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
+%% gtrlang.catalan.code.tex: Catalan language
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Translation by Josep Tebe i Ceto <JosepTebe at proton dot me>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 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 all files listed in README
+%%
+\gtr@set@library@version{2.3.0}
+
+\gtrset{language@/catalan/.code={%
+ \gtrset{symlang/.cd,
+ Born=nascut,
+ Bornoutofwedlock=nascut fora del matrimoni,
+ Stillborn=nascut mort,
+ Diedonbirthday=mort al n\'eixer,
+ Baptized=batejat,
+ Engaged=comprom\`es,
+ Married=casat,
+ Divorced=divorciat,
+ Partnership=uni\'o sense matrimoni,
+ Floruit=per\'iode d'activitat,
+ Died=mort,
+ Killed=mort en acci\'o,
+ Buried=enterrat,
+ Funeralurn=incinerat,
+ Female=dona,
+ Male=home,
+ Neuter=sexe desconegut
+ }%
+ \gtrset{%
+ month long/.cd,
+ 01/.initial=gener,
+ 02/.initial=febrer,
+ 03/.initial=mar\c{c},
+ 04/.initial=abril,
+ 05/.initial=maig,
+ 06/.initial=juny,
+ 07/.initial=juliol,
+ 08/.initial=agost,
+ 09/.initial=setembre,
+ 10/.initial=octubre,
+ 11/.initial=novembre,
+ 12/.initial=desembre,
+ }%
+ \gtrset{%
+ month short/.cd,
+ 01/.initial=gen\protect\dot,
+ 02/.initial=feb\protect\dot,
+ 03/.initial=mar\protect\dot,
+ 04/.initial=abr\protect\dot,
+ 05/.initial=mai\protect\dot,
+ 06/.initial=jun\protect\dot,
+ 07/.initial=jul\protect\dot,
+ 08/.initial=ago\protect\dot,
+ 09/.initial=set\protect\dot,
+ 10/.initial=oct\protect\dot,
+ 11/.initial=nov\protect\dot,
+ 12/.initial=des\protect\dot,
+ }%
+ \gtrset{%
+ set@typical@date@format=d month yyyy,
+ calendar text for=AD is {}{ dC},
+ calendar text for=BC is {}{ aC},
+ calendar text for=GR is {}{\protect\textsuperscript{greg.}},
+ calendar text for=JU is {}{\protect\textsuperscript{jul.}},
+ calendar text for=caAD is {ca.~}{ dC},
+ calendar text for=caBC is {ca.~}{ aC},
+ calendar text for=ca is {ca.~}{},
+ date range full={}{ a }{},
+ date range before={abans de }{},
+ date range after={despr\'es de }{},
+ place text={a }{},
+ }%
+}}
diff --git a/macros/latex/contrib/genealogytree/gtrlang.chinese.code.tex b/macros/latex/contrib/genealogytree/gtrlang.chinese.code.tex
new file mode 100644
index 0000000000..cd32960c32
--- /dev/null
+++ b/macros/latex/contrib/genealogytree/gtrlang.chinese.code.tex
@@ -0,0 +1,94 @@
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
+%% gtrlang.chinese.code.tex: Chinese language-Simplified
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Translation by Chen Yanzheng <snbcyz at mail dot ustc dot edu dot cn>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 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 all files listed in README
+%%
+\gtr@set@library@version{2.3.0}
+
+\gtrset{language@/chinese/.code={%
+ \gtrset{symlang/.cd,
+ Born={出生},
+ Bornoutofwedlock={�婚生},
+ Stillborn={死产},
+ Diedonbirthday={出生当日死亡},
+ Baptized={å?—æ´—},
+ Engaged={订婚},
+ Married={结婚},
+ Divorced={离婚},
+ Partnership={未婚伴侣},
+ Floruit={在世时期},
+ Died={死亡},
+ Killed={阵亡},
+ Buried={下葬},
+ Funeralurn={�化},
+ Female={女性},
+ Male={男性},
+ Neuter={性别�详/中性}
+ }%
+ \gtrset{%
+ month long/.cd,
+ 01/.initial=1月,
+ 02/.initial=2月,
+ 03/.initial=3月,
+ 04/.initial=4月,
+ 05/.initial=5月,
+ 06/.initial=6月,
+ 07/.initial=7月,
+ 08/.initial=8月,
+ 09/.initial=9月,
+ 10/.initial=10月,
+ 11/.initial=11月,
+ 12/.initial=12月,
+ }%
+ \gtrset{%
+ month short/.cd,
+ 01/.initial=1\protect\dot,
+ 02/.initial=2\protect\dot,
+ 03/.initial=3\protect\dot,
+ 04/.initial=4\protect\dot,
+ 05/.initial=5\protect\dot,
+ 06/.initial=6\protect\dot,
+ 07/.initial=7\protect\dot,
+ 08/.initial=8\protect\dot,
+ 09/.initial=9\protect\dot,
+ 10/.initial=10\protect\dot,
+ 11/.initial=11\protect\dot,
+ 12/.initial=12\protect\dot,
+ }%
+ \gtrset{%
+ set@typical@date@format=yyyy-mm-dd,
+ calendar text for=AD is {公元}{},
+ calendar text for=BC is {公元�}{},
+ calendar text for=GR is {格里高利历}{},
+ calendar text for=JU is {儒略历}{},
+ calendar text for=caAD is {约公元}{},
+ calendar text for=caBC is {约公元�}{},
+ calendar text for=ca is {约}{},
+ date range full={自}{至}{},
+ date range before={}{以�},
+ date range after={}{以�},
+ place text={于}{},
+ }%
+}}
+%SPECIAL NOTE:\usepackage{CJK}
+%\begin{document}
+%\begin{CJK*}{UTF8}{gbsn}
+%gbsn IS THE FONT
+%CONTENT
+%\end{CJK*}
+%\end{document}
diff --git a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
index 1d9a4e52a0..2eb28a73bb 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.danish.code.tex: Danish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Mikkel Eide Eriksen <mikkel dot eriksen at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/danish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
index d38f7791f7..9050865f5e 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.dutch.code.tex: Dutch language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Dirk Bosmans <onstrees at myonline be>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/dutch/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
index c13b2f4c69..6ab220e854 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.english.code.tex: English language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/english/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
index aceff41a25..9e8cdef2c8 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.french.code.tex: French language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Denis Bitouze <denis dot bitouze at univ-littoral fr>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/french/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
index 4d0152a789..b43f8840a0 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.german.code.tex: German language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/german/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
index ed2b1def4f..9bc9f49725 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.italian.code.tex: Italian language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Andrea Vaccari <ing dot andrea dot vaccari at gmail com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/italian/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
index e67ffb84aa..1065f3bd9c 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.portuguese.code.tex: Portuguese language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Natan de Almeida Laverde <natanlaverde at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/portuguese/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
index d2a5bd45d8..358efdb818 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.spanish.code.tex: Spanish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Francisco G. Perez Sanchez <ozo.froid at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/spanish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
index 18d3e10a63..cfcd43edaa 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlang.swedish.code.tex: Swedish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Per Starbaeck <per at starback.se>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\gtrset{language@/swedish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
index 80a7ee79ae..b1dfc8c329 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlib.debug.code.tex: Debugger
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\RequirePackage{array,tabularx}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
index 8c09a9eb45..4aa2dac789 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlib.fanchart.code.tex: Fancharts
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
index b58ace1043..0bbfe4638c 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
+%% The LaTeX package genealogytree - version 2.3.0 (2023/03/09)
%% gtrlib.templates.code.tex: Templates
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.2.0}
+\gtr@set@library@version{2.3.0}
% Templates
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index 8d789be01c..56f51f6f0d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,6 +5,14 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2023-03-09]
+
+### Fixed
+ - regression data producer in xmp
+
+### Changed
+ - removed/reduced fontspec firstaid to avoid clash with new l3backend and with option parsing (issue #47)
+
## [2023-02-20]
### Added
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 427ecb77ed..4cf2155174 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.95w, 2023-02-20
+Version: 0.95x, 2023-03-09
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index a91b8a348a..dcfba47cc0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2023-02-20 v0.95w
+\ProvidesPackage{color-ltx}[2023-03-09 v0.95x
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index c60ee84fcf..2b08ae1d80 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-02-20}{0.95w}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-03-09}{0.95x}
{temporay patches to for the colorspace package to test pdfresource management ... UF}
% colorspace can define more models, that l3color can't yet handle.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
deleted file mode 100644
index 01f8530a65..0000000000
--- a/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
+++ /dev/null
@@ -1,3888 +0,0 @@
-%%
-%% This is file `fontspec-luatex.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% fontspec.dtx (with options: `fontspec,LU')
-%% fontspec-code-load.dtx (with options: `fontspec,LU')
-%% fontspec-code-vars.dtx (with options: `fontspec,LU')
-%% fontspec-code-msg.dtx (with options: `fontspec,LU')
-%% fontspec-code-opening.dtx (with options: `fontspec,LU')
-%% fontspec-code-fontload.dtx (with options: `fontspec,LU')
-%% fontspec-code-interfaces.dtx (with options: `fontspec,LU')
-%% fontspec-code-user.dtx (with options: `fontspec,LU')
-%% fontspec-code-api.dtx (with options: `fontspec,LU')
-%% fontspec-code-internal.dtx (with options: `fontspec,LU')
-%% fontspec-code-opentype.dtx (with options: `fontspec,LU')
-%% fontspec-code-graphite.dtx (with options: `fontspec,LU')
-%% fontspec-code-keyval.dtx (with options: `fontspec,LU')
-%% fontspec-code-feat-opentype.dtx (with options: `fontspec,LU')
-%% fontspec-code-scripts.dtx (with options: `fontspec,LU')
-%% fontspec-code-lang.dtx (with options: `fontspec,LU')
-%% fontspec-code-feat-aat.dtx (with options: `fontspec,LU')
-%% fontspec-code-enc.dtx (with options: `fontspec,LU')
-%% fontspec-code-math.dtx (with options: `fontspec,LU')
-%% fontspec-code-closing.dtx (with options: `fontspec,LU')
-%% fontspec-code-xfss.dtx (with options: `fontspec,LU')
-%% ------------------------------------------------
-%% The FONTSPEC package <wspr.io/fontspec>
-%% ------------------------------------------------
-%% Copyright 2004-2017 Will Robertson, LPPL "maintainer"
-%% Copyright 2009-2013 Khaled Hosny
-%% ------------------------------------------------
-%% This package is free software and may be redistributed and/or modified under
-%% the conditions of the LaTeX Project Public License, version 1.3c or higher
-%% (your choice): <http://www.latex-project.org/lppl/>.
-%% ------------------------------------------------
-%%^^A%% fontspec.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%%^^A%% Metadata for the package, including files and versioning
-
-\RequirePackage{xparse}
-\ProvidesExplPackage{fontspec-luatex-tmp-ltx}%
- {2022/01/15}{2023-02-20}{0.95w}
-
-%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
-%%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\bool_new:N \l__fontspec_firsttime_bool
-\bool_new:N \l__fontspec_nobf_bool
-\bool_new:N \l__fontspec_noit_bool
-\bool_new:N \l__fontspec_nosc_bool
-\bool_new:N \l__fontspec_check_bool
-\bool_new:N \l__fontspec_tfm_bool
-\bool_new:N \l__fontspec_atsui_bool
-\bool_new:N \l__fontspec_ot_bool
-\bool_new:N \l__fontspec_mm_bool
-\bool_new:N \l__fontspec_harfbuzz_bool
-\bool_new:N \l__fontspec_graphite_bool
-\bool_new:N \l__fontspec_fontcfg_bool
-\bool_set_true:N \l__fontspec_fontcfg_bool
-\bool_new:N \g__fontspec_math_euler_bool
-\bool_new:N \g__fontspec_math_lucida_bool
-\bool_new:N \g__fontspec_pkg_euler_loaded_bool
-\bool_new:N \g__fontspec_cfg_bool
-\bool_new:N \g__fontspec_math_bool
-\bool_new:N \g__fontspec_euenc_bool
-\bool_new:N \l__fontspec_tmpa_bool
-\bool_new:N \l__fontspec_disable_defaults_bool
-\bool_new:N \l__fontspec_alias_bool
-\bool_new:N \l__fontspec_external_bool
-\bool_new:N \l__fontspec_defining_encoding_bool
-\bool_new:N \l__fontspec_scriptlang_exist_bool
-\bool_new:N \g__fontspec_em_normalise_slant_bool
-\bool_new:N \l__fontspec_proceed_bool
-\bool_new:N \l__fontspec_never_check_bool
-\int_new:N \l__fontspec_script_int
-\int_new:N \l__fontspec_language_int
-\int_new:N \l__fontspec_strnum_int
-\int_new:N \l__fontspec_tmp_int
-\int_new:N \l__fontspec_tmpa_int
-\int_new:N \l__fontspec_tmpb_int
-\int_new:N \l__fontspec_tmpc_int
-\int_new:N \l__fontspec_em_int
-\int_new:N \l__fontspec_emdef_int
-\int_new:N \l__fontspec_strong_int
-\int_new:N \l__fontspec_strongdef_int
-\fp_new:N \l__fontspec_tmpa_fp
-\fp_new:N \l__fontspec_tmpb_fp
-\dim_new:N \l__fontspec_tmpa_dim
-\dim_new:N \l__fontspec_tmpb_dim
-\dim_new:N \l__fontspec_tmpc_dim
-\seq_new:N \l__fontspec_bf_series_seq
-\clist_new:N \g__fontspec_default_fontopts_clist
-\clist_new:N \g__fontspec_all_keyval_modules_clist
-\clist_new:N \l__fontspec_sizefeat_clist
-\clist_set:Nn \l__fontspec_sizefeat_clist {Size={-}}
-\clist_new:N \l__fontspec_extensions_clist
-\clist_new:N \l__fontspec_fontopts_clist
-\clist_new:N \l__fontspec_family_fontopts_clist
-\clist_new:N \l__fontspec_all_features_clist
-\clist_new:N \l__fontspec_leftover_clist
-\clist_new:N \l__fontspec_keys_leftover_clist
-\clist_new:N \l__fontspec_sizing_leftover_clist
-\clist_new:N \l__fontspec_fontfeat_clist
-\clist_new:N \l__fontspec_fontfeat_curr_clist
-\clist_new:N \l__fontspec_arg_clist
-\clist_new:N \l__fontspec_this_feat_clist
-\clist_new:N \l__fontspec_fontfeat_up_clist
-\clist_new:N \l__fontspec_fontfeat_bf_clist
-\clist_new:N \l__fontspec_fontfeat_it_clist
-\clist_new:N \l__fontspec_fontfeat_bfit_clist
-\clist_new:N \l__fontspec_fontfeat_sl_clist
-\clist_new:N \l__fontspec_fontfeat_bfsl_clist
-\clist_new:N \l__fontspec_fontfeat_sw_clist
-\clist_new:N \l__fontspec_fontfeat_bfsw_clist
-\clist_new:N \l__fontspec_fontfeat_sc_clist
-\prop_new:N \g__fontspec_fontopts_prop
-\prop_new:N \l__fontspec_nfss_prop
-\prop_new:N \l__fontspec_nfssfont_prop
-\prop_new:N \g__fontspec_OT_features_prop
-\prop_new:N \g__fontspec_all_opentype_feature_names_prop
-\prop_new:N \g__fontspec_em_prop
-\prop_new:N \g__fontspec_strong_prop
-\prop_new:N \g__fontspec_fontid_family_prop
-\prop_new:N \g__fontspec_family_int_prop
-\tl_new:N \l_fontspec_family_tl
-\tl_new:N \g_fontspec_encoding_tl
-\tl_new:N \l_fontspec_fontname_tl
-\tl_clear_new:N \UTFencname
-\tl_clear_new:N \cyrillicencoding
-\tl_clear_new:N \latinencoding
-\tl_new:N \l__fontspec_renderer_tl
-\tl_new:N \l__fontspec_mode_tl
-\tl_new:N \l__fontspec_shaper_tl
-\tl_new:N \g__fontspec_defined_shapes_tl
-\tl_new:N \g__fontspec_single_feat_tl
-\tl_new:N \l__fontspec_basename_tl
-\tl_new:N \g__fontspec_curr_series_tl
-\tl_new:N \l__fontspec_curr_fontname_tl
-\tl_new:N \l__fontspec_curr_bfname_tl
-\tl_new:N \l__fontspec_ext_filename_tl
-\tl_new:N \l__fontspec_extension_tl
-\tl_new:N \l__fontspec_font_path_tl
-\tl_new:N \l__fontspec_fontid_tl
-\tl_new:N \l__fontspec_fontname_tl
-\tl_new:N \l__fontspec_options_tl
-\tl_new:N \l__fontspec_saved_fontname_tl
-\tl_new:N \l__fontspec_prev_unicode_name_tl
-\tl_new:N \g__fontspec_nfss_enc_tl
-\tl_new:N \g__fontspec_nfss_family_tl
-\tl_new:N \l__fontspec_nfss_sc_tl
-\tl_new:N \l__fontspec_nfss_tl
-\tl_new:N \l__fontspec_nfss_fam_tl
-\tl_new:N \l__fontspec_size_tl
-\tl_new:N \l__fontspec_sizedfont_tl
-\tl_new:N \l__fontspec_this_font_tl
-\tl_new:N \l__fontspec_ttc_index_tl
-\tl_new:N \l__fontspec_smcp_shape_tl
-\tl_new:N \l__fontspec_emshape_query_tl
-\tl_new:N \l__fontspec_em_switch_tl
-\tl_new:N \l__fontspec_strong_switch_tl
-\tl_new:N \l__fontspec_tmp_tl
-\tl_new:N \l__fontspec_tmpa_tl
-\tl_new:N \l__fontspec_tmpb_tl
-\tl_new:N \l__fontspec_em_tmp_tl
-\tl_new:N \l__fontspec_strong_tmp_tl
-\tl_new:N \g__fontspec_mathrm_tl
-\tl_new:N \g__fontspec_bfmathrm_tl
-\tl_new:N \g__fontspec_mathsf_tl
-\tl_new:N \g__fontspec_mathtt_tl
-\tl_gset:Nn \g__fontspec_mathrm_tl {\rmdefault}
-\tl_gset:Nn \g__fontspec_mathsf_tl {\sfdefault}
-\tl_gset:Nn \g__fontspec_mathtt_tl {\ttdefault}
-\tl_new:N \l__fontspec_family_label_tl
-\tl_new:N \l__fontspec_fake_slant_tl
-\tl_new:N \l__fontspec_fake_embolden_tl
-\tl_new:N \l__fontspec_fontname_up_tl
-\tl_new:N \l__fontspec_fontname_bf_tl
-\tl_new:N \l__fontspec_fontname_it_tl
-\tl_new:N \l__fontspec_fontname_bfit_tl
-\tl_new:N \l__fontspec_fontname_sl_tl
-\tl_new:N \l__fontspec_fontname_bfsl_tl
-\tl_new:N \l__fontspec_fontname_sw_tl
-\tl_new:N \l__fontspec_fontname_bfsw_tl
-\tl_new:N \l__fontspec_fontname_sc_tl
-\tl_new:N \l__fontspec_script_tl
-\tl_new:N \l__fontspec_script_name_tl
-\tl_set:Nn \l__fontspec_script_name_tl {CustomDefault}
-\tl_new:N \l__fontspec_lang_tl
-\tl_new:N \l__fontspec_lang_name_tl
-\tl_set:Nn \l__fontspec_lang_name_tl {Default}
-\tl_new:N \l__fontspec_scale_tl
-\tl_new:N \l__fontspec_hyphenchar_tl
-\tl_new:N \l__fontspec_hexcol_tl
-\tl_new:N \l__fontspec_opacity_tl
-\tl_new:N \l__fontspec_optical_size_tl
-\tl_new:N \l__fontspec_mapping_tl
-\tl_new:N \l__fontspec_punctspace_adjust_tl
-\tl_new:N \l__fontspec_wordspace_adjust_tl
-\tl_new:N \l__fontspec_postadjust_tl
-\tl_const:Nn \c__fontspec_hexcol_tl {000000}
- \tl_const:Nn \c__fontspec_opacity_tl {}
-\tl_const:Nn \c__fontspec_postadjust_tl { \l__fontspec_wordspace_adjust_tl \l__fontspec_punctspace_adjust_tl }
-\tl_new:N \g__fontspec_rawfeatures_sclist
-\tl_new:N \l__fontspec_pre_feat_sclist
-\tl_new:N \l__fontspec_rmfamily_family_tl
-\tl_new:N \l__fontspec_sffamily_family_tl
-\tl_new:N \l__fontspec_ttfamily_family_tl
-\tl_new:N \l__fontspec_rmfamily_encoding_tl
-\tl_new:N \l__fontspec_sffamily_encoding_tl
-\tl_new:N \l__fontspec_ttfamily_encoding_tl
-
-%%^^A%% fontspec-code-msg.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\cs_new:Npn \__fontspec_error:n { \msg_error:nn {fontspec} }
-\cs_new:Npn \__fontspec_error:nn { \msg_error:nnn {fontspec} }
-\cs_new:Npn \__fontspec_error:nx { \msg_error:nnx {fontspec} }
-\cs_new:Npn \__fontspec_error:nxx { \msg_error:nnxx {fontspec} }
-\cs_new:Npn \__fontspec_warning:n { \msg_warning:nn {fontspec} }
-\cs_new:Npn \__fontspec_warning:nx { \msg_warning:nnx {fontspec} }
-\cs_new:Npn \__fontspec_warning:nxx { \msg_warning:nnxx {fontspec} }
-\cs_new:Npn \__fontspec_info:n { \msg_info:nn {fontspec} }
-\cs_new:Npn \__fontspec_info:nx { \msg_info:nnx {fontspec} }
-\cs_new:Npn \__fontspec_info:nxx { \msg_info:nnxx {fontspec} }
-\cs_new:Npn \__fontspec_trace:n { \msg_trace:nn {fontspec} }
-\cs_generate_variant:Nn \msg_new:nnn {nnx}
-\cs_generate_variant:Nn \msg_new:nnnn {nnxx}
-\cs_new:Nn \__fontspec_msg_new:nn
- { \msg_new:nnx {fontspec} {#1} { \tl_trim_spaces:n {#2} } }
-\cs_new:Nn \__fontspec_msg_new:nnn
- { \msg_new:nnxx {fontspec} {#1} { \tl_trim_spaces:n {#2} } { \tl_trim_spaces:n {#3} } }
-\char_set_catcode_space:n {32}
-\__fontspec_msg_new:nn {only-inside-encdef}
- {
- \exp_not:N #1 can only be used in the second argument
- to \string\DeclareUnicodeEncoding.
- }
-\__fontspec_msg_new:nn {no-size-info}
- {
- Size information must be supplied.\\
- For example, SizeFeatures={Size={8-12},...}.
- }
-\__fontspec_msg_new:nnn {font-not-found}
- {
- The font "#1" cannot be found.
- }
- {
- A font might not be found for many reasons.\\
- Check the spelling, where the font is installed etc. etc.\\\\
- When in doubt, ask someone for help!
- }
-\__fontspec_msg_new:nnn {rename-feature-not-exist}
- {
- The feature #1 doesn't appear to be defined.
- }
- {
- It looks like you're trying to rename a feature that doesn't exist.
- }
-\__fontspec_msg_new:nn {no-glyph}
- {
- '#1' does not contain glyph #2.
- }
-\__fontspec_msg_new:nnn {euler-too-late}
- {
- The euler package must be loaded BEFORE fontspec.
- }
- {
- fontspec only overwrites euler's attempt to
- define the maths text fonts if fontspec is
- loaded after euler. Type <return> to proceed
- with incorrect \string\mathit, \string\mathbf, etc.
- }
-\__fontspec_msg_new:nnn {no-xcolor}
- {
- Cannot load named colours without the xcolor package.
- }
- {
- Sorry, I can't do anything to help. Instead of loading
- the color package, use xcolor instead.
- }
-\__fontspec_msg_new:nnn {unknown-color-model}
- {
- Error loading colour `#1'; unknown colour model.
- }
- {
- Sorry, I can't do anything to help. Please report this error
- to my developer with a minimal example that causes the problem.
- }
-\__fontspec_msg_new:nnn {not-in-addfontfeatures}
- {
- The "#1" font feature cannot be used in \string\addfontfeatures.
- }
- {
- This is due to how TeX loads fonts; such settings
- are global so adding them mid-document within a group causes
- confusion. You'll need to define multiple font families to achieve
- what you want.
- }
-\__fontspec_msg_new:nn {tu-clash}
- {
- I have found the tuenc.def encoding definition file but the TU encoding is not
- defined by the LaTeX2e kernel; attempting to correct but you really should update
- to the latest version of LaTeX2e.
- }
-\__fontspec_msg_new:nn {tu-missing}
- {
- The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
- }
-\__fontspec_msg_new:nn {addfontfeatures-ignored}
- {
- \string\addfontfeature (s) ignored \msg_line_context:;
- it cannot be used with a font that wasn't selected by a fontspec command.\\
- \\
- The current font is "\use:c{font@name}".\\
- \int_compare:nTF { \clist_count:n {#1} = 1 }
- { The requested feature is "#1". }
- { The requested features are "#1". }
- }
-\__fontspec_msg_new:nn {feature-option-overwrite}
- {
- Option '#2' of font feature '#1' overwritten.
- }
-\__fontspec_msg_new:nn {ot-tag-too-long}
- {
- OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer.
- }
-\__fontspec_msg_new:nn {aat-feature-not-exist}
- {
- '\l_keys_key_tl=\l_keys_value_tl' feature not supported
- for AAT font '\l_fontspec_fontname_tl'.
- }
-\__fontspec_msg_new:nn {aat-feature-not-exist-in-font}
- {
- AAT feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
- in font '\l_fontspec_fontname_tl'.
- }
-\__fontspec_msg_new:nn {icu-feature-not-exist}
- {
- '\l_keys_key_tl=\l_keys_value_tl' feature not supported
- for OpenType font '\l_fontspec_fontname_tl'
- }
-\__fontspec_msg_new:nn {icu-feature-not-exist-in-font}
- {
- OpenType feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
- for font '\l_fontspec_fontname_tl'
- with script '\l__fontspec_script_name_tl' and language '\l__fontspec_lang_name_tl'.
- }
-\__fontspec_msg_new:nn {no-opticals}
- {
- '#1' doesn't appear to have an Optical Size axis.
- }
-\__fontspec_msg_new:nn {language-not-exist}
- {
- Language '#1' not available
- for font '\l_fontspec_fontname_tl'
- with script '\l__fontspec_script_name_tl'.
- }
-\__fontspec_msg_new:nn {only-xetex-feature}
- {
- Ignored XeTeX-only feature: '#1'.
- }
-\__fontspec_msg_new:nn {only-luatex-feature}
- {
- Ignored LuaTeX-only feature: '#1'.
- }
-\__fontspec_msg_new:nn {unknown-renderer}
- {
- Renderer '#1' unknown. Assuming Harfbuzz with 'shaper=#1'.
- Please raise a fontspec issue to add this shaper to the interface.
- }
-\__fontspec_msg_new:nn {no-mapping}
- {
- Input mapping not supported in LuaTeX.
- }
-\__fontspec_msg_new:nn {no-mapping-ligtex}
- {
- Input mapping not supported in LuaTeX.\\
- Use "Ligatures=TeX" instead of "Mapping=tex-text".
- }
-\__fontspec_msg_new:nn {cm-default-obsolete}
- {
- The "cm-default" package option is obsolete.
- }
-\__fontspec_msg_new:nn {font-index-needs-ttc}
- {
- The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
- Feature ignored.
- }
-\__fontspec_msg_new:nn {feat-cannot-remove}
- {
- The "#1" feature cannot be deactivated. Request ignored.
- }
-\__fontspec_msg_new:nn {defining-font}
- {
- Font family '\g__fontspec_nfss_family_tl' created for font '#2'
- with options [\l__fontspec_all_features_clist].\\
- \\
- This font family consists of the following NFSS series/shapes:\\
- \g__fontspec_defined_shapes_tl
- }
-\__fontspec_msg_new:nn {no-font-shape}
- {
- Could not resolve font "#1" (it probably doesn't exist).
- }
-\__fontspec_msg_new:nn {set-scale}
- {
- \l_fontspec_fontname_tl\space scale = \l__fontspec_scale_tl.
- }
-\__fontspec_msg_new:nn {setup-math}
- {
- Adjusting the maths setup (use [no-math] to avoid this).
- }
-\__fontspec_msg_new:nn {no-script}
- {
- Font "#1" does not contain requested Script "#2".
- }
-\__fontspec_msg_new:nn {opa-twice}
- {
- Opacity set twice, in both Colour and Opacity.\\
- Using specification "Opacity=#1".
- }
-\__fontspec_msg_new:nn {opa-twice-col}
- {
- Opacity set twice, in both Opacity and Colour.\\
- Using an opacity specification in hex of "#1/FF".
- }
-\__fontspec_msg_new:nn {bad-colour}
- {
- Bad colour declaration "#1".
- Colour must be one of:\\
- * a named xcolor colour\\
- * a six-digit hex colour RRGGBB\\
- * an eight-digit hex colour RRGGBBTT with opacity
- }
-\char_set_catcode_ignore:n {32}
-
-%%^^A%% fontspec-code-opening.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\DeclareOption{cm-default}
- {
- \__fontspec_warning:n {cm-default-obsolete}
- }
-\DeclareOption {math} { \bool_gset_true:N \g__fontspec_math_bool }
-\DeclareOption {no-math} { \bool_gset_false:N \g__fontspec_math_bool }
-\DeclareOption {config} { \bool_gset_true:N \g__fontspec_cfg_bool }
-\DeclareOption {no-config}{ \bool_gset_false:N \g__fontspec_cfg_bool }
-\DeclareOption {euenc} { \bool_gset_true:N \g__fontspec_euenc_bool }
-\DeclareOption {tuenc} { \bool_gset_false:N \g__fontspec_euenc_bool }
-\DeclareOption {quiet}
- {
- \msg_redirect_module:nnn { fontspec } { warning } { info }
- \msg_redirect_module:nnn { fontspec } { info } { none }
- }
-\DeclareOption{silent}
- {
- \msg_redirect_module:nnn { fontspec } { warning } { none }
- \msg_redirect_module:nnn { fontspec } { info } { none }
- }
-\ExecuteOptions{config,math,tuenc}
-\ProcessOptions*
-\bool_if:NF \g__fontspec_euenc_bool
- {
- \file_if_exist:nTF {tuenc.def}
- {
- \cs_if_exist:cF {T@TU}
- {
- \__fontspec_warning:n {tu-clash}
- \DeclareFontEncoding{TU}{}{}
- \DeclareFontSubstitution{TU}{lmr}{m}{n}
- }
- }
- {
- \__fontspec_warning:n {tu-missing}
- \bool_gset_true:N \g__fontspec_euenc_bool
- }
- }
-\bool_if:NTF \g__fontspec_euenc_bool
- {
- \tl_gset:Nn \g_fontspec_encoding_tl {EU2}
- }
- { \tl_gset:Nn \g_fontspec_encoding_tl { TU } }
-\tl_set:Nn \rmdefault {lmr}
-\tl_set:Nn \sfdefault {lmss}
-\tl_set:Nn \ttdefault {lmtt}
-\RequirePackage[\g_fontspec_encoding_tl]{fontenc}
-\tl_set_eq:NN \UTFencname \g_fontspec_encoding_tl % for xunicode if needed
-\tl_if_in:NnT \@filelist {.cls} { \normalsize }
-\tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl
-\tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl
-\AtBeginDocument
- {
- \tl_set_eq:NN \cyrillicencoding \g_fontspec_encoding_tl
- \tl_set_eq:NN \latinencoding \g_fontspec_encoding_tl
- }
-\bool_if:NT \g__fontspec_euenc_bool
- {
- \cs_set_eq:NN \fontspec_tmp: \XeTeXpicfile
- \cs_set:Npn \XeTeXpicfile {}
- \RequirePackage{xunicode}
- \cs_set_eq:NN \XeTeXpicfile \fontspec_tmp:
- }
-\cs_new:Npn \FontspecSetCheckBoolTrue { \bool_set_true:N \l__fontspec_check_bool }
-\cs_new:Npn \FontspecSetCheckBoolFalse { \bool_set_false:N \l__fontspec_check_bool }
-\cs_new:Nn \__fontspec_keys_set_known:nnN
- {
- \keys_set_known:nnN {#1} {#2} #3
- }
-\cs_generate_variant:Nn \__fontspec_keys_set_known:nnN {nx}
-\cs_new:Nn \__fontspec_int_mult_truncate:Nn
- {
- \int_set:Nn #1 { \__dim_eval:w #2 #1 \__dim_eval_end: }
- }
-\cs_set:Npn \__fontspec_lua_function:ne #1#2 { \lua_now:e { fontspec.#1 ("#2") } }
-\cs_set:Npn \__fontspec_lua_function:nee #1#2#3 { \lua_now:e { fontspec.#1 ("#2","#3") } }
-\cs_set:Npn \__fontspec_lua_function:neee #1#2#3#4 { \lua_now:e { fontspec.#1 ("#2","#3","#4") } }
-\cs_set:Npn \__fontspec_lua_function:neeee #1#2#3#4#5 { \lua_now:e { fontspec.#1 ("#2","#3","#4","#5") } }
-\cs_generate_variant:Nn \int_set:Nn {Nv}
-\cs_generate_variant:Nn \keys_set:nn {nx}
-\cs_generate_variant:Nn \keys_set_known:nnN {nx}
-\cs_generate_variant:Nn \prop_put:Nnn {Nxx}
-\cs_generate_variant:Nn \prop_put:Nnn {NxV}
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn {NxV}
-\cs_generate_variant:Nn \prop_gput:Nnn {Nxn}
-\cs_generate_variant:Nn \prop_get:NnNT {NxN}
-\cs_generate_variant:Nn \prop_get:NnNTF {NxN}
-\cs_generate_variant:Nn \str_if_eq:nnTF {nv}
-\cs_generate_variant:Nn \tl_if_empty_p:n {e}
-\cs_generate_variant:Nn \tl_if_empty:nTF {x}
-\cs_generate_variant:Nn \tl_if_empty:nF {x}
-\cs_generate_variant:Nn \tl_if_empty:nF {f}
-\cs_generate_variant:Nn \tl_if_eq:nnT {ox}
-\cs_generate_variant:Nn \tl_replace_all:Nnn {Nnx}
-
-%%^^A%% fontspec-code-fontload.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\cs_set:Npn \__fontspec_primitive_font_set:Nnn #1#2#3
- {
- \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop:
- }
-\cs_set:Npn \__fontspec_primitive_font_gset:Nnn #1#2#3
- {
- \global \font #1 = #2 ~at~ \dim_eval:n {#3} \scan_stop:
- }
-\cs_set:Npn \__fontspec_font_suppress_not_found_error:
- {
- \int_set:Nn \suppressfontnotfounderror {1}
- }
-\prg_set_conditional:Nnn \__fontspec_primitive_font_if_null:N {p,TF,T,F}
- {
- \ifx #1 \nullfont
- \prg_return_true:
- \else
- \prg_return_false:
- \fi
- }
-\prg_set_conditional:Nnn \__fontspec_primitive_font_set:Nnn {TF,T,F}
- {
- \__fontspec_primitive_font_set:Nnn #1 {#2} {#3}
- \__fontspec_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:}
- }
-\prg_set_conditional:Nnn \__fontspec_primitive_font_gset:Nnn {TF,T,F}
- {
- \__fontspec_primitive_font_gset:Nnn #1 {#2} {#3}
- \__fontspec_primitive_font_if_null:NTF #1 {\prg_return_false:} {\prg_return_true:}
- }
-\cs_set:Npn \__fontspec_primitive_font_set:Onn { \exp_last_unbraced:No \__fontspec_primitive_font_set:Nnn }
-\cs_set:Npn \__fontspec_primitive_font_set:OnnF { \exp_last_unbraced:No \__fontspec_primitive_font_set:NnnF }
-\cs_set:Npn \__fontspec_primitive_font_gset:Onn { \exp_last_unbraced:No \__fontspec_primitive_font_gset:Nnn }
-\cs_set:Npn \__fontspec_primitive_font_gset:OnnF { \exp_last_unbraced:No \__fontspec_primitive_font_gset:NnnF }
-\prg_set_conditional:Nnn \__fontspec_primitive_font_if_exist:n {TF,T,F}
- {
- \group_begin:
- \__fontspec_font_suppress_not_found_error:
- \__fontspec_primitive_font_set:Nnn \l__fontspec_primitive_font {#1} { \f@size pt - 1sp }
- \__fontspec_primitive_font_if_null:NTF \l__fontspec_primitive_font
- { \group_end: \prg_return_false: }
- { \group_end: \prg_return_true: }
- }
-\prg_new_conditional:Nnn \__fontspec_primitive_font_glyph_if_exist:Nn {p,TF,T,F}
- {
- \tex_iffontchar:D #1 #2 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-\cs_new:Nn \__fontspec_primitive_font_set_hyphenchar:Nn
- {
- \tex_hyphenchar:D #1 = #2 \scan_stop:
- }
-\cs_new_eq:NN \__fontspec_primitive_font_get_name:N \fontname
-\cs_new:Npn \__fontspec_primitive_font_current_name:
- {
- \__fontspec_primitive_font_get_name:N \tex_font:D
- }
-
-%%^^A%% fontspec-code-interfaces.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\NewDocumentCommand \fontspec { O{} m O{} }
- {
- \__fontspec_main_fontspec:nn {#1,#3} {#2}
- \ignorespaces
- }
-\NewDocumentCommand \setmainfont { O{} m O{} }
- {
- \__fontspec_main_setmainfont:nn {#1,#3} {#2}
- \ignorespaces
- }
-\NewDocumentCommand \setsansfont { O{} m O{} }
- {
- \__fontspec_main_setsansfont:nn {#1,#3} {#2}
- \ignorespaces
- }
-\NewDocumentCommand \setmonofont { O{} m O{} }
- {
- \__fontspec_main_setmonofont:nn {#1,#3} {#2}
- \ignorespaces
- }
-\NewDocumentCommand \setmathrm { O{} m O{} }
- {
- \__fontspec_main_setmathrm:nn {#1,#3} {#2}
- }
-\NewDocumentCommand \setboldmathrm { O{} m O{} }
- {
- \__fontspec_main_setboldmathrm:nn {#1,#3} {#2}
- }
-\NewDocumentCommand \setmathsf { O{} m O{} }
- {
- \__fontspec_main_setmathsf:nn {#1,#3} {#2}
- }
-\NewDocumentCommand \setmathtt { O{} m O{} }
- {
- \__fontspec_main_setmathtt:nn {#1,#3} {#2}
- }
-\NewDocumentCommand \setromanfont { O{} m O{} }
- {
- \__fontspec_main_setmainfont:nn {#1,#3} {#2}
- }
-\NewDocumentCommand \newfontfamily { m O{} m O{} }
- {
- \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \NewDocumentCommand
- }
-\NewDocumentCommand \renewfontfamily { m O{} m O{} }
- {
- \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand
- }
-\NewDocumentCommand \setfontfamily { m O{} m O{} }
- {
- \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand
- }
-\NewDocumentCommand \providefontfamily { m O{} m O{} }
- {
- \__fontspec_main_newfontfamily:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand
- }
-\NewDocumentCommand \newfontface { m O{} m O{} }
- {
- \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \NewDocumentCommand
- }
-\NewDocumentCommand \renewfontface { m O{} m O{} }
- {
- \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \RenewDocumentCommand
- }
-\NewDocumentCommand \setfontface { m O{} m O{} }
- {
- \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \DeclareDocumentCommand
- }
-\NewDocumentCommand \providefontface { m O{} m O{} }
- {
- \__fontspec_main_newfontface:NnnN #1 {#2,#4} {#3} \ProvideDocumentCommand
- }
-\NewDocumentCommand \defaultfontfeatures { t+ o m }
- {
- \IfNoValueTF {#2}
- { \__fontspec_set_default_features:nn {#1} {#3} }
- { \__fontspec_set_font_default_features:nnn {#1} {#2} {#3} }
- \ignorespaces
- }
-\NewDocumentCommand \addfontfeatures {m}
- {
- \__fontspec_main_addfontfeatures:n {#1}
- }
-\NewDocumentCommand \addfontfeature {m}
- {
- \__fontspec_main_addfontfeatures:n {#1}
- }
-\NewDocumentCommand \newfontfeature {mm}
- {
- \__fontspec_main_newfontfeature:nn {#1} {#2}
- }
-\NewDocumentCommand \newAATfeature {mmmm}
- {
- \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4}
- }
-\NewDocumentCommand \newopentypefeature {mmm}
- {
- \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3}
- }
-\NewDocumentCommand \newICUfeature {mmm}
- {
- \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3}
- }
-\NewDocumentCommand \aliasfontfeature {mm}
- {
- \__fontspec_main_aliasfontfeature:nn {#1} {#2}
- }
-\NewDocumentCommand \aliasfontfeatureoption {mmm}
- {
- \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3}
- }
-\NewDocumentCommand \newfontscript {mm}
- {
- \fontspec_new_script:nn {#1} {#2}
- }
-\NewDocumentCommand \newfontlanguage {mm}
- {
- \fontspec_new_lang:nn {#1} {#2}
- }
-\NewDocumentCommand \DeclareFontExtensions {m}
- {
- \__fontspec_main_DeclareFontExtensions:n {#1}
- }
-\NewDocumentCommand \IfFontFeatureActiveTF {mmm}
- {
- \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3}
- }
-\AtBeginDocument
- {
- \RenewDocumentCommand \oldstylenums {m}
- {
- \__fontspec_main_oldstylenums:n {#1}
- }
- }
-\NewDocumentCommand \liningnums {m}
- {
- \__fontspec_main_liningnums:n {#1}
- }
-
-%%^^A%% fontspec-code-user.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\cs_new:Nn \__fontspec_main_fontspec:nn
- {
- \fontspec_set_family:Nnn \f@family {#1} {#2}
- \fontencoding { \g__fontspec_nfss_enc_tl }
- \selectfont
- }
-\cs_if_exist:NTF \@rmfamilyhook
- {
- \tl_put_right:Nn \@rmfamilyhook {\fontencoding \l__fontspec_rmfamily_encoding_tl}
- \tl_put_right:Nn \@sffamilyhook {\fontencoding \l__fontspec_sffamily_encoding_tl}
- \tl_put_right:Nn \@ttfamilyhook {\fontencoding \l__fontspec_ttfamily_encoding_tl}
- }
- {
- \tl_replace_all:cnn { rmfamily~ } { \fontfamily }
- { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
- \tl_replace_all:cnn { sffamily~ } { \fontfamily }
- { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
- \tl_replace_all:cnn { ttfamily~ } { \fontfamily }
- { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
- }
-\tl_set:Nn \l__fontspec_rmfamily_encoding_tl { \encodingdefault }
-\tl_set:Nn \l__fontspec_sffamily_encoding_tl { \encodingdefault }
-\tl_set:Nn \l__fontspec_ttfamily_encoding_tl { \encodingdefault }
-\cs_new:Nn \__fontspec_main_setmainfont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[rm]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
- \tl_set_eq:NN \rmdefault \l__fontspec_rmfamily_family_tl
- \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g__fontspec_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\rmdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \__fontspec_setmainfont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-\cs_new:Nn \__fontspec_main_setsansfont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[sf]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l__fontspec_sffamily_family_tl {#1} {#2}
- \tl_set_eq:NN \sfdefault \l__fontspec_sffamily_family_tl
- \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g__fontspec_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\sfdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \__fontspec_setsansfont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-\cs_new:Nn \__fontspec_main_setmonofont:nn
- {
- \ifdefined\DeclareFontSeriesDefault
- \DeclareFontSeriesDefault[tt]{bf}{\bfdefault}
- \fi
- \fontspec_set_family:Nnn \l__fontspec_ttfamily_family_tl {#1} {#2}
- \tl_set_eq:NN \ttdefault \l__fontspec_ttfamily_family_tl
- \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g__fontspec_nfss_enc_tl
- \str_if_eq:eeT {\familydefault} {\ttdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \__fontspec_setmonofont_hook:nn {#1} {#2} % for unicode-math only
- \normalfont
- }
-\cs_new:Nn \__fontspec_main_setmathrm:nn
- {
- \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathrm_hook:nn {#1} {#2} % for unicode-math only
- }
-\cs_new:Nn \__fontspec_main_setboldmathrm:nn
- {
- \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
- }
-\cs_new:Nn \__fontspec_main_setmathsf:nn
- {
- \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathsf_hook:nn {#1} {#2} % for unicode-math only
- }
-\cs_new:Nn \__fontspec_main_setmathtt:nn
- {
- \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
- \__fontspec_setmathtt_hook:nn {#1} {#2} % for unicode-math only
- }
-\cs_set_eq:NN \__fontspec_setmainfont_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setsansfont_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setmonofont_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setmathrm_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setmathsf_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setmathtt_hook:nn \use_none:nn
-\cs_set_eq:NN \__fontspec_setboldmathrm_hook:nn \use_none:nn
-\@onlypreamble\setmathrm
-\@onlypreamble\setboldmathrm
-\@onlypreamble\setmathsf
-\@onlypreamble\setmathtt
-\tl_gset:Nn \g__fontspec_mathrm_tl {\rmdefault}
-\tl_gset:Nn \g__fontspec_mathsf_tl {\sfdefault}
-\tl_gset:Nn \g__fontspec_mathtt_tl {\ttdefault}
-\cs_new:Nn \__fontspec_main_newfontfamily:NnnN
- {
- \fontspec_set_family:cnn { l__fontspec_ \cs_to_str:N #1 _family_tl } {#2} {#3}
- \use:x
- {
- \exp_not:N #4 \exp_not:N #1 {}
- {
- \exp_not:N \fontfamily { \use:c { l__fontspec_ \cs_to_str:N #1 _family_tl } }
- \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
- \exp_not:N \selectfont
- }
- }
- }
-\cs_new:Nn \__fontspec_main_newfontface:NnnN
- {
- \__fontspec_main_newfontfamily:NnnN #1 { BoldFont={},ItalicFont={},SmallCapsFont={},#2 } {#3} #4
- }
-\cs_new:Nn \__fontspec_set_default_features:nn
- {
- \IfBooleanTF {#1} \clist_gput_right:Nn \clist_gset:Nn
- \g__fontspec_default_fontopts_clist {#2}
- }
-\cs_new:Nn \__fontspec_set_font_default_features:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \tl_if_single:nTF {##1}
- { \tl_set:No \l__fontspec_tmp_tl { \cs:w l__fontspec_ \cs_to_str:N ##1 _family_tl\cs_end: } }
- { \__fontspec_sanitise_fontname:Nn \l__fontspec_tmp_tl {##1} }
-
- \IfBooleanTF {#1}
- {
- \prop_get:NVNF \g__fontspec_fontopts_prop \l__fontspec_tmp_tl \l__fontspec_tmpb_tl
- { \tl_clear:N \l__fontspec_tmpb_tl }
- \tl_put_right:Nn \l__fontspec_tmpb_tl {#3,}
- \prop_gput:NVV \g__fontspec_fontopts_prop \l__fontspec_tmp_tl \l__fontspec_tmpb_tl
- }
- {
- \tl_if_empty:nTF {#3}
- { \prop_gremove:NV \g__fontspec_fontopts_prop \l__fontspec_tmp_tl }
- { \prop_gput:NVn \g__fontspec_fontopts_prop \l__fontspec_tmp_tl {#3,} }
- }
- }
- }
-\cs_new:Nn \__fontspec_main_addfontfeatures:n
- {
- \fontspec_if_fontspec_font:TF
- {
- \group_begin:
- \keys_set_known:nnN {fontspec-addfeatures} {#1} \l__fontspec_tmp_tl
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {options} \l__fontspec_options_tl
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {fontname} \l__fontspec_fontname_tl
- \bool_set_true:N \l__fontspec_disable_defaults_bool
- \use:x
- {
- \__fontspec_select_font_family:nn
- { \l__fontspec_options_tl , #1 } {\l__fontspec_fontname_tl}
- }
- \group_end:
- \fontfamily \g__fontspec_nfss_family_tl \selectfont
- }
- {
- \__fontspec_warning:nx {addfontfeatures-ignored} {#1}
- }
- \ignorespaces
- }
-\cs_new:Nn \__fontspec_main_newfontfeature:nn
- {
- \keys_define:nn { fontspec }
- {
- #1 .code:n = { \__fontspec_update_featstr:n {#2} }
- }
- }
-\cs_new:Nn \__fontspec_main_newAATfeature:nnnn
- {
- \keys_if_exist:nnF { fontspec } {#1}
- { \__fontspec_define_aat_feature_group:n {#1} }
-
- \keys_if_choice_exist:nnnT {fontspec} {#1} {#2}
- { \__fontspec_warning:nxx {feature-option-overwrite} {#1} {#2} }
-
- \__fontspec_define_aat_feature:nnnn {#1}{#2}{#3}{#4}
- }
-\cs_new:Nn \__fontspec_main_newopentypefeature:nnn
- {
- \keys_if_exist:nnF { fontspec / options } {#1}
- { \__fontspec_define_opentype_feature_group:n {#1} }
-
- \keys_if_choice_exist:nnnT {fontspec} {#1} {#2}
- { \__fontspec_warning:nxx {feature-option-overwrite} {#1} {#2} }
-
- \exp_args:Nnnx \__fontspec_define_opentype_feature:nnnnn
- {#1} {#2} { \__fontspec_strip_plus_minus:n {#3} } {#3} {}
- }
-\cs_new:Nn \__fontspec_strip_plus_minus:n { \__fontspec_strip_plus_minus_aux:Nq #1 \q_nil }
-\cs_new:Npn \__fontspec_strip_plus_minus_aux:Nq #1#2 \q_nil
- {
- \str_case:nnF {#1} { {+} {#2} {-} {#2} } {#1#2}
- }
-\cs_new:Nn \__fontspec_main_aliasfontfeature:nn
- {
- \bool_set_false:N \l__fontspec_alias_bool
-
- \clist_map_inline:Nn \g__fontspec_all_keyval_modules_clist
- {
- \keys_if_exist:nnT {##1} {#1}
- {
- \bool_set_true:N \l__fontspec_alias_bool
- \keys_define:nn {##1}
- { #2 .code:n = { \keys_set:nn {##1} { #1 = {####1} } } }
- }
- }
-
- \bool_if:NF \l__fontspec_alias_bool
- { \__fontspec_warning:nx {rename-feature-not-exist} {#1} }
- }
-\cs_new:Nn \__fontspec_main_aliasfontfeatureoption:nnn
- {
- \bool_set_false:N \l__fontspec_alias_bool
-
- \clist_map_inline:Nn \g__fontspec_all_keyval_modules_clist
- {
- \keys_if_exist:nnT { ##1 / #1 } {#2}
- {
- \bool_set_true:N \l__fontspec_alias_bool
- \keys_define:nn { ##1 / #1 }
- { #3 .code:n = { \keys_set:nn {##1} { #1 = {#2} } } }
- }
-
- \keys_if_exist:nnT { ##1 / #1 } {#2Reset}
- {
- \keys_define:nn { ##1 / #1 }
- { #3Reset .code:n = { \keys_set:nn {##1} { #1 = {#2Reset} } } }
- }
-
- \keys_if_exist:nnT { ##1 / #1 } {#2Off}
- {
- \keys_define:nn { ##1 / #1 }
- { #3Off .code:n = { \keys_set:nn {##1} { #1 = {#2Off} } } }
- }
- }
-
- \bool_if:NF \l__fontspec_alias_bool
- { \__fontspec_warning:nx {rename-feature-not-exist} {#1/#2} }
- }
-\cs_new:Nn \__fontspec_main_DeclareFontExtensions:n
- {
- \clist_set:Nn \l__fontspec_extensions_clist { #1 }
- }
-\__fontspec_main_DeclareFontExtensions:n {.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont}
-\cs_new:Nn \__fontspec_main_IfFontFeatureActiveTF:nnn
- {
- \__fontspec_if_font_feature:nTF {#1} {#2} {#3}
- }
-\prg_new_conditional:Nnn \__fontspec_if_font_feature:n {TF}
- {
- \tl_gclear:N \g__fontspec_single_feat_tl
- \group_begin:
- \__fontspec_font_suppress_not_found_error:
- \__fontspec_init:
- \bool_set_true:N \l__fontspec_ot_bool
- \bool_set_true:N \l__fontspec_never_check_bool
- \bool_set_false:N \l__fontspec_firsttime_bool
- \clist_clear:N \l__fontspec_fontfeat_clist
- \__fontspec_get_features:n {#1}
- \group_end:
-
-
- \tl_if_empty:NTF \g__fontspec_single_feat_tl { \prg_return_false: }
- {
- \exp_args:NV \fontspec_if_current_feature:nTF \g__fontspec_single_feat_tl
- { \prg_return_true: } { \prg_return_false: }
- }
- }
-\cs_new_protected:Nn \__fontspec_main_oldstylenums:n
- {
- \group_begin:
- \addfontfeature{Numbers=OldStyle}
- #1
- \group_end:
- }
-\cs_new_protected:Nn \__fontspec_main_liningnums:n
- {
- \group_begin:
- \addfontfeature{Numbers=Lining}
- #1
- \group_end:
- }
-
-%%^^A%% fontspec-code-api.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\prg_new_conditional:Nnn \fontspec_if_fontspec_font: {TF,T,F}
- {
- \cs_if_exist:cTF {g__fontspec_fontinfo_ \f@family _prop} \prg_return_true: \prg_return_false:
- }
-\prg_new_conditional:Nnn \fontspec_if_aat_feature:nn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_atsui_bool
- {
- \__fontspec_make_AAT_feature_string:NnnTF \font {#1} {#2}
- \prg_return_true: \prg_return_false:
- }
- {
- \prg_return_false:
- }
- }
- {
- \prg_return_false:
- }
- }
-\prg_new_conditional:Nnn \fontspec_if_opentype: {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool \prg_return_true: \prg_return_false:
- }
- {
- \prg_return_false:
- }
- }
-\prg_new_conditional:Nnn \fontspec_if_feature:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-num} \l__fontspec_tmp_tl
- \int_set:Nn \l__fontspec_script_int {\l__fontspec_tmp_tl}
-
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-num} \l__fontspec_tmp_tl
- \int_set:Nn \l__fontspec_language_int {\l__fontspec_tmp_tl}
-
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_lang_tl
-
- \__fontspec_check_ot_feat:NnTF \font {#1} {\prg_return_true:} {\prg_return_false:}
- }
- {
- \prg_return_false:
- }
- }
- {
- \prg_return_false:
- }
- }
-\prg_new_conditional:Nnn \fontspec_if_feature:nnn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \__fontspec_check_ot_feat:NnnnTF \font {#3} {#2} {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_script:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \__fontspec_check_script:NnTF \font {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_language:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-num} \l__fontspec_tmp_tl
- \int_set:Nn \l__fontspec_script_int {\l__fontspec_tmp_tl}
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_script_tl
-
- \__fontspec_check_lang:NnTF \font {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_language:nn {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \__fontspec_check_lang:NnnTF \font {#2} {#1} \prg_return_true: \prg_return_false:
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_current_script:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {script-tag} \l__fontspec_tmp_tl
- \str_if_eq:nVTF {#1} \l__fontspec_tmp_tl
- {\prg_return_true:} {\prg_return_false:}
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_current_language:n {TF,T,F}
- {
- \fontspec_if_fontspec_font:TF
- {
- \__fontspec_set_font_type:N \font
- \bool_if:NTF \l__fontspec_ot_bool
- {
- \prop_get:cnN {g__fontspec_fontinfo_ \f@family _prop} {lang-tag} \l__fontspec_tmp_tl
- \str_if_eq:nVTF {#1} \l__fontspec_tmp_tl
- {\prg_return_true:} {\prg_return_false:}
- }
- { \prg_return_false: }
- }
- { \prg_return_false: }
- }
-\cs_new:Nn \__fontspec_tl_new_if_free:N { \tl_if_exist:NF #1 { \tl_new:N #1 } }
-\cs_new:Nn \__fontspec_set_family:NnnN
- {
- \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset
- \tl_set:Nn \l__fontspec_family_label_tl {#1}
- \__fontspec_select_font_family:nn {#2} {#3}
- \__fontspec_tl_new_if_free:N #1
- #4 #1 \l_fontspec_family_tl
- \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset
- }
-\cs_new:Nn \fontspec_gset_family:Nnn { \__fontspec_set_family:NnnN #1 {#2} {#3} \tl_gset_eq:NN }
-\cs_new:Nn \fontspec_set_family:Nnn { \__fontspec_set_family:NnnN #1 {#2} {#3} \tl_set_eq:NN }
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {c}
-\tl_new:N \l__fontspec_fontface_cs_tl
-\tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font}
-\cs_new:Nn \__fontspec_set_fontface:NNnnN
- {
- \tl_set:Nn \l__fontspec_fontface_cs_tl {#1}
- \tl_set:Nn \l__fontspec_family_label_tl {#2}
- \__fontspec_select_font_family:nn {#3} {#4}
- #5 #2 \l_fontspec_family_tl
- \tl_set:Nn \l__fontspec_fontface_cs_tl {\l_fontspec_font} % reset
- }
-\cs_new:Nn \fontspec_gset_fontface:NNnn { \__fontspec_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_gset_eq:NN }
-\cs_new:Nn \fontspec_set_fontface:NNnn { \__fontspec_set_fontface:NNnnN #1 #2 {#3} {#4} \tl_set_eq:NN }
-\prg_new_conditional:Nnn \fontspec_font_if_exist:n {TF,T,F}
- {
- \group_begin:
- \__fontspec_init:
- \__fontspec_if_detect_external:nT {#1} { \__fontspec_font_is_file: }
- \__fontspec_primitive_font_if_exist:nTF { \__fontspec_construct_font_call:nn {#1} {} }
- { \group_end: \prg_return_true: }
- { \group_end: \prg_return_false: }
- }
-\cs_set_eq:NN \IfFontExistsTF \fontspec_font_if_exist:nTF
-
-\prg_new_conditional:Nnn \fontspec_if_current_feature:n {TF,T,F}
- {
- \exp_args:Nxx \tl_if_in:nnTF
- { \__fontspec_primitive_font_current_name: } { \tl_to_str:n {#1} }
- { \prg_return_true: } { \prg_return_false: }
- }
-\prg_new_conditional:Nnn \fontspec_if_small_caps: {TF,T,F}
- {
- \__fontspec_if_merge_shape:nTF {sc}
- {
- \tl_set_eq:Nc \l__fontspec_smcp_shape_tl { \__fontspec_shape_merge:nn {\f@shape} {sc} }
- }
- {
- \tl_set:Nn \l__fontspec_smcp_shape_tl {sc}
- }
-
- \cs_if_exist:cTF { \f@encoding/\f@family/\f@series/\l__fontspec_smcp_shape_tl }
- {
- \tl_if_eq:ccTF
- { \f@encoding/\f@family/\f@series/\l__fontspec_smcp_shape_tl }
- { \f@encoding/\f@family/\f@series/\shapedefault }
- { \prg_return_false: }
- { \prg_return_true: }
- }
- { \prg_return_false: }
- }
-
-%%^^A%% fontspec-code-internal.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\cs_new_protected:Nn \__fontspec_select_font_family:nn
- {
- \group_begin:
- \__fontspec_font_suppress_not_found_error:
- \__fontspec_init:
-
- \__fontspec_sanitise_fontname:Nn \l_fontspec_fontname_tl {#2}
- \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_up_tl {#2}
- \__fontspec_sanitise_fontname:Nn \l__fontspec_basename_tl {#2}
-
- \__fontspec_if_detect_external:nT {#2}
- { \keys_set:nn {fontspec-preparse-external} {Path} }
-
- \keys_set_known:nn {fontspec-preparse-cfg} {#1}
-
- \__fontspec_init_ttc:n {#2}
- \__fontspec_load_external_fontoptions:N \l_fontspec_fontname_tl
-
- \__fontspec_extract_all_features:n {#1}
- \tl_set:Nx \l__fontspec_fontid_tl { \tl_to_str:N \l_fontspec_fontname_tl-:-\tl_to_str:N \l__fontspec_all_features_clist }
-
-
- \__fontspec_preparse_features:
- \__fontspec_load_font:
- \__fontspec_set_scriptlang:
- \__fontspec_get_features:n {}
- \bool_set_false:N \l__fontspec_firsttime_bool
-
- \__fontspec_save_family_needed:nTF {#2}
- {
- \__fontspec_save_family:nn {#1} {#2}
- }
- {
- }
- \group_end:
-
- \tl_set_eq:NN \l_fontspec_family_tl \g__fontspec_nfss_family_tl
- }
-\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn %% deprecated, for compatibility only
-\cs_new:Nn \__fontspec_sanitise_fontname:Nn
- {
- \tl_set:Nx #1 {#2}
- \tl_remove_all:Nn #1 {~}
- \clist_map_inline:Nn \l__fontspec_extensions_clist
- {
- \tl_if_in:NnT #1 {##1}
- {
- \tl_remove_once:Nn #1 {##1}
- \tl_set:Nn \l__fontspec_extension_tl {##1}
- \clist_map_break:
- }
- }
- }
-\prg_new_conditional:Nnn \__fontspec_if_detect_external:n {T}
- {
- \clist_map_inline:Nn \l__fontspec_extensions_clist
- {
- \bool_set_false:N \l__fontspec_tmpa_bool
- \exp_args:Nx % <- this should be handled earlier
- \tl_if_in:nnT {#1 <= end_of_string} {##1 <= end_of_string}
- { \bool_set_true:N \l__fontspec_tmpa_bool \clist_map_break: }
- }
- \bool_if:NTF \l__fontspec_tmpa_bool \prg_return_true: \prg_return_false:
- }
-\cs_new:Nn \__fontspec_init_ttc:n
- {
- \str_if_eq:eeT { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
- {
- \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_it_tl {#1}
- \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bf_tl {#1}
- \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bfit_tl {#1}
- }
- }
-\cs_new:Nn \__fontspec_load_external_fontoptions:N
- {
- \bool_if:NT \l__fontspec_fontcfg_bool
- {
- \tl_set:Nx \l__fontspec_ext_filename_tl {#1.fontspec}
- \tl_remove_all:Nn \l__fontspec_ext_filename_tl {~}
- \prop_if_in:NVF \g__fontspec_fontopts_prop #1
- {
- \exp_args:No \file_if_exist:nT { \l__fontspec_ext_filename_tl }
- { \file_input:n { \l__fontspec_ext_filename_tl } }
- }
- }
- }
-\cs_new:Nn \__fontspec_extract_all_features:n
- {
- \bool_if:NTF \l__fontspec_disable_defaults_bool
- {
- \clist_set:Nx \l__fontspec_all_features_clist {#1}
- }
- {
- \prop_get:NVNF \g__fontspec_fontopts_prop \l_fontspec_fontname_tl \l__fontspec_fontopts_clist
- { \clist_clear:N \l__fontspec_fontopts_clist }
-
- \prop_get:NVNF \g__fontspec_fontopts_prop \l__fontspec_family_label_tl \l__fontspec_family_fontopts_clist
- { \clist_clear:N \l__fontspec_family_fontopts_clist }
- \tl_clear:N \l__fontspec_family_label_tl
-
- \clist_set:Nx \l__fontspec_all_features_clist
- {
- \g__fontspec_default_fontopts_clist,
- \l__fontspec_family_fontopts_clist,
- \l__fontspec_fontopts_clist,
- #1
- }
- }
- }
-\cs_new:Nn \__fontspec_preparse_features:
- {
-
- \__fontspec_keys_set_known:nxN {fontspec-preparse-external}
- { \l__fontspec_all_features_clist }
- \l__fontspec_keys_leftover_clist
-
- \tl_set_eq:NN \l_fontspec_fontname_tl \l__fontspec_fontname_up_tl
- \__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_keys_leftover_clist}
- \l__fontspec_keys_leftover_clist
- \__fontspec_keys_set_known:nxN {fontspec-preparse} {\l__fontspec_keys_leftover_clist}
- \l__fontspec_fontfeat_clist
- }
-\cs_new:Nn \__fontspec_load_font:
- {
-
- \__fontspec_primitive_font_set:NnnF \l__fontspec_test_font
- { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
- { \f@size pt - 2sp }
- { \__fontspec_error:nx {font-not-found} {\l__fontspec_fontname_up_tl} }
-
- \__fontspec_set_font_type:N \l__fontspec_test_font
- \__fontspec_primitive_font_gset:Onn \l__fontspec_fontface_cs_tl
- { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
- { \f@size pt + 2sp }
-
- \l__fontspec_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
-
- }
-\cs_new:Nn \__fontspec_construct_font_call:nnnnnn
- {
- " \__fontspec_fontname_wrap:n { #1 #2 } #3
- #4 #5
- \str_if_eq:eeF {#6}{} {:#6} "
- }
-\cs_new:Nn \__fontspec_construct_font_call:nn
- {
- \__fontspec_construct_font_call:nnnnnn
- {#1}
- \l__fontspec_extension_tl
- \l__fontspec_ttc_index_tl
- \l__fontspec_renderer_tl
- \l__fontspec_optical_size_tl
- {#2}
- }
-\cs_new:Nn \__fontspec_font_is_name:
- {
- \cs_set_eq:NN \__fontspec_fontname_wrap:n \use:n
- }
-\cs_new:Nn \__fontspec_font_is_file:
- {
- \cs_set:Npn \__fontspec_fontname_wrap:n ##1 { [ \l__fontspec_font_path_tl ##1 ] }
- }
-\cs_new:Nn \__fontspec_set_scriptlang:
- {
- \bool_if:NT \l__fontspec_firsttime_bool
- {
- \tl_if_empty:NF \l__fontspec_script_name_tl
- {
- \keys_set:nx {fontspec-opentype} {Script=\l__fontspec_script_name_tl}
- \keys_set:nx {fontspec-opentype} {Language=\l__fontspec_lang_name_tl}
- }
- }
- }
-\cs_new:Nn \__fontspec_get_features:n
- {
- \__fontspec_init_fontface:
- \__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_fontfeat_clist,#1}
- \l__fontspec_keys_leftover_clist
- \__fontspec_keys_set_known:nxN {fontspec} {\l__fontspec_keys_leftover_clist} \l__fontspec_keys_leftover_clist
- \keys_set:nV {fontspec-opentype} \l__fontspec_keys_leftover_clist
-
- \tl_if_empty:NF \l__fontspec_mapping_tl
- { \__fontspec_update_featstr:n { mapping = \l__fontspec_mapping_tl } }
-
- \str_if_eq:eeF { \l__fontspec_hexcol_tl \l__fontspec_opacity_tl }
- { \c__fontspec_hexcol_tl \c__fontspec_opacity_tl }
- { \__fontspec_update_featstr:n { color = {\l__fontspec_hexcol_tl\l__fontspec_opacity_tl} } }
- }
-\prg_new_conditional:Nnn \__fontspec_save_family_needed:n { TF }
- {
-
-
- \tl_if_empty:NTF \l__fontspec_nfss_fam_tl
- {
- \prop_get:NVNTF \g__fontspec_fontid_family_prop \l__fontspec_fontid_tl \l__fontspec_tmp_tl
- {
- \tl_gset_eq:NN \g__fontspec_nfss_family_tl \l__fontspec_tmp_tl
- \prg_return_false:
- }
- {
- \tl_set:Nx \l__fontspec_tmp_tl {#1}
- \tl_remove_all:Nn \l__fontspec_tmp_tl { ~ }
- \__fontspec_save_fontid_family:VV \l__fontspec_fontid_tl \l__fontspec_tmp_tl
- \prg_return_true:
- }
- }
- {
- \tl_gset_eq:NN \g__fontspec_nfss_family_tl \l__fontspec_nfss_fam_tl
- \cs_undefine:c { g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop }
- \prg_return_true:
- }
- }
-\cs_new:Nn \__fontspec_save_fontid_family:nn
- {
- \prop_get:NnNTF \g__fontspec_family_int_prop {#2} \l__fontspec_tmp_tl
- {
- \tl_set:Nx \l__fontspec_tmp_tl
- { \int_eval:n { \l__fontspec_tmp_tl + 1 } }
- }
- { \tl_set:Nn \l__fontspec_tmp_tl { 0 } }
- \prop_gput:NnV \g__fontspec_family_int_prop {#2} \l__fontspec_tmp_tl
- \tl_gset:Nx \g__fontspec_nfss_family_tl { #2 ( \l__fontspec_tmp_tl ) }
- \prop_gput:NnV \g__fontspec_fontid_family_prop {#1} \g__fontspec_nfss_family_tl
- }
-\cs_generate_variant:Nn \__fontspec_save_fontid_family:nn { VV }
-\cs_new:Nn \__fontspec_save_family:nn
- {
- \__fontspec_save_fontinfo:n {#2}
- \__fontspec_find_autofonts:
- \DeclareFontFamily{\g__fontspec_nfss_enc_tl}{\g__fontspec_nfss_family_tl}{}
- \__fontspec_set_faces:
- \__fontspec_info:nxx {defining-font} {#1} {#2}
- }
-\cs_new:Nn \__fontspec_save_fontinfo:n
- {
- \prop_new:c {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop}
- \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {fontname} { #1 }
- \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {options} { \l__fontspec_all_features_clist }
- \prop_gput:cnx {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {fontdef}
- {
- \__fontspec_construct_font_call:nn {\l_fontspec_fontname_tl}
- { \l__fontspec_pre_feat_sclist \g__fontspec_rawfeatures_sclist }
- }
- \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {script-num} \l__fontspec_script_int
- \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {lang-num} \l__fontspec_language_int
- \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {script-tag} \l__fontspec_script_tl
- \prop_gput:cnV {g__fontspec_fontinfo_ \g__fontspec_nfss_family_tl _prop} {lang-tag} \l__fontspec_lang_tl
- }
-\cs_new:Nn \__fontspec_find_autofonts:
- {
- \bool_if:nF {\l__fontspec_noit_bool || \l__fontspec_nobf_bool}
- {
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l__fontspec_fontname_it_tl} {/B}
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l__fontspec_fontname_bf_tl} {/I}
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfit_tl {\l_fontspec_fontname_tl} {/BI}
- }
-
- \bool_if:NF \l__fontspec_nobf_bool
- {
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bf_tl {\l_fontspec_fontname_tl} {/B}
- }
-
- \bool_if:NF \l__fontspec_noit_bool
- {
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_it_tl {\l_fontspec_fontname_tl} {/I}
- }
-
- \__fontspec_set_autofont:Nnn \l__fontspec_fontname_bfsl_tl {\l__fontspec_fontname_sl_tl} {/B}
- }
-\cs_new:Nn \__fontspec_set_faces:
- {
- \__fontspec_add_nfssfont:nnnn \mddefault \shapedefault \l_fontspec_fontname_tl \l__fontspec_fontfeat_up_clist
- \__fontspec_add_nfssfont:nnnn \bfdefault \shapedefault \l__fontspec_fontname_bf_tl \l__fontspec_fontfeat_bf_clist
- \__fontspec_add_nfssfont:nnnn \mddefault \itdefault \l__fontspec_fontname_it_tl \l__fontspec_fontfeat_it_clist
- \__fontspec_add_nfssfont:nnnn \mddefault \sldefault \l__fontspec_fontname_sl_tl \l__fontspec_fontfeat_sl_clist
- \__fontspec_add_nfssfont:nnnn \mddefault \swdefault \l__fontspec_fontname_sw_tl \l__fontspec_fontfeat_sw_clist
- \__fontspec_add_nfssfont:nnnn \bfdefault \itdefault \l__fontspec_fontname_bfit_tl \l__fontspec_fontfeat_bfit_clist
- \__fontspec_add_nfssfont:nnnn \bfdefault \sldefault \l__fontspec_fontname_bfsl_tl \l__fontspec_fontfeat_bfsl_clist
- \__fontspec_add_nfssfont:nnnn \bfdefault \swdefault \l__fontspec_fontname_bfsw_tl \l__fontspec_fontfeat_bfsw_clist
- \prop_map_inline:Nn \l__fontspec_nfssfont_prop { \__fontspec_set_faces_aux:nnnnn ##2 }
- }
-\cs_new:Nn \__fontspec_set_faces_aux:nnnnn
- {
- \fontspec_complete_fontname:Nn \l__fontspec_curr_fontname_tl {#3}
- \__fontspec_make_font_shapes:Nnnnn \l__fontspec_curr_fontname_tl {#1} {#2} {#4} {#5}
- }
-\cs_new:Nn \fontspec_complete_fontname:Nn
- {
- \tl_set:Nx #1 {#2}
- \tl_replace_all:Nnx #1 {*} {\l__fontspec_basename_tl}
- \tl_remove_all:Nn #1 {~}
- }
-\cs_new:Nn \__fontspec_add_nfssfont:nnnn
- {
- \tl_set:Nx \l__fontspec_this_font_tl {#3}
-
- \tl_if_empty:xTF {#4}
- { \clist_set:Nn \l__fontspec_sizefeat_clist {Size={-}} }
- { \__fontspec_keys_set_known:nxN {fontspec-preparse-nested} {#4} \l__fontspec_tmp_tl }
-
- \tl_if_empty:NF \l__fontspec_this_font_tl
- {
- \prop_put:Nxx \l__fontspec_nfssfont_prop {#1/#2}
- { {#1}{#2}{\l__fontspec_this_font_tl}{#4}{\l__fontspec_sizefeat_clist} }
- }
- }
-\cs_new:Nn \__fontspec_set_font_type:N
- {
- \bool_set_true:N \l__fontspec_ot_bool
- }
-\cs_new:Nn \__fontspec_set_autofont:Nnn
- {
- \bool_if:NF \l__fontspec_external_bool
- {
- \tl_if_empty:xF {#2}
- {
- \tl_if_empty:NT #1
- {
- \__fontspec_if_autofont:nnTF {#2} {#3}
- { \tl_set:Nx #1 {#2#3} }
- { \__fontspec_info:nx {no-font-shape} {#2#3} }
- }
- }
- }
- }
-\prg_new_conditional:Nnn \__fontspec_if_autofont:nn {T,TF}
- {
- \group_begin:
- \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 1sp }
- \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 1sp }
- \str_if_eq:eeTF { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpa_font } { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpb_font }
- { \group_end: \prg_return_false: }
- { \group_end: \prg_return_true: }
- }
-\cs_new:Nn \__fontspec_make_font_shapes:Nnnnn
- {
- \group_begin:
- \__fontspec_keys_set_known:nxN {fontspec-preparse-external} { #4 } \l__fontspec_leftover_clist
- \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {#1}
- \__fontspec_declare_shape:nnxx {#2} {#3} { \l__fontspec_fontopts_clist, \l__fontspec_leftover_clist } {#5}
- \group_end:
- }
-\cs_new:Nn \__fontspec_load_fontname:Nn
- {
- \__fontspec_sanitise_fontname:Nn #1 {#2}
- \__fontspec_load_external_fontoptions:N #1
- \prop_get:NVNF \g__fontspec_fontopts_prop #1 \l__fontspec_fontopts_clist
- { \clist_clear:N \l__fontspec_fontopts_clist }
- \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l__fontspec_fontopts_clist
- \__fontspec_primitive_font_set:OnnF \l__fontspec_fontface_cs_tl
- { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f@size pt + 2sp }
- { \__fontspec_error:nx {font-not-found} {#2} }
- }
-\keys_define:nn {fontspec/fontname}
- {
- Font .tl_set:N = \l_fontspec_fontname_tl ,
- Font .groups:n = {getfontname} ,
- }
-\cs_new:Nn \__fontspec_declare_shape:nnnn
- {
- \tl_build_begin:N \l__fontspec_nfss_tl
- \tl_build_begin:N \l__fontspec_nfss_sc_tl
- \tl_set_eq:NN \l__fontspec_saved_fontname_tl \l_fontspec_fontname_tl
-
- \exp_args:Nx \clist_map_inline:nn {#4} { \__fontspec_setup_single_size:nn {#3} {##1} }
-
- \tl_build_end:N \l__fontspec_nfss_tl
- \tl_build_end:N \l__fontspec_nfss_sc_tl
-
- \__fontspec_declare_shapes_normal:nn {#1} {#2}
- \__fontspec_declare_shapes_smcaps:nn {#1} {#2}
- \__fontspec_declare_shape_slanted:nn {#1} {#2}
- \__fontspec_declare_shapes_bx:nn {#1} {#2}
- \__fontspec_declare_shape_loginfo:nn {#1} {#2}
- }
-\cs_generate_variant:Nn \__fontspec_declare_shape:nnnn {nnxx}
-\cs_new:Nn \__fontspec_setup_single_size:nn
- {
- \tl_clear:N \l__fontspec_size_tl
- \tl_set_eq:NN \l__fontspec_sizedfont_tl \l__fontspec_saved_fontname_tl % in case not spec'ed
-
- \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n #2 }
- \l__fontspec_sizing_leftover_clist
- \tl_if_empty:NT \l__fontspec_size_tl { \__fontspec_error:n {no-size-info} }
-
- % "normal"
- \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_sizedfont_tl}
- \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_tl {#1} {\l__fontspec_sizing_leftover_clist} {}
-
- % small caps
- \clist_set_eq:NN \l__fontspec_fontfeat_curr_clist \l__fontspec_fontfeat_sc_clist
-
- \bool_if:NF \l__fontspec_nosc_bool
- {
- \tl_if_empty:NTF \l__fontspec_fontname_sc_tl
- {
- \__fontspec_make_smallcaps:TF
- {
- \clist_put_left:Nn \l__fontspec_fontfeat_curr_clist {Letters=SmallCaps}
- }
- {
- \bool_set_true:N \l__fontspec_nosc_bool
- }
- }
- { \__fontspec_load_fontname:Nn \l_fontspec_fontname_tl {\l__fontspec_fontname_sc_tl} }% local for each size
- }
-
- \bool_if:NF \l__fontspec_nosc_bool
- {
- \__fontspec_setup_nfss:Nnnn \l__fontspec_nfss_sc_tl
- {#1} {\l__fontspec_sizing_leftover_clist} {\l__fontspec_fontfeat_curr_clist}
- }
- }
-\cs_new:Nn \__fontspec_setup_nfss:Nnnn
- {
-
- \__fontspec_get_features:n { #2 , #3 , #4 }
-
- \tl_if_empty:NF \l__fontspec_scale_tl
- {
- \tl_set:Nx \l__fontspec_scale_tl { s*[\l__fontspec_scale_tl] }
- }
-
- \tl_build_put_right:Nx #1
- {
- <\l__fontspec_size_tl> \l__fontspec_scale_tl
- \__fontspec_construct_font_call:nn { \l_fontspec_fontname_tl }
- { \l__fontspec_pre_feat_sclist \g__fontspec_rawfeatures_sclist }
- }
- }
-\cs_new:Nn \__fontspec_declare_shapes_normal:nn
- {
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl}
- {#1} {#2} {\l__fontspec_nfss_tl}{\l__fontspec_postadjust_tl}
- }
-\cs_new:Nn \__fontspec_declare_shapes_smcaps:nn
- {
- \tl_if_empty:NF \l__fontspec_nfss_sc_tl
- {
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl} {#1}
- { \__fontspec_combo_sc_shape:n {#2} } {\l__fontspec_nfss_sc_tl} {\l__fontspec_postadjust_tl}
- }
- }
-\cs_new:Nn \__fontspec_combo_sc_shape:n
- {
- \tl_if_exist:cTF { \__fontspec_shape_merge:nn {#1} {\scdefault} }
- { \tl_use:c { \__fontspec_shape_merge:nn {#1} {\scdefault} } }
- { \scdefault#1 }
- }
-\cs_new:Nn \__fontspec_DeclareFontShape:nnnnnn
- {
-\group_begin:
-\normalsize
-\cs_undefine:c {#1/#2/#3/#4/\f@size}
-\group_end:
-\DeclareFontShape{#1}{#2}{#3}{#4}{#5}{#6}
- }
-\cs_generate_variant:Nn \__fontspec_DeclareFontShape:nnnnnn {xxxxxx}
-\cs_new:Nn \__fontspec_declare_shape_slanted:nn
- {
- \bool_if:nT
- {
- \str_if_eq_p:ee {#2} {\itdefault} &&
- !(\str_if_eq_p:ee {\itdefault} {\sldefault})
- }
- {
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl}{\g__fontspec_nfss_family_tl}{#1}{\sldefault}
- {<->ssub*\g__fontspec_nfss_family_tl/#1/\itdefault}{\l__fontspec_postadjust_tl}
- }
- }
-\cs_new:Nn \__fontspec_declare_shapes_bx:nn
- {
- \bool_if:nT
- {
- \str_if_eq_p:ee {#1} {\bfdefault} &&
- !(\str_if_eq_p:ee {\bfdefault} {bx})
- }
- {
- % bx/?
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl}
- {bx} {#2}
- { <->ssub*\g__fontspec_nfss_family_tl/\bfdefault/#2 }
- { \l__fontspec_postadjust_tl }
-
- % bx/sc -> b/sc
- \tl_if_empty:NF \l__fontspec_nfss_sc_tl
- {
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl}
- {bx} { \__fontspec_combo_sc_shape:n {#2} }
- { <->ssub*\g__fontspec_nfss_family_tl/\bfdefault/#2 }
- { \l__fontspec_postadjust_tl }
- }
-
- % bx/sl -> bx/it
- \bool_if:nT
- {
- \str_if_eq_p:ee {#2} {\itdefault} &&
- !(\str_if_eq_p:ee {\itdefault} {\sldefault})
- }
- {
- \__fontspec_DeclareFontShape:xxxxxx {\g__fontspec_nfss_enc_tl} {\g__fontspec_nfss_family_tl}
- {bx} {\sldefault}
- { <->ssub*\g__fontspec_nfss_family_tl/bx/\itdefault }
- { \l__fontspec_postadjust_tl }
- }
-
- }
- }
-\cs_new:Nn \__fontspec_declare_shape_loginfo:nn
- {
- \tl_gput_right:Nx \g__fontspec_defined_shapes_tl
- {
- \exp_not:n { \\ }
- -~ \exp_not:N \str_case:nn {#1/#2}
- {
- {\mddefault/\shapedefault} {'normal'~}
- {\bfdefault/\shapedefault} {'bold'~}
- {\mddefault/\itdefault} {'italic'~}
- {\mddefault/\sldefault} {'slanted'~}
- {\mddefault/\swdefault} {'swash'~}
- {\bfdefault/\itdefault} {'bold~ italic'~}
- {\bfdefault/\sldefault} {'bold~ slanted'~}
- {\bfdefault/\swdefault} {'bold~ swash'~}
- } (#1/#2)~
- with~ NFSS~ spec.:~
- \l__fontspec_nfss_tl
- \exp_not:n { \\ }
- -~ \exp_not:N \str_case:nn { #1 / \__fontspec_combo_sc_shape:n {#2} }
- {
- {\mddefault/\scdefault} {'small~ caps'~}
- {\bfdefault/\scdefault} {'bold~ small~ caps'~}
- {\mddefault/\scitdefault} {'italic~ small~ caps'~}
- {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~}
- {\mddefault/\scsldefault} {'slanted~ small~ caps'~}
- {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~}
- }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~
- with~ NFSS~ spec.:~
- \l__fontspec_nfss_sc_tl
- \tl_if_empty:fF {\l__fontspec_postadjust_tl}
- {
- \exp_not:N \\ and~ font~ adjustment~ code:
- \exp_not:N \\ \l__fontspec_postadjust_tl
- }
- }
- }
-\tl_set:Nn \l__fontspec_pre_feat_sclist
- {
- mode = \l__fontspec_mode_tl ;
- \tl_if_empty:NF \l__fontspec_shaper_tl { shaper = \l__fontspec_shaper_tl ; }
- \tl_if_empty:NF \l__fontspec_script_tl { script = \l__fontspec_script_tl ; }
- \tl_if_empty:NF \l__fontspec_lang_tl { language = \l__fontspec_lang_tl ; }
- }
-\cs_new:Nn \__fontspec_make_smallcaps:TF
- {
- \exp_args:No \__fontspec_check_ot_feat:NnTF \l__fontspec_fontface_cs_tl {smcp} {#1} {#2}
- }
-\cs_new:Nn \__fontspec_update_featstr:n
- {
- \bool_if:NF \l__fontspec_firsttime_bool
- {
- \tl_gset:Nx \g__fontspec_single_feat_tl { #1 }
- \tl_gput_right:Nx \g__fontspec_rawfeatures_sclist {#1;}
- }
- }
-\cs_new:Nn \__fontspec_remove_clashing_featstr:n
- {
- \clist_map_inline:nn {#1}
- {
- \tl_gremove_all:Nn \g__fontspec_rawfeatures_sclist {##1;}
- }
- }
-\cs_generate_variant:Nn \__fontspec_remove_clashing_featstr:n {x}
-\cs_set:Npn \__fontspec_init:
- {
- \bool_set_false:N \l__fontspec_ot_bool
- \bool_set_true:N \l__fontspec_firsttime_bool
- \__fontspec_font_is_name:
- \tl_clear:N \l__fontspec_font_path_tl
- \tl_clear:N \l__fontspec_optical_size_tl
- \tl_clear:N \l__fontspec_ttc_index_tl
- \tl_clear:N \l__fontspec_renderer_tl
- \tl_gclear:N \g__fontspec_defined_shapes_tl
- \tl_gclear:N \g__fontspec_curr_series_tl
- \tl_gset_eq:NN \g__fontspec_nfss_enc_tl \g_fontspec_encoding_tl
- \tl_set:Nn \l__fontspec_mode_tl {node}
- \int_set:Nn \prehyphenchar { `\- } % fixme
- \int_zero:N \posthyphenchar % fixme
- \int_zero:N \preexhyphenchar % fixme
- \int_zero:N \postexhyphenchar % fixme
- }
-\cs_new:Nn \__fontspec_init_fontface:
- {
- \tl_gclear:N \g__fontspec_rawfeatures_sclist
- \tl_clear:N \l__fontspec_scale_tl
- \tl_set_eq:NN \l__fontspec_opacity_tl \c__fontspec_opacity_tl
- \tl_set_eq:NN \l__fontspec_hexcol_tl \c__fontspec_hexcol_tl
- \tl_set_eq:NN \l__fontspec_postadjust_tl \c__fontspec_postadjust_tl
- \tl_clear:N \l__fontspec_wordspace_adjust_tl
- \tl_clear:N \l__fontspec_punctspace_adjust_tl
- }
-\cs_new_protected:Nn \__fontspec_ot_validate_tag:n
- {
- \__fontspec_ot_validate_tag:w #1 \q_nil
- }
-\cs_generate_variant:Nn \__fontspec_ot_validate_tag:n {x}
-\cs_set:Npn \__fontspec_ot_validate_tag:w #1 #2 \q_nil
- {
- \bool_if:nTF { \str_if_eq_p:nn {#1} {+} || \str_if_eq_p:nn {#1} {-} }
- { \__fontspec_ot_validate_tag_aux:w #2 \c_empty_tl \c_empty_tl \q_nil }
- { \__fontspec_ot_validate_tag_aux:w #1#2 \c_empty_tl \c_empty_tl \q_nil }
- }
-\cs_set:Npn \__fontspec_ot_validate_tag_aux:w #1#2#3#4#5 \q_nil
- {
- \int_compare:nT { \tl_count:n {#5} > 2 }
- { \__fontspec_error:nx {ot-tag-too-long} {#1#2#3#4#5} }
- }
-
-%%^^A%% fontspec-code-opentype.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\cs_new:Nn \__fontspec_define_opentype_feature_group:n
- {
- \keys_define:nn {fontspec-opentype} { #1 .multichoice: , .groups:n = {opentype} }
- }
-\cs_new:Nn \__fontspec_feat_prop_add:nn
- {
- \tl_if_empty:nF {#1}
- {
- \prop_if_in:NnF \g__fontspec_OT_features_prop {#1}
- {
- \prop_gput:Nnn \g__fontspec_OT_features_prop {#1} {#2}
- }
- }
- }
-\cs_new:Nn \__fontspec_define_opentype_feature:nnnnn
- {
- \__fontspec_feat_prop_add:nn {#3} {#1\,=\,#2}
- \tl_if_empty:nTF {#4}
- {
- \keys_define:nn {fontspec-opentype}
- {
- #1/#2 .code:n =
- { \__fontspec_remove_clashing_featstr:n {#5} } ,
- #1/#2 .groups:n = {opentype}
- }
- }
- {
- \keys_define:nn {fontspec-opentype}
- {
- #1/#2 .code:n =
- {
- \__fontspec_make_OT_feature:nnn {#3} {#4} {#5}
- } ,
- #1/#2 .groups:n = {opentype}
- }
- }
- }
-\cs_new:Nn \__fontspec_feat_off:n {#1Off}
-\cs_new:Nn \__fontspec_feat_reset:n {#1Reset}
-\cs_new:Nn \__fontspec_define_opentype_onoffreset:nnnnn
- {
- \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} {#2} {#3} {+#4} {#5}
- \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_off:n {#2} } {#3} {-#4} {}
- \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_reset:n {#2} } {} {} {+#4,-#4}
- }
-\cs_new:Nn \__fontspec_define_opentype_onreset:nnnnn
- {
- \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} {#2} {#3} {#4} {#5}
- \exp_args:Nnx \__fontspec_define_opentype_feature:nnnnn {#1} { \__fontspec_feat_reset:n {#2} } {} {} {#4}
- }
-\cs_new:Nn \__fontspec_make_OT_feature:nnn
- {
-
- \bool_set_true:N \l__fontspec_proceed_bool
-
- \tl_if_empty:nF {#1}
- {
- \exp_args:No \__fontspec_check_ot_feat:NnF \l__fontspec_fontface_cs_tl {#1}
- {
- \__fontspec_warning:nx {icu-feature-not-exist-in-font} {#1}
- \bool_set_false:N \l__fontspec_proceed_bool
- }
- }
-
- \__fontspec_remove_clashing_featstr:x { #2 , \__fontspec_swap_plus_minus:n {#2} , #3 }
-
- \bool_if:NT \l__fontspec_proceed_bool { \__fontspec_update_featstr:n {#2} }
- }
-\cs_generate_variant:Nn \__fontspec_make_OT_feature:nnn {xxx}
-\cs_new:Nn \__fontspec_swap_plus_minus:n { \__fontspec_swap_plus_minus_aux:Nq #1 \q_nil }
-\cs_new:Npn \__fontspec_swap_plus_minus_aux:Nq #1#2 \q_nil
- { \str_case:nn {#1} { {+} {-#2} {-} {+#2} } }
-\prg_new_conditional:Nnn \__fontspec_check_script:Nn {TF,T}
- {
- \bool_if:NTF \l__fontspec_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#2} }
- { \prg_return_false: }
- {
- \__fontspec_ot_validate_tag:x {#2}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
- \lua_now:e { fontspec.check_ot_script("\l__fontspec_tmp_tl", "#2") }
- \bool_if:NTF \l__fontspec_check_bool
- {
- \prg_return_true:
- }
- {
- \prg_return_false:
- }
- }
- }
- }
-\prg_new_conditional:Nnn \__fontspec_check_lang:Nn {TF}
- {
- \__fontspec_check_lang:NnnTF #1 {#2} {\l__fontspec_script_tl} {\prg_return_true:} {\prg_return_false:}
- }
-\prg_new_conditional:Nnn \__fontspec_check_lang:Nnn {TF}
- {
- \bool_if:NTF \l__fontspec_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#3} }
- { \prg_return_false: }
- {
- \__fontspec_ot_validate_tag:x {#2}
- \__fontspec_ot_validate_tag:x {#3}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
- \__fontspec_lua_function:neee {check_ot_lang} {\l__fontspec_tmp_tl} {#2} {#3}
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
- }
- }
- }
-\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nn {TF,F}
- {
- \__fontspec_check_ot_feat:NnnnTF #1 {#2} {\l__fontspec_lang_tl} {\l__fontspec_script_tl}
- {\prg_return_true:} {\prg_return_false:}
- }
-\prg_new_conditional:Nnn \__fontspec_check_ot_feat:Nnnn {TF,F}
- {
- \bool_if:NTF \l__fontspec_never_check_bool
- { \prg_return_true: }
- {
- \bool_if:nTF { \tl_if_empty_p:e {#3} || \tl_if_empty_p:e {#4} }
- { \prg_return_false: }
- {
- \__fontspec_ot_validate_tag:x {#2}
- \__fontspec_ot_validate_tag:x {#3}
- \__fontspec_ot_validate_tag:x {#4}
- \cs_if_eq:NNTF #1 \font
- { \tl_set:Nx \l__fontspec_tmp_tl {\curr@fontshape/\f@size} }
- { \tl_set:Nx \l__fontspec_tmp_tl {\cs_to_str:N #1} }
- \__fontspec_lua_function:neeee {check_ot_feat} {\l__fontspec_tmp_tl} {#2} {#3} {#4}
- \bool_if:NTF \l__fontspec_check_bool \prg_return_true: \prg_return_false:
- }
- }
- }
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {aalt}{Access~All~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvf}{Above-base~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvm}{Above-base~Mark~Positioning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {abvs}{Above-base~Substitutions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {afrc}{Alternative~Fractions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {akhn}{Akhands}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blwf}{Below-base~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blwm}{Below-base~Mark~Positioning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {blws}{Below-base~Substitutions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {calt}{Contextual~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {case}{Case-Sensitive~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ccmp}{Glyph~Composition~/~Decomposition}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cfar}{Conjunct~Form~After~Ro}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cjct}{Conjunct~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {clig}{Contextual~Ligatures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cpct}{Centered~CJK~Punctuation}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cpsp}{Capital~Spacing}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cswh}{Contextual~Swash}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {curs}{Cursive~Positioning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {cvNN}{Character~Variant~$N$}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {c2pc}{Petite~Capitals~From~Capitals}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {c2sc}{Small~Capitals~From~Capitals}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dist}{Distances}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dlig}{Discretionary~Ligatures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dnom}{Denominators}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {dtls}{Dotless~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {expt}{Expert~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {falt}{Final~Glyph~on~Line~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fin2}{Terminal~Forms~\#2}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fin3}{Terminal~Forms~\#3}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fina}{Terminal~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {flac}{Flattened~accent~forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {frac}{Fractions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {fwid}{Full~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {half}{Half~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {haln}{Halant~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {halt}{Alternate~Half~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hist}{Historical~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hkna}{Horizontal~Kana~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hlig}{Historical~Ligatures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hngl}{Hangul}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hojo}{Hojo~Kanji~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {hwid}{Half~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {init}{Initial~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {isol}{Isolated~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ital}{Italics}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jalt}{Justification~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp78}{JIS78~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp83}{JIS83~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp90}{JIS90~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {jp04}{JIS2004~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {kern}{Kerning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {lfbd}{Left~Bounds}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {liga}{Standard~Ligatures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ljmo}{Leading~Jamo~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {lnum}{Lining~Figures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {locl}{Localized~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ltra}{Left-to-right~alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ltrm}{Left-to-right~mirrored~forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mark}{Mark~Positioning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {med2}{Medial~Forms~\#2}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {medi}{Medial~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mgrk}{Mathematical~Greek}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mkmk}{Mark~to~Mark~Positioning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {mset}{Mark~Positioning~via~Substitution}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nalt}{Alternate~Annotation~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nlck}{NLC~Kanji~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {nukt}{Nukta~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {numr}{Numerators}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {onum}{Oldstyle~Figures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {opbd}{Optical~Bounds}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ordn}{Ordinals}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ornm}{Ornaments}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {palt}{Proportional~Alternate~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pcap}{Petite~Capitals}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pkna}{Proportional~Kana}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pnum}{Proportional~Figures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pref}{Pre-Base~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pres}{Pre-base~Substitutions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pstf}{Post-base~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {psts}{Post-base~Substitutions}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {pwid}{Proportional~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {qwid}{Quarter~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rand}{Randomize}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rclt}{Required~Contextual~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rkrf}{Rakar~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rlig}{Required~Ligatures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rphf}{Reph~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtbd}{Right~Bounds}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtla}{Right-to-left~alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rtlm}{Right-to-left~mirrored~forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ruby}{Ruby~Notation~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {rvrn}{Required~Variation~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {salt}{Stylistic~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {sinf}{Scientific~Inferiors}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {size}{Optical~size}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {smcp}{Small~Capitals}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {smpl}{Simplified~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ssNN}{Stylistic~Set~$N$}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {ssty}{Math~script~style~alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {stch}{Stretching~Glyph~Decomposition}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {subs}{Subscript}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {sups}{Superscript}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {swsh}{Swash}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {titl}{Titling}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tjmo}{Trailing~Jamo~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tnam}{Traditional~Name~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {tnum}{Tabular~Figures}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {trad}{Traditional~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {twid}{Third~Widths}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {unic}{Unicase}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {valt}{Alternate~Vertical~Metrics}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vatu}{Vattu~Variants}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vert}{Vertical~Writing}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vhal}{Alternate~Vertical~Half~Metrics}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vjmo}{Vowel~Jamo~Forms}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vkna}{Vertical~Kana~Alternates}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vkrn}{Vertical~Kerning}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vpal}{Proportional~Alternate~Vertical~Metrics}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vrt2}{Vertical~Alternates~and~Rotation}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {vrtr}{Vertical~Alternates~for~Rotation}
-\prop_gput:Nnn \g__fontspec_all_opentype_feature_names_prop {zero}{Slashed~Zero}
-
-%%^^A%% fontspec-code-graphite.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-
-%%^^A%% fontspec-code-keyval.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\clist_gset:Nn \g__fontspec_all_keyval_modules_clist
- {
- fontspec, fontspec-opentype, fontspec-aat,
- fontspec-preparse, fontspec-preparse-cfg, fontspec-preparse-external, fontspec-preparse-nested,
- fontspec-renderer
- }
-\cs_new:Nn \__fontspec_keys_define_code:nnn
- {
- \keys_define:nn {#1} { #2 .code:n = {#3} }
- }
-\cs_new:Nn \__fontspec_aff_error:n
- {
- \__fontspec_keys_define_code:nnn {fontspec-addfeatures} {#1}
- { \__fontspec_error:nx {not-in-addfontfeatures} {#1} }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-cfg} {IgnoreFontspecFile}
- {
- \bool_set_false:N \l__fontspec_fontcfg_bool
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {IgnoreFontspecFile}
- {
- \bool_set_false:N \l__fontspec_fontcfg_bool
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {Path}
- {
- \bool_set_true:N \l__fontspec_nobf_bool
- \bool_set_true:N \l__fontspec_noit_bool
- \bool_set_true:N \l__fontspec_external_bool
- \tl_set:Nn \l__fontspec_font_path_tl {#1}
- \__fontspec_font_is_file:
- }
-\aliasfontfeature{Path}{ExternalLocation}
-\__fontspec_keys_define_code:nnn {fontspec} {Path} {}
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {Extension}
- {
- \tl_set:Nn \l__fontspec_extension_tl {#1}
- \bool_if:NF \l__fontspec_external_bool
- {
- \keys_set:nn {fontspec-preparse-external} {Path}
- }
- }
-\tl_clear:N \l__fontspec_extension_tl
-\__fontspec_keys_define_code:nnn {fontspec} {Extension} {}
-\keys_define:nn {fontspec-renderer}
- {
- Renderer .choices:nn =
- {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite}
- {
- \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l__fontspec_harfbuzz_bool }
-
- \tl_set:Nx \l__fontspec_mode_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}}
- }
-
- \tl_set:Nx \l__fontspec_shaper_tl
- {
- \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} }
- }
-
-
- \tl_gset:Nx \g__fontspec_single_feat_tl
- {
- mode=\l__fontspec_mode_tl ;
- \tl_if_empty:NF \l__fontspec_shaper_tl { shaper=\l__fontspec_shaper_tl}
- }
- } ,
-
- Renderer unknown .code:n =
- {
- \bool_set_true:N \l__fontspec_harfbuzz_bool
- \__fontspec_warning:nx {unknown-renderer} {#1}
- \tl_set:Nn \l__fontspec_mode_tl {harf}
- \tl_set:Nn \l__fontspec_shaper_tl {#1}
- } ,
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {Script}
- {
- \tl_set:Nn \l__fontspec_script_name_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {Language}
- {
- \tl_set:Nn \l__fontspec_lang_name_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {FontIndex}
- {
- \str_if_eq:eeF { \str_lowercase:f {\l__fontspec_extension_tl} } {.ttc}
- { \__fontspec_warning:n {font-index-needs-ttc} }
- \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {FontIndex}
- {
- \tl_set:Nn \l__fontspec_ttc_index_tl {(#1)}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {UprightFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_up_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {ItalicFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l__fontspec_noit_bool
- }
- {
- \bool_set_false:N \l__fontspec_noit_bool
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_it_tl {#1}
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {SlantedFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_sl_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {SwashFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_sw_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l__fontspec_nobf_bool
- }
- {
- \bool_set_false:N \l__fontspec_nobf_bool
- \fontspec_complete_fontname:Nn \l__fontspec_curr_bfname_tl {#1}
-
- \seq_if_empty:NT \l__fontspec_bf_series_seq
- {
- \tl_gset:Nx \g__fontspec_curr_series_tl {\bfdefault}
- \seq_put_right:Nx \l__fontspec_bf_series_seq {\bfdefault}
- }
-
- \tl_if_eq:oxT \g__fontspec_curr_series_tl {\bfdefault}
- {
- \tl_set_eq:NN \l__fontspec_fontname_bf_tl \l__fontspec_curr_bfname_tl
- }
-
- \prop_put:NxV \l__fontspec_nfss_prop {BoldFont-\g__fontspec_curr_series_tl} \l__fontspec_curr_bfname_tl
-
-
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldItalicFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfit_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldSlantedFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfsl_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-external} {BoldSwashFont}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_bfsw_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFont}
- {
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l__fontspec_nosc_bool
- }
- {
- \bool_set_false:N \l__fontspec_nosc_bool
- \fontspec_complete_fontname:Nn \l__fontspec_fontname_sc_tl {#1}
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {UprightFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_up_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldItalicFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_bfit_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {SlantedFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_sl_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSlantedFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_bfsl_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {SwashFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_sw_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {BoldSwashFeatures}
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_bfsw_clist {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {SmallCapsFeatures}
- {
- \bool_if:NF \l__fontspec_firsttime_bool
- {
- \clist_put_right:Nn \l__fontspec_fontfeat_sc_clist {#1}
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {SizeFeatures}
- {
- \clist_set:Nn \l__fontspec_sizefeat_clist {#1}
- \clist_put_right:Nn \l__fontspec_fontfeat_up_clist { SizeFeatures = {#1} }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-nested} {SizeFeatures}
- {
- \clist_set:Nn \l__fontspec_sizefeat_clist {#1}
- \tl_if_empty:NT \l__fontspec_this_font_tl
- { \tl_set:Nn \l__fontspec_this_font_tl { -- } } % needs to be non-empty as a flag
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse-nested} {Font}
- {
- \tl_set:Nn \l__fontspec_this_font_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {SizeFeatures}
- {
- % dummy
- }
-\__fontspec_keys_define_code:nnn {fontspec} {Font}
- {
- % dummy
- }
-\__fontspec_keys_define_code:nnn {fontspec-sizing} {Size}
- {
- \tl_set:Nn \l__fontspec_size_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-sizing} {Font}
- {
- \fontspec_complete_fontname:Nn \l__fontspec_sizedfont_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {SlantedFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldSlantedFont} {}
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSEncoding}
- {
- \tl_gset:Nx \g__fontspec_nfss_enc_tl { #1 }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSFamily}
- {
- \tl_set:Nx \l__fontspec_nfss_fam_tl { #1 }
- }
-\__fontspec_keys_define_code:nnn {fontspec-preparse} {FontFace}
- {
- \tl_clear:N \l__fontspec_this_font_tl
- \clist_set:No \l__fontspec_arg_clist { \use_iii:nnn #1 }
- \clist_set_eq:NN \l__fontspec_this_feat_clist \l__fontspec_arg_clist
- \int_compare:nT { \clist_count:N \l__fontspec_arg_clist = 1 }
- {
- \tl_if_in:NnF \l__fontspec_arg_clist {=}
- {
- \tl_set_eq:NN \l__fontspec_this_font_tl \l__fontspec_arg_clist
- \tl_clear:N \l__fontspec_this_feat_clist
- }
- }
-
- \__fontspec_add_nfssfont:nnnn
- {\use_i:nnn #1} {\use_ii:nnn #1} {\l__fontspec_this_font_tl} {\l__fontspec_this_feat_clist}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {Scale}
- {
- \str_case:nnF {#1}
- {
- {MatchLowercase} { \__fontspec_calc_scale:n {5} }
- {MatchUppercase} { \__fontspec_calc_scale:n {8} }
- }
- { \tl_set:Nx \l__fontspec_scale_tl {#1} }
- }
-\__fontspec_keys_define_code:nnn {fontspec} {ScaleAgain}
- {
- \tl_if_empty:NT \l__fontspec_scale_tl { \tl_set:Nn \l__fontspec_scale_tl {1} }
- \tl_set:Nx \l__fontspec_scale_tl { \fp_eval:n { #1 * \l__fontspec_scale_tl } }
- \__fontspec_info:n {set-scale}
- }
-\cs_new:Nn \__fontspec_calc_scale:n
- {
- \group_begin:
-
- \fontencoding { \encodingdefault }
- \fontfamily { \familydefault }
- \selectfont
-
- \__fontspec_set_font_dimen:NnN \l__fontspec_tmpa_dim {#1} \font
- \__fontspec_set_font_dimen:NnN \l__fontspec_tmpb_dim {#1} \l__fontspec_fontface_cs_tl
-
- \tl_set:Nx \l__fontspec_scale_tl
- {
- \fp_eval:n { \dim_to_fp:n {\l__fontspec_tmpa_dim} /
- \dim_to_fp:n {\l__fontspec_tmpb_dim} }
- }
-
- \__fontspec_info:n {set-scale}
- \exp_args:NNNx
- \group_end:
- \tl_set:Nx \l__fontspec_scale_tl { \l__fontspec_scale_tl }
- }
-\cs_new:Nn \__fontspec_set_font_dimen:NnN
- {
- \dim_set:Nn #1 { \fontdimen #2 #3 }
- \dim_compare:nNnT #1 = {0pt}
- {
- \settoheight #1
- {
- \str_if_eq:nnTF {#3} {\font} \rmfamily #3
- \int_case:nnF #2
- {
- {5} {x} % x-height
- {8} {X} % cap-height
- } {?} % "else" clause; never reached.
- }
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec} {WordSpace}
- {
- \bool_if:NF \l__fontspec_firsttime_bool
- { \_fontspec_parse_wordspace:w #1,,,\q_stop }
- }
-\__fontspec_aff_error:n {WordSpace}
-\cs_set:Npn \_fontspec_parse_wordspace:w #1,#2,#3,#4 \q_stop
- {
- \tl_if_empty:nTF {#4}
- {
- \tl_set:Nn \l__fontspec_wordspace_adjust_tl
- {
- \fontdimen 2 \font = #1 \fontdimen 2 \font
- \fontdimen 3 \font = #1 \fontdimen 3 \font
- \fontdimen 4 \font = #1 \fontdimen 4 \font
- }
- }
- {
- \tl_set:Nn \l__fontspec_wordspace_adjust_tl
- {
- \fontdimen 2 \font = #1 \fontdimen 2 \font
- \fontdimen 3 \font = #2 \fontdimen 3 \font
- \fontdimen 4 \font = #3 \fontdimen 4 \font
- }
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec} {PunctuationSpace}
- {
- \str_case_e:nnF {#1}
- {
- {WordSpace}
- {
- \tl_set:Nn \l__fontspec_punctspace_adjust_tl
- { \fontdimen 7 \font = 0 \fontdimen 2 \font }
- }
- {TwiceWordSpace}
- {
- \tl_set:Nn \l__fontspec_punctspace_adjust_tl
- { \fontdimen 7 \font = 1 \fontdimen 2 \font }
- }
- }
- {
- \tl_set:Nn \l__fontspec_punctspace_adjust_tl
- { \fontdimen 7 \font = #1 \fontdimen 7 \font }
- }
- }
-\__fontspec_aff_error:n {PunctuationSpace}
-\__fontspec_keys_define_code:nnn {fontspec} {FontAdjustment}
- {
- \tl_put_right:Nx \l__fontspec_postadjust_tl {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {LetterSpace}
- {
- \__fontspec_update_featstr:n {letterspace=#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {HyphenChar}
- {
- \str_if_eq:nnTF {#1} {None}
- {
- \tl_put_right:Nn \l__fontspec_postadjust_tl
- { \__fontspec_primitive_font_set_hyphenchar:Nn \font {-1} }
- }
- {
- \__fontspec_warning:nx {only-xetex-feature} {HyphenChar}
-
- \tl_if_single:nTF {#1}
- { \tl_set:Nn \l__fontspec_hyphenchar_tl {`#1} }
- { \tl_set:Nn \l__fontspec_hyphenchar_tl { #1} }
-
- \exp_args:No \__fontspec_primitive_font_glyph_if_exist:NnTF \l__fontspec_fontface_cs_tl {\l__fontspec_hyphenchar_tl}
- {
- \tl_put_right:Nn \l__fontspec_postadjust_tl
- { \__fontspec_primitive_font_set_hyphenchar:Nn \font { \l__fontspec_hyphenchar_tl } }
- }
- { \__fontspec_error:nxx {no-glyph}{\l_fontspec_fontname_tl}{#1} }
-
- }
- }
-\__fontspec_aff_error:n {HyphenChar}
-\__fontspec_keys_define_code:nnn {fontspec} {Color}
- {
- \tl_set:Nn \l__fontspec_hexcol_tl {#1}
- }
-\cs_set:Npn \fontspec_parse_colour:viii #1#2#3#4#5#6#7#8
- {
- \tl_set:Nn \l__fontspec_hexcol_tl {#1#2#3#4#5#6}
- \tl_if_eq:NNF \l__fontspec_opacity_tl \c__fontspec_opacity_tl
- {
- \bool_if:NF \l__fontspec_firsttime_bool
- { \__fontspec_warning:nx {opa-twice-col} {#7#8} }
- }
- \tl_set:Nn \l__fontspec_opacity_tl {#7#8}
- }
-\aliasfontfeature{Color}{Colour}
-\__fontspec_keys_define_code:nnn {fontspec} {Opacity}
- {
- \int_set:Nn \l__fontspec_tmp_int {255}
- \__fontspec_int_mult_truncate:Nn \l__fontspec_tmp_int { #1 }
- \tl_if_eq:NNF \l__fontspec_opacity_tl \c__fontspec_opacity_tl
- {
- \bool_if:NF \l__fontspec_firsttime_bool
- { \__fontspec_warning:nx {opa-twice} {#1} }
- }
- \tl_set:Nx \l__fontspec_opacity_tl
- {
- ,
- \int_compare:nT { \l__fontspec_tmp_int <= "F } {0} % zero pad
- \int_to_hex:n { \l__fontspec_tmp_int }
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {Mapping}
- {
- \str_if_eq:nnTF {#1} {tex-text}
- {
- \__fontspec_warning:n {no-mapping-ligtex}
- \msg_redirect_name:nnn {fontspec} {no-mapping-ligtex} {none}
- \keys_set:nn {fontspec-opentype} { Ligatures=TeX }
- }
- { \__fontspec_warning:n {no-mapping} }
- }
-\__fontspec_keys_define_code:nnn {fontspec} {Weight}
- {
- \__fontspec_update_featstr:n{weight=#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {Width}
- {
- \__fontspec_update_featstr:n{width=#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec} {OpticalSize}
- {
- \tl_set:Nn \l__fontspec_optical_size_tl {/ S = #1}
- }
-\keys_define:nn {fontspec}
- {
- FakeSlant .code:n =
- {
- \__fontspec_update_featstr:n {slant=#1}
- },
- FakeSlant .default:n = {0.2}
- }
-\keys_define:nn {fontspec}
- {
- FakeStretch .code:n =
- {
- \__fontspec_update_featstr:n {extend=#1}
- },
- FakeStretch .default:n = {1.2}
- }
-\keys_define:nn {fontspec}
- {
- FakeBold .code:n =
- {
- \__fontspec_update_featstr:n {embolden=#1}
- },
- FakeBold .default:n = {1.5}
- }
-\keys_define:nn {fontspec}
- {
- AutoFakeSlant .code:n =
- {
- \bool_if:NT \l__fontspec_firsttime_bool
- {
- \tl_set:Nn \l__fontspec_fake_slant_tl {#1}
- \clist_put_right:Nn \l__fontspec_fontfeat_it_clist {FakeSlant=#1}
- \tl_set_eq:NN \l__fontspec_fontname_it_tl \l_fontspec_fontname_tl
- \bool_set_false:N \l__fontspec_noit_bool
-
- \tl_if_empty:NF \l__fontspec_fake_embolden_tl
- {
- \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist
- {FakeBold=\l__fontspec_fake_embolden_tl}
- \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist {FakeSlant=#1}
- \tl_set_eq:NN \l__fontspec_fontname_bfit_tl \l_fontspec_fontname_tl
- }
- }
- },
- AutoFakeSlant .default:n = {0.2}
- }
-\keys_define:nn {fontspec}
- {
- AutoFakeBold .code:n =
- {
- \bool_if:NT \l__fontspec_firsttime_bool
- {
- \tl_set:Nn \l__fontspec_fake_embolden_tl {#1}
- \clist_put_right:Nn \l__fontspec_fontfeat_bf_clist {FakeBold=#1}
- \tl_set_eq:NN \l__fontspec_fontname_bf_tl \l_fontspec_fontname_tl
- \bool_set_false:N \l__fontspec_nobf_bool
-
- \tl_if_empty:NF \l__fontspec_fake_slant_tl
- {
- \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist
- {FakeSlant=\l__fontspec_fake_slant_tl}
- \clist_put_right:Nx \l__fontspec_fontfeat_bfit_clist {FakeBold=#1}
- \tl_set_eq:NN \l__fontspec_fontname_bfit_tl \l_fontspec_fontname_tl
- }
- }
- },
- AutoFakeBold .default:n = {1.5}
- }
-\__fontspec_keys_define_code:nnn {fontspec-opentype} {RawFeature}
- {
- \__fontspec_update_featstr:n {#1}
- }
-\__fontspec_keys_define_code:nnn {fontspec-aat} {RawFeature}
- {
- \__fontspec_update_featstr:n {#1}
- }
-
-%%^^A%% fontspec-code-feat-opentype.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\__fontspec_feat_prop_add:nn {salt} { Alternate\,=\,$N$ }
-\__fontspec_feat_prop_add:nn {nalt} { Annotation\,=\,$N$ }
-\__fontspec_feat_prop_add:nn {ornm} { Ornament\,=\,$N$ }
-\__fontspec_feat_prop_add:nn {cvNN} { CharacterVariant\,=\,$N$:$M$ }
-\__fontspec_feat_prop_add:nn {ssNN} { StylisticSet\,=\,$N$ }
-\__fontspec_define_opentype_feature_group:n {Ligatures}
-\__fontspec_define_opentype_feature:nnnnn {Ligatures} {ResetAll} {} {}
- {
- +dlig,-dlig,+rlig,-rlig,+liga,-liga,+dlig,-dlig,+clig,-clig,+hlig,-hlig,
- +tlig,-tlig
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Required} {rlig} {rlig} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Common} {liga} {liga} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Rare} {dlig} {dlig} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Discretionary} {dlig} {dlig} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Contextual} {clig} {clig} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {Historic} {hlig} {hlig} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Ligatures} {TeX} {} {tlig} {}
-\__fontspec_define_opentype_feature_group:n {Letters}
-\__fontspec_define_opentype_feature:nnnnn {Letters} {ResetAll} {} {}
- {
- +case,+smcp,+pcap,+c2sc,+c2pc,+unic,+rand,
- -case,-smcp,-pcap,-c2sc,-c2pc,-unic,-rand
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Uppercase} {case} {case} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {SmallCaps} {smcp} {smcp} {+pcap,+unic}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {PetiteCaps} {pcap} {pcap} {+smcp,+unic}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercaseSmallCaps} {c2sc} {c2sc} {+c2pc,+unic}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {UppercasePetiteCaps} {c2pc} {c2pc} {+c2sc,+unic}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Unicase} {unic} {unic} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Letters} {Random} {rand} {rand} {}
-\__fontspec_define_opentype_feature_group:n {Numbers}
-\__fontspec_define_opentype_feature:nnnnn {Numbers} {ResetAll} {} {}
- {
- +tnum,-tnum,
- +pnum,-pnum,
- +onum,-onum,
- +lnum,-lnum,
- +zero,-zero,
- +anum,-anum,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Monospaced} {tnum} {tnum} {+pnum,-pnum}
-\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Proportional} {pnum} {pnum} {+tnum,-tnum}
-\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Lowercase} {onum} {onum} {+lnum,-lnum}
-\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Uppercase} {lnum} {lnum} {+onum,-onum}
-\__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {SlashedZero} {zero} {zero} {}
-\aliasfontfeatureoption {Numbers} {Monospaced} {Tabular}
-\aliasfontfeatureoption {Numbers} {Lowercase} {OldStyle}
-\aliasfontfeatureoption {Numbers} {Uppercase} {Lining}
- \__fontspec_define_opentype_onoffreset:nnnnn {Numbers} {Arabic} {anum} {anum} {}
-\__fontspec_define_opentype_feature_group:n {VerticalPosition}
-\__fontspec_define_opentype_feature:nnnnn {VerticalPosition} {ResetAll} {} {}
- {
- +sups,-sups,
- +subs,-subs,
- +ordn,-ordn,
- +numr,-numr,
- +dnom,-dnom,
- +sinf,-sinf,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Superior} {sups} {sups} {+subs,+ordn,+numr,+dnom,+sinf}
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Inferior} {subs} {subs} {+sups,+ordn,+numr,+dnom,+sinf}
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Ordinal} {ordn} {ordn} {+sups,+subs,+numr,+dnom,+sinf}
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Numerator} {numr} {numr} {+sups,+subs,+ordn,+dnom,+sinf}
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {Denominator} {dnom} {dnom} {+sups,+subs,+ordn,+numr,+sinf}
-\__fontspec_define_opentype_onoffreset:nnnnn {VerticalPosition} {ScientificInferior} {sinf} {sinf} {+sups,+subs,+ordn,+numr,+dnom}
-\__fontspec_define_opentype_feature_group:n {Contextuals}
-\__fontspec_define_opentype_feature:nnnnn {Contextuals} {ResetAll} {} {}
- {
- +cswh,-cswh,
- +calt,-calt,
- +init,-init,
- +fina,-fina,
- +falt,-falt,
- +medi,-medi,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Swash} {cswh} {cswh} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Alternate} {calt} {calt} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {WordInitial} {init} {init} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {WordFinal} {fina} {fina} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {LineFinal} {falt} {falt} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Contextuals} {Inner} {medi} {medi} {}
-\__fontspec_define_opentype_feature_group:n {Diacritics}
-\__fontspec_define_opentype_feature:nnnnn {Diacritics} {ResetAll} {} {}
- {
- +mark,-mark,
- +mkmk,-mkmk,
- +abvm,-abvm,
- +blwm,-blwm,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToBase} {mark} {mark} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {MarkToMark} {mkmk} {mkmk} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {AboveBase} {abvm} {abvm} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Diacritics} {BelowBase} {blwm} {blwm} {}
-\__fontspec_define_opentype_feature_group:n {Kerning}
-\__fontspec_define_opentype_feature:nnnnn {Kerning} {ResetAll} {} {}
- {
- +cpsp,-cpsp,
- +kern,-kern,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Kerning} {Uppercase} {cpsp} {cpsp} {}
-\__fontspec_define_opentype_feature:nnnnn {Kerning} {On} {kern} {+kern} {-kern}
-\__fontspec_define_opentype_feature:nnnnn {Kerning} {Off} {kern} {-kern} {+kern}
-\__fontspec_define_opentype_feature:nnnnn {Kerning} {Reset} {} {} {+kern,-kern}
-\__fontspec_define_opentype_feature_group:n {Fractions}
-\__fontspec_define_opentype_feature:nnnnn {Fractions} {ResetAll} {} {}
- {
- +frac,-frac,
- +afrc,-afrc,
- }
-\__fontspec_define_opentype_feature:nnnnn {Fractions} {On} {frac} {+frac} {}
-\__fontspec_define_opentype_feature:nnnnn {Fractions} {Off} {frac} {-frac} {}
-\__fontspec_define_opentype_feature:nnnnn {Fractions} {Reset} {} {} {+frac,-frac}
-\__fontspec_define_opentype_onoffreset:nnnnn {Fractions} {Alternate} {afrc} {afrc} {-frac}
-\__fontspec_define_opentype_feature_group:n {LocalForms}
-\__fontspec_define_opentype_feature:nnnnn {LocalForms} {On} {locl} {+locl} {}
-\__fontspec_define_opentype_feature:nnnnn {LocalForms} {Off} {locl} {-locl} {}
-\__fontspec_define_opentype_feature:nnnnn {LocalForms} {Reset} {} {} {+locl,-locl}
-
-\__fontspec_define_opentype_feature_group:n {Style}
-\__fontspec_define_opentype_feature:nnnnn {Style} {ResetAll} {} {}
- {
- +salt,-salt,
- +ital,-ital,
- +ruby,-ruby,
- +swsh,-swsh,
- +hist,-hist,
- +titl,-titl,
- +hkna,-hkna,
- +vkna,-vkna,
- +ssty=0,-ssty=0,
- +ssty=1,-ssty=1,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Alternate} {salt} {salt} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Italic} {ital} {ital} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Ruby} {ruby} {ruby} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Swash} {swsh} {swsh} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Cursive} {swsh} {curs} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Historic} {hist} {hist} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Titling} {titl} {titl} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {TitlingCaps} {titl} {titl} {} % backwards compat
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {HorizontalKana} {hkna} {hkna} {+vkna,+pkna}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {VerticalKana} {vkna} {vkna} {+hkna,+pkna}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {ProportionalKana} {pkna} {pkna} {+vkna,+hkna}
-\__fontspec_define_opentype_feature:nnnnn {Style} {MathScript} {ssty} {+ssty=0} {+ssty=1}
-\__fontspec_define_opentype_feature:nnnnn {Style} {MathScriptScript} {ssty} {+ssty=1} {+ssty=0}
-\__fontspec_define_opentype_onoffreset:nnnnn {Style} {Uppercase} {case} {case} {}
-\__fontspec_define_opentype_feature_group:n {CJKShape}
-\__fontspec_define_opentype_feature:nnnnn {CJKShape} {ResetAll} {} {}
- {
- +trad,-trad,
- +smpl,-smpl,
- +jp78,-jp78,
- +jp83,-jp83,
- +jp90,-jp90,
- +jp04,-jp04,
- +expt,-expt,
- +nlck,-nlck,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Traditional} {trad} {trad} {+smpl,+jp78,+jp83,+jp90,+jp04,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Simplified} {smpl} {smpl} {+trad,+jp78,+jp83,+jp90,+jp04,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1978} {jp78} {jp78} {+trad,+smpl,+jp83,+jp90,+jp04,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1983} {jp83} {jp83} {+trad,+smpl,+jp78,+jp90,+jp04,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS1990} {jp90} {jp90} {+trad,+smpl,+jp78,+jp83,+jp04,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {JIS2004} {jp04} {jp04} {+trad,+smpl,+jp78,+jp83,+jp90,+expt,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {Expert} {expt} {expt} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+nlck}
-\__fontspec_define_opentype_onoffreset:nnnnn {CJKShape} {NLC} {nlck} {nlck} {+trad,+smpl,+jp78,+jp83,+jp90,+jp04,+expt}
-\__fontspec_define_opentype_feature_group:n {CharacterWidth}
-\__fontspec_define_opentype_feature:nnnnn {CharacterWidth} {ResetAll} {} {}
- {
- +pwid,-pwid,
- +fwid,-fwid,
- +hwid,-hwid,
- +twid,-twid,
- +qwid,-qwid,
- +palt,-palt,
- +halt,-halt,
- }
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Proportional} {pwid} {pwid} {+fwid,+hwid,+twid,+qwid,+palt,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Full} {fwid} {fwid} {+pwid,+hwid,+twid,+qwid,+palt,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Half} {hwid} {hwid} {+pwid,+fwid,+twid,+qwid,+palt,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Third} {twid} {twid} {+pwid,+fwid,+hwid,+qwid,+palt,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {Quarter} {qwid} {qwid} {+pwid,+fwid,+hwid,+twid,+palt,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateProportional} {palt} {palt} {+pwid,+fwid,+hwid,+twid,+qwid,+halt}
-\__fontspec_define_opentype_onoffreset:nnnnn {CharacterWidth} {AlternateHalf} {halt} {halt} {+pwid,+fwid,+hwid,+twid,+qwid,+palt}
-\__fontspec_define_opentype_feature_group:n {Vertical}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {RotatedGlyphs} {vrt2} {vrt2} {+vrtr,+vert}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {AlternatesForRotation} {vrtr} {vrtr} {+vrt2}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {Alternates} {vert} {vert} {+vrt2}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {KanaAlternates} {vkna} {vkna} {+hkna}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {Kerning} {vkrn} {vkrn} {}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {AlternateMetrics} {valt} {valt} {+vhal,+vpal,+kern}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {HalfMetrics} {vhal} {vhal} {+valt,+vpal,+kern}
-\__fontspec_define_opentype_onoffreset:nnnnn {Vertical} {ProportionalMetrics} {vpal} {vpal} {+valt,+vhal}
-\__fontspec_define_opentype_feature_group:n {Alternate}
-\keys_define:nn {fontspec-opentype}
- {
- Alternate .default:n = {0} ,
- Alternate .groups:n = {opentype},
- Alternate / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- { \__fontspec_make_OT_feature:nnn {salt}{ +salt = ##1 }{} }
- }
- }
-\keys_define:nn {fontspec-opentype}
- {
- Alternate / Random .code:n =
- { \__fontspec_make_OT_feature:nnn {salt}{ +salt = random }{} } ,
- }
-\aliasfontfeature{Alternate}{StylisticAlternates}
-\__fontspec_define_opentype_feature_group:n {Variant}
-\keys_define:nn {fontspec-opentype}
- {
- Variant .default:n = {0} ,
- Variant .groups:n = {opentype} ,
- Variant / unknown .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \__fontspec_make_OT_feature:xxx { ss \two@digits {##1} } { +ss \two@digits {##1} } {}
- }
- }
- }
-\aliasfontfeature{Variant}{StylisticSet}
-\__fontspec_define_opentype_feature_group:n {CharacterVariant}
-\use:x
- {
- \cs_new:Npn \exp_not:N \fontspec_parse_cv:w
- ##1 \c_colon_str ##2 \c_colon_str ##3 \exp_not:N \q_nil
- {
- \__fontspec_make_OT_feature:xxx
- { cv \exp_not:N \two@digits {##1} }
- { +cv \exp_not:N \two@digits {##1} = ##2 } {}
- }
- \keys_define:nn {fontspec-opentype}
- {
- CharacterVariant / unknown .code:n =
- {
- \clist_map_inline:nn {##1}
- {
- \exp_not:N \fontspec_parse_cv:w
- ####1 \c_colon_str 0 \c_colon_str \exp_not:N \q_nil
- }
- }
- }
- }
-\__fontspec_define_opentype_feature_group:n {Annotation}
-\keys_define:nn {fontspec-opentype}
- {
- Annotation .default:n = {0} ,
- Annotation .groups:n = {opentype},
- Annotation / unknown .code:n =
- {
- \__fontspec_make_OT_feature:nnn {nalt} {+nalt=#1} {}
- }
- }
-\__fontspec_define_opentype_feature_group:n {Ornament}
-\keys_define:nn {fontspec-opentype}
- {
- Ornament .default:n = {0} ,
- Ornament .groups:n = {opentype},
- Ornament / unknown .code:n =
- {
- \__fontspec_make_OT_feature:nnn {ornm} { +ornm=#1 } {}
- }
- }
-\keys_define:nn {fontspec-opentype}
- {
- Script .choice: ,
- Script .groups:n = {opentype} ,
- }
-\cs_new:Nn \fontspec_new_script:nn
- {
- \keys_define:nn {fontspec-opentype} { Script / #1 .code:n =
- {
- \bool_set_false:N \l__fontspec_scriptlang_exist_bool
- \clist_map_inline:nn {#2}
- {
- \exp_args:No \__fontspec_check_script:NnT \l__fontspec_fontface_cs_tl {####1}
- {
- \tl_set:Nn \l__fontspec_script_name_tl {#1}
- \tl_set:Nn \l__fontspec_script_tl {####1}
- \int_set:Nn \l__fontspec_script_int {\l__fontspec_strnum_int}
- \bool_set_true:N \l__fontspec_scriptlang_exist_bool
- \tl_gset:Nx \g__fontspec_single_feat_tl { script=####1 }
- \clist_map_break:
- }
- }
-
- \bool_if:NF \l__fontspec_scriptlang_exist_bool
- {
- \bool_if:nF { \str_if_eq_p:ee {#1} {CustomDefault} }
- {
- \tl_clear:N \l__fontspec_script_name_tl
- \__fontspec_warning:nxx {no-script} {\l_fontspec_fontname_tl} {#1}
- }
-
- \bool_if:nF
- {
- \str_if_eq_p:ee {#1} {Default} ||
- \str_if_eq_p:ee {#1} {Latin} ||
- \str_if_eq_p:ee {#1} {CustomDefault}
- }
- {
- \keys_set:nn {fontspec-opentype} { Script = CustomDefault }
- }
- }
- }
- }
- }
-\keys_define:nn {fontspec-opentype}
- {
- Language .choice: ,
- Language .groups:n = {opentype} ,
- }
-\cs_new:Nn \fontspec_new_lang:nn
- {
- \keys_define:nn {fontspec-opentype} { Language / #1 .code:n =
- {
- \bool_set_false:N \l__fontspec_scriptlang_exist_bool
- \clist_map_inline:nn {#2}
- {
- \exp_args:No \__fontspec_check_lang:NnTF \l__fontspec_fontface_cs_tl {####1}
- {
- \tl_set:Nn \l__fontspec_lang_tl {####1}
- \int_set:Nn \l__fontspec_language_int {\l__fontspec_strnum_int}
- \tl_gset:Nx \g__fontspec_single_feat_tl { language=####1 }
- \bool_set_true:N \l__fontspec_scriptlang_exist_bool
- \clist_map_break:
- }
- }
- \bool_if:NF \l__fontspec_scriptlang_exist_bool
- {
- \__fontspec_warning:nx {language-not-exist} {#1}
- \keys_set:nn {fontspec-opentype} { Language = Default }
- }
- }
- }
- }
-\__fontspec_keys_define_code:nnn {fontspec-opentype} { Language / Default }
- {
- \tl_set:Nn \l__fontspec_lang_tl {dflt}
- \int_zero:N \l__fontspec_language_int
- \tl_gset:Nn \g__fontspec_single_feat_tl { language=dflt }
- }
-\cs_new:Nn \__fontspec_ot_compat:nn
- {
- \aliasfontfeatureoption {#1} {#2Off} {No#2}
- }
-\__fontspec_ot_compat:nn {Ligatures} {Rare}
-\__fontspec_ot_compat:nn {Ligatures} {Required}
-\__fontspec_ot_compat:nn {Ligatures} {Common}
-\__fontspec_ot_compat:nn {Ligatures} {Discretionary}
-\__fontspec_ot_compat:nn {Ligatures} {Contextual}
-\__fontspec_ot_compat:nn {Ligatures} {Historic}
-\__fontspec_ot_compat:nn {Numbers} {SlashedZero}
-\__fontspec_ot_compat:nn {Contextuals} {Swash}
-\__fontspec_ot_compat:nn {Contextuals} {Alternate}
-\__fontspec_ot_compat:nn {Contextuals} {WordInitial}
-\__fontspec_ot_compat:nn {Contextuals} {WordFinal}
-\__fontspec_ot_compat:nn {Contextuals} {LineFinal}
-\__fontspec_ot_compat:nn {Contextuals} {Inner}
-\__fontspec_ot_compat:nn {Diacritics} {MarkToBase}
-\__fontspec_ot_compat:nn {Diacritics} {MarkToMark}
-\__fontspec_ot_compat:nn {Diacritics} {AboveBase}
-\__fontspec_ot_compat:nn {Diacritics} {BelowBase}
-
-%%^^A%% fontspec-code-scripts.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\newfontscript{Adlam}{adlm}
-\newfontscript{Ahom}{ahom}
-\newfontscript{Anatolian~Hieroglyphs}{hluw}
-\newfontscript{Arabic}{arab}
-\newfontscript{Armenian}{armn}
-\newfontscript{Avestan}{avst}
-\newfontscript{Balinese}{bali}
-\newfontscript{Bamum}{bamu}
-\newfontscript{Bassa~Vah}{bass}
-\newfontscript{Batak}{batk}
-\newfontscript{Bengali}{bng2,beng}
-\newfontscript{Bhaiksuki}{bhks}
-\newfontscript{Bopomofo}{bopo}
-\newfontscript{Brahmi}{brah}
-\newfontscript{Braille}{brai}
-\newfontscript{Buginese}{bugi}
-\newfontscript{Buhid}{buhd}
-\newfontscript{Byzantine~Music}{byzm}
-\newfontscript{Canadian~Syllabics}{cans}
-\newfontscript{Carian}{cari}
-\newfontscript{Caucasian~Albanian}{aghb}
-\newfontscript{Chakma}{cakm}
-\newfontscript{Cham}{cham}
-\newfontscript{Cherokee}{cher}
-\newfontscript{Chorasmian}{chrs}
-\newfontscript{CJK~Ideographic}{hani}
-\newfontscript{Coptic}{copt}
-\newfontscript{Cypriot~Syllabary}{cprt}
-\newfontscript{Cypro~Minoan}{cpmn}
-\newfontscript{Cyrillic}{cyrl}
-\newfontscript{Default}{DFLT}
-\newfontscript{CustomDefault}{latn,DFLT}
-\newfontscript{Deseret}{dsrt}
-\newfontscript{Devanagari}{dev2,deva}
-\newfontscript{Dives~Akuru}{diak}
-\newfontscript{Dogra}{dogr}
-\newfontscript{Duployan}{dupl}
-\newfontscript{Egyptian~Hieroglyphs}{egyp}
-\newfontscript{Elbasan}{elba}
-\newfontscript{Elymaic}{elym}
-\newfontscript{Ethiopic}{ethi}
-\newfontscript{Georgian}{geor}
-\newfontscript{Glagolitic}{glag}
-\newfontscript{Gothic}{goth}
-\newfontscript{Grantha}{gran}
-\newfontscript{Greek}{grek}
-\newfontscript{Gujarati}{gjr2,gujr}
-\newfontscript{Gunjala~Gondi}{gong}
-\newfontscript{Gurmukhi}{gur2,guru}
-\newfontscript{Hangul~Jamo}{jamo}
-\newfontscript{Hangul}{hang}
-\newfontscript{Hanifi~Rohingya}{rohg}
-\newfontscript{Hanunoo}{hano}
-\newfontscript{Hatran}{hatr}
-\newfontscript{Hebrew}{hebr}
-\newfontscript{Hiragana~and~Katakana}{kana}
-\newfontscript{Imperial~Aramaic}{armi}
-\newfontscript{Inscriptional~Pahlavi}{phli}
-\newfontscript{Inscriptional~Parthian}{prti}
-\newfontscript{Javanese}{java}
-\newfontscript{Kaithi}{kthi}
-\newfontscript{Kannada}{knd2,knda}
-\newfontscript{Kayah~Li}{kali}
-\newfontscript{Kharosthi}{khar}
-\newfontscript{Khitan~Small~Script}{kits}
-\newfontscript{Khmer}{khmr}
-\newfontscript{Khojki}{khoj}
-\newfontscript{Khudawadi}{sind}
-\newfontscript{Lao}{lao~}
-\newfontscript{Latin}{latn}
-\newfontscript{Lepcha}{lepc}
-\newfontscript{Limbu}{limb}
-\newfontscript{Linear~A}{lina}
-\newfontscript{Linear~B}{linb}
-\newfontscript{Lisu}{lisu}
-\newfontscript{Lycian}{lyci}
-\newfontscript{Lydian}{lydi}
-\newfontscript{Mahajani}{mahj}
-\newfontscript{Makasar}{maka}
-\newfontscript{Malayalam}{mlm2,mlym}
-\newfontscript{Mandaic}{mand}
-\newfontscript{Manichaean}{mani}
-\newfontscript{Marchen}{marc}
-\newfontscript{Masaram Gondi}{gonm}
-\newfontscript{Math}{math}
-\newfontscript{Medefaidrin}{medf}
-\newfontscript{Meitei~Mayek}{mtei}
-\newfontscript{Mende~Kikakui}{mend}
-\newfontscript{Meroitic~Cursive}{merc}
-\newfontscript{Meroitic~Hieroglyphs}{mero}
-\newfontscript{Miao}{plrd}
-\newfontscript{Modi}{modi}
-\newfontscript{Mongolian}{mong}
-\newfontscript{Mro}{mroo}
-\newfontscript{Multani}{mult}
-\newfontscript{Musical~Symbols}{musc}
-\newfontscript{Myanmar}{mym2,mymr}
-\newfontscript{N'Ko}{nko~}
-\newfontscript{Nabataean}{nbat}
-\newfontscript{Nandinagari}{nand}
-\newfontscript{Newa}{newa}
-\newfontscript{Nushu}{nshu}
-\newfontscript{Nyiakeng~Puachue~Hmong}{hmnp}
-\newfontscript{Odia}{ory2,orya}
-\newfontscript{Ogham}{ogam}
-\newfontscript{Ol~Chiki}{olck}
-\newfontscript{Old~Italic}{ital}
-\newfontscript{Old~Hungarian}{hung}
-\newfontscript{Old~North~Arabian}{narb}
-\newfontscript{Old~Permic}{perm}
-\newfontscript{Old~Persian~Cuneiform}{xpeo}
-\newfontscript{Old~Sogdian}{sogo}
-\newfontscript{Old~South~Arabian}{sarb}
-\newfontscript{Old~Turkic}{orkh}
-\newfontscript{Old~Uyghur}{ougr}
-\newfontscript{Osage}{osge}
-\newfontscript{Osmanya}{osma}
-\newfontscript{Pahawh~Hmong}{hmng}
-\newfontscript{Palmyrene}{palm}
-\newfontscript{Pau~Cin~Hau}{pauc}
-\newfontscript{Phags-pa}{phag}
-\newfontscript{Phoenician}{phnx}
-\newfontscript{Psalter~Pahlavi}{phlp}
-\newfontscript{Rejang}{rjng}
-\newfontscript{Runic}{runr}
-\newfontscript{Samaritan}{samr}
-\newfontscript{Saurashtra}{saur}
-\newfontscript{Sharada}{shrd}
-\newfontscript{Shavian}{shaw}
-\newfontscript{Siddham}{sidd}
-\newfontscript{Sign~Writing}{sgnw}
-\newfontscript{Sinhala}{sinh}
-\newfontscript{Sogdian}{sogd}
-\newfontscript{Sora~Sompeng}{sora}
-\newfontscript{Sumero-Akkadian~Cuneiform}{xsux}
-\newfontscript{Sundanese}{sund}
-\newfontscript{Syloti~Nagri}{sylo}
-\newfontscript{Syriac}{syrc}
-\newfontscript{Tagalog}{tglg}
-\newfontscript{Tagbanwa}{tagb}
-\newfontscript{Tai~Le}{tale}
-\newfontscript{Tai~Lu}{talu}
-\newfontscript{Tai~Tham}{lana}
-\newfontscript{Tai~Viet}{tavt}
-\newfontscript{Takri}{takr}
-\newfontscript{Tamil}{tml2,taml}
-\newfontscript{Tangsa}{tnsa}
-\newfontscript{Tangut}{tang}
-\newfontscript{Telugu}{tel2,telu}
-\newfontscript{Thaana}{thaa}
-\newfontscript{Thai}{thai}
-\newfontscript{Tibetan}{tibt}
-\newfontscript{Tifinagh}{tfng}
-\newfontscript{Tirhuta}{tirh}
-\newfontscript{Toto}{toto}
-\newfontscript{Ugaritic~Cuneiform}{ugar}
-\newfontscript{Vai}{vai~}
-\newfontscript{Vithkuqi}{vith}
-\newfontscript{Wancho}{wcho}
-\newfontscript{Warang~Citi}{wara}
-\newfontscript{Yezidi}{yezi}
-\newfontscript{Yi}{yi~~}
-\newfontscript{Zanabazar~Square}{zanb}
-\newfontscript{CJK}{hani}
-\newfontscript{Kana}{kana}
-\newfontscript{Maths}{math}
-\newfontscript{N'ko}{nko~}
-\newfontscript{Oriya}{ory2,orya}
-
-%%^^A%% fontspec-code-lang.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\newfontlanguage{Abaza}{ABA}
-\newfontlanguage{Abkhazian}{ABK}
-\newfontlanguage{Adyghe}{ADY}
-\newfontlanguage{Afrikaans}{AFK}
-\newfontlanguage{Afar}{AFR}
-\newfontlanguage{Agaw}{AGW}
-\newfontlanguage{Altai}{ALT}
-\newfontlanguage{Amharic}{AMH}
-\newfontlanguage{Arabic}{ARA}
-\newfontlanguage{Aari}{ARI}
-\newfontlanguage{Arakanese}{ARK}
-\newfontlanguage{Assamese}{ASM}
-\newfontlanguage{Athapaskan}{ATH}
-\newfontlanguage{Avar}{AVR}
-\newfontlanguage{Awadhi}{AWA}
-\newfontlanguage{Aymara}{AYM}
-\newfontlanguage{Azeri}{AZE}
-\newfontlanguage{Badaga}{BAD}
-\newfontlanguage{Baghelkhandi}{BAG}
-\newfontlanguage{Balkar}{BAL}
-\newfontlanguage{Baule}{BAU}
-\newfontlanguage{Berber}{BBR}
-\newfontlanguage{Bench}{BCH}
-\newfontlanguage{Bible~Cree}{BCR}
-\newfontlanguage{Belarussian}{BEL}
-\newfontlanguage{Bemba}{BEM}
-\newfontlanguage{Bengali}{BEN}
-\newfontlanguage{Bulgarian}{BGR}
-\newfontlanguage{Bhili}{BHI}
-\newfontlanguage{Bhojpuri}{BHO}
-\newfontlanguage{Bikol}{BIK}
-\newfontlanguage{Bilen}{BIL}
-\newfontlanguage{Blackfoot}{BKF}
-\newfontlanguage{Balochi}{BLI}
-\newfontlanguage{Balante}{BLN}
-\newfontlanguage{Balti}{BLT}
-\newfontlanguage{Bambara}{BMB}
-\newfontlanguage{Bamileke}{BML}
-\newfontlanguage{Breton}{BRE}
-\newfontlanguage{Brahui}{BRH}
-\newfontlanguage{Braj~Bhasha}{BRI}
-\newfontlanguage{Burmese}{BRM}
-\newfontlanguage{Bashkir}{BSH}
-\newfontlanguage{Beti}{BTI}
-\newfontlanguage{Catalan}{CAT}
-\newfontlanguage{Cebuano}{CEB}
-\newfontlanguage{Chechen}{CHE}
-\newfontlanguage{Chaha~Gurage}{CHG}
-\newfontlanguage{Chattisgarhi}{CHH}
-\newfontlanguage{Chichewa}{CHI}
-\newfontlanguage{Chukchi}{CHK}
-\newfontlanguage{Chipewyan}{CHP}
-\newfontlanguage{Cherokee}{CHR}
-\newfontlanguage{Chuvash}{CHU}
-\newfontlanguage{Comorian}{CMR}
-\newfontlanguage{Coptic}{COP}
-\newfontlanguage{Cree}{CRE}
-\newfontlanguage{Carrier}{CRR}
-\newfontlanguage{Crimean~Tatar}{CRT}
-\newfontlanguage{Church~Slavonic}{CSL}
-\newfontlanguage{Czech}{CSY}
-\newfontlanguage{Danish}{DAN}
-\newfontlanguage{Dargwa}{DAR}
-\newfontlanguage{Woods~Cree}{DCR}
-\newfontlanguage{German}{DEU}
-\newfontlanguage{Dogri}{DGR}
-\newfontlanguage{Divehi}{DIV}
-\newfontlanguage{Djerma}{DJR}
-\newfontlanguage{Dangme}{DNG}
-\newfontlanguage{Dinka}{DNK}
-\newfontlanguage{Dungan}{DUN}
-\newfontlanguage{Dzongkha}{DZN}
-\newfontlanguage{Ebira}{EBI}
-\newfontlanguage{Eastern~Cree}{ECR}
-\newfontlanguage{Edo}{EDO}
-\newfontlanguage{Efik}{EFI}
-\newfontlanguage{Greek}{ELL}
-\newfontlanguage{English}{ENG}
-\newfontlanguage{Erzya}{ERZ}
-\newfontlanguage{Spanish}{ESP}
-\newfontlanguage{Estonian}{ETI}
-\newfontlanguage{Basque}{EUQ}
-\newfontlanguage{Evenki}{EVK}
-\newfontlanguage{Even}{EVN}
-\newfontlanguage{Ewe}{EWE}
-\newfontlanguage{French~Antillean}{FAN}
-\newfontlanguage{Farsi}{FAR}
-\newfontlanguage{Parsi}{FAR}
-\newfontlanguage{Persian}{FAR}
-\newfontlanguage{Finnish}{FIN}
-\newfontlanguage{Fijian}{FJI}
-\newfontlanguage{Flemish}{FLE}
-\newfontlanguage{Forest~Nenets}{FNE}
-\newfontlanguage{Fon}{FON}
-\newfontlanguage{Faroese}{FOS}
-\newfontlanguage{French}{FRA}
-\newfontlanguage{Frisian}{FRI}
-\newfontlanguage{Friulian}{FRL}
-\newfontlanguage{Futa}{FTA}
-\newfontlanguage{Fulani}{FUL}
-\newfontlanguage{Ga}{GAD}
-\newfontlanguage{Gaelic}{GAE}
-\newfontlanguage{Gagauz}{GAG}
-\newfontlanguage{Galician}{GAL}
-\newfontlanguage{Garshuni}{GAR}
-\newfontlanguage{Garhwali}{GAW}
-\newfontlanguage{Ge'ez}{GEZ}
-\newfontlanguage{Gilyak}{GIL}
-\newfontlanguage{Gumuz}{GMZ}
-\newfontlanguage{Gondi}{GON}
-\newfontlanguage{Greenlandic}{GRN}
-\newfontlanguage{Garo}{GRO}
-\newfontlanguage{Guarani}{GUA}
-\newfontlanguage{Gujarati}{GUJ}
-\newfontlanguage{Haitian}{HAI}
-\newfontlanguage{Halam}{HAL}
-\newfontlanguage{Harauti}{HAR}
-\newfontlanguage{Hausa}{HAU}
-\newfontlanguage{Hawaiin}{HAW}
-\newfontlanguage{Hammer-Banna}{HBN}
-\newfontlanguage{Hiligaynon}{HIL}
-\newfontlanguage{Hindi}{HIN}
-\newfontlanguage{High~Mari}{HMA}
-\newfontlanguage{Hindko}{HND}
-\newfontlanguage{Ho}{HO}
-\newfontlanguage{Harari}{HRI}
-\newfontlanguage{Croatian}{HRV}
-\newfontlanguage{Hungarian}{HUN}
-\newfontlanguage{Armenian}{HYE}
-\newfontlanguage{Igbo}{IBO}
-\newfontlanguage{Ijo}{IJO}
-\newfontlanguage{Ilokano}{ILO}
-\newfontlanguage{Indonesian}{IND}
-\newfontlanguage{Ingush}{ING}
-\newfontlanguage{Inuktitut}{INU}
-\newfontlanguage{Irish}{IRI}
-\newfontlanguage{Irish~Traditional}{IRT}
-\newfontlanguage{Icelandic}{ISL}
-\newfontlanguage{Inari~Sami}{ISM}
-\newfontlanguage{Italian}{ITA}
-\newfontlanguage{Hebrew}{IWR}
-\newfontlanguage{Javanese}{JAV}
-\newfontlanguage{Yiddish}{JII}
-\newfontlanguage{Japanese}{JAN}
-\newfontlanguage{Judezmo}{JUD}
-\newfontlanguage{Jula}{JUL}
-\newfontlanguage{Kabardian}{KAB}
-\newfontlanguage{Kachchi}{KAC}
-\newfontlanguage{Kalenjin}{KAL}
-\newfontlanguage{Kannada}{KAN}
-\newfontlanguage{Karachay}{KAR}
-\newfontlanguage{Georgian}{KAT}
-\newfontlanguage{Kazakh}{KAZ}
-\newfontlanguage{Kebena}{KEB}
-\newfontlanguage{Khutsuri~Georgian}{KGE}
-\newfontlanguage{Khakass}{KHA}
-\newfontlanguage{Khanty-Kazim}{KHK}
-\newfontlanguage{Khmer}{KHM}
-\newfontlanguage{Khanty-Shurishkar}{KHS}
-\newfontlanguage{Khanty-Vakhi}{KHV}
-\newfontlanguage{Khowar}{KHW}
-\newfontlanguage{Kikuyu}{KIK}
-\newfontlanguage{Kirghiz}{KIR}
-\newfontlanguage{Kisii}{KIS}
-\newfontlanguage{Kokni}{KKN}
-\newfontlanguage{Kalmyk}{KLM}
-\newfontlanguage{Kamba}{KMB}
-\newfontlanguage{Kumaoni}{KMN}
-\newfontlanguage{Komo}{KMO}
-\newfontlanguage{Komso}{KMS}
-\newfontlanguage{Kanuri}{KNR}
-\newfontlanguage{Kodagu}{KOD}
-\newfontlanguage{Korean~Old~Hangul}{KOH}
-\newfontlanguage{Konkani}{KOK}
-\newfontlanguage{Kikongo}{KON}
-\newfontlanguage{Komi-Permyak}{KOP}
-\newfontlanguage{Korean}{KOR}
-\newfontlanguage{Komi-Zyrian}{KOZ}
-\newfontlanguage{Kpelle}{KPL}
-\newfontlanguage{Krio}{KRI}
-\newfontlanguage{Karakalpak}{KRK}
-\newfontlanguage{Karelian}{KRL}
-\newfontlanguage{Karaim}{KRM}
-\newfontlanguage{Karen}{KRN}
-\newfontlanguage{Koorete}{KRT}
-\newfontlanguage{Kashmiri}{KSH}
-\newfontlanguage{Khasi}{KSI}
-\newfontlanguage{Kildin~Sami}{KSM}
-\newfontlanguage{Kui}{KUI}
-\newfontlanguage{Kulvi}{KUL}
-\newfontlanguage{Kumyk}{KUM}
-\newfontlanguage{Kurdish}{KUR}
-\newfontlanguage{Kurukh}{KUU}
-\newfontlanguage{Kuy}{KUY}
-\newfontlanguage{Koryak}{KYK}
-\newfontlanguage{Ladin}{LAD}
-\newfontlanguage{Lahuli}{LAH}
-\newfontlanguage{Lak}{LAK}
-\newfontlanguage{Lambani}{LAM}
-\newfontlanguage{Lao}{LAO}
-\newfontlanguage{Latin}{LAT}
-\newfontlanguage{Laz}{LAZ}
-\newfontlanguage{L-Cree}{LCR}
-\newfontlanguage{Ladakhi}{LDK}
-\newfontlanguage{Lezgi}{LEZ}
-\newfontlanguage{Lingala}{LIN}
-\newfontlanguage{Low~Mari}{LMA}
-\newfontlanguage{Limbu}{LMB}
-\newfontlanguage{Lomwe}{LMW}
-\newfontlanguage{Lower~Sorbian}{LSB}
-\newfontlanguage{Lule~Sami}{LSM}
-\newfontlanguage{Lithuanian}{LTH}
-\newfontlanguage{Luba}{LUB}
-\newfontlanguage{Luganda}{LUG}
-\newfontlanguage{Luhya}{LUH}
-\newfontlanguage{Luo}{LUO}
-\newfontlanguage{Latvian}{LVI}
-\newfontlanguage{Majang}{MAJ}
-\newfontlanguage{Makua}{MAK}
-\newfontlanguage{Malayalam~Traditional}{MAL}
-\newfontlanguage{Mansi}{MAN}
-\newfontlanguage{Marathi}{MAR}
-\newfontlanguage{Marwari}{MAW}
-\newfontlanguage{Mbundu}{MBN}
-\newfontlanguage{Manchu}{MCH}
-\newfontlanguage{Moose~Cree}{MCR}
-\newfontlanguage{Mende}{MDE}
-\newfontlanguage{Me'en}{MEN}
-\newfontlanguage{Mizo}{MIZ}
-\newfontlanguage{Macedonian}{MKD}
-\newfontlanguage{Male}{MLE}
-\newfontlanguage{Malagasy}{MLG}
-\newfontlanguage{Malinke}{MLN}
-\newfontlanguage{Malayalam~Reformed}{MLR}
-\newfontlanguage{Malay}{MLY}
-\newfontlanguage{Mandinka}{MND}
-\newfontlanguage{Mongolian}{MNG}
-\newfontlanguage{Manipuri}{MNI}
-\newfontlanguage{Maninka}{MNK}
-\newfontlanguage{Manx~Gaelic}{MNX}
-\newfontlanguage{Moksha}{MOK}
-\newfontlanguage{Moldavian}{MOL}
-\newfontlanguage{Mon}{MON}
-\newfontlanguage{Moroccan}{MOR}
-\newfontlanguage{Maori}{MRI}
-\newfontlanguage{Maithili}{MTH}
-\newfontlanguage{Maltese}{MTS}
-\newfontlanguage{Mundari}{MUN}
-\newfontlanguage{Naga-Assamese}{NAG}
-\newfontlanguage{Nanai}{NAN}
-\newfontlanguage{Naskapi}{NAS}
-\newfontlanguage{N-Cree}{NCR}
-\newfontlanguage{Ndebele}{NDB}
-\newfontlanguage{Ndonga}{NDG}
-\newfontlanguage{Nepali}{NEP}
-\newfontlanguage{Newari}{NEW}
-\newfontlanguage{Nagari}{NGR}
-\newfontlanguage{Norway~House~Cree}{NHC}
-\newfontlanguage{Nisi}{NIS}
-\newfontlanguage{Niuean}{NIU}
-\newfontlanguage{Nkole}{NKL}
-\newfontlanguage{N'ko}{NKO}
-\newfontlanguage{Dutch}{NLD}
-\newfontlanguage{Nogai}{NOG}
-\newfontlanguage{Norwegian}{NOR}
-\newfontlanguage{Northern~Sami}{NSM}
-\newfontlanguage{Northern~Tai}{NTA}
-\newfontlanguage{Esperanto}{NTO}
-\newfontlanguage{Nynorsk}{NYN}
-\newfontlanguage{Oji-Cree}{OCR}
-\newfontlanguage{Ojibway}{OJB}
-\newfontlanguage{Oriya}{ORI}
-\newfontlanguage{Oromo}{ORO}
-\newfontlanguage{Ossetian}{OSS}
-\newfontlanguage{Palestinian~Aramaic}{PAA}
-\newfontlanguage{Pali}{PAL}
-\newfontlanguage{Punjabi}{PAN}
-\newfontlanguage{Palpa}{PAP}
-\newfontlanguage{Pashto}{PAS}
-\newfontlanguage{Polytonic~Greek}{PGR}
-\newfontlanguage{Pilipino}{PIL}
-\newfontlanguage{Palaung}{PLG}
-\newfontlanguage{Polish}{PLK}
-\newfontlanguage{Provencal}{PRO}
-\newfontlanguage{Portuguese}{PTG}
-\newfontlanguage{Chin}{QIN}
-\newfontlanguage{Rajasthani}{RAJ}
-\newfontlanguage{R-Cree}{RCR}
-\newfontlanguage{Russian~Buriat}{RBU}
-\newfontlanguage{Riang}{RIA}
-\newfontlanguage{Rhaeto-Romanic}{RMS}
-\newfontlanguage{Romanian}{ROM}
-\newfontlanguage{Romany}{ROY}
-\newfontlanguage{Rusyn}{RSY}
-\newfontlanguage{Ruanda}{RUA}
-\newfontlanguage{Russian}{RUS}
-\newfontlanguage{Sadri}{SAD}
-\newfontlanguage{Sanskrit}{SAN}
-\newfontlanguage{Santali}{SAT}
-\newfontlanguage{Sayisi}{SAY}
-\newfontlanguage{Sekota}{SEK}
-\newfontlanguage{Selkup}{SEL}
-\newfontlanguage{Sango}{SGO}
-\newfontlanguage{Shan}{SHN}
-\newfontlanguage{Sibe}{SIB}
-\newfontlanguage{Sidamo}{SID}
-\newfontlanguage{Silte~Gurage}{SIG}
-\newfontlanguage{Skolt~Sami}{SKS}
-\newfontlanguage{Slovak}{SKY}
-\newfontlanguage{Slavey}{SLA}
-\newfontlanguage{Slovenian}{SLV}
-\newfontlanguage{Somali}{SML}
-\newfontlanguage{Samoan}{SMO}
-\newfontlanguage{Sena}{SNA}
-\newfontlanguage{Sindhi}{SND}
-\newfontlanguage{Sinhalese}{SNH}
-\newfontlanguage{Soninke}{SNK}
-\newfontlanguage{Sodo~Gurage}{SOG}
-\newfontlanguage{Sotho}{SOT}
-\newfontlanguage{Albanian}{SQI}
-\newfontlanguage{Serbian}{SRB}
-\newfontlanguage{Saraiki}{SRK}
-\newfontlanguage{Serer}{SRR}
-\newfontlanguage{South~Slavey}{SSL}
-\newfontlanguage{Southern~Sami}{SSM}
-\newfontlanguage{Suri}{SUR}
-\newfontlanguage{Svan}{SVA}
-\newfontlanguage{Swedish}{SVE}
-\newfontlanguage{Swadaya~Aramaic}{SWA}
-\newfontlanguage{Swahili}{SWK}
-\newfontlanguage{Swazi}{SWZ}
-\newfontlanguage{Sutu}{SXT}
-\newfontlanguage{Syriac}{SYR}
-\newfontlanguage{Tabasaran}{TAB}
-\newfontlanguage{Tajiki}{TAJ}
-\newfontlanguage{Tamil}{TAM}
-\newfontlanguage{Tatar}{TAT}
-\newfontlanguage{TH-Cree}{TCR}
-\newfontlanguage{Telugu}{TEL}
-\newfontlanguage{Tongan}{TGN}
-\newfontlanguage{Tigre}{TGR}
-\newfontlanguage{Tigrinya}{TGY}
-\newfontlanguage{Thai}{THA}
-\newfontlanguage{Tahitian}{THT}
-\newfontlanguage{Tibetan}{TIB}
-\newfontlanguage{Turkish}{TRK,TUR}
-\newfontlanguage{Turkmen}{TKM}
-\newfontlanguage{Temne}{TMN}
-\newfontlanguage{Tswana}{TNA}
-\newfontlanguage{Tundra~Nenets}{TNE}
-\newfontlanguage{Tonga}{TNG}
-\newfontlanguage{Todo}{TOD}
-\newfontlanguage{Tsonga}{TSG}
-\newfontlanguage{Turoyo~Aramaic}{TUA}
-\newfontlanguage{Tulu}{TUL}
-\newfontlanguage{Tuvin}{TUV}
-\newfontlanguage{Twi}{TWI}
-\newfontlanguage{Udmurt}{UDM}
-\newfontlanguage{Ukrainian}{UKR}
-\newfontlanguage{Urdu}{URD}
-\newfontlanguage{Upper~Sorbian}{USB}
-\newfontlanguage{Uyghur}{UYG}
-\newfontlanguage{Uzbek}{UZB}
-\newfontlanguage{Venda}{VEN}
-\newfontlanguage{Vietnamese}{VIT}
-\newfontlanguage{Wa}{WA}
-\newfontlanguage{Wagdi}{WAG}
-\newfontlanguage{West-Cree}{WCR}
-\newfontlanguage{Welsh}{WEL}
-\newfontlanguage{Wolof}{WLF}
-\newfontlanguage{Tai~Lue}{XBD}
-\newfontlanguage{Xhosa}{XHS}
-\newfontlanguage{Yakut}{YAK}
-\newfontlanguage{Yoruba}{YBA}
-\newfontlanguage{Y-Cree}{YCR}
-\newfontlanguage{Yi~Classic}{YIC}
-\newfontlanguage{Yi~Modern}{YIM}
-\newfontlanguage{Chinese~Hong~Kong}{ZHH}
-\newfontlanguage{Chinese~Phonetic}{ZHP}
-\newfontlanguage{Chinese~Simplified}{ZHS}
-\newfontlanguage{Chinese~Traditional}{ZHT}
-\newfontlanguage{Zande}{ZND}
-\newfontlanguage{Zulu}{ZUL}
-
-%%^^A%% fontspec-code-feat-aat.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-
-%%^^A%% fontspec-code-enc.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\DeclareDocumentCommand \EncodingCommand { m O{} O{} m }
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \EncodingCommand }
- \DeclareTextCommand{#1}{\UnicodeEncodingName}[#2][#3]{#4}
- }
-\DeclareDocumentCommand \EncodingAccent {mm}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \EncodingAccent }
- \DeclareTextCommand{#1}{\UnicodeEncodingName}{\add@unicode@accent{#2}}
- }
-\DeclareDocumentCommand \EncodingSymbol {mm}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \EncodingSymbol }
- \DeclareTextSymbol{#1}{\UnicodeEncodingName}{#2}
- }
-\DeclareDocumentCommand \EncodingComposite {mmm}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \EncodingComposite }
- \DeclareTextComposite{#1}{\UnicodeEncodingName}{#2}{#3}
- }
-\DeclareDocumentCommand \EncodingCompositeCommand {mmm}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \EncodingCompositeCommand }
- \DeclareTextCompositeCommand{#1}{\UnicodeEncodingName}{#2}{#3}
- }
-\DeclareDocumentCommand \DeclareUnicodeEncoding {mm}
- {
- \DeclareFontEncoding{#1}{}{}
- \DeclareFontSubstitution{#1}{lmr}{m}{n}
- \DeclareFontFamily{#1}{lmr}{}
-
- \DeclareFontShape{#1}{lmr}{m}{n}
- {<->\UnicodeFontFile{lmroman10-regular}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{m}{it}
- {<->\UnicodeFontFile{lmroman10-italic}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{m}{sc}
- {<->\UnicodeFontFile{lmromancaps10-regular}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{bx}{n}
- {<->\UnicodeFontFile{lmroman10-bold}{\UnicodeFontTeXLigatures}}{}
- \DeclareFontShape{#1}{lmr}{bx}{it}
- {<->\UnicodeFontFile{lmroman10-bolditalic}{\UnicodeFontTeXLigatures}}{}
-
- \tl_set_eq:NN \l__fontspec_prev_unicode_name_tl \UnicodeEncodingName
- \tl_set:Nn \UnicodeEncodingName {#1}
- \bool_set_true:N \l__fontspec_defining_encoding_bool
- #2
- \bool_set_false:N \l__fontspec_defining_encoding_bool
- \tl_set_eq:NN \UnicodeEncodingName \l__fontspec_prev_unicode_name_tl
- }
-\DeclareDocumentCommand \UndeclareSymbol {m}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \UndeclareSymbol }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-\DeclareDocumentCommand \UndeclareAccent {m}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \UndeclareAccent }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-\DeclareDocumentCommand \UndeclareCommand {m}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \UndeclareCommand }
- \UndeclareTextCommand {#1} {\UnicodeEncodingName}
- }
-\DeclareDocumentCommand \UndeclareComposite {mm}
- {
- \bool_if:NF \l__fontspec_defining_encoding_bool
- { \__fontspec_error:nn {only-inside-encdef} \UndeclareComposite }
- \cs_undefine:c
- { \c_backslash_str \UnicodeEncodingName \token_to_str:N #1 - \tl_to_str:n {#2} }
- }
-
-%%^^A%% fontspec-code-math.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\@ifpackageloaded{euler}
- { \bool_gset_true:N \g__fontspec_pkg_euler_loaded_bool }
- { \bool_gset_false:N \g__fontspec_pkg_euler_loaded_bool }
-\cs_new:Nn \fontspec_setup_maths:
- {
- \@ifpackageloaded{euler}
- {
- \bool_if:NTF \g__fontspec_pkg_euler_loaded_bool
- { \bool_gset_true:N \g__fontspec_math_euler_bool }
- { \__fontspec_error:n {euler-too-late} }
- }
- {}
- \@ifpackageloaded{lucbmath}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{}
- \@ifpackageloaded{lucidabr}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{}
- \@ifpackageloaded{lucimatx}{ \bool_gset_true:N \g__fontspec_math_lucida_bool }{}
- \DeclareSymbolFont{legacymaths}{OT1}{cmr}{m}{n}
- \SetSymbolFont{legacymaths}{bold}{OT1}{cmr}{bx}{n}
- \DeclareMathAccent{\acute} {\mathalpha}{legacymaths}{19}
- \DeclareMathAccent{\grave} {\mathalpha}{legacymaths}{18}
- \DeclareMathAccent{\ddot} {\mathalpha}{legacymaths}{127}
- \DeclareMathAccent{\tilde} {\mathalpha}{legacymaths}{126}
- \DeclareMathAccent{\bar} {\mathalpha}{legacymaths}{22}
- \DeclareMathAccent{\breve} {\mathalpha}{legacymaths}{21}
- \DeclareMathAccent{\check} {\mathalpha}{legacymaths}{20}
- \DeclareMathAccent{\hat} {\mathalpha}{legacymaths}{94} % too bad, euler
- \DeclareMathAccent{\dot} {\mathalpha}{legacymaths}{95}
- \DeclareMathAccent{\mathring}{\mathalpha}{legacymaths}{23}
- \group_begin:
- \mathchardef\@tempa="603A \relax
- \ifx\colon\@tempa
- \DeclareMathSymbol{\colon}{\mathpunct}{legacymaths}{58}
- \fi
- \group_end:
- \bool_if:NF \g__fontspec_math_euler_bool
- {
- \DeclareMathSymbol{!}{\mathclose}{legacymaths}{33}
- \DeclareMathSymbol{:}{\mathrel} {legacymaths}{58}
- \DeclareMathSymbol{;}{\mathpunct}{legacymaths}{59}
- \DeclareMathSymbol{?}{\mathclose}{legacymaths}{63}
- \bool_if:NF \g__fontspec_math_lucida_bool
- {
- \DeclareMathSymbol{0}{\mathalpha}{legacymaths}{`0}
- \DeclareMathSymbol{1}{\mathalpha}{legacymaths}{`1}
- \DeclareMathSymbol{2}{\mathalpha}{legacymaths}{`2}
- \DeclareMathSymbol{3}{\mathalpha}{legacymaths}{`3}
- \DeclareMathSymbol{4}{\mathalpha}{legacymaths}{`4}
- \DeclareMathSymbol{5}{\mathalpha}{legacymaths}{`5}
- \DeclareMathSymbol{6}{\mathalpha}{legacymaths}{`6}
- \DeclareMathSymbol{7}{\mathalpha}{legacymaths}{`7}
- \DeclareMathSymbol{8}{\mathalpha}{legacymaths}{`8}
- \DeclareMathSymbol{9}{\mathalpha}{legacymaths}{`9}
- \DeclareMathSymbol{\Gamma}{\mathalpha}{legacymaths}{0}
- \DeclareMathSymbol{\Delta}{\mathalpha}{legacymaths}{1}
- \DeclareMathSymbol{\Theta}{\mathalpha}{legacymaths}{2}
- \DeclareMathSymbol{\Lambda}{\mathalpha}{legacymaths}{3}
- \DeclareMathSymbol{\Xi}{\mathalpha}{legacymaths}{4}
- \DeclareMathSymbol{\Pi}{\mathalpha}{legacymaths}{5}
- \DeclareMathSymbol{\Sigma}{\mathalpha}{legacymaths}{6}
- \DeclareMathSymbol{\Upsilon}{\mathalpha}{legacymaths}{7}
- \DeclareMathSymbol{\Phi}{\mathalpha}{legacymaths}{8}
- \DeclareMathSymbol{\Psi}{\mathalpha}{legacymaths}{9}
- \DeclareMathSymbol{\Omega}{\mathalpha}{legacymaths}{10}
- \DeclareMathSymbol{+}{\mathbin}{legacymaths}{43}
- \DeclareMathSymbol{=}{\mathrel}{legacymaths}{61}
- \DeclareMathDelimiter{(}{\mathopen} {legacymaths}{40}{largesymbols}{0}
- \DeclareMathDelimiter{)}{\mathclose}{legacymaths}{41}{largesymbols}{1}
- \DeclareMathDelimiter{[}{\mathopen} {legacymaths}{91}{largesymbols}{2}
- \DeclareMathDelimiter{]}{\mathclose}{legacymaths}{93}{largesymbols}{3}
- \DeclareMathDelimiter{/}{\mathord}{legacymaths}{47}{largesymbols}{14}
- \DeclareMathSymbol{\mathdollar}{\mathord}{legacymaths}{36}
- \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}% TODO: test with other fonts
- }
- }
- \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
- \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
- \DeclareSymbolFontAlphabet\mathrm{operators}
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\shapedefault
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\shapedefault
- \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
- \tl_if_empty:NTF \g__fontspec_bfmathrm_tl
- {
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\itdefault
- }
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\shapedefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
- }
- \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\shapedefault
- \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\shapedefault
- }
-\cs_new:Nn \fontspec_maybe_setup_maths:
- {
- \@ifpackageloaded{anttor}
- {
- \ifx\define@antt@mathversions a\bool_gset_false:N \g__fontspec_math_bool\fi
- }{}
- \@ifpackageloaded{arevmath} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{eulervm} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{mathdesign} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{concmath} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{cmbright} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{mathesf} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{gfsartemisia} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{gfsneohellenic} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{iwona}
- {
- \ifx\define@iwona@mathversions a\bool_set_false:N \g__fontspec_math_bool\fi
- }{}
- \@ifpackageloaded{kpfonts}{\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{kmath} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{kurier}
- {
- \ifx\define@kurier@mathversions a\bool_set_false:N \g__fontspec_math_bool\fi
- }{}
- \@ifpackageloaded{fouriernc} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{fourier} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{lmodern} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{mathpazo} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{mathptmx} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{MinionPro} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{unicode-math} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{breqn} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{pxfonts} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{txfonts} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{newpxmath} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{newtxmath} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \@ifpackageloaded{mtpro2} {\bool_gset_false:N \g__fontspec_math_bool}{}
- \bool_if:NT \g__fontspec_math_bool
- {
- \__fontspec_info:n {setup-math}
- \fontspec_setup_maths:
- }
- }
-\AtBeginDocument{\fontspec_maybe_setup_maths:}
-
-%%^^A%% fontspec-code-closing.dtx -- part of FONTSPEC <wspr.io/fontspec>
-\bool_if:NT \g__fontspec_cfg_bool
- {
- \InputIfFileExists{fontspec.cfg}
- {}
- { \typeout{No~ fontspec.cfg~ file~ found;~ no~ configuration~ loaded.} }
- }
-
-%%^^A%% fontspec-code-xfss.dtx -- part of FONTSPEC <wspr.io/fontspec>
-
-\providecommand*\scitdefault{\scdefault\itdefault}
-\providecommand*\scsldefault{\scdefault\sldefault}
-\providecommand*\scswdefault{\scdefault\swdefault}
-\cs_new:Nn \__fontspec_shape_merge:nn { c__fontspec_shape_#1_#2_tl }
-\cs_new:Nn \__fontspec_merge_default_shapes:
- {
- \tl_const:cn { \__fontspec_shape_merge:nn \shapedefault\scdefault } {\scdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \itdefault \scdefault } {\scitdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \sldefault \scdefault } {\scsldefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \swdefault \scdefault } {\scswdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \itdefault } {\scitdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \sldefault } {\scsldefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scdefault \swdefault } {\scswdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \itdefault } {\scitdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \sldefault } {\scsldefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \shapedefault } {\scdefault}
- \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \shapedefault } {\scdefault}
- }
-\__fontspec_merge_default_shapes:
-\prg_new_conditional:Nnn \__fontspec_if_merge_shape:n {TF}
- {
- \bool_lazy_and:nnTF
- { \tl_if_exist_p:c { \__fontspec_shape_merge:nn {\f@shape} {#1} } }
- {
- \cs_if_exist_p:c
- {
- \f@encoding/\f@family/\f@series/
- \tl_use:c { \__fontspec_shape_merge:nn {\f@shape} {#1} }
- }
- }
- \prg_return_true: \prg_return_false:
- }
-\cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
-\cs_set_protected:Npn \strongfontdeclare #1
- {
- \prop_gclear:N \g__fontspec_strong_prop
- \int_zero:N \l__fontspec_strongdef_int
-
- \group_begin:
- \normalfont
- \clist_map_inline:nn {\strongreset,#1}
- {
- ##1
- \prop_gput_if_new:NxV \g__fontspec_strong_prop { \f@series } { \l__fontspec_strongdef_int }
- \prop_gput:Nxn \g__fontspec_strong_prop { switch-\int_use:N \l__fontspec_strongdef_int } { ##1 }
- \int_incr:N \l__fontspec_strongdef_int
- }
- \group_end:
- }
-\DeclareRobustCommand \strongenv
- {
- \@nomath\strongenv
-
- \prop_get:NxNT \g__fontspec_strong_prop { \f@series } \l__fontspec_strong_tmp_tl
- {
- \int_set:Nn \l__fontspec_strong_int { \l__fontspec_strong_tmp_tl }
- }
-
- \int_incr:N \l__fontspec_strong_int
-
- \prop_get:NxNTF \g__fontspec_strong_prop { switch-\int_use:N \l__fontspec_strong_int } \l__fontspec_strong_switch_tl
- { \l__fontspec_strong_switch_tl }
- {
- \int_zero:N \l__fontspec_strong_int
- \strongreset
- }
-
- }
-\DeclareTextFontCommand{\strong}{\strongenv}
-\cs_set:Npn \strongreset {}
-\cs_set:Npn \reset@font
- {
- \normalfont
- \int_zero:N \l__fontspec_strong_int
- }
-\cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }
-\strongfontdeclare{ \bfseries }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index 58851e7e5a..2e67737df9 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -82,7 +82,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -969,7 +969,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2023-02-20 v0.95w %
+\ProvidesFile{hgeneric-testphase.def}[2023-03-09 v0.95x %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index c5476881c0..306f715e8d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index e812e75256..94dddfa8ee 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2023-02-20}{}
+ {l3backend-testphase-dvipdfmx.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2023-02-20}{}
+ {l3backend-testphase-dvips.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2023-02-20}{}
+ {l3backend-testphase-dvisvgm.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2023-02-20}{}
+ {l3backend-testphase-luatex.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2023-02-20}{}
+ {l3backend-testphase-pdftex.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2023-02-20}{}
+ {l3backend-testphase-xetex.def}{2023-03-09}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -1965,6 +1965,7 @@
\pdfmanagement_add:nnn{Info}{Creator}{(TeX)}
%</drivers>
%<*dvips>
+ \AddToHook{begindocument}{\pdfmanagement_add:nnn{Info}{Producer}{(pdfTeX+dvips)}}
\__kernel_backend_literal:e{!~<</DocumentUUID~(DocumentUUID)>>~setpagedevice}
\__kernel_backend_literal:e{!~<</InstanceUUID~(InstanceUUID)>>~setpagedevice}
%</dvips>
@@ -2006,6 +2007,7 @@
\AddToDocumentProperties[hyperref]{pdfmetadate}{D:20010101205959-00'00'}
\AddToDocumentProperties[hyperref]{pdfdate}{D:20010101205959-00'00'}
\AddToDocumentProperties[hyperref]{pdfinstanceid}{uuid:0a57c455-157a-4141-8c19-6237d832fc80}
+ \AddToDocumentProperties[hyperref]{pdfproducer}{\c_sys_engine_exec_str-NN.NN.NN}
}
%</drivers>
% \end{macrocode}
@@ -2024,29 +2026,98 @@
% an unnamed object so should be referenced directly with |\pdf_object_ref_last:|
% \begin{macrocode}
%<*luatex>
-\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+\cs_new_protected:Npn \@@_backend_metadata_stream:n #1
{
\tex_immediate:D \tex_pdfextension:D obj ~uncompressed~
- \__pdf_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
+ \@@_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
}
%</luatex>
%<*pdftex>
-\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+\cs_new_protected:Npn \@@_backend_metadata_stream:n #1
{
\group_begin:
\tex_pdfcompresslevel:D 0 \scan_stop:
\tex_immediate:D \tex_pdfobj:D
- \__pdf_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
+ \@@_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
\group_end:
}
%</pdftex>
%<*xdvipdfmx|dvipdfmx|dvips|dvisvgm>
-\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+\cs_new_protected:Npn \@@_backend_metadata_stream:n #1
{
\pdf_object_unnamed_write:nn {stream}{{/Type~/Metadata~/Subtype~/XML}{#1}}
}
%</xdvipdfmx|dvipdfmx|dvips|dvisvgm>
% \end{macrocode}
+%
+% \subsection{Suppressing deprecated PDF features}
+%
+% \texttt{/ProcSet}, \texttt{/CharSet} and the \texttt{/Info} dictionary
+% are deprecated in PDF 2.0. For the pdf/A-4 standard they must be suppressed.
+% Not every engine is able to do this, but for pdfTeX and luatex we define suitable
+% backend command. \texttt{/ProcSet} is suppressed automatically
+% for pdf version 2.0 starting with in texlive 2023.
+% \begin{macro}{\@@_backend_omit_charset:n}
+% The option to omit /Charset exists already for quite some time for the two
+% engines.
+% \begin{macrocode}
+%<*xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+\cs_new_protected:Npn \@@_backend_omit_charset:n #1 {} %#1 number
+%</xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+%<*pdftex>
+\cs_new_protected:Npn \@@_backend_omit_charset:n #1 %#1 number
+ {
+ \tex_pdfomitcharset:D = #1 \scan_stop:
+ }
+%</pdftex>
+%<*luatex>
+\cs_new_protected:Npn \@@_backend_omit_charset:n #1 %#1 number
+ {
+ \tex_pdfvariable:D omitcharset = #1 \scan_stop:
+ }
+%</luatex>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_backend_omit_info:n}
+% The option to suppress the info dictionary will be available in
+% texlive 2023.
+% \begin{macrocode}
+%<*xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+\cs_new_protected:Npn \@@_backend_omit_info:n #1 {} %#1 number
+%</xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+%<*pdftex>
+\bool_lazy_and:nnTF
+ { \int_compare_p:nNn {\tex_pdftexversion:D } > {139} }
+ { \int_compare_p:nNn {\tex_pdftexrevision:D } > {24} }
+ {
+ \cs_new_protected:Npn \@@_backend_omit_info:n #1 %#1 number
+ {
+ \pdfomitinfodict = #1 \scan_stop:
+ }
+ }
+ {
+ \cs_new_protected:Npn \@@_backend_omit_info:n #1 {}%#1 number
+
+ }
+%</pdftex>
+%<*luatex>
+ \int_compare:nNnTF {\directlua{tex.print(status.list()["development_id"])} } > {7560}
+ {
+ \cs_new_protected:Npn \@@_backend_omit_info:n #1 %#1 number
+ {
+ \tex_pdfvariable:D omitinfodict = #1 \scan_stop:
+ }
+ }
+ {
+ \cs_new_protected:Npn \@@_backend_omit_info:n #1 {} %#1 number
+ }
+%</luatex>
+% \end{macrocode}
+% \end{macro}
+%
+
+%
% \subsection{lua code for lualatex}
% \begin{macrocode}
%<*lua>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index 229895df9b..03c2cb4d73 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index bd62c74dc4..761a2fef58 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdfannot}{2023-03-09}{0.95x}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index c8d599d700..6efe0a3e81 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index b46a87348e..4a6af666de 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdfdict}{2023-03-09}{0.95x}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index 30c708719d..277eda9a51 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index f5f653cad7..0a3933eaca 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index 1a07c64766..f3f2709d1c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index 34e1d8b8e0..e5f0b33fed 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index 8b051f6999..c3a510d875 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index 8a3711b797..b2920fcdc4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index 000a7452d5..c668f282fe 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index f2df427ebf..5011ea4916 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index b9b7bbb303..e33b6a3598 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 423231bf7c..55a230c77e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index c95db774a0..400c83654e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index d4a6011750..72f111d55a 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 608479e30b..98020b9fa2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index f972c7cf87..c9181a6ed8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -69,7 +69,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -973,7 +973,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2023-02-20}{0.95w}%
+\ProvidesExplPackage{l3pdffield-testphase}{2023-03-09}{0.95x}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index 63440cf172..35caa5b8db 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index 4582d4a99d..fe3ffbd6ef 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -398,7 +398,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdffile}{2023-03-09}{0.95x}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index e06e86127d..c51b62daf8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index 4fffefa1d7..df5724be08 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -57,7 +57,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -632,7 +632,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdfmanagement}{2023-03-09}{0.95x}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index 54c1ccae90..fa89390e25 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index ed08282b30..034cf6fd00 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -200,17 +200,18 @@
% tested from TeX, but in a current LaTeX normally ToUnicode are set for all fonts.
% \item[|tagged|] that is set in A-2a and A-3a and means that the pdf must be
% tagged. This is currently neither tested not enforced somewhere.
+% \item[|no_CharSet|] CharSet is deprecated is pdf 2.0 and should not
+% be used in A-4. l3pdfmeta will therefore suppress it for the
+% engines pdftex and luatex (the other engines have no suitable option)
% \item[|Trailer_no_Info|] The \texttt{Info} dictionary
% has been deprecated since quite some time. Metadata should be set with
% XMP-data instead. In PDF A-4 now the \texttt{Info} dictionary
% shall not be present in the trailer dictionary at all
% (unless there exists a PieceInfo entry in the Catalog). And if it is present
-% it should only contain the \texttt{/ModDate} entry. The engines
-% do not offer currently an option to suppress the dictionary completly,
-% one can only give the entries the value null (it only works for all entries
-% with lualatex and pdflatex). The next pdflatex will offer \cs{pdfomitinfodict}.
-% Until then l3pdfmeta does nothing with this requirement.
-%
+% it should only contain the \texttt{/ModDate} entry. In
+% texlive 2023 the engines pdftex and luatex have primitives
+% to suppress the dictionary
+% and l3pdfmeta will make use of it.
% \end{description}
%
% \subsubsection{Tests with values and special handlers}
@@ -562,7 +563,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdfmeta}{2023-03-09}{0.95x}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -746,6 +747,10 @@
{
\pdfmeta_standard_verify:nF { annot_flags }
{ \@@_verify_pdfa_annot_flags: }
+ \pdfmeta_standard_verify:nF { Trailer_no_Info }
+ { \__pdf_backend_omit_info:n {1} }
+ \pdfmeta_standard_verify:nF { no_CharSet }
+ { \__pdf_backend_omit_charset:n {1} }
\pdfmeta_standard_verify:nnF { min_pdf_version }
{ \pdf_version: }
{ \msg_warning:nnxxx {pdf}{wrong-pdfversion}
@@ -939,6 +944,8 @@
\prop_gput:cnn
{ g_@@_standard_pdf/A-4_prop }{year}{2020}
\prop_gput:cnn
+ { g_@@_standard_pdf/A-4_prop }{no_CharSet}{}
+\prop_gput:cnn
{ g_@@_standard_pdf/A-4_prop }{Trailer_no_Info}{}
\prop_gremove:cn
{ g_@@_standard_pdf/A-4_prop }{conformance}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 2795c0188f..66e3bf0206 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index d3ad09cbfb..8996d74131 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -211,7 +211,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdftools}{2023-03-09}{0.95x}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index e0b99f153f..633a4ef871 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index c12604614d..4eeb9071ab 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2023-02-20}{0.95w}
+\ProvidesExplPackage{l3pdfxform}{2023-03-09}{0.95x}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index b9261b84cb..4d0fb96e1f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index 5fbd9314e6..ba3473cb30 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -215,7 +215,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2023-02-20}{0.95w}
+\ProvidesExplPackage{ltdocinit}{2023-03-09}{0.95x}
{Initialize document metadata}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index d7311dddb1..963c915cca 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/luaotfload-l3color-tmp.lua b/macros/latex/contrib/pdfmanagement-testphase/luaotfload-l3color-tmp.lua
deleted file mode 100644
index 1d4eab4de1..0000000000
--- a/macros/latex/contrib/pdfmanagement-testphase/luaotfload-l3color-tmp.lua
+++ /dev/null
@@ -1,78 +0,0 @@
-if not luaotfload.set_transparent_colorstack then return end
-local l = lpeg
-local spaces = l.P' '^0
-local digit16 = l.R('09', 'af', 'AF')
-
-local octet = digit16 * digit16 / function(s) return string.format('%.3g ', tonumber(s, 16) / 255) end
-local htmlcolor = l.Cs(octet * octet * octet * -1 * l.Cc'rg')
-local color_export = {
- token.create'endlocalcontrol',
- token.create'tex_hpack:D',
- token.new(0, 1),
- token.create'color_export:nnN',
- token.new(0, 1),
- '',
- token.new(0, 2),
- token.new(0, 1),
- 'backend',
- token.new(0, 2),
- token.create'l_tmpa_tl',
- token.create'exp_after:wN',
- token.create'__color_select:nn',
- token.create'l_tmpa_tl',
- token.new(0, 2),
-}
-local group_end = token.create'group_end:'
-local value = (1 - l.P'}')^0
-luatexbase.add_to_callback('luaotfload.parse_color', function (value)
- local html = htmlcolor:match(value)
- if html then return html end
-
- tex.runtoks(function()
- token.get_next()
- color_export[6] = value
- tex.sprint(-2, color_export)
- end)
- local list = token.scan_list()
- if not list.head or list.head.next or list.head.subtype ~= node.subtype'pdf_colorstack' then
- error'Unexpected backend behavior'
- end
- local cmd = list.head.data
- node.free(list)
- return cmd
-end, 'l3color')
-
--- Let's also integrate l3opacity
-
-luaotfload.set_transparent_colorstack(token.create'c__opacity_backend_stack_int'.index)
-
-local transparent_register = {
- token.create'pdfmanagement_add:nnn',
- token.new(0, 1),
- 'Page/Resources/ExtGState',
- token.new(0, 2),
- token.new(0, 1),
- '',
- token.new(0, 2),
- token.new(0, 1),
- '<</ca ',
- '',
- '/CA ',
- '',
- '>>',
- token.new(0, 2),
-}
-luatexbase.add_to_callback('luaotfload.parse_transparent', function(value)
- value = (octet * -1):match(value)
- if not value then
- tex.error'Invalid transparency value'
- return
- end
- value = value:sub(1, -2)
- local result = 'opacity' .. value
- tex.runtoks(function()
- transparent_register[6], transparent_register[10], transparent_register[12] = result, value, value
- tex.sprint(-2, transparent_register)
- end)
- return '/' .. result .. ' gs'
-end, 'l3opacity')
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
index 891af85d6d..dc8d376f76 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 2e40ed6814..23ce50f33d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -63,7 +63,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2023-02-20}{0.95w}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2023-03-09}{0.95x}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
@@ -96,36 +96,21 @@
% \subsection{Fontspec}
% When using luaLaTeX opacity is broken (issue \#30) as
% fontspec/luaotfload doesn't use the pdfmanagement but write to ExtGState directly
-% To repair this some new lua code is needed. This also
-% improves the color parsing and allows to use cmyk and spot colors as font colors.
-% It is also needed to use a patch version of \texttt{fontspec-luatex.sty} to
-% slightly change the way how the Opacity and Color key are handled.
-% The patch is only executed if luaotfload is new enough.
+% To repair this some new lua code is needed. It also needs a new fontspec
+% and a change in the color key.
% \begin{macrocode}
\sys_if_engine_luatex:T
{
- \lua_now:n
- {
- if~not~luaotfload.set_transparent_colorstack~
- then~
- tex.print("\\bool_gset_false:N\\g_@@_firstaid_fontspec_bool")~
- end
- }
\bool_if:NT \g_@@_firstaid_fontspec_bool
{
- \msg_info:nnn{pdfmanagement}{firstaid}{fontspec}
- \file_if_exist:nT { luaotfload-l3color-tmp.lua }
- {
- \lua_load_module:n { luaotfload-l3color-tmp.lua }
- }
-
- \declare@file@substitution{fontspec-luatex.sty}{fontspec-luatex-tmp-ltx.sty}
- \AddToHook{package/fontspec/after}
+ \@ifpackagelater{fontspec}{2023-03-10}
{
- \str_if_eq:vnF{ver@fontspec.sty}{2022/01/15~v2.8a~Font~selection~for~XeLaTeX~and~LuaLaTeX}
- {\msg_warn:nnn{pdfmanagement}{firstaid-changed}{fontspec}}
- }
- }
+ \__fontspec_keys_define_code:nnn {fontspec} {Color}
+ {
+ \tl_set:Nn \l__fontspec_hexcol_tl {#1}
+ }
+ }{}
+ }
}
% \end{macrocode}
% \subsection{Output routine}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 30aa895e05..05f5aeac65 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index 7b8a19d4cb..15ee3c7d0c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95w, released 2023-02-20}
+% \date{Version 0.95x, released 2023-03-09}
%
% \maketitle
% \begin{documentation}
@@ -386,7 +386,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2023-02-20}{0.95w}
+\ProvidesExplPackage{pdfmanagement-testphase}{2023-03-09}{0.95x}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -414,7 +414,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-02-20}{0.95w}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-03-09}{0.95x}
{PDF~management~code~(testphase)}
%</header>
%<*package>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index c4205bc6e4..7e40c5713c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 98baf67303..192e4b77a1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-02-20 v0.95w patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-03-09 v0.95x patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/tugboat/NEWS b/macros/latex/contrib/tugboat/NEWS
index 5f9b4fa553..aa1e53391e 100644
--- a/macros/latex/contrib/tugboat/NEWS
+++ b/macros/latex/contrib/tugboat/NEWS
@@ -1,7 +1,16 @@
-$Id: NEWS 458 2023-01-16 18:44:30Z karl $
+$Id: NEWS 463 2023-03-08 21:59:19Z karl $
This file records noteworthy changes. This file is public domain.
-----------------
+2.29 (2023-03-08):
+
+ltugboat.cls:
+- \url: the fallback definition now typesets (in tt) more special characters.
+- omit TUG-specific doi when not typesetting in the production environment.
+
+tugboat.bst: abbreviate "chapter" to "ch." in tugboat.bst.
+
+-----------------
2.28 (2023-01-16):
ltugboat.cls:
diff --git a/macros/latex/contrib/tugboat/ltubguid.pdf b/macros/latex/contrib/tugboat/ltubguid.pdf
index 4e9a95b979..3d39af7dad 100644
--- a/macros/latex/contrib/tugboat/ltubguid.pdf
+++ b/macros/latex/contrib/tugboat/ltubguid.pdf
Binary files differ
diff --git a/macros/latex/contrib/tugboat/tugboat.bst b/macros/latex/contrib/tugboat/tugboat.bst
index a64d28fd17..1129bb8ab5 100644
--- a/macros/latex/contrib/tugboat/tugboat.bst
+++ b/macros/latex/contrib/tugboat/tugboat.bst
@@ -1,4 +1,4 @@
-%%% $Id: tugboat.bst 457 2023-01-16 18:43:54Z karl $
+%%% $Id: tugboat.bst 462 2023-03-08 17:26:54Z karl $
%%% TUGboat changes are public domain.
%%%
%%% Modified for TUGboat from abbrvurl.bst:
@@ -735,7 +735,7 @@ FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
- { "chapter" }
+ { "ch." }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
@@ -972,7 +972,8 @@ FUNCTION {format.pubmed}
% (aka the doiurl variable), and only add it if needed.
%
% This code is from https://tex.stackexchange.com/questions/119237
-% (thank you, mafp).
+% (thank you, mafp). The original urlbst package solved the problem in a
+% different (simpler) way in its 0.9.1 (January 2023) release.
%
% The "X Y contains" function checks if string Y is contained in X.
% Although we only need to check if Y is at the beginning of X,
diff --git a/macros/latex/contrib/tugboat/tugboat.dtx b/macros/latex/contrib/tugboat/tugboat.dtx
index d205ab011d..ea7f22af77 100644
--- a/macros/latex/contrib/tugboat/tugboat.dtx
+++ b/macros/latex/contrib/tugboat/tugboat.dtx
@@ -1,5 +1,5 @@
% \iffalse (this is a meta-comment (so they say))
-% $Id: tugboat.dtx 459 2023-01-16 21:05:37Z karl $
+% $Id: tugboat.dtx 462 2023-03-08 17:26:54Z karl $
% tugboat.dtx - main source for LaTeX TUGboat classes.
%
% Copyright 1994-2023 TeX Users Group.
@@ -28,7 +28,7 @@
%<ltugboatsty>\ProvidesPackage{ltugboat}
%<ltugprocsty>\ProvidesPackage{ltugproc}
%<ltugcomn> \ProvidesPackage{ltugcomn}
- [2023-01-16 v2.28
+ [2023-03-08 v2.29
%<ltugboatcls> TUGboat journal class%
%<ltugproccls> TUG conference proceedings class%
%<ltugboatsty|ltugprocsty> TUG compatibility package%
@@ -1308,7 +1308,13 @@
\def\tburl{\url}%
\def\tbsurl{\url}% no hyperref, so just \url is fine.
\def\tbhurl{\url}%
- \ifx\url\undefined \let\url\texttt \fi % er, make sure \url is defined
+ \ifx\url\undefined % make sure \url is defined
+ \def\url{\begingroup % might as well catch common special chars
+ \catcode`\#=12 \catcode`\$=12 \catcode`\%=12 \catcode`\^=12
+ \catcode`\&=12 \catcode`\_=12 \catcode`\~=12
+ \finish@tub@url}
+ \def\finish@tub@url#1{\tt #1\endgroup}
+ \fi
\else
% This hyperref hook-in is due to Ulrike Fischer.
% \url{https://github.com/latex3/hyperref/issues/125}.
@@ -3544,21 +3550,27 @@
\def\tubdoiprefix{10.47397/tb} % the number crossref assigned us
\def\tubabovedoi{} % fudge spacing or whatever.
%
-\def\tubtypesetdoi{\iftubomitdoioption\else % if not explicit omission ...
- \iftubfinaloption % do this if [final], even if pageno>900
- \vbox to 0pt{% don't impact normal layout
- \edef\thedoi{\ifnum\count0>900 xnot\fi % but make url invalid if >900
- doi.org/\tubdoiprefix/\volno-\issno/\jobname}%
- \scriptsize
- \vskip\baselineskip
- \tubabovedoi
- \iftubsecondcolstart \moveright \tubcolwidthandgutter \fi
- \rlap{\expandafter\tbsurl\expandafter{\thedoi}}%
- \vss
- }%
+\def\tubtypesetdoi{%
+ \iftubomitdoioption\else % do if not explicit omission ...
+ \ifnum\volno>0 % and if being run for production ...
+ \iftubfinaloption % and if [final], even if pageno>900
+ \vbox to 0pt{% don't impact normal layout
+ \edef\thedoi{% but make url invalid if >900
+ \ifnum\count0>900 example.org%
+ \else doi.org\fi
+ /\tubdoiprefix/\volno-\issno/\jobname}%
+ \scriptsize
+ \vskip\baselineskip
+ \tubabovedoi
+ \iftubsecondcolstart \moveright \tubcolwidthandgutter \fi
+ \rlap{\expandafter\tbsurl\expandafter{\thedoi}}%
+ \vss
+ }%
+ \fi % tubfinaloption
+ \fi % volno>0
+ \fi % !tubomitdoioption
\global\let\tubtypesetdoi\@empty % only do it once, no matter what.
- \fi
-\fi}
+}
%
%
% \end{macrocode}
diff --git a/macros/latex/contrib/tugboat/tugboat.pdf b/macros/latex/contrib/tugboat/tugboat.pdf
index 611ea5fe18..fc6500607f 100644
--- a/macros/latex/contrib/tugboat/tugboat.pdf
+++ b/macros/latex/contrib/tugboat/tugboat.pdf
Binary files differ