texlive[61617] Master/texmf-dist: fontspec (15jan22)

commits+karl at tug.org commits+karl at tug.org
Sat Jan 15 22:42:57 CET 2022


Revision: 61617
          http://tug.org/svn/texlive?view=revision&revision=61617
Author:   karl
Date:     2022-01-15 22:42:57 +0100 (Sat, 15 Jan 2022)
Log Message:
-----------
fontspec (15jan22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/fontspec/README.md
    trunk/Master/texmf-dist/doc/latex/fontspec/fontspec-code.pdf
    trunk/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-api.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-closing.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-enc.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-fontload.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-graphite.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-interfaces.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-load.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-math.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opening.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-scripts.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-xfss.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code.ltx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-enc.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-intro.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-luatex.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec-lua.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ins
    trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ltx
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
    trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md	2022-01-15 21:42:57 UTC (rev 61617)
@@ -1,6 +1,17 @@
 Change history
 ==============
 
+## v2.8a (2022/01/15)
+
+  * Add `SwashFont` and `BoldSwashFont` features to support LaTeX's now-builtin `\textsw`
+    and `\swshape` commands, with matching `SwashFeatures` and `BoldSwashFeatures`.
+    A simple implementation that has scope to get more complex if need be.
+  * Remove some legacy code that extended the NFSS in ways that are now handled by
+    LaTeX2e natively.
+  * Long neglected updates through various Github Issues and pull requests.
+    Thanks for your patience with the delays.
+
+
 ## v2.7i (2020/02/21)
 
   * Define both `b` and `bx` font series by default to avoid spurious warnings in some
@@ -15,6 +26,7 @@
   * Fix regression with `unicode-math` related log files showing the wrong
     NFSS-based font ‘identifier’.
 
+
 ## v2.7g (2020/01/26)
 
   * Fix regression that broke changing the default encoding after `fontspec` was loaded
@@ -24,6 +36,7 @@
   * Use `\familydefault` instead of `\rmdefault` when calculating scaling parameters in
     `Scale=MatchLowercase` and `Scale=MatchUppercase`.
 
+
 ## v2.7f (2020/01/24)
 
   * Rename font feature `Letters=Uppercase` to `Style=Uppercase`, as this feature does

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fontspec/README.md	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/doc/latex/fontspec/README.md	2022-01-15 21:42:57 UTC (rev 61617)
@@ -74,10 +74,8 @@
 (For bleeding edge versions, see the `working` branch.)
 Having obtained the package from Github, install the package code by running
 
-    texlua build.lua install
+    l3build install
 
 This will compile the documentation and install all necessary files in your
 local texmf tree. Depending how your TeX distribution is configured
 you may then need to update the filename database with `texhash`.
-
-

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

Modified: trunk/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-api.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-api.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-api.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -378,7 +378,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-closing.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-closing.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-closing.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -32,7 +32,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-enc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-enc.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-enc.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -146,7 +146,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -231,7 +231,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -571,7 +571,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-fontload.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-fontload.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-fontload.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -124,7 +124,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-graphite.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-graphite.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-graphite.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -116,7 +116,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-interfaces.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-interfaces.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-interfaces.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -284,7 +284,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -47,7 +47,7 @@
     \keys_set_known:nn {fontspec-preparse-cfg} {#1}
 
     \@@_init_ttc:n {#2}
-    \@@_load_external_fontoptions:Nn \l_fontspec_fontname_tl {#2}
+    \@@_load_external_fontoptions:N \l_fontspec_fontname_tl
 
     \@@_extract_all_features:n {#1}
     \tl_set:Nx \l_@@_fontid_tl { \tl_to_str:N \l_fontspec_fontname_tl-:-\tl_to_str:N \l_@@_all_features_clist }
@@ -138,16 +138,16 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_load_external_fontoptions:Nn}
+% \begin{macro}{\@@_load_external_fontoptions:N}
 % Load a possible \texttt{.fontspec} font configuration file.
 % This file could set font-specific options for the font about to be loaded.
+% The parameter should be a tokenlist containing a sanitised fontname.
 %    \begin{macrocode}
-\cs_new:Nn \@@_load_external_fontoptions:Nn
+\cs_new:Nn \@@_load_external_fontoptions:N
   {
     \bool_if:NT \l_@@_fontcfg_bool
       {
-%<debug>  \typeout{:: @@_load_external_fontoptions:Nn \exp_not:N #1 {#2} }
-        \@@_sanitise_fontname:Nn #1 {#2}
+%<debug>  \typeout{:: @@_load_external_fontoptions:N \exp_not:N #1 }
         \tl_set:Nx \l_@@_ext_filename_tl {#1.fontspec}
         \tl_remove_all:Nn \l_@@_ext_filename_tl {~}
         \prop_if_in:NVF \g_@@_fontopts_prop #1
@@ -500,8 +500,10 @@
     \@@_add_nfssfont:nnnn \bfdefault \shapedefault \l_@@_fontname_bf_tl    \l_@@_fontfeat_bf_clist
     \@@_add_nfssfont:nnnn \mddefault \itdefault    \l_@@_fontname_it_tl    \l_@@_fontfeat_it_clist
     \@@_add_nfssfont:nnnn \mddefault \sldefault    \l_@@_fontname_sl_tl    \l_@@_fontfeat_sl_clist
+    \@@_add_nfssfont:nnnn \mddefault \swdefault    \l_@@_fontname_sw_tl    \l_@@_fontfeat_sw_clist
     \@@_add_nfssfont:nnnn \bfdefault \itdefault    \l_@@_fontname_bfit_tl  \l_@@_fontfeat_bfit_clist
     \@@_add_nfssfont:nnnn \bfdefault \sldefault    \l_@@_fontname_bfsl_tl  \l_@@_fontfeat_bfsl_clist
+    \@@_add_nfssfont:nnnn \bfdefault \swdefault    \l_@@_fontname_bfsw_tl  \l_@@_fontfeat_bfsw_clist
     \prop_map_inline:Nn \l_@@_nfssfont_prop { \@@_set_faces_aux:nnnnn ##2 }
   }
 %    \end{macrocode}
@@ -677,7 +679,8 @@
 \cs_new:Nn \@@_load_fontname:Nn
   {
 %<debug>    \typeout{:: @@_load_fontname:Nn \exp_not:N #1 (#1) {#2} }
-    \@@_load_external_fontoptions:Nn #1 {#2}
+    \@@_sanitise_fontname:Nn #1 {#2}
+    \@@_load_external_fontoptions:N #1
     \prop_get:NVNF \g_@@_fontopts_prop #1 \l_@@_fontopts_clist
       { \clist_clear:N \l_@@_fontopts_clist }
     \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l_@@_fontopts_clist
@@ -724,7 +727,7 @@
     \@@_declare_shapes_normal:nn {#1} {#2}
     \@@_declare_shapes_smcaps:nn {#1} {#2}
     \@@_declare_shape_slanted:nn {#1} {#2}
-    \@@_declare_shapes_bx:nn      {#1} {#2}
+    \@@_declare_shapes_bx:nn     {#1} {#2}
     \@@_declare_shape_loginfo:nn {#1} {#2}
   }
 %    \end{macrocode}
@@ -831,7 +834,7 @@
   {
     \tl_if_exist:cTF { \@@_shape_merge:nn {#1} {\scdefault} }
          { \tl_use:c { \@@_shape_merge:nn {#1} {\scdefault} } }
-         { \scdefault }
+         { \scdefault#1 }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -930,8 +933,10 @@
           {\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_@@_nfss_tl
@@ -1205,7 +1210,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -223,7 +223,14 @@
   }
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\@@_keys_define_code:nnn {fontspec-preparse-external} {SwashFont}
+  {
+    \fontspec_complete_fontname:Nn \l_@@_fontname_sw_tl {#1}
+  }
+%    \end{macrocode}
 %
+%
 % \paragraph{Bold (NFSS) Series}
 % By default, \pkg{fontspec} uses the default bold series, \cs{bfdefault}.
 % We want to be able to make this extensible. This code is not yet functional!
@@ -282,6 +289,13 @@
   }
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\@@_keys_define_code:nnn {fontspec-preparse-external} {BoldSwashFont}
+  {
+    \fontspec_complete_fontname:Nn \l_@@_fontname_bfsw_tl {#1}
+  }
+%    \end{macrocode}
+%
 % \paragraph{Small caps}
 % Small caps isn't pre-parsed because it can vary with others above:
 %    \begin{macrocode}
@@ -309,7 +323,6 @@
 \@@_keys_define_code:nnn {fontspec-preparse} {BoldFeatures}
   {
     \clist_put_right:Nn \l_@@_fontfeat_bf_clist {#1}
-
 %  \prop_put:NxV \l_@@_nfss_prop
 %     {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl
   }
@@ -329,6 +342,14 @@
   {
     \clist_put_right:Nn \l_@@_fontfeat_bfsl_clist {#1}
   }
+\@@_keys_define_code:nnn {fontspec-preparse} {SwashFeatures}
+  {
+    \clist_put_right:Nn \l_@@_fontfeat_sw_clist {#1}
+  }
+\@@_keys_define_code:nnn {fontspec-preparse} {BoldSwashFeatures}
+  {
+    \clist_put_right:Nn \l_@@_fontfeat_bfsw_clist {#1}
+  }
 %    \end{macrocode}
 % Note that small caps features can vary by shape, so these in fact \emph{aren't} pre-parsed.
 %    \begin{macrocode}
@@ -893,7 +914,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -407,7 +407,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-load.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-load.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-load.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -42,7 +42,7 @@
   {
     The~ fontspec~ package~ requires~ either~ XeTeX~ or~ LuaTeX.\\\\
     You~ must~ change~ your~ typesetting~ engine~ to,~ e.g.,~
-    "xelatex"~ or~ "lualatex" instead~ of~ "latex"~ or~ "pdflatex".
+    "xelatex"~ or~ "lualatex"~ instead~ of~ "latex"~ or~ "pdflatex".
   }
 \msg_fatal:nn {fontspec} {cannot-use-pdftex}
 %    \end{macrocode}
@@ -60,7 +60,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-math.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-math.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-math.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -248,7 +248,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -26,10 +26,10 @@
 %    \begin{macrocode}
 \cs_generate_variant:Nn \msg_new:nnn  {nnx}
 \cs_generate_variant:Nn \msg_new:nnnn {nnxx}
+\cs_new:Nn \@@_msg_new:nn
+  { \msg_new:nnx {fontspec} {#1} { \tl_trim_spaces:n {#2} } }
 \cs_new:Nn \@@_msg_new:nnn
-  { \msg_new:nnx {#1} {#2} { \tl_trim_spaces:n {#3} } }
-\cs_new:Nn \@@_msg_new:nnnn
-  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
+  { \msg_new:nnxx {fontspec} {#1} { \tl_trim_spaces:n {#2} } { \tl_trim_spaces:n {#3} } }
 \char_set_catcode_space:n {32}
 %    \end{macrocode}
 %
@@ -36,17 +36,17 @@
 % \subsection{Errors}
 %
 %    \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {only-inside-encdef}
+\@@_msg_new:nn {only-inside-encdef}
  {
-  \exp_not:N#1can only be used in the second argument
+  \exp_not:N #1 can only be used in the second argument
   to \string\DeclareUnicodeEncoding.
  }
-\@@_msg_new:nnn {fontspec} {no-size-info}
+\@@_msg_new:nn {no-size-info}
  {
   Size information must be supplied.\\
   For example, SizeFeatures={Size={8-12},...}.
  }
-\@@_msg_new:nnnn {fontspec} {font-not-found}
+\@@_msg_new:nnn {font-not-found}
  {
   The font "#1" cannot be found.
  }
@@ -55,7 +55,7 @@
   Check the spelling, where the font is installed etc. etc.\\\\
   When in doubt, ask someone for help!
  }
-\@@_msg_new:nnnn {fontspec} {rename-feature-not-exist}
+\@@_msg_new:nnn {rename-feature-not-exist}
  {
   The feature #1 doesn't appear to be defined.
  }
@@ -62,11 +62,11 @@
  {
   It looks like you're trying to rename a feature that doesn't exist.
  }
-\@@_msg_new:nnn {fontspec} {no-glyph}
+\@@_msg_new:nn {no-glyph}
  {
   '#1' does not contain glyph #2.
  }
-\@@_msg_new:nnnn {fontspec} {euler-too-late}
+\@@_msg_new:nnn {euler-too-late}
  {
   The euler package must be loaded BEFORE fontspec.
  }
@@ -76,7 +76,7 @@
   loaded after euler. Type <return> to proceed
   with incorrect \string\mathit, \string\mathbf, etc.
  }
-\@@_msg_new:nnnn {fontspec} {no-xcolor}
+\@@_msg_new:nnn {no-xcolor}
  {
   Cannot load named colours without the xcolor package.
  }
@@ -84,7 +84,7 @@
   Sorry, I can't do anything to help. Instead of loading
   the color package, use xcolor instead.
  }
-\@@_msg_new:nnnn {fontspec} {unknown-color-model}
+\@@_msg_new:nnn {unknown-color-model}
  {
   Error loading colour `#1'; unknown colour model.
  }
@@ -92,7 +92,7 @@
   Sorry, I can't do anything to help. Please report this error
   to my developer with a minimal example that causes the problem.
  }
-\@@_msg_new:nnnn {fontspec} {not-in-addfontfeatures}
+\@@_msg_new:nnn {not-in-addfontfeatures}
  {
   The "#1" font feature cannot be used in \string\addfontfeatures.
  }
@@ -107,17 +107,17 @@
 % \subsection{Warnings}
 %
 %    \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {tu-clash}
+\@@_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.
  }
-\@@_msg_new:nnn {fontspec} {tu-missing}
+\@@_msg_new:nn {tu-missing}
  {
   The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
  }
-\@@_msg_new:nnn {fontspec} {addfontfeatures-ignored}
+\@@_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.\\
@@ -127,77 +127,77 @@
     { The requested feature is "#1". }
     { The requested features are "#1". }
  }
-\@@_msg_new:nnn {fontspec} {feature-option-overwrite}
+\@@_msg_new:nn {feature-option-overwrite}
  {
   Option '#2' of font feature '#1' overwritten.
  }
-\@@_msg_new:nnn {fontspec} {ot-tag-too-long}
+\@@_msg_new:nn {ot-tag-too-long}
  {
   OpenType tag '#1' is too long; script, language, and feature tags must be four characters or fewer.
  }
-\@@_msg_new:nnn {fontspec} {aat-feature-not-exist}
+\@@_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'.
  }
-\@@_msg_new:nnn {fontspec} {aat-feature-not-exist-in-font}
+\@@_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'.
  }
-\@@_msg_new:nnn {fontspec} {icu-feature-not-exist}
+\@@_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'
  }
-\@@_msg_new:nnn {fontspec} {icu-feature-not-exist-in-font}
+\@@_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_@@_script_name_tl' and language '\l_@@_lang_name_tl'.
  }
-\@@_msg_new:nnn {fontspec} {no-opticals}
+\@@_msg_new:nn {no-opticals}
  {
   '#1' doesn't appear to have an Optical Size axis.
  }
-\@@_msg_new:nnn {fontspec} {language-not-exist}
+\@@_msg_new:nn {language-not-exist}
  {
   Language '#1' not available
   for font '\l_fontspec_fontname_tl'
   with script '\l_@@_script_name_tl'.
  }
-\@@_msg_new:nnn {fontspec} {only-xetex-feature}
+\@@_msg_new:nn {only-xetex-feature}
  {
   Ignored XeTeX-only feature: '#1'.
  }
-\@@_msg_new:nnn {fontspec} {only-luatex-feature}
+\@@_msg_new:nn {only-luatex-feature}
  {
   Ignored LuaTeX-only feature: '#1'.
  }
-\@@_msg_new:nnn {fontspec} {unknown-renderer}
+\@@_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.
  }
-\@@_msg_new:nnn {fontspec} {no-mapping}
+\@@_msg_new:nn {no-mapping}
  {
   Input mapping not supported in LuaTeX.
  }
-\@@_msg_new:nnn {fontspec} {no-mapping-ligtex}
+\@@_msg_new:nn {no-mapping-ligtex}
  {
   Input mapping not supported in LuaTeX.\\
   Use "Ligatures=TeX" instead of "Mapping=tex-text".
  }
-\@@_msg_new:nnn {fontspec} {cm-default-obsolete}
+\@@_msg_new:nn {cm-default-obsolete}
  {
   The "cm-default" package option is obsolete.
  }
-\@@_msg_new:nnn {fontspec} {font-index-needs-ttc}
+\@@_msg_new:nn {font-index-needs-ttc}
  {
   The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
   Feature ignored.
  }
-\@@_msg_new:nnn {fontspec} {feat-cannot-remove}
+\@@_msg_new:nn {feat-cannot-remove}
  {
   The "#1" feature cannot be deactivated. Request ignored.
  }
@@ -206,7 +206,7 @@
 % \subsection{Info messages}
 %
 %    \begin{macrocode}
-\@@_msg_new:nnn {fontspec} {defining-font}
+\@@_msg_new:nn {defining-font}
  {
   Font family '\g_@@_nfss_family_tl' created for font '#2'
   with options [\l_@@_all_features_clist].\\
@@ -214,33 +214,33 @@
   This font family consists of the following NFSS series/shapes:\\
   \g_@@_defined_shapes_tl
  }
-\@@_msg_new:nnn {fontspec} {no-font-shape}
+\@@_msg_new:nn {no-font-shape}
  {
   Could not resolve font "#1" (it probably doesn't exist).
  }
-\@@_msg_new:nnn {fontspec} {set-scale}
+\@@_msg_new:nn {set-scale}
  {
   \l_fontspec_fontname_tl\space scale = \l_@@_scale_tl.
  }
-\@@_msg_new:nnn {fontspec} {setup-math}
+\@@_msg_new:nn {setup-math}
  {
   Adjusting the maths setup (use [no-math] to avoid this).
  }
-\@@_msg_new:nnn {fontspec} {no-script}
+\@@_msg_new:nn {no-script}
  {
   Font "#1" does not contain requested Script "#2".
  }
-\@@_msg_new:nnn {fontspec} {opa-twice}
+\@@_msg_new:nn {opa-twice}
  {
   Opacity set twice, in both Colour and Opacity.\\
   Using specification "Opacity=#1".
  }
-\@@_msg_new:nnn {fontspec} {opa-twice-col}
+\@@_msg_new:nn {opa-twice-col}
  {
   Opacity set twice, in both Opacity and Colour.\\
   Using an opacity specification in hex of "#1/FF".
  }
-\@@_msg_new:nnn {fontspec} {bad-colour}
+\@@_msg_new:nn {bad-colour}
  {
   Bad colour declaration "#1".
   Colour must be one of:\\
@@ -268,7 +268,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opening.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opening.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opening.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -201,7 +201,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -466,7 +466,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-scripts.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-scripts.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-scripts.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -33,18 +33,22 @@
 \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}
@@ -69,6 +73,7 @@
 \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}
@@ -103,8 +108,10 @@
 \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}
@@ -116,6 +123,7 @@
 \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}
@@ -147,6 +155,7 @@
 \newfontscript{Tai~Viet}{tavt}
 \newfontscript{Takri}{takr}
 \newfontscript{Tamil}{tml2,taml}
+\newfontscript{Tangsa}{tnsa}
 \newfontscript{Tangut}{tang}
 \newfontscript{Telugu}{tel2,telu}
 \newfontscript{Thaana}{thaa}
@@ -154,9 +163,13 @@
 \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}
 %    \end{macrocode}
@@ -182,7 +195,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -540,7 +540,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -135,6 +135,8 @@
 \clist_new:N \l_@@_fontfeat_bfit_clist
 \clist_new:N \l_@@_fontfeat_sl_clist
 \clist_new:N \l_@@_fontfeat_bfsl_clist
+\clist_new:N \l_@@_fontfeat_sw_clist
+\clist_new:N \l_@@_fontfeat_bfsw_clist
 \clist_new:N \l_@@_fontfeat_sc_clist
 %    \end{macrocode}
 %
@@ -255,6 +257,8 @@
 \tl_new:N \l_@@_fontname_bfit_tl
 \tl_new:N \l_@@_fontname_sl_tl
 \tl_new:N \l_@@_fontname_bfsl_tl
+\tl_new:N \l_@@_fontname_sw_tl
+\tl_new:N \l_@@_fontname_bfsw_tl
 \tl_new:N \l_@@_fontname_sc_tl
 %    \end{macrocode}
 %
@@ -324,7 +328,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-xfss.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-xfss.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-xfss.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -12,6 +12,7 @@
 %    \begin{macrocode}
 \providecommand*\scitdefault{\scdefault\itdefault}
 \providecommand*\scsldefault{\scdefault\sldefault}
+\providecommand*\scswdefault{\scdefault\swdefault}
 %    \end{macrocode}
 % \LaTeX's `shape' font axis needs to be overloaded to support italic small caps and slanted small caps.
 % These are the combinations to support:
@@ -19,10 +20,13 @@
 \cs_new:Nn \@@_shape_merge:nn { c_@@_shape_#1_#2_tl }
 \cs_new:Nn \@@_merge_default_shapes:
   {
+    \tl_const:cn { \@@_shape_merge:nn \shapedefault\scdefault    } {\scdefault}
     \tl_const:cn { \@@_shape_merge:nn \itdefault   \scdefault    } {\scitdefault}
     \tl_const:cn { \@@_shape_merge:nn \sldefault   \scdefault    } {\scsldefault}
+    \tl_const:cn { \@@_shape_merge:nn \swdefault   \scdefault    } {\scswdefault}
     \tl_const:cn { \@@_shape_merge:nn \scdefault   \itdefault    } {\scitdefault}
     \tl_const:cn { \@@_shape_merge:nn \scdefault   \sldefault    } {\scsldefault}
+    \tl_const:cn { \@@_shape_merge:nn \scdefault   \swdefault    } {\scswdefault}
     \tl_const:cn { \@@_shape_merge:nn \scsldefault \itdefault    } {\scitdefault}
     \tl_const:cn { \@@_shape_merge:nn \scitdefault \sldefault    } {\scsldefault}
     \tl_const:cn { \@@_shape_merge:nn \scitdefault \shapedefault } {\scdefault}
@@ -51,162 +55,12 @@
 %
 %
 %    \begin{macrocode}
-\cs_if_exist:NTF \DeclareFontSeriesChangeRule
-{
-  \cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
-}
-{
+\cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
 %    \end{macrocode}
 %
-% \begin{macro}{\sishape}
-% \begin{macro}{\textsi}
-% These commands for actually selecting italic small caps have been defined for many years; I'm inclined to drop them.
-% They're probably used very infrequently; I personally prefer just writing
-% |\textit{\textsc{...}}| instead.
 %
-%    \begin{macrocode}
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\scitdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
-%    \end{macrocode}
-% \end{macro} \end{macro}
 %
 %
-% \begin{macro}{\@@_merge_shape:n}
-% These macros enable the overload on the |\..shape| commands.
-% First, a shape `new+current' (prefix) or `current+new' (suffix) is tried.
-% If not found, fall back on the `new' shape.
-%    \begin{macrocode}
-\cs_new:Nn \@@_merge_shape:n
-  {
-    \@@_if_merge_shape:nTF {#1}
-      { \fontshape { \tl_use:c { \@@_shape_merge:nn {\f at shape} {#1} } } \selectfont }
-      { \fontshape {#1} \selectfont }
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\itshape} \begin{macro}{\scshape} \begin{macro}{\upshape} \begin{macro}{\slshape}
-% The original |\..shape| commands are redefined to use the merge shape macro.
-%    \begin{macrocode}
-\DeclareRobustCommand \itshape
-  {
-    \not at math@alphabet\itshape\mathit
-    \@@_merge_shape:n\itdefault
-  }
-\DeclareRobustCommand \slshape
-  {
-    \not at math@alphabet\slshape\relax
-    \@@_merge_shape:n\sldefault
-  }
-\DeclareRobustCommand \scshape
-  {
-    \not at math@alphabet\scshape\relax
-    \@@_merge_shape:n\scdefault
-  }
-\DeclareRobustCommand \upshape
-  {
-    \not at math@alphabet\upshape\relax
-    \@@_merge_shape:n\updefault
-  }
-%    \end{macrocode}
-% \end{macro} \end{macro} \end{macro} \end{macro}
-%
-%
-%
-% \subsection{Emphasis}
-%
-% \begin{macro}{\emfontdeclare}
-%    \begin{macrocode}
-\cs_set_protected:Npn \emfontdeclare #1
-  {
-    \prop_gclear:N    \g_@@_em_prop
-    \int_zero:N       \l_@@_emdef_int
-    \bool_gset_true:N \g_@@_em_normalise_slant_bool
-
-    \tl_if_in:nnT {#1} {\slshape}
-      {
-        \tl_if_in:nnT {#1} {\itshape}
-          {
-            \bool_gset_false:N \g_@@_em_normalise_slant_bool
-          }
-      }
-
-    \group_begin:
-      \normalfont
-      \clist_map_inline:nn {\emreset,#1}
-        {
-          ##1
-          \prop_gput_if_new:NxV \g_@@_em_prop { \f at shape } { \l_@@_emdef_int }
-          \prop_gput:Nxn \g_@@_em_prop { switch-\int_use:N \l_@@_emdef_int } { ##1 }
-          \int_incr:N \l_@@_emdef_int
-        }
-    \group_end:
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\em}
-%    \begin{macrocode}
-\DeclareRobustCommand \em
-  {
-    \@nomath\em
-    \tl_set:Nx \l_@@_emshape_query_tl { \f at shape }
-
-    \bool_if:NT \g_@@_em_normalise_slant_bool
-      {
-        \tl_replace_all:Nnn \l_@@_emshape_query_tl {/sl} {/it}
-      }
-
-%<debug> \typeout{Emph~ level:~\int_use:N \l_@@_em_int}
-    \prop_get:NxNT \g_@@_em_prop { \l_@@_emshape_query_tl } \l_@@_em_tmp_tl
-      {
-        \int_set:Nn \l_@@_em_int { \l_@@_em_tmp_tl }
-%<debug> \typeout{Shape~ (\l_@@_emshape_query_tl)~ detected;~ new~ level:~\int_use:N \l_@@_em_int}
-      }
-
-    \int_incr:N \l_@@_em_int
-
-    \prop_get:NxNTF \g_@@_em_prop { switch-\int_use:N \l_@@_em_int } \l_@@_em_switch_tl
-      { \l_@@_em_switch_tl }
-      {
-        \int_zero:N \l_@@_em_int
-        \emreset
-      }
-
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\emph}
-% \begin{macro}{\emshape}
-% \begin{macro}{\eminnershape}
-% \begin{macro}{\emreset}
-%    \begin{macrocode}
-\DeclareTextFontCommand{\emph}{\em}
-\cs_set:Npn \emreset { \upshape }
-\cs_set:Npn \emshape { \itshape }
-\cs_set:Npn \eminnershape { \upshape }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%    \begin{macrocode}
-\emfontdeclare{ \emshape, \eminnershape }
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l_@@_em_int     {#1} }
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-}
-%    \end{macrocode}
-%
-%
-%
 % \subsection{Strong emphasis}
 %
 % \begin{macro}{\strongfontdeclare}
@@ -271,7 +125,6 @@
 \cs_set:Npn \reset at font
   {
     \normalfont
-    \int_zero:N \l_@@_em_int
     \int_zero:N \l_@@_strong_int
   }
 %    \end{macrocode}
@@ -298,7 +151,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code.ltx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code.ltx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -30,7 +30,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -339,7 +339,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-enc.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-enc.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-enc.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -204,7 +204,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -150,6 +150,8 @@
  \feat{BoldItalicFeatures}\texttt=\marg{features} \\
  \feat{SlantedFeatures}\texttt=\marg{features} \\
  \feat{BoldSlantedFeatures}\texttt=\marg{features} \\
+ \feat{SwashFeatures}\texttt=\marg{features} \\
+ \feat{BoldSwashFeatures}\texttt=\marg{features} \\
  \feat{SmallCapsFeatures}\texttt=\marg{features} \\
  \feat{UprightFeatures}\texttt=\marg{features}
 }
@@ -160,8 +162,7 @@
 
 The font features defined at the top level of the optional \cmd\fontspec\
 argument are applied to \emph{all} shapes of the family.
-Using \feat{Upright-}, \feat{SmallCaps-}, \feat{Bold-},
-\feat{Italic-}, and \feat{BoldItalicFeatures},
+Using the \feat{xxFeatures} options shown above,
 separate font features may be defined to their respective shapes
 \emph{in addition} to, and with precedence over, the `global' font features.
 See \exref{itfeat}.
@@ -178,7 +179,7 @@
 within the main font, features specified with \feat{SmallCapsFeatures} are applied \emph{in addition} to
 any other shape-specific features as defined above, and hence \feat{SmallCapsFeatures}
 can be nested within \feat{ItalicFeatures} and friends. Every combination
-of upright, italic, bold and small caps can thus be assigned individual
+of upright, italic, bold, (etc.), and small caps can thus be assigned individual
 features, as shown in the somewhat ludicrous \exref{scfeat}.
 
 \begin{Xexample}{scfeat}{An example of setting the \feat{SmallCapsFeatures}
@@ -326,7 +327,7 @@
 the text.
 You should think of this as the literal glyphs of the font being coloured in a certain way.
 Notably, this mechanism is different to that of the \pkg{color}/\pkg{xcolor}/\pkg{hyperref}/etc.\ packages, and in fact using \pkg{fontspec} commands to set colour will prevent your text from changing colour using those packages at all!
-For example, if you set the colour in a \verb|\setmainfont| command, \verb|\color{...}| and related commands, including hyperlink colouring, will no longer have any effect on text in this font.)
+(For example, if you set the colour in a \verb|\setmainfont| command, \verb|\color{...}| and related commands, including hyperlink colouring, will no longer have any effect on text in this font.)
 Therefore, \pkg{fontspec}'s colour commands are best used to set explicit colours in specific situations, and the \pkg{xcolor} package is recommended for more general colour functionality.
 
 The colour is defined as a triplet of two-digit Hex RGB
@@ -417,10 +418,9 @@
 
 \subsection{Interword space}
 
-While the space between words can be varied on an individual
-basis with the \TeX\ primitive \cmd\spaceskip\ command, it is
-more convenient to specify this information when the font is
-first defined.
+While the space between words can be varied with the \TeX\ primitive
+\cmd\spaceskip\ command, \pkg{fontspec} also supports changing the
+interword spacing when a given font is loaded.
 
 The space in between words in a paragraph will be chosen automatically,
 and generally will not need to be adjusted. For those
@@ -454,10 +454,7 @@
 
 \subsection{Post-punctuation space}
 
-If \cmd\frenchspacing\ is \emph{not} in effect, \TeX\ will allow extra
-space after some punctuation in its goal of justifying the lines of text.
-Generally, this is considered old-fashioned, but occasionally in small amounts the
-effect can be justified, pardon the pun.
+If \cmd\frenchspacing\ is \emph{not} in effect (which is the default), \TeX\ will allow extra space after some punctuation in its goal of justifying the lines of text.
 
 The \feat{PunctuationSpace} feature takes a scaling factor by which to
 adjust the nominal value chosen for the font; this is demonstrated in
@@ -569,14 +566,14 @@
 In rare situations users may want to mechanically distort the shapes of the glyphs in the current font such as shown in \exref{fake}. Please don't overuse these features; they are \emph{not} a good alternative to having the real shapes.
 
 \begin{Xexample}{fake}{Articifial font transformations.}
-  \fontspec{Quattrocento.otf} \emph{ABCxyz} \quad
-  \fontspec{Quattrocento.otf}[FakeSlant=0.2] ABCxyz
+  \fontspec{Quattrocento-Regular.otf} \emph{ABCxyz} \quad
+  \fontspec{Quattrocento-Regular.otf}[FakeSlant=0.2] ABCxyz
 
-  \fontspec{Quattrocento.otf}  ABCxyz \quad
-  \fontspec{Quattrocento.otf}[FakeStretch=1.2] ABCxyz
+  \fontspec{Quattrocento-Regular.otf}  ABCxyz \quad
+  \fontspec{Quattrocento-Regular.otf}[FakeStretch=1.2] ABCxyz
 
-  \fontspec{Quattrocento.otf} \textbf{ABCxyz} \quad
-  \fontspec{Quattrocento.otf}[FakeBold=1.5] ABCxyz
+  \fontspec{Quattrocento-Regular.otf} \textbf{ABCxyz} \quad
+  \fontspec{Quattrocento-Regular.otf}[FakeBold=1.5] ABCxyz
 \end{Xexample}
 
 If values are omitted, their defaults are as shown above.
@@ -617,7 +614,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -356,6 +356,8 @@
  \feat{~BoldItalicFont} = \meta{font name} \\
  \feat{SlantedFont} = \meta{font name} \\
  \feat{BoldSlantedFont} = \meta{font name} \\
+ \feat{SwashFont} = \meta{font name} \\
+ \feat{BoldSwashFont} = \meta{font name} \\
  \feat{SmallCapsFont} = \meta{font name} \\
  \feat{UprightFont} = \meta{font name}
 }
@@ -385,24 +387,13 @@
 
 
 
-\subsubsection{Small caps and slanted font shapes}
+\subsubsection{Small caps shapes}
 
-When a font family has both slanted \emph{and} italic shapes, these may be specified separately using the analogous features \feat{SlantedFont} and \feat{BoldSlantedFont}.
-Without these, however, the \LaTeX\ font switches for slanted (\cs{textsl}, \cs{slshape}) will default to the italic shape.
-
 For modern OpenType fonts, small caps glyphs are included within a fontface and \pkg{fontspec} will automatically detect them
 for use with the \cs{textsc} and \cs{scshape} commands.
 Pre-OpenType, it was common for font families to be distributed with small caps glyphs in separate fonts, due to the limitations on the number of glyphs allowed in the PostScript Type~1 format.
-Such fonts may be used by declaring the \feat{SmallCapsFont} of the family you are specifying:
+Such fonts may be used by declaring the \feat{SmallCapsFont} for each font of the family you are specifying:
 \begin{Verbatim}
-  \setmainfont{Minion MM Roman}[
-    SmallCapsFont={Minion MM Small Caps & Oldstyle Figures}
-  ]
-  Roman 123 \\ \textsc{Small caps 456}
-\end{Verbatim}
-In fact, this example is overly simplistic since it does not cover the other shapes in a font family.
-You should specify the small caps font for each individual bold and italic shape as in
-\begin{Verbatim}
   \setmainfont{ <upright> }[
     UprightFeatures    = { SmallCapsFont={ <sc> } } ,
     BoldFeatures       = { SmallCapsFont={ <bf sc> } } ,
@@ -426,6 +417,39 @@
   ]
 \end{Verbatim}
 
+
+\subsubsection{Slanted font shapes}
+
+When a font family has both slanted \emph{and} italic shapes, these may be specified separately using the analogous features \feat{SlantedFont} and \feat{BoldSlantedFont}.
+Without these, however, the \LaTeX\ font switches for slanted (\cs{textsl}, \cs{slshape}) will default to the italic shape.
+
+
+\subsubsection{Swash font shapes}
+
+Swash font shapes in a family is supported by \LaTeX's commands \cs{textsw} and \cs{swshape}. These commands assume that swash shapes are in a sense `parallel' to italic shapes --- for instance, writing both \cs{swshape} and \cs{itshape} would not result in an italic swash shape (you would get whichever was declared last).
+The \pkg{fontspec} package adopts this approach, while recognising that OpenType fonts in theory could have any crazy combination of shapes such as `italic swash small caps'.
+Attempting to support arbitrarily complex situations makes setup (and the code) more difficult with let's say infrequent benefit --- \pkg{fontspec}'s alternate feature selection mechanisms (such as verb|\addfontfeature{Style=Swash}|) can be used in such situations.
+
+Therefore, setup is quite simple:
+\begin{Verbatim}
+  \setmainfont{...}[
+        SwashFont = {...} ,
+    BoldSwashFont = {...} ,
+  ]
+\end{Verbatim}
+No assumptions are made about the |+swsh| OpenType feature availability, and if desired the `Swash' feature needs to be explicitly requested as in:
+\begin{Verbatim}
+  \setmainfont{...}[
+        SwashFont = {...} ,
+        SwashFeatures = {Style=Swash} ,
+        ...
+  ]
+\end{Verbatim}
+This may become more automatic in the future.
+
+
+
+
 \subsection{Specifically choosing the \NFSS\ family}
 
 In \LaTeX's \NFSS, font families are defined with names such as `\texttt{ppl}' (Palatino), `\texttt{lmr}' (Latin Modern Roman), and so on, which are selected with the \cs{fontfamily} command:
@@ -617,7 +641,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-intro.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-intro.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-intro.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -184,7 +184,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-luatex.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-luatex.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-luatex.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -26,7 +26,7 @@
 been developed by Khaled Hosny. When running a suitable \LuaTeX\ engine with Harfbuzz support, \pkg{fontspec} provides the following options:
 
 \begin{itemize}
-\item \feat{Renderer} = \opt{Harfbuzz} : use the Harfbuzz engine without an explicit `shaper'.
+\item \feat{Renderer} = \opt{HarfBuzz} : use the Harfbuzz engine without an explicit `shaper' (the old \opt{Harfbuzz} name is kept for compatibility).
 \item \feat{Renderer} = \opt{OpenType} : use the Harfbuzz engine with the OpenType shaper.
 \item \feat{Renderer} = \opt{AAT} : use the Harfbuzz engine with the AAT shaper.
 \item \feat{Renderer} = \opt{Graphite} : use the Harfbuzz engine with the Graphite shaper.
@@ -81,7 +81,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -1171,12 +1171,13 @@
 
 \begin{features}{Style}
 \otf*{Alternate}{salt}
+\otf*{Cursive}{curs}
+\otf*{Historic}{hist}
 \otf*{Italic}{ital}
 \otf*{Ruby}{ruby}
 \otf*{Swash}{swsh}
-\otf*{Cursive}{curs}
-\otf*{Historic}{hist}
 \otf*{Titling}{titl}
+\otf*{Uppercase}{case}
 \otf*{HorizontalKana}{hkna}
 \otf*{VerticalKana}{vkna}
 \cmidrule{2-4}
@@ -1195,7 +1196,7 @@
 
  \begin{Xexample}[firstline=2]{style-alt}{Example of the \opt{Alternate} option of the \feat{Style} feature.}
   \Large
-  \fontspec{Quattrocento.otf}
+  \fontspec{Quattrocento-Regular.otf}
    M Q W                      \\
   \addfontfeature{Style=Alternate}
    M Q W
@@ -1466,7 +1467,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex	2022-01-15 21:42:57 UTC (rev 61617)
@@ -282,7 +282,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec-lua.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-lua.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-lua.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -89,7 +89,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -70,7 +70,7 @@
 \ProvidesExplFile{fontspec.dtx}
 %</dtx>
 %<*fontspec>
-  {2020/02/21}{2.7i}{Font selection for XeLaTeX and LuaLaTeX}
+  {2022/01/15}{2.8a}{Font selection for XeLaTeX and LuaLaTeX}
 %</fontspec>
 %    \end{macrocode}
 %
@@ -89,8 +89,8 @@
 %<lua>local fontspec    = fontspec
 %<lua>fontspec.module   = {
 %<lua>    name          = "fontspec",
-%<lua>    version       = "2.7i",
-%<lua>    date          = "2020/02/21",
+%<lua>    version       = "2.8a",
+%<lua>    date          = "2022/01/15",
 %<lua>    description   = "Font selection for XeLaTeX and LuaLaTeX",
 %<lua>    author        = "Khaled Hosny, Philipp Gesang, Will Robertson",
 %<lua>    copyright     = "Khaled Hosny, Philipp Gesang, Will Robertson",
@@ -104,7 +104,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ins	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ins	2022-01-15 21:42:57 UTC (rev 61617)
@@ -48,7 +48,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ltx	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ltx	2022-01-15 21:42:57 UTC (rev 61617)
@@ -28,7 +28,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2020  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2022  Will Robertson, LPPL "maintainer"
 % Copyright  2009-2015  Khaled Hosny
 % Copyright  2013       Philipp Gesang
 % Copyright  2013-2016  Joseph Wright

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty	2022-01-15 21:42:57 UTC (rev 61617)
@@ -40,7 +40,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-luatex}%
-  {2020/02/21}{2.7i}{Font selection for XeLaTeX and LuaLaTeX}
+  {2022/01/15}{2.8a}{Font selection for XeLaTeX and LuaLaTeX}
 
 %%^^A%%  fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
 %%^^A%%  fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
@@ -110,6 +110,8 @@
 \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
@@ -177,6 +179,8 @@
 \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
@@ -218,22 +222,22 @@
 \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:nnx {#1} {#2} { \tl_trim_spaces:n {#3} } }
-\cs_new:Nn \__fontspec_msg_new:nnnn
-  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
+  { \msg_new:nnxx {fontspec} {#1} { \tl_trim_spaces:n {#2} } { \tl_trim_spaces:n {#3} } }
 \char_set_catcode_space:n {32}
-\__fontspec_msg_new:nnn {fontspec} {only-inside-encdef}
+\__fontspec_msg_new:nn {only-inside-encdef}
  {
-  \exp_not:N#1can only be used in the second argument
+  \exp_not:N #1 can only be used in the second argument
   to \string\DeclareUnicodeEncoding.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-size-info}
+\__fontspec_msg_new:nn {no-size-info}
  {
   Size information must be supplied.\\
   For example, SizeFeatures={Size={8-12},...}.
  }
-\__fontspec_msg_new:nnnn {fontspec} {font-not-found}
+\__fontspec_msg_new:nnn {font-not-found}
  {
   The font "#1" cannot be found.
  }
@@ -242,7 +246,7 @@
   Check the spelling, where the font is installed etc. etc.\\\\
   When in doubt, ask someone for help!
  }
-\__fontspec_msg_new:nnnn {fontspec} {rename-feature-not-exist}
+\__fontspec_msg_new:nnn {rename-feature-not-exist}
  {
   The feature #1 doesn't appear to be defined.
  }
@@ -249,11 +253,11 @@
  {
   It looks like you're trying to rename a feature that doesn't exist.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-glyph}
+\__fontspec_msg_new:nn {no-glyph}
  {
   '#1' does not contain glyph #2.
  }
-\__fontspec_msg_new:nnnn {fontspec} {euler-too-late}
+\__fontspec_msg_new:nnn {euler-too-late}
  {
   The euler package must be loaded BEFORE fontspec.
  }
@@ -263,7 +267,7 @@
   loaded after euler. Type <return> to proceed
   with incorrect \string\mathit, \string\mathbf, etc.
  }
-\__fontspec_msg_new:nnnn {fontspec} {no-xcolor}
+\__fontspec_msg_new:nnn {no-xcolor}
  {
   Cannot load named colours without the xcolor package.
  }
@@ -271,7 +275,7 @@
   Sorry, I can't do anything to help. Instead of loading
   the color package, use xcolor instead.
  }
-\__fontspec_msg_new:nnnn {fontspec} {unknown-color-model}
+\__fontspec_msg_new:nnn {unknown-color-model}
  {
   Error loading colour `#1'; unknown colour model.
  }
@@ -279,7 +283,7 @@
   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:nnnn {fontspec} {not-in-addfontfeatures}
+\__fontspec_msg_new:nnn {not-in-addfontfeatures}
  {
   The "#1" font feature cannot be used in \string\addfontfeatures.
  }
@@ -289,17 +293,17 @@
   confusion. You'll need to define multiple font families to achieve
   what you want.
  }
-\__fontspec_msg_new:nnn {fontspec} {tu-clash}
+\__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:nnn {fontspec} {tu-missing}
+\__fontspec_msg_new:nn {tu-missing}
  {
   The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
  }
-\__fontspec_msg_new:nnn {fontspec} {addfontfeatures-ignored}
+\__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.\\
@@ -309,81 +313,81 @@
     { The requested feature is "#1". }
     { The requested features are "#1". }
  }
-\__fontspec_msg_new:nnn {fontspec} {feature-option-overwrite}
+\__fontspec_msg_new:nn {feature-option-overwrite}
  {
   Option '#2' of font feature '#1' overwritten.
  }
-\__fontspec_msg_new:nnn {fontspec} {ot-tag-too-long}
+\__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:nnn {fontspec} {aat-feature-not-exist}
+\__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:nnn {fontspec} {aat-feature-not-exist-in-font}
+\__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:nnn {fontspec} {icu-feature-not-exist}
+\__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:nnn {fontspec} {icu-feature-not-exist-in-font}
+\__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:nnn {fontspec} {no-opticals}
+\__fontspec_msg_new:nn {no-opticals}
  {
   '#1' doesn't appear to have an Optical Size axis.
  }
-\__fontspec_msg_new:nnn {fontspec} {language-not-exist}
+\__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:nnn {fontspec} {only-xetex-feature}
+\__fontspec_msg_new:nn {only-xetex-feature}
  {
   Ignored XeTeX-only feature: '#1'.
  }
-\__fontspec_msg_new:nnn {fontspec} {only-luatex-feature}
+\__fontspec_msg_new:nn {only-luatex-feature}
  {
   Ignored LuaTeX-only feature: '#1'.
  }
-\__fontspec_msg_new:nnn {fontspec} {unknown-renderer}
+\__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:nnn {fontspec} {no-mapping}
+\__fontspec_msg_new:nn {no-mapping}
  {
   Input mapping not supported in LuaTeX.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-mapping-ligtex}
+\__fontspec_msg_new:nn {no-mapping-ligtex}
  {
   Input mapping not supported in LuaTeX.\\
   Use "Ligatures=TeX" instead of "Mapping=tex-text".
  }
-\__fontspec_msg_new:nnn {fontspec} {cm-default-obsolete}
+\__fontspec_msg_new:nn {cm-default-obsolete}
  {
   The "cm-default" package option is obsolete.
  }
-\__fontspec_msg_new:nnn {fontspec} {font-index-needs-ttc}
+\__fontspec_msg_new:nn {font-index-needs-ttc}
  {
   The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
   Feature ignored.
  }
-\__fontspec_msg_new:nnn {fontspec} {feat-cannot-remove}
+\__fontspec_msg_new:nn {feat-cannot-remove}
  {
   The "#1" feature cannot be deactivated. Request ignored.
  }
-\__fontspec_msg_new:nnn {fontspec} {defining-font}
+\__fontspec_msg_new:nn {defining-font}
  {
   Font family '\g__fontspec_nfss_family_tl' created for font '#2'
   with options [\l__fontspec_all_features_clist].\\
@@ -391,33 +395,33 @@
   This font family consists of the following NFSS series/shapes:\\
   \g__fontspec_defined_shapes_tl
  }
-\__fontspec_msg_new:nnn {fontspec} {no-font-shape}
+\__fontspec_msg_new:nn {no-font-shape}
  {
   Could not resolve font "#1" (it probably doesn't exist).
  }
-\__fontspec_msg_new:nnn {fontspec} {set-scale}
+\__fontspec_msg_new:nn {set-scale}
  {
   \l_fontspec_fontname_tl\space scale = \l__fontspec_scale_tl.
  }
-\__fontspec_msg_new:nnn {fontspec} {setup-math}
+\__fontspec_msg_new:nn {setup-math}
  {
   Adjusting the maths setup (use [no-math] to avoid this).
  }
-\__fontspec_msg_new:nnn {fontspec} {no-script}
+\__fontspec_msg_new:nn {no-script}
  {
   Font "#1" does not contain requested Script "#2".
  }
-\__fontspec_msg_new:nnn {fontspec} {opa-twice}
+\__fontspec_msg_new:nn {opa-twice}
  {
   Opacity set twice, in both Colour and Opacity.\\
   Using specification "Opacity=#1".
  }
-\__fontspec_msg_new:nnn {fontspec} {opa-twice-col}
+\__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:nnn {fontspec} {bad-colour}
+\__fontspec_msg_new:nn {bad-colour}
  {
   Bad colour declaration "#1".
   Colour must be one of:\\
@@ -1242,7 +1246,7 @@
     \keys_set_known:nn {fontspec-preparse-cfg} {#1}
 
     \__fontspec_init_ttc:n {#2}
-    \__fontspec_load_external_fontoptions:Nn \l_fontspec_fontname_tl {#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 }
@@ -1299,11 +1303,10 @@
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bfit_tl {#1}
       }
   }
-\cs_new:Nn \__fontspec_load_external_fontoptions:Nn
+\cs_new:Nn \__fontspec_load_external_fontoptions:N
   {
     \bool_if:NT \l__fontspec_fontcfg_bool
       {
-        \__fontspec_sanitise_fontname:Nn #1 {#2}
         \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
@@ -1502,8 +1505,10 @@
     \__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
@@ -1569,7 +1574,8 @@
   }
 \cs_new:Nn \__fontspec_load_fontname:Nn
   {
-    \__fontspec_load_external_fontoptions:Nn #1 {#2}
+    \__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
@@ -1596,7 +1602,7 @@
     \__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_shapes_bx:nn     {#1} {#2}
     \__fontspec_declare_shape_loginfo:nn {#1} {#2}
   }
 \cs_generate_variant:Nn \__fontspec_declare_shape:nnnn {nnxx}
@@ -1671,7 +1677,7 @@
   {
     \tl_if_exist:cTF { \__fontspec_shape_merge:nn {#1} {\scdefault} }
          { \tl_use:c { \__fontspec_shape_merge:nn {#1} {\scdefault} } }
-         { \scdefault }
+         { \scdefault#1 }
   }
 \cs_new:Nn \__fontspec_DeclareFontShape:nnnnnn
   {
@@ -1743,8 +1749,10 @@
           {\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
@@ -2223,6 +2231,10 @@
   {
     \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}
@@ -2257,6 +2269,10 @@
   {
     \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}
@@ -2275,7 +2291,6 @@
 \__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}
   {
@@ -2293,6 +2308,14 @@
   {
     \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
@@ -3034,18 +3057,22 @@
 \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}
@@ -3070,6 +3097,7 @@
 \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}
@@ -3104,8 +3132,10 @@
 \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}
@@ -3117,6 +3147,7 @@
 \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}
@@ -3148,6 +3179,7 @@
 \newfontscript{Tai~Viet}{tavt}
 \newfontscript{Takri}{takr}
 \newfontscript{Tamil}{tml2,taml}
+\newfontscript{Tangsa}{tnsa}
 \newfontscript{Tangut}{tang}
 \newfontscript{Telugu}{tel2,telu}
 \newfontscript{Thaana}{thaa}
@@ -3155,9 +3187,13 @@
 \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}
@@ -3788,13 +3824,17 @@
 
 \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}
@@ -3814,100 +3854,7 @@
       }
     \prg_return_true: \prg_return_false:
   }
-\cs_if_exist:NTF \DeclareFontSeriesChangeRule
-{
-  \cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
-}
-{
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\scitdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
-\cs_new:Nn \__fontspec_merge_shape:n
-  {
-    \__fontspec_if_merge_shape:nTF {#1}
-      { \fontshape { \tl_use:c { \__fontspec_shape_merge:nn {\f at shape} {#1} } } \selectfont }
-      { \fontshape {#1} \selectfont }
-  }
-\DeclareRobustCommand \itshape
-  {
-    \not at math@alphabet\itshape\mathit
-    \__fontspec_merge_shape:n\itdefault
-  }
-\DeclareRobustCommand \slshape
-  {
-    \not at math@alphabet\slshape\relax
-    \__fontspec_merge_shape:n\sldefault
-  }
-\DeclareRobustCommand \scshape
-  {
-    \not at math@alphabet\scshape\relax
-    \__fontspec_merge_shape:n\scdefault
-  }
-\DeclareRobustCommand \upshape
-  {
-    \not at math@alphabet\upshape\relax
-    \__fontspec_merge_shape:n\updefault
-  }
-\cs_set_protected:Npn \emfontdeclare #1
-  {
-    \prop_gclear:N    \g__fontspec_em_prop
-    \int_zero:N       \l__fontspec_emdef_int
-    \bool_gset_true:N \g__fontspec_em_normalise_slant_bool
-
-    \tl_if_in:nnT {#1} {\slshape}
-      {
-        \tl_if_in:nnT {#1} {\itshape}
-          {
-            \bool_gset_false:N \g__fontspec_em_normalise_slant_bool
-          }
-      }
-
-    \group_begin:
-      \normalfont
-      \clist_map_inline:nn {\emreset,#1}
-        {
-          ##1
-          \prop_gput_if_new:NxV \g__fontspec_em_prop { \f at shape } { \l__fontspec_emdef_int }
-          \prop_gput:Nxn \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_emdef_int } { ##1 }
-          \int_incr:N \l__fontspec_emdef_int
-        }
-    \group_end:
-  }
-\DeclareRobustCommand \em
-  {
-    \@nomath\em
-    \tl_set:Nx \l__fontspec_emshape_query_tl { \f at shape }
-
-    \bool_if:NT \g__fontspec_em_normalise_slant_bool
-      {
-        \tl_replace_all:Nnn \l__fontspec_emshape_query_tl {/sl} {/it}
-      }
-
-    \prop_get:NxNT \g__fontspec_em_prop { \l__fontspec_emshape_query_tl } \l__fontspec_em_tmp_tl
-      {
-        \int_set:Nn \l__fontspec_em_int { \l__fontspec_em_tmp_tl }
-      }
-
-    \int_incr:N \l__fontspec_em_int
-
-    \prop_get:NxNTF \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_em_int } \l__fontspec_em_switch_tl
-      { \l__fontspec_em_switch_tl }
-      {
-        \int_zero:N \l__fontspec_em_int
-        \emreset
-      }
-
-  }
-\DeclareTextFontCommand{\emph}{\em}
-\cs_set:Npn \emreset { \upshape }
-\cs_set:Npn \emshape { \itshape }
-\cs_set:Npn \eminnershape { \upshape }
-\emfontdeclare{ \emshape, \eminnershape }
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
-}
+\cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
 \cs_set_protected:Npn \strongfontdeclare #1
   {
     \prop_gclear:N   \g__fontspec_strong_prop
@@ -3948,7 +3895,6 @@
 \cs_set:Npn \reset at font
   {
     \normalfont
-    \int_zero:N \l__fontspec_em_int
     \int_zero:N \l__fontspec_strong_int
   }
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2022-01-15 21:42:57 UTC (rev 61617)
@@ -40,7 +40,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-xetex}%
-  {2020/02/21}{2.7i}{Font selection for XeLaTeX and LuaLaTeX}
+  {2022/01/15}{2.8a}{Font selection for XeLaTeX and LuaLaTeX}
 
 %%^^A%%  fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
 %%^^A%%  fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
@@ -110,6 +110,8 @@
 \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
@@ -177,6 +179,8 @@
 \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
@@ -218,22 +222,22 @@
 \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:nnx {#1} {#2} { \tl_trim_spaces:n {#3} } }
-\cs_new:Nn \__fontspec_msg_new:nnnn
-  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
+  { \msg_new:nnxx {fontspec} {#1} { \tl_trim_spaces:n {#2} } { \tl_trim_spaces:n {#3} } }
 \char_set_catcode_space:n {32}
-\__fontspec_msg_new:nnn {fontspec} {only-inside-encdef}
+\__fontspec_msg_new:nn {only-inside-encdef}
  {
-  \exp_not:N#1can only be used in the second argument
+  \exp_not:N #1 can only be used in the second argument
   to \string\DeclareUnicodeEncoding.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-size-info}
+\__fontspec_msg_new:nn {no-size-info}
  {
   Size information must be supplied.\\
   For example, SizeFeatures={Size={8-12},...}.
  }
-\__fontspec_msg_new:nnnn {fontspec} {font-not-found}
+\__fontspec_msg_new:nnn {font-not-found}
  {
   The font "#1" cannot be found.
  }
@@ -242,7 +246,7 @@
   Check the spelling, where the font is installed etc. etc.\\\\
   When in doubt, ask someone for help!
  }
-\__fontspec_msg_new:nnnn {fontspec} {rename-feature-not-exist}
+\__fontspec_msg_new:nnn {rename-feature-not-exist}
  {
   The feature #1 doesn't appear to be defined.
  }
@@ -249,11 +253,11 @@
  {
   It looks like you're trying to rename a feature that doesn't exist.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-glyph}
+\__fontspec_msg_new:nn {no-glyph}
  {
   '#1' does not contain glyph #2.
  }
-\__fontspec_msg_new:nnnn {fontspec} {euler-too-late}
+\__fontspec_msg_new:nnn {euler-too-late}
  {
   The euler package must be loaded BEFORE fontspec.
  }
@@ -263,7 +267,7 @@
   loaded after euler. Type <return> to proceed
   with incorrect \string\mathit, \string\mathbf, etc.
  }
-\__fontspec_msg_new:nnnn {fontspec} {no-xcolor}
+\__fontspec_msg_new:nnn {no-xcolor}
  {
   Cannot load named colours without the xcolor package.
  }
@@ -271,7 +275,7 @@
   Sorry, I can't do anything to help. Instead of loading
   the color package, use xcolor instead.
  }
-\__fontspec_msg_new:nnnn {fontspec} {unknown-color-model}
+\__fontspec_msg_new:nnn {unknown-color-model}
  {
   Error loading colour `#1'; unknown colour model.
  }
@@ -279,7 +283,7 @@
   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:nnnn {fontspec} {not-in-addfontfeatures}
+\__fontspec_msg_new:nnn {not-in-addfontfeatures}
  {
   The "#1" font feature cannot be used in \string\addfontfeatures.
  }
@@ -289,17 +293,17 @@
   confusion. You'll need to define multiple font families to achieve
   what you want.
  }
-\__fontspec_msg_new:nnn {fontspec} {tu-clash}
+\__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:nnn {fontspec} {tu-missing}
+\__fontspec_msg_new:nn {tu-missing}
  {
   The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
  }
-\__fontspec_msg_new:nnn {fontspec} {addfontfeatures-ignored}
+\__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.\\
@@ -309,81 +313,81 @@
     { The requested feature is "#1". }
     { The requested features are "#1". }
  }
-\__fontspec_msg_new:nnn {fontspec} {feature-option-overwrite}
+\__fontspec_msg_new:nn {feature-option-overwrite}
  {
   Option '#2' of font feature '#1' overwritten.
  }
-\__fontspec_msg_new:nnn {fontspec} {ot-tag-too-long}
+\__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:nnn {fontspec} {aat-feature-not-exist}
+\__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:nnn {fontspec} {aat-feature-not-exist-in-font}
+\__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:nnn {fontspec} {icu-feature-not-exist}
+\__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:nnn {fontspec} {icu-feature-not-exist-in-font}
+\__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:nnn {fontspec} {no-opticals}
+\__fontspec_msg_new:nn {no-opticals}
  {
   '#1' doesn't appear to have an Optical Size axis.
  }
-\__fontspec_msg_new:nnn {fontspec} {language-not-exist}
+\__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:nnn {fontspec} {only-xetex-feature}
+\__fontspec_msg_new:nn {only-xetex-feature}
  {
   Ignored XeTeX-only feature: '#1'.
  }
-\__fontspec_msg_new:nnn {fontspec} {only-luatex-feature}
+\__fontspec_msg_new:nn {only-luatex-feature}
  {
   Ignored LuaTeX-only feature: '#1'.
  }
-\__fontspec_msg_new:nnn {fontspec} {unknown-renderer}
+\__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:nnn {fontspec} {no-mapping}
+\__fontspec_msg_new:nn {no-mapping}
  {
   Input mapping not supported in LuaTeX.
  }
-\__fontspec_msg_new:nnn {fontspec} {no-mapping-ligtex}
+\__fontspec_msg_new:nn {no-mapping-ligtex}
  {
   Input mapping not supported in LuaTeX.\\
   Use "Ligatures=TeX" instead of "Mapping=tex-text".
  }
-\__fontspec_msg_new:nnn {fontspec} {cm-default-obsolete}
+\__fontspec_msg_new:nn {cm-default-obsolete}
  {
   The "cm-default" package option is obsolete.
  }
-\__fontspec_msg_new:nnn {fontspec} {font-index-needs-ttc}
+\__fontspec_msg_new:nn {font-index-needs-ttc}
  {
   The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
   Feature ignored.
  }
-\__fontspec_msg_new:nnn {fontspec} {feat-cannot-remove}
+\__fontspec_msg_new:nn {feat-cannot-remove}
  {
   The "#1" feature cannot be deactivated. Request ignored.
  }
-\__fontspec_msg_new:nnn {fontspec} {defining-font}
+\__fontspec_msg_new:nn {defining-font}
  {
   Font family '\g__fontspec_nfss_family_tl' created for font '#2'
   with options [\l__fontspec_all_features_clist].\\
@@ -391,33 +395,33 @@
   This font family consists of the following NFSS series/shapes:\\
   \g__fontspec_defined_shapes_tl
  }
-\__fontspec_msg_new:nnn {fontspec} {no-font-shape}
+\__fontspec_msg_new:nn {no-font-shape}
  {
   Could not resolve font "#1" (it probably doesn't exist).
  }
-\__fontspec_msg_new:nnn {fontspec} {set-scale}
+\__fontspec_msg_new:nn {set-scale}
  {
   \l_fontspec_fontname_tl\space scale = \l__fontspec_scale_tl.
  }
-\__fontspec_msg_new:nnn {fontspec} {setup-math}
+\__fontspec_msg_new:nn {setup-math}
  {
   Adjusting the maths setup (use [no-math] to avoid this).
  }
-\__fontspec_msg_new:nnn {fontspec} {no-script}
+\__fontspec_msg_new:nn {no-script}
  {
   Font "#1" does not contain requested Script "#2".
  }
-\__fontspec_msg_new:nnn {fontspec} {opa-twice}
+\__fontspec_msg_new:nn {opa-twice}
  {
   Opacity set twice, in both Colour and Opacity.\\
   Using specification "Opacity=#1".
  }
-\__fontspec_msg_new:nnn {fontspec} {opa-twice-col}
+\__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:nnn {fontspec} {bad-colour}
+\__fontspec_msg_new:nn {bad-colour}
  {
   Bad colour declaration "#1".
   Colour must be one of:\\
@@ -1235,7 +1239,7 @@
     \keys_set_known:nn {fontspec-preparse-cfg} {#1}
 
     \__fontspec_init_ttc:n {#2}
-    \__fontspec_load_external_fontoptions:Nn \l_fontspec_fontname_tl {#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 }
@@ -1291,11 +1295,10 @@
         \__fontspec_sanitise_fontname:Nn \l__fontspec_fontname_bfit_tl {#1}
       }
   }
-\cs_new:Nn \__fontspec_load_external_fontoptions:Nn
+\cs_new:Nn \__fontspec_load_external_fontoptions:N
   {
     \bool_if:NT \l__fontspec_fontcfg_bool
       {
-        \__fontspec_sanitise_fontname:Nn #1 {#2}
         \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
@@ -1501,8 +1504,10 @@
     \__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
@@ -1586,7 +1591,8 @@
   }
 \cs_new:Nn \__fontspec_load_fontname:Nn
   {
-    \__fontspec_load_external_fontoptions:Nn #1 {#2}
+    \__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
@@ -1613,7 +1619,7 @@
     \__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_shapes_bx:nn     {#1} {#2}
     \__fontspec_declare_shape_loginfo:nn {#1} {#2}
   }
 \cs_generate_variant:Nn \__fontspec_declare_shape:nnnn {nnxx}
@@ -1688,7 +1694,7 @@
   {
     \tl_if_exist:cTF { \__fontspec_shape_merge:nn {#1} {\scdefault} }
          { \tl_use:c { \__fontspec_shape_merge:nn {#1} {\scdefault} } }
-         { \scdefault }
+         { \scdefault#1 }
   }
 \cs_new:Nn \__fontspec_DeclareFontShape:nnnnnn
   {
@@ -1760,8 +1766,10 @@
           {\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
@@ -2334,6 +2342,10 @@
   {
     \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}
@@ -2368,6 +2380,10 @@
   {
     \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}
@@ -2386,7 +2402,6 @@
 \__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}
   {
@@ -2404,6 +2419,14 @@
   {
     \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
@@ -3155,18 +3178,22 @@
 \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}
@@ -3191,6 +3218,7 @@
 \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}
@@ -3225,8 +3253,10 @@
 \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}
@@ -3238,6 +3268,7 @@
 \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}
@@ -3269,6 +3300,7 @@
 \newfontscript{Tai~Viet}{tavt}
 \newfontscript{Takri}{takr}
 \newfontscript{Tamil}{tml2,taml}
+\newfontscript{Tangsa}{tnsa}
 \newfontscript{Tangut}{tang}
 \newfontscript{Telugu}{tel2,telu}
 \newfontscript{Thaana}{thaa}
@@ -3276,9 +3308,13 @@
 \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}
@@ -4047,13 +4083,17 @@
 
 \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}
@@ -4073,100 +4113,7 @@
       }
     \prg_return_true: \prg_return_false:
   }
-\cs_if_exist:NTF \DeclareFontSeriesChangeRule
-{
-  \cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
-}
-{
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\scitdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
-\cs_new:Nn \__fontspec_merge_shape:n
-  {
-    \__fontspec_if_merge_shape:nTF {#1}
-      { \fontshape { \tl_use:c { \__fontspec_shape_merge:nn {\f at shape} {#1} } } \selectfont }
-      { \fontshape {#1} \selectfont }
-  }
-\DeclareRobustCommand \itshape
-  {
-    \not at math@alphabet\itshape\mathit
-    \__fontspec_merge_shape:n\itdefault
-  }
-\DeclareRobustCommand \slshape
-  {
-    \not at math@alphabet\slshape\relax
-    \__fontspec_merge_shape:n\sldefault
-  }
-\DeclareRobustCommand \scshape
-  {
-    \not at math@alphabet\scshape\relax
-    \__fontspec_merge_shape:n\scdefault
-  }
-\DeclareRobustCommand \upshape
-  {
-    \not at math@alphabet\upshape\relax
-    \__fontspec_merge_shape:n\updefault
-  }
-\cs_set_protected:Npn \emfontdeclare #1
-  {
-    \prop_gclear:N    \g__fontspec_em_prop
-    \int_zero:N       \l__fontspec_emdef_int
-    \bool_gset_true:N \g__fontspec_em_normalise_slant_bool
-
-    \tl_if_in:nnT {#1} {\slshape}
-      {
-        \tl_if_in:nnT {#1} {\itshape}
-          {
-            \bool_gset_false:N \g__fontspec_em_normalise_slant_bool
-          }
-      }
-
-    \group_begin:
-      \normalfont
-      \clist_map_inline:nn {\emreset,#1}
-        {
-          ##1
-          \prop_gput_if_new:NxV \g__fontspec_em_prop { \f at shape } { \l__fontspec_emdef_int }
-          \prop_gput:Nxn \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_emdef_int } { ##1 }
-          \int_incr:N \l__fontspec_emdef_int
-        }
-    \group_end:
-  }
-\DeclareRobustCommand \em
-  {
-    \@nomath\em
-    \tl_set:Nx \l__fontspec_emshape_query_tl { \f at shape }
-
-    \bool_if:NT \g__fontspec_em_normalise_slant_bool
-      {
-        \tl_replace_all:Nnn \l__fontspec_emshape_query_tl {/sl} {/it}
-      }
-
-    \prop_get:NxNT \g__fontspec_em_prop { \l__fontspec_emshape_query_tl } \l__fontspec_em_tmp_tl
-      {
-        \int_set:Nn \l__fontspec_em_int { \l__fontspec_em_tmp_tl }
-      }
-
-    \int_incr:N \l__fontspec_em_int
-
-    \prop_get:NxNTF \g__fontspec_em_prop { switch-\int_use:N \l__fontspec_em_int } \l__fontspec_em_switch_tl
-      { \l__fontspec_em_switch_tl }
-      {
-        \int_zero:N \l__fontspec_em_int
-        \emreset
-      }
-
-  }
-\DeclareTextFontCommand{\emph}{\em}
-\cs_set:Npn \emreset { \upshape }
-\cs_set:Npn \emshape { \itshape }
-\cs_set:Npn \eminnershape { \upshape }
-\emfontdeclare{ \emshape, \eminnershape }
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
-}
+\cs_set_eq:NN \emfontdeclare \DeclareEmphSequence
 \cs_set_protected:Npn \strongfontdeclare #1
   {
     \prop_gclear:N   \g__fontspec_strong_prop
@@ -4207,7 +4154,6 @@
 \cs_set:Npn \reset at font
   {
     \normalfont
-    \int_zero:N \l__fontspec_em_int
     \int_zero:N \l__fontspec_strong_int
   }
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2022-01-15 21:42:57 UTC (rev 61617)
@@ -23,8 +23,8 @@
 local fontspec    = fontspec
 fontspec.module   = {
     name          = "fontspec",
-    version       = "2.7i",
-    date          = "2020/02/21",
+    version       = "2.8a",
+    date          = "2022/01/15",
     description   = "Font selection for XeLaTeX and LuaLaTeX",
     author        = "Khaled Hosny, Philipp Gesang, Will Robertson",
     copyright     = "Khaled Hosny, Philipp Gesang, Will Robertson",

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty	2022-01-15 21:38:16 UTC (rev 61616)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty	2022-01-15 21:42:57 UTC (rev 61617)
@@ -21,7 +21,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec}%
-  {2020/02/21}{2.7i}{Font selection for XeLaTeX and LuaLaTeX}
+  {2022/01/15}{2.8a}{Font selection for XeLaTeX and LuaLaTeX}
 
 %%^^A%%  fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
 \sys_if_engine_luatex:T
@@ -40,6 +40,6 @@
   {
     The~ fontspec~ package~ requires~ either~ XeTeX~ or~ LuaTeX.\\\\
     You~ must~ change~ your~ typesetting~ engine~ to,~ e.g.,~
-    "xelatex"~ or~ "lualatex" instead~ of~ "latex"~ or~ "pdflatex".
+    "xelatex"~ or~ "lualatex"~ instead~ of~ "latex"~ or~ "pdflatex".
   }
 \msg_fatal:nn {fontspec} {cannot-use-pdftex}



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