texlive[53357] Master/texmf-dist: fontspec (9jan20)

commits+karl at tug.org commits+karl at tug.org
Thu Jan 9 23:13:09 CET 2020


Revision: 53357
          http://tug.org/svn/texlive?view=revision&revision=53357
Author:   karl
Date:     2020-01-09 23:13:09 +0100 (Thu, 09 Jan 2020)
Log Message:
-----------
fontspec (9jan20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.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-patches.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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/doc/latex/fontspec/CHANGES.md	2020-01-09 22:13:09 UTC (rev 53357)
@@ -1,26 +1,35 @@
 Change history
 ==============
 
+## v2.7e (2020/01/09)
+
+  * Rename for `Renderer=HarfBuzz` (the old `Harfbuzz` name is kept for compatibility)
+  * Track upcoming changes in LaTeX2e release for 2020.
+  * Remove/reword some out-of-date documentation.
+  * Remove entirely the patches for 3rd party verbatim packages as `\verbvisiblespace`
+    has now been offered by the kernel for a year.
+
+
 ## v2.7d (2019/10/19)
 
-    * Allow the user to manually change `\rmdefault`, `\sfdefault`, `\ttdefault`
+  * Allow the user to manually change `\rmdefault`, `\sfdefault`, `\ttdefault`
       if desired. Note this could cause problems if the `fontspec` encoding does not
       match the encoding of the specified families.
-    * Additional optional argument for `\EncodingCommand`.
-    * Suppress spurious warnings for `HyphenChar` feature in XeLaTeX.
-    * Add `Ligatures=TeXOff` even though it's not a real OpenType feature.
+  * Additional optional argument for `\EncodingCommand`.
+  * Suppress spurious warnings for `HyphenChar` feature in XeLaTeX.
+  * Add `Ligatures=TeXOff` even though it's not a real OpenType feature.
       (Functionally equivalent to `Ligatures=TeXReset`.)
-    * New scripts definitions to match OpenType 1.8.3 (thanks Werner!).
-    * Documentation changes for `Numbers=Arabic`, `HypenChar=None` for `\ttfamily`.
-    * Documentation fixes (thanks `muzimuzhi`!).
-    * Prepare for `FakeBold` being available in `luaotfload` (thanks Khaled!).
-    * Bug fix for doubled + symbol when setting `tlig` feature in LuaTeX.
-    * Bug fix for Harfbuzz use. (Support still very minimal I'm afraid.)
+  * New scripts definitions to match OpenType 1.8.3 (thanks Werner!).
+  * Documentation changes for `Numbers=Arabic`, `HypenChar=None` for `\ttfamily`.
+  * Documentation fixes (thanks `muzimuzhi`!).
+  * Prepare for `FakeBold` being available in `luaotfload` (thanks Khaled!).
+  * Bug fix for doubled + symbol when setting `tlig` feature in LuaTeX.
+  * Bug fix for Harfbuzz use. (Support still very minimal I'm afraid.)
 
 
 ## v2.7c (2019/03/15)
 
-    * Two optimisations reduce time for font definitions with a large number of
+  * Two optimisations reduce time for font definitions with a large number of
       `FontFace` options. Thanks to Bob Tennent for the test file and bringing
       the problem to my attention.
 
@@ -27,7 +36,7 @@
 
 ## v2.7b (2019/02/12)
 
-    * Fix regression in loading `Language=Turkish`. This now allows users to define more
+  * Fix regression in loading `Language=Turkish`. This now allows users to define more
       than one OpenType tag when defining a language name, where the first tag found is
       the one selected for the font. E.g.,
 
@@ -36,75 +45,75 @@
       when selected, this first checks for the existance of the TRK language tag, and if
       not found then checks for the TUR language tag to use if available.
 
-    * Add new `Renderer` options for LuaTeX that enable the Harfbuzz engine. These only
+  * Add new `Renderer` options for LuaTeX that enable the HarfBuzz engine. These only
       work running under `luahbtex` and are currently experimental. The new options are
       `Harfbuzz`, `OpenType`, `AAT`, and `Graphite`.
 
-    * Always try to remove ‘clashing’ font features inside `\addfontfeatures` even in
+  * Always try to remove ‘clashing’ font features inside `\addfontfeatures` even in
       cases when the requested font feature doesn't exist. E.g., now if a font is loaded
       with `Numbers=OldStyle` and *doesn't have* `Numbers=Lining`, requesting the latter
       will still reset the former.
 
-    * Add `pxfonts`, `txfonts`, `newpxmath`, `newtxmath`, `mtpro2` to the list
+  * Add `pxfonts`, `txfonts`, `newpxmath`, `newtxmath`, `mtpro2` to the list
       of packages that automatically invoke `no-math`.
 
-    * Add `\providefontfamily`, `\setfontface`, `\renewfontface`, and `\providefontface`.
+  * Add `\providefontfamily`, `\setfontface`, `\renewfontface`, and `\providefontface`.
 
-    * Add local/global distinction with `\fontspec_(g)set_family:Nnn` and `\fontspec_(g)set_fontface:NNnn`.
+  * Add local/global distinction with `\fontspec_(g)set_family:Nnn` and `\fontspec_(g)set_fontface:NNnn`.
 
 
 ## v2.7a (2019/01/25)
 
-    * One last (?!) fix for recent regression (!!). I am not getting enough sleep at the moment and it is too hot.
-    * Add `LocalForms=On/Off/Reset` to control the `locl` OpenType tag.
-    * Reorganise some documentation.
-    * Remove redundant redefinition of `\-` which is nowadays defined correctly by the LaTeX2e kernel.
-    * Add code to remove the patching of verbatim commands and environments when the new
+  * One last (?!) fix for recent regression (!!). I am not getting enough sleep at the moment and it is too hot.
+  * Add `LocalForms=On/Off/Reset` to control the `locl` OpenType tag.
+  * Reorganise some documentation.
+  * Remove redundant redefinition of `\-` which is nowadays defined correctly by the LaTeX2e kernel.
+  * Add code to remove the patching of verbatim commands and environments when the new
       `\verbvisiblespace` command is defined in a future version of LaTeX2e.
 
 
 ## v2.7 (2019/01/24)
 
-    * Add new `ScaleAgain` feature for compounding scale factors.
+  * Add new `ScaleAgain` feature for compounding scale factors.
       (This is largely to support `unicode-math` but may be useful by others.)
-    * `\oldstylenums` no longer overwritten if `textcomp` loaded after `fontspec`.
-    * More fixes for recent regressions (sorry!).
+  * `\oldstylenums` no longer overwritten if `textcomp` loaded after `fontspec`.
+  * More fixes for recent regressions (sorry!).
 
 
 ## v2.6l (2019/01/18)
 
-    * REALLY fix crash when loading fonts that are missing a requested script.
-    * Lots of internal logic changes for what should have been an easy fix :(
+  * REALLY fix crash when loading fonts that are missing a requested script.
+  * Lots of internal logic changes for what should have been an easy fix :(
 
 
 ## v2.6k (2019/01/16)
 
-    * Fix crash when loading fonts that are missing a requested script.
+  * Fix crash when loading fonts that are missing a requested script.
 
 
 ## v2.6j (2019/01/10)
 
-    * Re-sync with `expl3` for deprecated commands.
-    * Added support for `\hbar` if anyone is relying on `fontspec` to emulate legacy maths.
+  * Re-sync with `expl3` for deprecated commands.
+  * Added support for `\hbar` if anyone is relying on `fontspec` to emulate legacy maths.
 
 
 ## v2.6i (2018/08/02)
 
-    * Emergency bug-fix -- a one-char typo broke loading of bold fonts!
-    * Some minor updates to the docs regarding “family names” of fonts.
-    * Using `\defaultfontfeatures` to specify a font face by a custom name can now use
+  * Emergency bug-fix -- a one-char typo broke loading of bold fonts!
+  * Some minor updates to the docs regarding “family names” of fonts.
+  * Using `\defaultfontfeatures` to specify a font face by a custom name can now use
       `Font=` to specify the filename.
 
 
 ## v2.6h (2018/07/30)
 
-    * `expl3` internals updated so loading `expl3` with the `check-declarations` option will run without error.
-    * Fix bug with `FontFace` in which spaces weren't being ignored.
+  * `expl3` internals updated so loading `expl3` with the `check-declarations` option will run without error.
+  * Fix bug with `FontFace` in which spaces weren't being ignored.
 
 
 ## v2.6g (2017-11-09)
 
-    * Bugfix for clash introduced with last version. When loading `babel`
+  * Bugfix for clash introduced with last version. When loading `babel`
       before `fontspec` the following error arose:
 
           ! Control sequence \latinencoding already defined.
@@ -112,150 +121,150 @@
 
 ## v2.6f (2017-11-05)
 
-    * Fix loading of Graphite fonts and add a little documentation (a better interface is needed, though)
-    * Correct and simplify some internal code that fixes a bug in the way some fonts are displayed in `\tracingoutput` mode.
-    * This also fixes an obscure bug using the API in which a query for a selected font feature
+  * Fix loading of Graphite fonts and add a little documentation (a better interface is needed, though)
+  * Correct and simplify some internal code that fixes a bug in the way some fonts are displayed in `\tracingoutput` mode.
+  * This also fixes an obscure bug using the API in which a query for a selected font feature
       would test against the upright font in the current family regardless of the face/shape actually in use.
-    * This package now complies with the `expl3` option `check-declarations`.
+  * This package now complies with the `expl3` option `check-declarations`.
 
 
 ## v2.6e (2017/09/22)
 
-    * Re-enable use of `HyphenChar=None` in LuaLaTeX. (Hyphenation and font choice are
+  * Re-enable use of `HyphenChar=None` in LuaLaTeX. (Hyphenation and font choice are
       decoupled in LuaTeX, except for this one setting.)
-    * Some internal changes needed by `unicode-math` to fix some cross-over code.
+  * Some internal changes needed by `unicode-math` to fix some cross-over code.
 
 
 ## v2.6d (2017/08/14)
 
-    * Update Scripts to Unicode 1.8.2 (thanks Werner)
-    * Remove `HyphenChar` feature when running LuaTeX — use `\prehyphenchar` LuaTeX primitive instead.
-    * Rewrite test suite so that automated testing actually functions correctly and automatically. Thanks to Joseph for introducing me to Travis CI.
+  * Update Scripts to Unicode 1.8.2 (thanks Werner)
+  * Remove `HyphenChar` feature when running LuaTeX — use `\prehyphenchar` LuaTeX primitive instead.
+  * Rewrite test suite so that automated testing actually functions correctly and automatically. Thanks to Joseph for introducing me to Travis CI.
 
 
 ## v2.6c (2017/07/23)
 
-    * Emergency bug-fix.
+  * Emergency bug-fix.
 
 
 ## v2.6b (2017/07/16)
 
-    * Fix conflict with Polyglossia and `Scale=MatchLowercase`.
-    * New feature `IgnoreFontspecFile` to avoid loading the `.fontspec` file for a font.
-    * Fix regression with `\fontspec_if_feature:nTF`
+  * Fix conflict with Polyglossia and `Scale=MatchLowercase`.
+  * New feature `IgnoreFontspecFile` to avoid loading the `.fontspec` file for a font.
+  * Fix regression with `\fontspec_if_feature:nTF`
       (which broke `realscripts`, oops — must improve my test suite)
 
 
 ## v2.6a (2017/03/31)
 
-    * Fix crashing bug with `..Reset` and `ResetAll` keys.
-    * Fix crashing bug with `\newfontface`.
+  * Fix crashing bug with `..Reset` and `ResetAll` keys.
+  * Fix crashing bug with `\newfontface`.
 
 ## v2.6 (2017/02/12)
 
-    * Change the new behaviour of `\emph` (and `\emfontdeclare`) to act only on the NFSS font shape; using the series as well was too fragile.
-    * Add `\strong` as the "weight" analogy to `\emph`. This will need some extra syntactic sugar from `fontspec` before it becomes truly useful.
-    * Add `Numbers=Tabular` alias for `Numbers=Monospaced`.
-    * Fix occasional bug with "chained" keyval choices such as `Numbers={Lining,Proportional}` in which only the first choice would be recognised.
-    * Fix interaction with `RawFeature` and "proper" `fontspec` features.
-    * Fix regression in which `C:\...` file paths in Windows couldn't be used.
-    * Fix regression in XeTeX in which `Ligatures=TeX` overrode `Mapping=..` regardless of where the former was declared in the feature list.
-    * Fix bug (sorry!) in `\newopentypefeature`.
-    * Improve monospace font in documentation.
+  * Change the new behaviour of `\emph` (and `\emfontdeclare`) to act only on the NFSS font shape; using the series as well was too fragile.
+  * Add `\strong` as the "weight" analogy to `\emph`. This will need some extra syntactic sugar from `fontspec` before it becomes truly useful.
+  * Add `Numbers=Tabular` alias for `Numbers=Monospaced`.
+  * Fix occasional bug with "chained" keyval choices such as `Numbers={Lining,Proportional}` in which only the first choice would be recognised.
+  * Fix interaction with `RawFeature` and "proper" `fontspec` features.
+  * Fix regression in which `C:\...` file paths in Windows couldn't be used.
+  * Fix regression in XeTeX in which `Ligatures=TeX` overrode `Mapping=..` regardless of where the former was declared in the feature list.
+  * Fix bug (sorry!) in `\newopentypefeature`.
+  * Improve monospace font in documentation.
 
-    * N.B. There is currently a known issue with TTC fonts and LuaTeX; currently they cannot be loaded through the `fontspec` interface, but this issue should soon be addressed by the `luaotfload` package.
+  * N.B. There is currently a known issue with TTC fonts and LuaTeX; currently they cannot be loaded through the `fontspec` interface, but this issue should soon be addressed by the `luaotfload` package.
 
 ## v2.5d (2017/01/24) "oops"
 
-    * Add `\fontspec_if_small_caps:TF`
-    * Fix bug in `\emph` (!!)
+  * Add `\fontspec_if_small_caps:TF`
+  * Fix bug in `\emph` (!!)
 
 ## v2.5c (2017/01/20) "Christmas 2016 release"
 
-    * `TU` font encoding now default, with encoding files provided by the kernel.
-    * Experimental interface added for customising encodings.
-    * Add feature `Ornament=`*n* corresponding to OpenType feature `+ornm=`*n*.
-    * Add feature `FontIndex=`*n* to support TrueType Collection (TTC) files.
-    * Nested `\emph` is now much smarter and will cleverly nest even if manual font changes are made.
-    * Tries to resolve situations when font features clash.
+  * `TU` font encoding now default, with encoding files provided by the kernel.
+  * Experimental interface added for customising encodings.
+  * Add feature `Ornament=`*n* corresponding to OpenType feature `+ornm=`*n*.
+  * Add feature `FontIndex=`*n* to support TrueType Collection (TTC) files.
+  * Nested `\emph` is now much smarter and will cleverly nest even if manual font changes are made.
+  * Tries to resolve situations when font features clash.
       E.g., `Numbers={Uppercase,Lowercase}` will define only `+onum` rather than the previous behaviour of `+lnum;+onum` to let the engine sort things out. Coverage may still be preliminary.
-    * Add API function `\fontspec_if_current_feature:nTF` for querying selected features based on their OpenType tag.
-    * Add user function `\IfFontFeatureActiveTF` for querying selected features based on their `fontspec` specification.
-    * All "tag-based" OpenType features are now provided in `Feat`/`FeatOff`/`FeatReset` forms to disable and reset them.
-    * `ResetAll` provided for all "tag-based" OpenType feature keys. (E.g., `Ligatures=ResetAll`.)
-    * Big table of OpenType feature tags to help cross-reference which fontspec feature (if any) corresponds to which OpenType feature.
-    * Bug fixed for `Script` selection.
+  * Add API function `\fontspec_if_current_feature:nTF` for querying selected features based on their OpenType tag.
+  * Add user function `\IfFontFeatureActiveTF` for querying selected features based on their `fontspec` specification.
+  * All "tag-based" OpenType features are now provided in `Feat`/`FeatOff`/`FeatReset` forms to disable and reset them.
+  * `ResetAll` provided for all "tag-based" OpenType feature keys. (E.g., `Ligatures=ResetAll`.)
+  * Big table of OpenType feature tags to help cross-reference which fontspec feature (if any) corresponds to which OpenType feature.
+  * Bug fixed for `Script` selection.
 
 ## v2.5b (2016/05/14) "More bugs" (somehow never released)
 
-    * Fixed bug with garbage text printed in certain "verbatim" situations under LuaTeX.
-    * Improve interaction between optical sizes and small caps.
-    * Remove documentation for `FeatureFile`, since this is no longer supported under LuaLaTeX
+  * Fixed bug with garbage text printed in certain "verbatim" situations under LuaTeX.
+  * Improve interaction between optical sizes and small caps.
+  * Remove documentation for `FeatureFile`, since this is no longer supported under LuaLaTeX
       (there are other methods to perform the same thing, but no "easy" user interface that `fontspec` can provide at this stage).
-    * Fix regression causing an error message if `fontspec` loaded before `\documentclass'.
+  * Fix regression causing an error message if `fontspec` loaded before `\documentclass'.
 
 ## v2.5a (2016/02/01) "Bugs fixed"
 
-    * Rather embarrassing bug fix! (`unicode-math` was broken.)
-    * Remember to add the `fontspec.cfg` file to the distribution.
-    * Remove `+trep` from `Ligatures=TeX` (no longer necessary).
-    * Add some basic tests using `l3build`; more to come.
-    * Simplify some internal Lua code and package loading code.
+  * Rather embarrassing bug fix! (`unicode-math` was broken.)
+  * Remember to add the `fontspec.cfg` file to the distribution.
+  * Remove `+trep` from `Ligatures=TeX` (no longer necessary).
+  * Add some basic tests using `l3build`; more to come.
+  * Simplify some internal Lua code and package loading code.
 
 ## v2.5 (2016/01/30) "TL2016 release"
 
-    * Provide a new Unicode font encoding ("TU") to replace EU1/EU2 and xunicode.
-    * Activate with package option `[tuenc]'; once it becomes the default (later this year), `[euenc]` option will revert to the old behaviour.
-    * New command `\emfontdeclare` for defining font shapes when arbitrarily nesting the `\emph` command.
-    * Allow slanted small caps and better internal methods for "combining" font shapes; this fixes a few bugs.
-    * Incorporate "new" font script tags for Indic fonts. E.g., when selecting `Script=Bengali`, fontspec will first query the font for the `bng2` OpenType script, and if not found select `beng`.
-    * Restrict some font features from being able to be used within `\addfontfeatures` that were causing some font-loading confusion.
-    * Fixed behaviour in which `\baselineskip` and `\f at size` would (possibly) change values after loading the packge.
-    * Remove copy of `fixltx2e`'s code for footnote symbols; handled by LaTeX2e now.
-    * Deprecate `ExternalLocation` for the simpler (and identical) `Path` option.
-    * Improvement to some warnings/info messages.
-    * Improve structure of code.
+  * Provide a new Unicode font encoding ("TU") to replace EU1/EU2 and xunicode.
+  * Activate with package option `[tuenc]'; once it becomes the default (later this year), `[euenc]` option will revert to the old behaviour.
+  * New command `\emfontdeclare` for defining font shapes when arbitrarily nesting the `\emph` command.
+  * Allow slanted small caps and better internal methods for "combining" font shapes; this fixes a few bugs.
+  * Incorporate "new" font script tags for Indic fonts. E.g., when selecting `Script=Bengali`, fontspec will first query the font for the `bng2` OpenType script, and if not found select `beng`.
+  * Restrict some font features from being able to be used within `\addfontfeatures` that were causing some font-loading confusion.
+  * Fixed behaviour in which `\baselineskip` and `\f at size` would (possibly) change values after loading the packge.
+  * Remove copy of `fixltx2e`'s code for footnote symbols; handled by LaTeX2e now.
+  * Deprecate `ExternalLocation` for the simpler (and identical) `Path` option.
+  * Improvement to some warnings/info messages.
+  * Improve structure of code.
 
 ## v2.4e (2015/09/24)
 
-    * Allow `[Path=...]` to be specified for individual font faces.
-    * Continue to normalise naming with expl3. (Ongoing.)
+  * Allow `[Path=...]` to be specified for individual font faces.
+  * Continue to normalise naming with expl3. (Ongoing.)
 
 ## v2.4d (2015/07/22)
 
-    * Rename an internal expl3 function or two.
+  * Rename an internal expl3 function or two.
 
 ## v2.4c (2015/03/14)
 
-    * v2.4b was never released, sorry!
-    * This time *really* fix `\@fnsymbol` and avoid overwriting it if already fixed.
-    * Fix "`Renderer=Graphite`" (off-by-one error).
-    * Fix some edge cases for `\aliasfontfeature`.
+  * v2.4b was never released, sorry!
+  * This time *really* fix `\@fnsymbol` and avoid overwriting it if already fixed.
+  * Fix "`Renderer=Graphite`" (off-by-one error).
+  * Fix some edge cases for `\aliasfontfeature`.
 
 ## v2.4b (2014/08/23)
 
-    * Improve backwards compatibility w.r.t. recent argument order change;
+  * Improve backwards compatibility w.r.t. recent argument order change;
       specifically, if an optional argument is presented before the font name
       then avoid looking for one afterwards.
-    * Fix \@fnsymbol; it was defined as a \protected macro, where in fact its internal text-or-math switch needed to be instead.
-    * No longer lowercase fontnames internally; this fixes a bug with loading
+  * Fix \@fnsymbol; it was defined as a \protected macro, where in fact its internal text-or-math switch needed to be instead.
+  * No longer lowercase fontnames internally; this fixes a bug with loading
       mixed-case ".fontspec" files.
-    * Fixed some documentation typos/inconsistencies related to recent changes.
+  * Fixed some documentation typos/inconsistencies related to recent changes.
 
 ## v2.4a (2014/06/21)
 
-    * No longer load fixltx2e.sty -- this package should really be loaded before \documentclass.
-    * Avoid deprecated l3fp code.
-    * A couple of bugs introduced with v2.4 fixed.
+  * No longer load fixltx2e.sty -- this package should really be loaded before \documentclass.
+  * Avoid deprecated l3fp code.
+  * A couple of bugs introduced with v2.4 fixed.
 
 ## v2.4 (2014/06/01)
 
-    * Significant change to the user interface: instead of `\setmainfont[features]{font}`, you now write `\setmainfont{font}[features]`.
+  * Significant change to the user interface: instead of `\setmainfont[features]{font}`, you now write `\setmainfont{font}[features]`.
       Backwards compatibility is of course preserved.
 
       The reason for this change is to improve the visual comprehension of the font loading syntax with large numbers of font features.
 
-    * Defaults for symbolic font families like this can now be specified with
+  * Defaults for symbolic font families like this can now be specified with
 
             \defaultfontfeatures[\rmfamily]{...}
 
@@ -264,20 +273,20 @@
             \defaultfontfeatures[\headingsfont]{...}
             \newfontfamily\headingsfont{...}
 
-    * New `PunctuationSpace=WordSpace` and `PunctuationSpace=TwiceWordSpace` settings, intended for monospaced fonts; these force the space after a period to be exactly one or two spaces wide, respectively, which preserves character alignment across lines.
+  * New `PunctuationSpace=WordSpace` and `PunctuationSpace=TwiceWordSpace` settings, intended for monospaced fonts; these force the space after a period to be exactly one or two spaces wide, respectively, which preserves character alignment across lines.
 
-    * The features above now allow changes to the default settings:
+  * The features above now allow changes to the default settings:
 
-      * `Ligatures=TeX` is enabled by default with `\setmainfont` and `\setsansfont`.
-      * `WordSpace={1,0,0}` and `PunctuationSpace=WordSpace` are now enabled by default for `\setmonofont` to produce better monospaced results.
-      * (These can be adjusted by created your own `fontspec.cfg` file.)
+    * `Ligatures=TeX` is enabled by default with `\setmainfont` and `\setsansfont`.
+    * `WordSpace={1,0,0}` and `PunctuationSpace=WordSpace` are now enabled by default for `\setmonofont` to produce better monospaced results.
+    * (These can be adjusted by created your own `fontspec.cfg` file.)
 
-    * `SizeFeatures` can now be nested inside `ItalicFeatures` (etc.) and behaves correctly. This has been a very long overdue bug!
+  * `SizeFeatures` can now be nested inside `ItalicFeatures` (etc.) and behaves correctly. This has been a very long overdue bug!
 
-    * New feature `NFSSFamily=ABC` to set the NFSS family of a font to “`ABC`”. Useful
+  * New feature `NFSSFamily=ABC` to set the NFSS family of a font to “`ABC`”. Useful
       when other packages use the `\fontfamily{ABC}\selectfont` interface.
 
-    * New feature `FontFace = {series}{shape}{font}` allows a font face to be loaded with a specific NFSS font series and font shape.
+  * New feature `FontFace = {series}{shape}{font}` allows a font face to be loaded with a specific NFSS font series and font shape.
       A more verbose syntax allows arbitrary font features as well (and this also plays nicely with `SizeFeatures`):
 
             \fontspec{myfont.otf}[
@@ -286,60 +295,60 @@
 
       The code above, for example, will allow a bold upright italic font to be selected using the standard NFSS interface: `\fontseries{b}\fontshape{ui}\selectfont`.
 
-    * `\defaultfontfeatures+` (note the `+`) can now be used to append to the default font feature set.
+  * `\defaultfontfeatures+` (note the `+`) can now be used to append to the default font feature set.
 
-    * Setting the `SmallCapsFont` using the `*`-replacement notation has been improved/fixed.
+  * Setting the `SmallCapsFont` using the `*`-replacement notation has been improved/fixed.
 
 ## v2.3c (2013/05/20)
 
-    * Compatbility with luaotfload 2013/05/20 2.2c, support for older version
+  * Compatbility with luaotfload 2013/05/20 2.2c, support for older version
       removed.
 
 ## v2.3b (2013/05/12)
 
-    * Compatibility with new (and future) version of luaotfload
+  * Compatibility with new (and future) version of luaotfload
 
 ## v2.3a (2013/03/16)
 
-    * Bug fix update to retain compatibility with new expl3
+  * Bug fix update to retain compatibility with new expl3
 
 ## v2.3 (2013/02/25)
 
-    * Add support for per-font options in `\defaultfontfeatures`
-    * Add support for `<fontname>.fontspec` per-font configuration files
-    * Keep up-to-date with expl3 changes
+  * Add support for per-font options in `\defaultfontfeatures`
+  * Add support for `<fontname>.fontspec` per-font configuration files
+  * Keep up-to-date with expl3 changes
 
 ## v2.2b (2012/05/06) "TL2012 version"
 
-    * Fix error with AutoFakeSlant/Bold (#113) and when used with external fonts (#128)
-    * Add warning when using FakeBold in LuaLaTeX, where it's not supported
-    * Fix slshape misassignment introduced in v2.2
-    * Allow fontspec to be loaded before \documentclass
+  * Fix error with AutoFakeSlant/Bold (#113) and when used with external fonts (#128)
+  * Add warning when using FakeBold in LuaLaTeX, where it's not supported
+  * Fix slshape misassignment introduced in v2.2
+  * Allow fontspec to be loaded before \documentclass
       (or rather fix the regression that broke this)
-    * Avoid using the calc package now that it's no longer loaded by expl3
-    * Allow multiple values to StylisticSet and Alternate font options
+  * Avoid using the calc package now that it's no longer loaded by expl3
+  * Allow multiple values to StylisticSet and Alternate font options
 
 ## v2.2a (2011/09/14)
 
-    * Bug fix: improve backwards compatibility for packages that use old
+  * Bug fix: improve backwards compatibility for packages that use old
       fontspec internals such as mathspec.
 
 ## v2.2  (2011/09/13)
 
-    * Support alternate selections in CharacterVariant (cvxx in OpenType)
+  * Support alternate selections in CharacterVariant (cvxx in OpenType)
       using new syntax `[CharacterVariant=5:2]`.
-    * Add `fontspec`-compatible `\oldstylenums` and `\liningnums` commands.
-    * New programmer's function `\fontspec_set_fontface:NNnn` (for use when
+  * Add `fontspec`-compatible `\oldstylenums` and `\liningnums` commands.
+  * New programmer's function `\fontspec_set_fontface:NNnn` (for use when
       `\zf at basefont` might previously have been queried).
-    * Log file output is slightly tidier.
-    * Some old lingering bugs squashed:
+  * Log file output is slightly tidier.
+  * Some old lingering bugs squashed:
       - Small caps font selection was broken in some cases.
         (Thanks Enrico Gregorio.)
       - Fonts loaded by filename with under-specified shapes threw an error
         (e.g., asking explicitly for bold but not italic).
         (Thanks Vafa Khalighi.)
-    * Documentation improvements largely due to Markus Böhning.
-    * Many internal changes, among which:
+  * Documentation improvements largely due to Markus Böhning.
+  * Many internal changes, among which:
       - `xkeyval` package no longer used for option processing;
         `expl3`'s `l3keys` used instead.
         This allows `fontspec` to be loaded before `\documentclass`
@@ -353,48 +362,48 @@
 
 ## v2.1g (2011/08/02)
 
-    * No longer uses the binhex package, avoiding some name clashes with TIPA
+  * No longer uses the binhex package, avoiding some name clashes with TIPA
 
 ## v2.1f (2011/02/26)
 
-    * Finally add a real error message when a font cannot be found!
-    * Add "Letters=Random" feature.
-    * Fix bug in which "Unknown feature `'..." warnings
+  * Finally add a real error message when a font cannot be found!
+  * Add "Letters=Random" feature.
+  * Fix bug in which "Unknown feature `'..." warnings
       were shown in the log file.
-    * Some small documentation improvements.
+  * Some small documentation improvements.
 
 ## v2.1e (2010/11/17)
 
-    * Internal changes for luatexbase v0.3.
+  * Internal changes for luatexbase v0.3.
 
 ## v2.1d (2010/11/07)
 
-    * Bug fix when \itdefault is "sl" rather than "it".
+  * Bug fix when \itdefault is "sl" rather than "it".
       E.g., when using the "slides" class.
-    * Minor internal changes, including merging some code from unicode-math.
+  * Minor internal changes, including merging some code from unicode-math.
 
 ## v2.1c (2010/10/13)
 
-    * New documentation for defining custom kerning and ligatures
+  * New documentation for defining custom kerning and ligatures
       when using LuaLaTeX.
-    * Fix bug when defining bold italic fonts by filename.
-    * Avoid infinite loop when the Latin script is requested for a font
+  * Fix bug when defining bold italic fonts by filename.
+  * Avoid infinite loop when the Latin script is requested for a font
       that does not contain it. TODO: a suitable fallback script should be
       chosen; right now we just ignore the script selection.
 
 ## v2.1b (2010/09/29)
 
-    * Fix for bug introduced in the last release:
+  * Fix for bug introduced in the last release:
       small caps weren't being automatically selected correctly
 
 ## v2.1a (2010/09/27)
 
-    * Fix for colours bug introduced in the last update
-    * Fix for for bad interaction with LuaLaTeX and fallback fonts
+  * Fix for colours bug introduced in the last update
+  * Fix for for bad interaction with LuaLaTeX and fallback fonts
       (such as using \slshape when no slanted font specified)
-    * Behaviour/messaging improvement when scripts/languages are requested
+  * Behaviour/messaging improvement when scripts/languages are requested
       that do not exist in the font
-    * Fix bug with detecting font features/scripts in some cases with:
+  * Fix bug with detecting font features/scripts in some cases with:
 
         - `\fontspec_if_feature:n(TF)`
         - `\fontspec_if_language:n(TF)`
@@ -401,46 +410,46 @@
         - `\fontspec_if_current_script:n(TF)`
         - `\fontspec_if_current_language:n(TF)`
 
-    * Some messages in the log file are improved
-    * Code for "visible space" fixed for LuaLaTeX use
-    * Lots of internal changes to bring the implementation closer
+  * Some messages in the log file are improved
+  * Code for "visible space" fixed for LuaLaTeX use
+  * Lots of internal changes to bring the implementation closer
       to being "native expl3".
 
 ## v2.1 (2010/09/19)
 
-    * Now load xunicode internally for consistent behaviour in
+  * Now load xunicode internally for consistent behaviour in
       XeLaTeX and LuaLaTeX.
-    * Font commands now include \fontencoding internally, easing their
+  * Font commands now include \fontencoding internally, easing their
       use together with legacy TeX fonts.
-    * Colour & Opacity now behave a little better.
-    * Nested emphasis with \emph now also occurs inside a "slanted" shape.
-    * Some compatibility commands/options added that were removed.
+  * Colour & Opacity now behave a little better.
+  * Nested emphasis with \emph now also occurs inside a "slanted" shape.
+  * Some compatibility commands/options added that were removed.
       in the transition to v2.
-    * Bug fix for a problem triggered after counters got too high.
+  * Bug fix for a problem triggered after counters got too high.
 
 ## v2.0c (2010/08/01)
   Bug fix and documentation tune-up.
 
-    * Significant bug fix reported simultaneously by Enrico Gregorio and
+  * Significant bug fix reported simultaneously by Enrico Gregorio and
       Don Hosek.
-    * Many documentation improvements and additions due to David Perry.
-    * Documentation typo thanks to John McChesney-Young
+  * Many documentation improvements and additions due to David Perry.
+  * Documentation typo thanks to John McChesney-Young
 
 ## v2.0b (2010/07/14)
   *Actually* the final release before TeX Live 2010.
 
-    * Improved examples in the documentation, with fewer proprietary fonts
-    * All font examples are included as separate images on CTAN, so the
+  * Improved examples in the documentation, with fewer proprietary fonts
+  * All font examples are included as separate images on CTAN, so the
       manual can be compiled (with pdfLaTeX) by anyone, anywhere
-    * LuaLaTeX fixes for the StylisticSet and Annotation features
-    * New OpenType feature `CharacterVariant` now supported
-    * Minor change: `Ligatures=Historical` is now `Ligatures=Historic` for consistency
+  * LuaLaTeX fixes for the StylisticSet and Annotation features
+  * New OpenType feature `CharacterVariant` now supported
+  * Minor change: `Ligatures=Historical` is now `Ligatures=Historic` for consistency
 
 ## v2.0a (2010/07/11)
   Final release before TeX Live 2010.
 
-    * Bug fix for the Language setting being ignored
-    * Add programmer's command `\fontspec_glyph_if_exist:NnTF`
-    * Many documentation improvements, especially for LuaTeX features
+  * Bug fix for the Language setting being ignored
+  * Add programmer's command `\fontspec_glyph_if_exist:NnTF`
+  * Many documentation improvements, especially for LuaTeX features
       `FeatureFile=...` and `Numbers=Arabic`.
-    * Add `Parsi` and `Persian` synonyms for `Language=Farsi`
+  * Add `Parsi` and `Persian` synonyms for `Language=Farsi`

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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-api.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -356,7 +356,7 @@
       {
         \tl_if_eq:ccTF
           { \f at encoding/\f at family/\f at series/\l_@@_smcp_shape_tl }
-          { \f at encoding/\f at family/\f at series/\updefault }
+          { \f at encoding/\f at family/\f at series/\shapedefault }
           { \prg_return_false: }
           { \prg_return_true:  }
       }
@@ -378,7 +378,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-closing.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -32,7 +32,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-enc.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -147,7 +147,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-aat.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -230,7 +230,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-feat-opentype.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -569,7 +569,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-fontload.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -124,7 +124,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-graphite.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -116,7 +116,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-interfaces.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -284,7 +284,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-internal.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -233,7 +233,7 @@
 
 %<debug>\typeout{Set~ base~ font~ for~ preliminary~ analysis: \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
     \@@_primitive_font_set:NnnF \l_@@_test_font
-      { \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
+      { \@@_construct_font_call:nn { \l_@@_fontname_up_tl } { \l_@@_pre_feat_sclist } }
       { \f at size pt - 2sp }
       { \@@_error:nx {font-not-found} {\l_@@_fontname_up_tl} }
 
@@ -240,7 +240,7 @@
 %<debug>\typeout{Set~ base~ font~ properly: \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
     \@@_set_font_type:N \l_@@_test_font
     \@@_primitive_font_gset:Onn \l_@@_fontface_cs_tl
-      {  \@@_construct_font_call:nn { \l_@@_fontname_up_tl } {} }
+      {  \@@_construct_font_call:nn { \l_@@_fontname_up_tl } { \l_@@_pre_feat_sclist } }
       { \f at size pt }
 
     \l_@@_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
@@ -496,13 +496,12 @@
 %    \begin{macrocode}
 \cs_new:Nn \@@_set_faces:
   {
-    \@@_add_nfssfont:nnnn \mddefault \updefault \l_fontspec_fontname_tl      \l_@@_fontfeat_up_clist
-    \@@_add_nfssfont:nnnn \bfdefault \updefault \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 \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 \mddefault \shapedefault \l_fontspec_fontname_tl \l_@@_fontfeat_up_clist
+    \@@_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 \bfdefault \itdefault    \l_@@_fontname_bfit_tl  \l_@@_fontfeat_bfit_clist
+    \@@_add_nfssfont:nnnn \bfdefault \sldefault    \l_@@_fontname_bfsl_tl  \l_@@_fontfeat_bfsl_clist
     \prop_map_inline:Nn \l_@@_nfssfont_prop { \@@_set_faces_aux:nnnnn ##2 }
   }
 %    \end{macrocode}
@@ -646,8 +645,8 @@
 \prg_new_conditional:Nnn \@@_if_autofont:nn {T,TF}
   {
     \group_begin:
-    \@@_primitive_font_set:Nnn \l_@@_tmpa_font { \@@_construct_font_call:nn {#1}   {} } { \f at size pt + 1sp }
-    \@@_primitive_font_set:Nnn \l_@@_tmpb_font { \@@_construct_font_call:nn {#1#2} {} } { \f at size pt + 1sp }
+    \@@_primitive_font_set:Nnn \l_@@_tmpa_font { \@@_construct_font_call:nn {#1}   { \l_@@_pre_feat_sclist } } { \f at size pt + 1sp }
+    \@@_primitive_font_set:Nnn \l_@@_tmpb_font { \@@_construct_font_call:nn {#1#2} { \l_@@_pre_feat_sclist } } { \f at size pt + 1sp }
     \str_if_eq:eeTF { \@@_primitive_font_get_name:N \l_@@_tmpa_font } { \@@_primitive_font_get_name:N \l_@@_tmpb_font }
       { \group_end: \prg_return_false: }
       { \group_end: \prg_return_true: }
@@ -683,7 +682,7 @@
       { \clist_clear:N \l_@@_fontopts_clist }
     \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l_@@_fontopts_clist
     \@@_primitive_font_set:OnnF \l_@@_fontface_cs_tl
-      { \@@_construct_font_call:nn {#1} {} } { \f at size pt }
+      { \@@_construct_font_call:nn {#1} { \l_@@_pre_feat_sclist } } { \f at size pt }
       { \@@_error:nx {font-not-found} {#2} }
   }
 %    \end{macrocode}
@@ -882,8 +881,8 @@
         \exp_not:n { \\ }
         -~ \exp_not:N \str_case:nn {#1/#2}
         {
-          {\mddefault/\updefault} {'normal'~}
-          {\bfdefault/\updefault} {'bold'~}
+          {\mddefault/\shapedefault} {'normal'~}
+          {\bfdefault/\shapedefault} {'bold'~}
           {\mddefault/\itdefault} {'italic'~}
           {\mddefault/\sldefault} {'slanted'~}
           {\bfdefault/\itdefault} {'bold~ italic'~}
@@ -896,10 +895,10 @@
         {
           {\mddefault/\scdefault} {'small~ caps'~}
           {\bfdefault/\scdefault} {'bold~ small~ caps'~}
-          {\mddefault/\itscdefault} {'italic~ small~ caps'~}
-          {\bfdefault/\itscdefault} {'bold~ italic~ small~ caps'~}
-          {\mddefault/\slscdefault} {'slanted~ small~ caps'~}
-          {\bfdefault/\slscdefault} {'bold~ slanted~ small~ caps'~}
+          {\mddefault/\scitdefault} {'italic~ small~ caps'~}
+          {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~}
+          {\mddefault/\scsldefault} {'slanted~ small~ caps'~}
+          {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~}
         }~( #1 / \@@_combo_sc_shape:n {#2} )~
         with~ NFSS~ spec.:~
         \l_@@_nfss_sc_tl
@@ -1184,7 +1183,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-keyval.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -99,7 +99,7 @@
 \keys_define:nn {fontspec-renderer}
   {
     Renderer .choices:nn =
-      {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,Harfbuzz}
+      {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,HarfBuzz,Harfbuzz}
       {
         \int_compare:nTF {\l_keys_choice_int <= 4}
           {
@@ -111,7 +111,7 @@
             \tl_gset:Nx \g_@@_single_feat_tl { \l_@@_renderer_tl }
           }
           {
-            \@@_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/Harfbuzz}
+            \@@_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/HarfBuzz}
           }
       }
   }
@@ -120,18 +120,18 @@
 \keys_define:nn {fontspec-renderer}
   {
     Renderer .choices:nn =
-      {Full,Node,Basic,Base,Harfbuzz,OpenType,AAT,Graphite}
+      {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite}
       {
         \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l_@@_harfbuzz_bool }
 
         \tl_set:Nx \l_@@_mode_tl
           {
-            \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} }
+            \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}}
           }
 
         \tl_set:Nx \l_@@_shaper_tl
           {
-            \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {ot} 7 {coretext_aat} 8 {graphite2} }
+            \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} }
           }
 
 %<debug>\typeout{Mode:~"\l_@@_mode_tl"~/~Shaper:~"\l_@@_shaper_tl"}
@@ -379,8 +379,17 @@
   }
 %    \end{macrocode}
 %
+% A hack to fix a test, needs to be investigated why necessary!
+%    \begin{macrocode}
+\@@_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
+\@@_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
+\@@_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
+\@@_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
+%    \end{macrocode}
+
 %
 %
+%
 % \subsection{General font-independent features}
 %
 % These features can be applied to any font.
@@ -883,7 +892,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-lang.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -407,7 +407,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-load.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -60,7 +60,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-math.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -159,25 +159,25 @@
 % as per usual with \cmd\setboldmathrm, which stores the appropriate
 % family name in \cmd\g_@@_bfmathrm_tl.
 %    \begin{macrocode}
-  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\updefault
-  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\updefault
+  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\shapedefault
   \DeclareSymbolFontAlphabet\mathrm{operators}
   \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\mddefault\itdefault
-  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\updefault
-  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g_@@_mathsf_tl\mddefault\updefault
-  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g_@@_mathtt_tl\mddefault\updefault
-  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\updefault
+  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g_@@_mathsf_tl\mddefault\shapedefault
+  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g_@@_mathtt_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\shapedefault
   \tl_if_empty:NTF \g_@@_bfmathrm_tl
    {
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g_@@_mathrm_tl\bfdefault\itdefault
    }
    {
-    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\mddefault\updefault
-    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\bfdefault\updefault
+    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\mddefault\shapedefault
+    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\bfdefault\shapedefault
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g_@@_bfmathrm_tl\mddefault\itdefault
    }
-  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g_@@_mathsf_tl\bfdefault\updefault
-  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g_@@_mathtt_tl\bfdefault\updefault
+  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g_@@_mathsf_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g_@@_mathtt_tl\bfdefault\shapedefault
  }
 %    \end{macrocode}
 % \end{macro}
@@ -248,7 +248,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-msg.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -268,7 +268,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opening.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -201,7 +201,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-opentype.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -466,7 +466,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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-patches.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-patches.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -6,164 +6,12 @@
 %<*fontspec>
 %    \end{macrocode}
 %
+% Nothing here right now.
 %
-% \subsection{Verbatims}
-%
-% Many thanks to Apostolos Syropoulos for discovering this problem and writing the  redefinion of \LaTeX's |verbatim| environment and \cs{verb*} command.
-%
-% \begin{macro}{\fontspec_visible_space:}
-% Print \unichar{2423}{Open box}, which is used to visibly display a space character.
 %    \begin{macrocode}
-\cs_new_protected:Nn \fontspec_visible_space:
-  {
-    \@@_primitive_font_glyph_if_exist:NnTF \font {"2423}
-      { \char"2423\scan_stop: }
-      { \fontspec_visible_space_fallback: }
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_visible_space_fallback:}
-% If the current font doesn't have \unichar{2423}{Open box}, use Latin Modern Mono instead.
-%    \begin{macrocode}
-\cs_new_protected:Nn \fontspec_visible_space_fallback:
-  {
-    {
-      \usefont{\g_fontspec_encoding_tl}{lmtt}{\f at series}{\f at shape}
-      \textvisiblespace
-    }
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\fontspec_print_visible_spaces:}
-% Helper macro to turn spaces (\verb|^^20|) active and print visible space instead.
-%    \begin{macrocode}
-\group_begin:
-\char_set_catcode_active:n{"20}%
-\cs_gset:Npn\fontspec_print_visible_spaces:{%
-\char_set_catcode_active:n{"20}%
-\cs_set_eq:NN^^20\fontspec_visible_space:%
-}%
-\group_end:
-%    \end{macrocode}
-% \end{macro}
-%
-% In 2019 there will be a new kernel-supported command for generalising `verbatim visible spaces'.
-% For now we check if the new command is defined and disable all patching if so.
-% In 2020, I suppose, I'll remove all the patching code here.
-%
-%    \begin{macrocode}
-\AtBeginDocument
-  {
-    \cs_if_exist:NF \verbvisiblespace
-      {
-				\@@_patch_verb:
-				\@@_patch_verbatim:
-				\@@_patch_moreverb:
-				\@@_patch_fancyvrb:
-				\@@_patch_listings:
-			}
-  }
-%    \end{macrocode}
-%
-%
-% \begin{macro}{\verb}
-% \begin{macro}{\verb*}
-% Redefine \cmd\verb\ to use \cmd\fontspec_print_visible_spaces:.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_verb:
-  {
-		\def\verb
-			{
-				\relax\ifmmode\hbox\else\leavevmode\null\fi
-				\bgroup
-					\verb at eol@error \let\do\@makeother \dospecials
-					\verbatim at font\@noligs
-					\@ifstar\@@sverb\@verb
-			}
-		\def\@@sverb{\fontspec_print_visible_spaces:\@sverb}
-	}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{environment}{verbatim*}
-% With the \pkg{verbatim} package.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_verbatim:
-  {
-    \@ifpackageloaded{verbatim}
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \group_begin: \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }
-%    \end{macrocode}
-% This is for vanilla \LaTeX.
-%    \begin{macrocode}
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \@verbatim \fontspec_print_visible_spaces: \@sxverbatim
-          }
-      }
- }
-%    \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{listingcont*}
-% This is for \pkg{moreverb}.
-% The main |listing*| environment inherits this definition.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_moreverb:
-  {
-    \@ifpackageloaded{moreverb}
-      {
-        \cs_set:cpn {listingcont*}
-          {
-            \cs_set:Npn \verbatim at processline
-              {
-                \thelisting at line \global\advance\listing at line1\relax
-                \the\verbatim at line\par
-              }
-            \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }{}
-  }
-%    \end{macrocode}
-% \end{environment}
-%
-% \pkg{listings} and \pkg{fancvrb} make things nice and easy:
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_fancyvrb:
-  {
-    \@ifpackageloaded{fancyvrb}
-      {
-        \cs_set_eq:NN \FancyVerbSpace \fontspec_visible_space:
-      }{}
-  }
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_listings:
-  {
-    \@ifpackageloaded{listings}
-      {
-        \cs_set_eq:NN \lst at visiblespace \fontspec_visible_space:
-      }{}
-  }
-%    \end{macrocode}
-%
-%
-%
-%    \begin{macrocode}
 %</fontspec>
 %    \end{macrocode}
 
-
 \endinput
 
 % /©
@@ -170,7 +18,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-scripts.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -182,7 +182,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-user.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -27,6 +27,25 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\rmfamily}
+% \begin{macro}{\sffamily}
+% \begin{macro}{\ttfamily}
+% Add an encoding switch to the three family commands.
+%    \begin{macrocode}
+\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+  { \fontencoding \l_@@_rmfamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { sffamily~ } { \fontfamily }
+  { \fontencoding \l_@@_sffamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+  { \fontencoding \l_@@_ttfamily_encoding_tl \fontfamily }
+\tl_set_eq:NN \l_@@_rmfamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l_@@_sffamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l_@@_ttfamily_encoding_tl \g_fontspec_encoding_tl
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\setmainfont}
 %     The following three macros perform equivalent operations setting
 %     the default font for a particular family: `roman', sans serif, or typewriter
@@ -39,18 +58,10 @@
   {
     \fontspec_set_family:Nnn \l_@@_rmfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \rmdefault \l_@@_rmfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \rmfamily }
-          {
-            \exp_not:N \fontencoding { \g_@@_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \rmdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l_@@_rmfamily_encoding_tl \g_@@_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\rmdefault}
       { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
-    \@@_setmainfont_hook:nn {#1} {#2}
+    \@@_setmainfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 %    \end{macrocode}
@@ -63,18 +74,10 @@
   {
     \fontspec_set_family:Nnn \l_@@_sffamily_family_tl {#1} {#2}
     \tl_set_eq:NN \sfdefault \l_@@_sffamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \sffamily }
-          {
-            \exp_not:N \fontencoding { \g_@@_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \sfdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l_@@_sffamily_encoding_tl \g_@@_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\sfdefault}
       { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
-    \@@_setsansfont_hook:nn {#1} {#2}
+    \@@_setsansfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 %    \end{macrocode}
@@ -87,18 +90,10 @@
   {
     \fontspec_set_family:Nnn \l_@@_ttfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \ttdefault \l_@@_ttfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \ttfamily }
-          {
-            \exp_not:N \fontencoding { \g_@@_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \ttdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l_@@_ttfamily_encoding_tl \g_@@_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\ttdefault}
       { \tl_set_eq:NN \encodingdefault \g_@@_nfss_enc_tl }
-    \@@_setmonofont_hook:nn {#1} {#2}
+    \@@_setmonofont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 %    \end{macrocode}
@@ -118,7 +113,7 @@
   {
 %<XE> \fontspec_gset_family:Nnn \g_@@_mathrm_tl {#1} {#2}
 %<LU> \fontspec_gset_family:Nnn \g_@@_mathrm_tl {Renderer=Basic,#1} {#2}
-    \@@_setmathrm_hook:nn {#1} {#2}
+    \@@_setmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 %    \end{macrocode}
 % \end{macro}
@@ -129,7 +124,7 @@
   {
 %<XE> \fontspec_gset_family:Nnn \g_@@_bfmathrm_tl {#1} {#2}
 %<LU> \fontspec_gset_family:Nnn \g_@@_bfmathrm_tl {Renderer=Basic,#1} {#2}
-    \@@_setboldmathrm_hook:nn {#1} {#2}
+    \@@_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 %    \end{macrocode}
 % \end{macro}
@@ -140,7 +135,7 @@
   {
 %<XE> \fontspec_gset_family:Nnn \g_@@_mathsf_tl {#1} {#2}
 %<LU> \fontspec_gset_family:Nnn \g_@@_mathsf_tl {Renderer=Basic,#1} {#2}
-    \@@_setmathsf_hook:nn {#1} {#2}
+    \@@_setmathsf_hook:nn {#1} {#2} % for unicode-math only
   }
 %    \end{macrocode}
 % \end{macro}
@@ -151,7 +146,7 @@
   {
 %<XE> \fontspec_gset_family:Nnn \g_@@_mathtt_tl {#1} {#2}
 %<LU> \fontspec_gset_family:Nnn \g_@@_mathtt_tl {Renderer=Basic,#1} {#2}
-    \@@_setmathtt_hook:nn {#1} {#2}
+    \@@_setmathtt_hook:nn {#1} {#2} % for unicode-math only
   }
 %    \end{macrocode}
 % \end{macro}
@@ -528,7 +523,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-vars.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -303,6 +303,9 @@
 \tl_new:N \l_@@_rmfamily_family_tl
 \tl_new:N \l_@@_sffamily_family_tl
 \tl_new:N \l_@@_ttfamily_family_tl
+\tl_new:N \l_@@_rmfamily_encoding_tl
+\tl_new:N \l_@@_sffamily_encoding_tl
+\tl_new:N \l_@@_ttfamily_encoding_tl
 %    \end{macrocode}
 %
 %
@@ -320,7 +323,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code-xfss.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -9,24 +9,10 @@
 %
 % \subsection{Italic small caps and so on} \label{sec:sishape}
 %
-% \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}
-\providecommand*\itscdefault{\itdefault\scdefault}
-\providecommand*\slscdefault{\sldefault\scdefault}
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\itscdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
+\providecommand*\scitdefault{\scdefault\itdefault}
+\providecommand*\scsldefault{\scdefault\sldefault}
 %    \end{macrocode}
-% \end{macro} \end{macro}
-%
 % \LaTeX's `shape' font axis needs to be overloaded to support italic small caps and slanted small caps.
 % These are the combinations to support:
 %    \begin{macrocode}
@@ -33,30 +19,18 @@
 \cs_new:Nn \@@_shape_merge:nn { c_@@_shape_#1_#2_tl }
 \cs_new:Nn \@@_merge_default_shapes:
   {
-    \tl_const:cn { \@@_shape_merge:nn \itdefault   \scdefault } {\itscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \sldefault   \scdefault } {\slscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \scdefault   \itdefault } {\itscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \scdefault   \sldefault } {\slscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \slscdefault \itdefault } {\itscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \itscdefault \sldefault } {\slscdefault}
-    \tl_const:cn { \@@_shape_merge:nn \itscdefault \updefault } {\scdefault}
-    \tl_const:cn { \@@_shape_merge:nn \slscdefault \updefault } {\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 \scdefault   \itdefault    } {\scitdefault}
+    \tl_const:cn { \@@_shape_merge:nn \scdefault   \sldefault    } {\scsldefault}
+    \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}
+    \tl_const:cn { \@@_shape_merge:nn \scsldefault \shapedefault } {\scdefault}
   }
 \@@_merge_default_shapes:
 %    \end{macrocode}
 %
-% \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}
 % The following is rather specific; it only returns true if the merged shape exists,
 % but more importantly also if the merged shape is defined for the current font.
 %    \begin{macrocode}
@@ -74,6 +48,45 @@
     \prg_return_true: \prg_return_false:
   }
 %    \end{macrocode}
+%
+%
+%    \begin{macrocode}
+\cs_if_exist:NTF \DeclareFontSeriesChangeRule
+{
+  \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}
@@ -108,7 +121,7 @@
 %
 % \begin{macro}{\emfontdeclare}
 %    \begin{macrocode}
-\cs_new_protected:Npn \emfontdeclare #1
+\cs_set_protected:Npn \emfontdeclare #1
   {
     \prop_gclear:N    \g_@@_em_prop
     \int_zero:N       \l_@@_emdef_int
@@ -183,13 +196,22 @@
 % \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}
 %    \begin{macrocode}
-\cs_new_protected:Npn \strongfontdeclare #1
+\cs_set_protected:Npn \strongfontdeclare #1
   {
     \prop_gclear:N   \g_@@_strong_prop
     \int_zero:N      \l_@@_strongdef_int
@@ -257,7 +279,6 @@
 %
 % Programmer's interface for setting nesting levels:
 %    \begin{macrocode}
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l_@@_em_int     {#1} }
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l_@@_strong_int {#1} }
 %    \end{macrocode}
 %
@@ -264,7 +285,6 @@
 % Defaults:
 %    \begin{macrocode}
 \strongfontdeclare{ \bfseries }
-\emfontdeclare{ \emshape, \eminnershape }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -278,7 +298,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-code.ltx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -30,7 +30,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-api.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -7,7 +7,7 @@
 
 \part{Customisation and programming interface}
 
-This is the beginning of some work to provide some hooks that use
+This chapter describes the current interfaces and hooks that use
 \pkg{fontspec} for various macro programming purposes.
 
 
@@ -179,7 +179,7 @@
 
 \DescribeMacro{\g_fontspec_encoding_tl}
 Package authors who need to load fonts with legacy \LaTeX\ \NFSS\ commands may also need to know what the default font encoding is.
-Since this has changed from \texttt{EU1}/\texttt{EU2} to \texttt{TU}, it is best to use the variables \cs{g_fontspec_encoding_tl} or \cs{UTFencname} instead.
+Since this has changed from \texttt{EU1}/\texttt{EU2} to \texttt{TU}, it is best to use the variable \cs{g_fontspec_encoding_tl} instead.
 
 \subsection{Functions for loading new fonts and families}
 
@@ -331,7 +331,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-enc.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -204,7 +204,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -544,7 +544,7 @@
    Latin Modern optical sizes
 \end{Lexample}
 
-The \feat{SizeFeatures} feature (\vref*{sec:sizefeature}) can be
+The \feat{SizeFeatures} feature (\vref{sec:sizefeature}) can be
 used to specify exactly which optical sizes will be used for ranges
 of font size. For example, something like:
 \begin{Verbatim}
@@ -602,7 +602,7 @@
 
 This functionality is not generally used for lowercase text in modern typesetting but does have historic precedent in a variety of situations.
 In particular, small amounts of letter spacing can be very useful, when setting small caps or all caps titles.
-Also see the OpenType \opt{Uppercase} option of the \feat{Letters} feature (\vref*{sec:letters}).
+Also see the OpenType \opt{Uppercase} option of the \feat{Letters} feature (\vref{sec:letters}).
 
 \end{document}
 
@@ -610,7 +610,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-fontsel.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -53,7 +53,7 @@
 }
 
 The plain \cs{fontspec} command is not generally recommended for document use. It is an
-ad hoc commands best suited for testing and loading fonts on a one-off basis.
+ad hoc command best suited for testing and loading fonts on a one-off basis.
 
 All of the commands listed above accept comma-separated
 \meta{font feature}=\meta{option} lists; these are described later:
@@ -177,8 +177,8 @@
        ... ]
 \end{Verbatim}
 Note that \XeTeX\ and \LuaTeX\ are able to load the font without giving an
-extension, but \pkg{fontspec} must know to search for the file; this can can
-be indicated by using the |Path| feature without an argument:
+extension, but \pkg{fontspec} must know to search for the file; this can be
+indicated by using the |Path| feature without an argument:
 \begin{Verbatim}
   \setmainfont{texgyrepagella-regular}[
        Path, BoldFont = texgyrepagella-bold,
@@ -276,7 +276,7 @@
   \IfFontExistsTF{/Users/will/Library/Fonts/CODE2000.TTF}{T}{F}
 \end{Verbatim}
 
-The \cs{IfFontExistsTF} command is a synonym for the programming interface function \cs{fontspec_font_if_exist:nTF} (\vref*{sec:api}).
+The \cs{IfFontExistsTF} command is a synonym for the programming interface function \cs{fontspec_font_if_exist:nTF} (\vref{sec:api}).
 
 
 
@@ -452,7 +452,7 @@
 \end{Verbatim}
 Only use this feature when necessary; the in-built font switching commands that \pkg{fontspec} generates (such as |\verbatimfont| in the example above) are recommended in all other cases.
 
-If you don't wish to explicitly set the \NFSS\ family but you would like to know what it is, an alternative mechanism for package writers is introduced as part of the \pkg{fontspec} programming interface; see the function \cs{fontspec_set_family:Nnn} for details (\vref*{sec:api}).
+If you don't wish to explicitly set the \NFSS\ family but you would like to know what it is, an alternative mechanism for package writers is introduced as part of the \pkg{fontspec} programming interface; see the function \cs{fontspec_set_family:Nnn} for details (\vref{sec:api}).
 
 \subsection{Choosing additional \NFSS\ font faces}
 
@@ -475,16 +475,15 @@
 As an example:
 \begin{Verbatim}
   \setmainfont{font1.otf}[
-     FontFace = {c}{\updefault}{ font2.otf } ,
+     FontFace = {c}{\shapedefault}{ font2.otf } ,
      FontFace = {c}{m}{ Font = font3.otf , Color = red }
     ]
 \end{Verbatim}
 Writing |\fontseries{c}\selectfont| will result in |font2| being selected, which then followed by |\fontshape{m}\selectfont| will result in |font3| being selected (in red).
-A font face that is defined in terms of a different series but an upright shape (|\updefault|, as shown above) will attempt to find a matching small caps feature and define that face as well.
+A font face that is defined in terms of a different series but an upright shape (|\shapedefault|, as shown above) will attempt to find a matching small caps feature and define that face as well.
 Conversely, a font face defined in terms of a non-standard font shape will not.
 
-There are some standards for choosing shape and series codes; the \LaTeXe\ font selection guide\footnote{\texttt{texdoc fntguide}} lists series |m| for medium, |b| for bold, |bx| for bold extended, |sb| for semi-bold, and |c| for condensed.
-A far more comprehensive listing is included in Appendix~A of Philipp Lehman's `The Font Installation Guide'\footnote{\texttt{texdoc fontinstallationguide}} covering 14 separate weights and 12 separate widths.
+There are some standards for choosing shape and series codes; the \LaTeXe\ font selection guide\footnote{\texttt{texdoc fntguide}} has a comprehensive listing.
 
 The \feat{FontFace} command also interacts properly with the \feat{SizeFeatures} command as follows: (nonsense set of font selection choices)
 \begin{Verbatim}
@@ -627,7 +626,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-intro.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -78,16 +78,13 @@
 
 
 \subsection{Font encodings}
-The 2016 release of \pkg{fontspec} initiated some changes for font encodings and the loading of \pkg{xunicode}.
-The 2017 release rolls out those changes as default.
 
-The now-default \texttt{tuenc} package option switches the \textsc{nfss} font encoding to \texttt{TU}.
+The (default) \texttt{tuenc} package option switches the \textsc{nfss} font encoding to \texttt{TU}.
 \texttt{TU} is a new Unicode font encoding, intended for both \XeTeX\ and \LuaTeX\ engines, and automatically contains support for symbols covered by \LaTeX's traditional \texttt{T1} and \texttt{TS1} font encodings (for example, |\%|, |\textbullet|, |\"u|, and so on).
-As a result, with this package option, Ross Moore's \pkg{xunicode} package is \textbf{not} loaded.
-Some new, experimental, features are now provided to customise some encoding details; see Part~\vref{part:enc} for further details.
+Some additional features are provided by \pkg{fontspec} to customise some encoding details; see Part~\vref{part:enc} for further details.
 
 Pre-2017 behaviour can be achieved with the \texttt{euenc} package option.
-This selects the \texttt{EU1} or \texttt{EU2} encoding (\XeTeX/\LuaTeX, resp.) and loads the \pkg{xunicode} package.
+This selects the \texttt{EU1} or \texttt{EU2} encoding (\XeTeX/\LuaTeX, resp.) and loads the \pkg{xunicode} package for symbol support.
 Package authors and users who have referred explicitly to the encoding names \texttt{EU1} or \texttt{EU2} should update their code or documents.
 (See internal variable names described in \vref{sec:api} for how to do this properly.)
 
@@ -132,23 +129,7 @@
 to improve default behaviour with \LaTeXe\ and third-party packages.
 
 
-\subsection{Verbatim}
-\label{sec:verb}
 
-Many verbatim mechanisms assume the existence of a `visible space' character that exists in the \textsc{ascii} space slot of the typewriter font. This character is known in Unicode as \unichar{2423}{box open}, which looks like this: `\verb*| |'.
-
-When a Unicode typewriter font is used, \LaTeX\ no longer prints visible spaces for the |verbatim*| environment and |\verb*| command.
-This problem is fixed by using the correct Unicode glyph, and the following packages are patched to do the same:
-\pkg{listings}, \pkg{fancyvrb}, \pkg{moreverb}, and \pkg{verbatim}.
-
-In the case that the typewriter font does not contain `\verb*| |', the Latin Modern Mono font is used as a fallback.
-
-In 2019, \LaTeX\ will use a new command \cs{verbvisiblespace} for internal commands and for
-third party packages. If this new command is defined, \pkg{fontspec}'s patching code here
-will be entirely disabled and the packages listed above should no longer rely on \pkg{fontspec}
-to redefine their internals.
-
-
 \subsection{Commands for old-style and lining numbers}
 
 \DescribeMacro{\oldstylenums}
@@ -162,46 +143,14 @@
 
 \subsection{Italic small caps}
 
-\DescribeMacro{\itshape}
-\DescribeMacro{\slshape}
-\DescribeMacro{\scshape}
-Note that this package redefines the \cs{itshape}, \cs{slshape}, and \cs{scshape} commands in order to allow them to select italic small caps in conjunction.
-With these changes, writing |\itshape\scshape| will lead to italic small caps, and |\upshape| subsequently then moves back to small caps only. |\upshape| again returns from small caps to upright regular.
-(And similarly for for |\slshape|. In addition, once italic small caps are selected then |\slshape| will switch to slanted small caps, and vice versa.)
+Support now provided by \LaTeXe\ in 2020.
 
 
 \subsection{Emphasis and nested emphasis}
 
-\DescribeMacro{\eminnershape}
-\LaTeXe\ allows you to specify the behaviour of \cs{emph} nested within \cs{emph} by setting the \cs{eminnershape} command.
-For example,
-\begin{Verbatim}
-  \renewcommand\eminnershape{\upshape\scshape}
-\end{Verbatim}
-will produce small caps within |\emph{\emph{...}}|.
+Support now provided by \LaTeXe\ in 2020.
 
-\DescribeMacro{\emfontdeclare}
-The \pkg{fontspec} package takes this idea one step further to allow arbitrary font shape changes and arbitrary levels of nesting within emphasis.
-This is performed using the |\emfontdeclare| command, which takes a comma-separated list of font switches corresponding to increasing levels of emphasis.
-An example:
-\begin{enumerate}
-\item |\emfontdeclare{\itshape,\upshape\scshape,\itshape}| will lead to `italics', `small caps', then `italic small caps' as the level of emphasis increases, as long as italic small caps are defined for the font.
-  Note that |\upshape| is required because the font changes are cascading.
-\end{enumerate}
-The implementation of this feature tries to be `smart' and guess what level of emphasis to use in the case of manual font changing.
-This is reliable only if you use shape-changing commands in \cs{emfontdeclare}.
-For example:
-\begin{Verbatim}
-    \emfontdeclare{\itshape,\upshape\scshape,\itshape}
-    ...
-    \scshape small caps \emph{hello}
-\end{Verbatim}
-Here, the emphasised text `hello' will be printed in italic small caps since |\emph| can detect that the current font shape is already in the second `mode' of emphasis.
 
-\DescribeMacro{\emreset}
-Finally, if you have so much nested emphasis that |\emfontdeclare| runs out of options, it will insert |\emreset| (by default just |\upshape|) and start again from the beginning.
-
-
 \subsection{Strong emphasis}
 
 \DescribeMacro{\strong}
@@ -235,7 +184,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-luatex.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -81,7 +81,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -806,7 +806,7 @@
 Full documentation will be presented in the following sections, including how to
 enable and disable individual features, and how they interact.
 
-A brief reference is provided (\vref*{tab:all-ot}) but note that this is an incomplete
+A brief reference is provided (\vref{tab:all-ot}) but note that this is an incomplete
 listing --- only the `enable' keys are shown, and where alternative interfaces are
 provided for convenience only the first is shown.
 (E.g., |Numbers=OldStyle| is the same as |Numbers=Lowercase|.)
@@ -1466,7 +1466,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-doc-xetex.tex	2020-01-09 22:13:09 UTC (rev 53357)
@@ -368,7 +368,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec-lua.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -89,7 +89,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.dtx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -71,7 +71,7 @@
 \ProvidesExplFile{fontspec.dtx}
 %</dtx>
 %<*fontspec>
-  {2019/10/19}{2.7d}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
 %</fontspec>
 %    \end{macrocode}
 %
@@ -90,8 +90,8 @@
 %<lua>local fontspec    = fontspec
 %<lua>fontspec.module   = {
 %<lua>    name          = "fontspec",
-%<lua>    version       = "2.7d",
-%<lua>    date          = "2019/10/19",
+%<lua>    version       = "2.7e",
+%<lua>    date          = "2020/01/09",
 %<lua>    description   = "Font selection for XeLaTeX and LuaLaTeX",
 %<lua>    author        = "Khaled Hosny, Philipp Gesang, Will Robertson",
 %<lua>    copyright     = "Khaled Hosny, Philipp Gesang, Will Robertson",
@@ -105,7 +105,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ins	2020-01-09 22:13:09 UTC (rev 53357)
@@ -48,7 +48,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/source/latex/fontspec/fontspec.ltx	2020-01-09 22:13:09 UTC (rev 53357)
@@ -28,7 +28,7 @@
 % ------------------------------------------------
 % The FONTSPEC package  <wspr.io/fontspec>
 % ------------------------------------------------
-% Copyright  2004-2019  Will Robertson, LPPL "maintainer"
+% Copyright  2004-2020  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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty	2020-01-09 22:13:09 UTC (rev 53357)
@@ -41,7 +41,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-luatex}%
-  {2019/10/19}{2.7d}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/09}{2.7e}{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>
@@ -201,6 +201,9 @@
 \tl_new:N \l__fontspec_rmfamily_family_tl
 \tl_new:N \l__fontspec_sffamily_family_tl
 \tl_new:N \l__fontspec_ttfamily_family_tl
+\tl_new:N \l__fontspec_rmfamily_encoding_tl
+\tl_new:N \l__fontspec_sffamily_encoding_tl
+\tl_new:N \l__fontspec_ttfamily_encoding_tl
 
 %%^^A%%  fontspec-code-msg.dtx -- part of FONTSPEC <wspr.io/fontspec>
 \cs_new:Npn \__fontspec_error:n     { \msg_error:nn     {fontspec} }
@@ -732,22 +735,23 @@
     \fontencoding { \g__fontspec_nfss_enc_tl }
     \selectfont
   }
+\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { sffamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+\tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g_fontspec_encoding_tl
 \cs_new:Nn \__fontspec_main_setmainfont:nn
   {
     \fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \rmdefault \l__fontspec_rmfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \rmfamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \rmdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\rmdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setmainfont_hook:nn {#1} {#2}
+    \__fontspec_setmainfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setsansfont:nn
@@ -754,18 +758,10 @@
   {
     \fontspec_set_family:Nnn \l__fontspec_sffamily_family_tl {#1} {#2}
     \tl_set_eq:NN \sfdefault \l__fontspec_sffamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \sffamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \sfdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\sfdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setsansfont_hook:nn {#1} {#2}
+    \__fontspec_setsansfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setmonofont:nn
@@ -772,39 +768,31 @@
   {
     \fontspec_set_family:Nnn \l__fontspec_ttfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \ttdefault \l__fontspec_ttfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \ttfamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \ttdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\ttdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setmonofont_hook:nn {#1} {#2}
+    \__fontspec_setmonofont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setmathrm:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
-    \__fontspec_setmathrm_hook:nn {#1} {#2}
+    \__fontspec_setmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setboldmathrm:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2}
-    \__fontspec_setboldmathrm_hook:nn {#1} {#2}
+    \__fontspec_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setmathsf:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
-    \__fontspec_setmathsf_hook:nn {#1} {#2}
+    \__fontspec_setmathsf_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setmathtt:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
-    \__fontspec_setmathtt_hook:nn {#1} {#2}
+    \__fontspec_setmathtt_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_set_eq:NN \__fontspec_setmainfont_hook:nn   \use_none:nn
 \cs_set_eq:NN \__fontspec_setsansfont_hook:nn   \use_none:nn
@@ -1212,7 +1200,7 @@
       {
         \tl_if_eq:ccTF
           { \f at encoding/\f at family/\f at series/\l__fontspec_smcp_shape_tl }
-          { \f at encoding/\f at family/\f at series/\updefault }
+          { \f at encoding/\f at family/\f at series/\shapedefault }
           { \prg_return_false: }
           { \prg_return_true:  }
       }
@@ -1348,13 +1336,13 @@
   {
 
     \__fontspec_primitive_font_set:NnnF \l__fontspec_test_font
-      { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} }
+      { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
       { \f at size pt - 2sp }
       { \__fontspec_error:nx {font-not-found} {\l__fontspec_fontname_up_tl} }
 
     \__fontspec_set_font_type:N \l__fontspec_test_font
     \__fontspec_primitive_font_gset:Onn \l__fontspec_fontface_cs_tl
-      {  \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} }
+      {  \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
       { \f at size pt }
 
     \l__fontspec_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
@@ -1493,13 +1481,12 @@
   }
 \cs_new:Nn \__fontspec_set_faces:
   {
-    \__fontspec_add_nfssfont:nnnn \mddefault \updefault \l_fontspec_fontname_tl      \l__fontspec_fontfeat_up_clist
-    \__fontspec_add_nfssfont:nnnn \bfdefault \updefault \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 \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 \mddefault \shapedefault \l_fontspec_fontname_tl \l__fontspec_fontfeat_up_clist
+    \__fontspec_add_nfssfont:nnnn \bfdefault \shapedefault \l__fontspec_fontname_bf_tl    \l__fontspec_fontfeat_bf_clist
+    \__fontspec_add_nfssfont:nnnn \mddefault \itdefault    \l__fontspec_fontname_it_tl    \l__fontspec_fontfeat_it_clist
+    \__fontspec_add_nfssfont:nnnn \mddefault \sldefault    \l__fontspec_fontname_sl_tl    \l__fontspec_fontfeat_sl_clist
+    \__fontspec_add_nfssfont:nnnn \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
     \prop_map_inline:Nn \l__fontspec_nfssfont_prop { \__fontspec_set_faces_aux:nnnnn ##2 }
   }
 \cs_new:Nn \__fontspec_set_faces_aux:nnnnn
@@ -1549,8 +1536,8 @@
 \prg_new_conditional:Nnn \__fontspec_if_autofont:nn {T,TF}
   {
     \group_begin:
-    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1}   {} } { \f at size pt + 1sp }
-    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} {} } { \f at size pt + 1sp }
+    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1}   { \l__fontspec_pre_feat_sclist } } { \f at size pt + 1sp }
+    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} { \l__fontspec_pre_feat_sclist } } { \f at size pt + 1sp }
     \str_if_eq:eeTF { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpa_font } { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpb_font }
       { \group_end: \prg_return_false: }
       { \group_end: \prg_return_true: }
@@ -1570,7 +1557,7 @@
       { \clist_clear:N \l__fontspec_fontopts_clist }
     \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l__fontspec_fontopts_clist
     \__fontspec_primitive_font_set:OnnF \l__fontspec_fontface_cs_tl
-      { \__fontspec_construct_font_call:nn {#1} {} } { \f at size pt }
+      { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f at size pt }
       { \__fontspec_error:nx {font-not-found} {#2} }
   }
 \keys_define:nn {fontspec/fontname}
@@ -1696,8 +1683,8 @@
         \exp_not:n { \\ }
         -~ \exp_not:N \str_case:nn {#1/#2}
         {
-          {\mddefault/\updefault} {'normal'~}
-          {\bfdefault/\updefault} {'bold'~}
+          {\mddefault/\shapedefault} {'normal'~}
+          {\bfdefault/\shapedefault} {'bold'~}
           {\mddefault/\itdefault} {'italic'~}
           {\mddefault/\sldefault} {'slanted'~}
           {\bfdefault/\itdefault} {'bold~ italic'~}
@@ -1710,10 +1697,10 @@
         {
           {\mddefault/\scdefault} {'small~ caps'~}
           {\bfdefault/\scdefault} {'bold~ small~ caps'~}
-          {\mddefault/\itscdefault} {'italic~ small~ caps'~}
-          {\bfdefault/\itscdefault} {'bold~ italic~ small~ caps'~}
-          {\mddefault/\slscdefault} {'slanted~ small~ caps'~}
-          {\bfdefault/\slscdefault} {'bold~ slanted~ small~ caps'~}
+          {\mddefault/\scitdefault} {'italic~ small~ caps'~}
+          {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~}
+          {\mddefault/\scsldefault} {'slanted~ small~ caps'~}
+          {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~}
         }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~
         with~ NFSS~ spec.:~
         \l__fontspec_nfss_sc_tl
@@ -2119,18 +2106,18 @@
 \keys_define:nn {fontspec-renderer}
   {
     Renderer .choices:nn =
-      {Full,Node,Basic,Base,Harfbuzz,OpenType,AAT,Graphite}
+      {Full,Node,Basic,Base,HarfBuzz,Harfbuzz,OpenType,AAT,Graphite}
       {
         \int_compare:nT {\l_keys_choice_int >= 5} { \bool_set_true:N \l__fontspec_harfbuzz_bool }
 
         \tl_set:Nx \l__fontspec_mode_tl
           {
-            \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} }
+            \int_case:nn \l_keys_choice_int { 1 {node} 2 {node} 3 {base} 4 {base} 5 {harf} 6 {harf} 7 {harf} 8 {harf} 9 {harf}}
           }
 
         \tl_set:Nx \l__fontspec_shaper_tl
           {
-            \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {ot} 7 {coretext_aat} 8 {graphite2} }
+            \int_case:nn \l_keys_choice_int { 1 {} 2 {} 3 {} 4 {} 5 {} 6 {} 7 {ot} 8 {coretext_aat} 9 {graphite2} }
           }
 
 
@@ -2294,6 +2281,11 @@
   {
     \fontspec_complete_fontname:Nn \l__fontspec_sizedfont_tl {#1}
   }
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
+
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSEncoding}
   {
     \tl_gset:Nx \g__fontspec_nfss_enc_tl { #1 }
@@ -3667,25 +3659,25 @@
       \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}% TODO: test with other fonts
     }
   }
-  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
-  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
+  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
   \DeclareSymbolFontAlphabet\mathrm{operators}
   \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
-  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
-  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
-  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
-  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
+  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\shapedefault
+  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
   \tl_if_empty:NTF \g__fontspec_bfmathrm_tl
    {
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\itdefault
    }
    {
-    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
-    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
+    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\shapedefault
+    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\shapedefault
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
    }
-  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
-  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
+  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\shapedefault
  }
 \cs_new:Nn \fontspec_maybe_setup_maths:
  {
@@ -3742,33 +3734,21 @@
 
 %%^^A%%  fontspec-code-xfss.dtx -- part of FONTSPEC <wspr.io/fontspec>
 
-\providecommand*\itscdefault{\itdefault\scdefault}
-\providecommand*\slscdefault{\sldefault\scdefault}
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\itscdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
+\providecommand*\scitdefault{\scdefault\itdefault}
+\providecommand*\scsldefault{\scdefault\sldefault}
 \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 \itdefault   \scdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \sldefault   \scdefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \itdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \sldefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \slscdefault \itdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \itscdefault \sldefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \itscdefault \updefault } {\scdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \slscdefault \updefault } {\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 \scdefault   \itdefault    } {\scitdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \sldefault    } {\scsldefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \itdefault    } {\scitdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \sldefault    } {\scsldefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \shapedefault } {\scdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \shapedefault } {\scdefault}
   }
 \__fontspec_merge_default_shapes:
-\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 }
-  }
 \prg_new_conditional:Nnn \__fontspec_if_merge_shape:n {TF}
   {
     \bool_lazy_and:nnTF
@@ -3782,6 +3762,23 @@
       }
     \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
@@ -3802,7 +3799,7 @@
     \not at math@alphabet\upshape\relax
     \__fontspec_merge_shape:n\updefault
   }
-\cs_new_protected:Npn \emfontdeclare #1
+\cs_set_protected:Npn \emfontdeclare #1
   {
     \prop_gclear:N    \g__fontspec_em_prop
     \int_zero:N       \l__fontspec_emdef_int
@@ -3856,7 +3853,10 @@
 \cs_set:Npn \emreset { \upshape }
 \cs_set:Npn \emshape { \itshape }
 \cs_set:Npn \eminnershape { \upshape }
-\cs_new_protected:Npn \strongfontdeclare #1
+\emfontdeclare{ \emshape, \eminnershape }
+\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
+}
+\cs_set_protected:Npn \strongfontdeclare #1
   {
     \prop_gclear:N   \g__fontspec_strong_prop
     \int_zero:N      \l__fontspec_strongdef_int
@@ -3899,99 +3899,9 @@
     \int_zero:N \l__fontspec_em_int
     \int_zero:N \l__fontspec_strong_int
   }
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }
 \strongfontdeclare{ \bfseries }
-\emfontdeclare{ \emshape, \eminnershape }
 
 %%^^A%%  fontspec-code-patches.dtx -- part of FONTSPEC <wspr.io/fontspec>
 
-\cs_new_protected:Nn \fontspec_visible_space:
-  {
-    \__fontspec_primitive_font_glyph_if_exist:NnTF \font {"2423}
-      { \char"2423\scan_stop: }
-      { \fontspec_visible_space_fallback: }
-  }
-\cs_new_protected:Nn \fontspec_visible_space_fallback:
-  {
-    {
-      \usefont{\g_fontspec_encoding_tl}{lmtt}{\f at series}{\f at shape}
-      \textvisiblespace
-    }
-  }
-\group_begin:
-\char_set_catcode_active:n{"20}%
-\cs_gset:Npn\fontspec_print_visible_spaces:{%
-\char_set_catcode_active:n{"20}%
-\cs_set_eq:NN^^20\fontspec_visible_space:%
-}%
-\group_end:
-\AtBeginDocument
-  {
-    \cs_if_exist:NF \verbvisiblespace
-      {
-\__fontspec_patch_verb:
-\__fontspec_patch_verbatim:
-\__fontspec_patch_moreverb:
-\__fontspec_patch_fancyvrb:
-\__fontspec_patch_listings:
-}
-  }
-\cs_new_protected:Npn \__fontspec_patch_verb:
-  {
-\def\verb
-{
-\relax\ifmmode\hbox\else\leavevmode\null\fi
-\bgroup
-\verb at eol@error \let\do\@makeother \dospecials
-\verbatim at font\@noligs
-\@ifstar\__fontspecsverb\@verb
-}
-\def\__fontspecsverb{\fontspec_print_visible_spaces:\@sverb}
-}
-\cs_new_protected:Npn \__fontspec_patch_verbatim:
-  {
-    \@ifpackageloaded{verbatim}
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \group_begin: \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \@verbatim \fontspec_print_visible_spaces: \@sxverbatim
-          }
-      }
- }
-\cs_new_protected:Npn \__fontspec_patch_moreverb:
-  {
-    \@ifpackageloaded{moreverb}
-      {
-        \cs_set:cpn {listingcont*}
-          {
-            \cs_set:Npn \verbatim at processline
-              {
-                \thelisting at line \global\advance\listing at line1\relax
-                \the\verbatim at line\par
-              }
-            \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }{}
-  }
-\cs_new_protected:Npn \__fontspec_patch_fancyvrb:
-  {
-    \@ifpackageloaded{fancyvrb}
-      {
-        \cs_set_eq:NN \FancyVerbSpace \fontspec_visible_space:
-      }{}
-  }
-\cs_new_protected:Npn \__fontspec_patch_listings:
-  {
-    \@ifpackageloaded{listings}
-      {
-        \cs_set_eq:NN \lst at visiblespace \fontspec_visible_space:
-      }{}
-  }
 

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty	2020-01-09 22:13:09 UTC (rev 53357)
@@ -41,7 +41,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec-xetex}%
-  {2019/10/19}{2.7d}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/09}{2.7e}{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>
@@ -201,6 +201,9 @@
 \tl_new:N \l__fontspec_rmfamily_family_tl
 \tl_new:N \l__fontspec_sffamily_family_tl
 \tl_new:N \l__fontspec_ttfamily_family_tl
+\tl_new:N \l__fontspec_rmfamily_encoding_tl
+\tl_new:N \l__fontspec_sffamily_encoding_tl
+\tl_new:N \l__fontspec_ttfamily_encoding_tl
 
 %%^^A%%  fontspec-code-msg.dtx -- part of FONTSPEC <wspr.io/fontspec>
 \cs_new:Npn \__fontspec_error:n     { \msg_error:nn     {fontspec} }
@@ -725,22 +728,23 @@
     \fontencoding { \g__fontspec_nfss_enc_tl }
     \selectfont
   }
+\tl_replace_all:cnn { rmfamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_rmfamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { sffamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_sffamily_encoding_tl \fontfamily }
+\tl_replace_all:cnn { ttfamily~ } { \fontfamily }
+  { \fontencoding \l__fontspec_ttfamily_encoding_tl \fontfamily }
+\tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g_fontspec_encoding_tl
+\tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g_fontspec_encoding_tl
 \cs_new:Nn \__fontspec_main_setmainfont:nn
   {
     \fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \rmdefault \l__fontspec_rmfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \rmfamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \rmdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_rmfamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\rmdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setmainfont_hook:nn {#1} {#2}
+    \__fontspec_setmainfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setsansfont:nn
@@ -747,18 +751,10 @@
   {
     \fontspec_set_family:Nnn \l__fontspec_sffamily_family_tl {#1} {#2}
     \tl_set_eq:NN \sfdefault \l__fontspec_sffamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \sffamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \sfdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_sffamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\sfdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setsansfont_hook:nn {#1} {#2}
+    \__fontspec_setsansfont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setmonofont:nn
@@ -765,39 +761,31 @@
   {
     \fontspec_set_family:Nnn \l__fontspec_ttfamily_family_tl {#1} {#2}
     \tl_set_eq:NN \ttdefault \l__fontspec_ttfamily_family_tl
-    \use:x
-      {
-        \exp_not:n { \DeclareRobustCommand \ttfamily }
-          {
-            \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
-            \exp_not:N \fontfamily { \exp_not:N \ttdefault }
-            \exp_not:N \selectfont
-          }
-      }
+    \tl_set_eq:NN \l__fontspec_ttfamily_encoding_tl \g__fontspec_nfss_enc_tl
     \str_if_eq:eeT {\familydefault} {\ttdefault}
       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
-    \__fontspec_setmonofont_hook:nn {#1} {#2}
+    \__fontspec_setmonofont_hook:nn {#1} {#2} % for unicode-math only
     \normalfont
   }
 \cs_new:Nn \__fontspec_main_setmathrm:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
-    \__fontspec_setmathrm_hook:nn {#1} {#2}
+    \__fontspec_setmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setboldmathrm:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2}
-    \__fontspec_setboldmathrm_hook:nn {#1} {#2}
+    \__fontspec_setboldmathrm_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setmathsf:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
-    \__fontspec_setmathsf_hook:nn {#1} {#2}
+    \__fontspec_setmathsf_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_new:Nn \__fontspec_main_setmathtt:nn
   {
  \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
-    \__fontspec_setmathtt_hook:nn {#1} {#2}
+    \__fontspec_setmathtt_hook:nn {#1} {#2} % for unicode-math only
   }
 \cs_set_eq:NN \__fontspec_setmainfont_hook:nn   \use_none:nn
 \cs_set_eq:NN \__fontspec_setsansfont_hook:nn   \use_none:nn
@@ -1205,7 +1193,7 @@
       {
         \tl_if_eq:ccTF
           { \f at encoding/\f at family/\f at series/\l__fontspec_smcp_shape_tl }
-          { \f at encoding/\f at family/\f at series/\updefault }
+          { \f at encoding/\f at family/\f at series/\shapedefault }
           { \prg_return_false: }
           { \prg_return_true:  }
       }
@@ -1340,13 +1328,13 @@
   {
 
     \__fontspec_primitive_font_set:NnnF \l__fontspec_test_font
-      { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} }
+      { \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
       { \f at size pt - 2sp }
       { \__fontspec_error:nx {font-not-found} {\l__fontspec_fontname_up_tl} }
 
     \__fontspec_set_font_type:N \l__fontspec_test_font
     \__fontspec_primitive_font_gset:Onn \l__fontspec_fontface_cs_tl
-      {  \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } {} }
+      {  \__fontspec_construct_font_call:nn { \l__fontspec_fontname_up_tl } { \l__fontspec_pre_feat_sclist } }
       { \f at size pt }
 
     \l__fontspec_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
@@ -1492,13 +1480,12 @@
   }
 \cs_new:Nn \__fontspec_set_faces:
   {
-    \__fontspec_add_nfssfont:nnnn \mddefault \updefault \l_fontspec_fontname_tl      \l__fontspec_fontfeat_up_clist
-    \__fontspec_add_nfssfont:nnnn \bfdefault \updefault \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 \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 \mddefault \shapedefault \l_fontspec_fontname_tl \l__fontspec_fontfeat_up_clist
+    \__fontspec_add_nfssfont:nnnn \bfdefault \shapedefault \l__fontspec_fontname_bf_tl    \l__fontspec_fontfeat_bf_clist
+    \__fontspec_add_nfssfont:nnnn \mddefault \itdefault    \l__fontspec_fontname_it_tl    \l__fontspec_fontfeat_it_clist
+    \__fontspec_add_nfssfont:nnnn \mddefault \sldefault    \l__fontspec_fontname_sl_tl    \l__fontspec_fontfeat_sl_clist
+    \__fontspec_add_nfssfont:nnnn \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
     \prop_map_inline:Nn \l__fontspec_nfssfont_prop { \__fontspec_set_faces_aux:nnnnn ##2 }
   }
 \cs_new:Nn \__fontspec_set_faces_aux:nnnnn
@@ -1566,8 +1553,8 @@
 \prg_new_conditional:Nnn \__fontspec_if_autofont:nn {T,TF}
   {
     \group_begin:
-    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1}   {} } { \f at size pt + 1sp }
-    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} {} } { \f at size pt + 1sp }
+    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpa_font { \__fontspec_construct_font_call:nn {#1}   { \l__fontspec_pre_feat_sclist } } { \f at size pt + 1sp }
+    \__fontspec_primitive_font_set:Nnn \l__fontspec_tmpb_font { \__fontspec_construct_font_call:nn {#1#2} { \l__fontspec_pre_feat_sclist } } { \f at size pt + 1sp }
     \str_if_eq:eeTF { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpa_font } { \__fontspec_primitive_font_get_name:N \l__fontspec_tmpb_font }
       { \group_end: \prg_return_false: }
       { \group_end: \prg_return_true: }
@@ -1587,7 +1574,7 @@
       { \clist_clear:N \l__fontspec_fontopts_clist }
     \keys_set_groups:nnV {fontspec/fontname} {getfontname} \l__fontspec_fontopts_clist
     \__fontspec_primitive_font_set:OnnF \l__fontspec_fontface_cs_tl
-      { \__fontspec_construct_font_call:nn {#1} {} } { \f at size pt }
+      { \__fontspec_construct_font_call:nn {#1} { \l__fontspec_pre_feat_sclist } } { \f at size pt }
       { \__fontspec_error:nx {font-not-found} {#2} }
   }
 \keys_define:nn {fontspec/fontname}
@@ -1713,8 +1700,8 @@
         \exp_not:n { \\ }
         -~ \exp_not:N \str_case:nn {#1/#2}
         {
-          {\mddefault/\updefault} {'normal'~}
-          {\bfdefault/\updefault} {'bold'~}
+          {\mddefault/\shapedefault} {'normal'~}
+          {\bfdefault/\shapedefault} {'bold'~}
           {\mddefault/\itdefault} {'italic'~}
           {\mddefault/\sldefault} {'slanted'~}
           {\bfdefault/\itdefault} {'bold~ italic'~}
@@ -1727,10 +1714,10 @@
         {
           {\mddefault/\scdefault} {'small~ caps'~}
           {\bfdefault/\scdefault} {'bold~ small~ caps'~}
-          {\mddefault/\itscdefault} {'italic~ small~ caps'~}
-          {\bfdefault/\itscdefault} {'bold~ italic~ small~ caps'~}
-          {\mddefault/\slscdefault} {'slanted~ small~ caps'~}
-          {\bfdefault/\slscdefault} {'bold~ slanted~ small~ caps'~}
+          {\mddefault/\scitdefault} {'italic~ small~ caps'~}
+          {\bfdefault/\scitdefault} {'bold~ italic~ small~ caps'~}
+          {\mddefault/\scsldefault} {'slanted~ small~ caps'~}
+          {\bfdefault/\scsldefault} {'bold~ slanted~ small~ caps'~}
         }~( #1 / \__fontspec_combo_sc_shape:n {#2} )~
         with~ NFSS~ spec.:~
         \l__fontspec_nfss_sc_tl
@@ -2247,7 +2234,7 @@
 \keys_define:nn {fontspec-renderer}
   {
     Renderer .choices:nn =
-      {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,Harfbuzz}
+      {AAT,ICU,OpenType,Graphite,Full,Basic,Node,Base,HarfBuzz,Harfbuzz}
       {
         \int_compare:nTF {\l_keys_choice_int <= 4}
           {
@@ -2258,7 +2245,7 @@
             \tl_gset:Nx \g__fontspec_single_feat_tl { \l__fontspec_renderer_tl }
           }
           {
-            \__fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/Harfbuzz}
+            \__fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic/Node/Base/HarfBuzz}
           }
       }
   }
@@ -2409,6 +2396,11 @@
   {
     \fontspec_complete_fontname:Nn \l__fontspec_sizedfont_tl {#1}
   }
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
+\__fontspec_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
+
 \__fontspec_keys_define_code:nnn {fontspec-preparse} {NFSSEncoding}
   {
     \tl_gset:Nx \g__fontspec_nfss_enc_tl { #1 }
@@ -3929,25 +3921,25 @@
       \renewcommand{\hbar}{{\mathchar"AF\mkern-9mu h}}% TODO: test with other fonts
     }
   }
-  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
-  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
+  \DeclareSymbolFont{operators}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\shapedefault
   \DeclareSymbolFontAlphabet\mathrm{operators}
   \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
-  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
-  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
-  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
-  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
+  \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\shapedefault
+  \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\shapedefault
+  \SetSymbolFont{operators}{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\shapedefault
   \tl_if_empty:NTF \g__fontspec_bfmathrm_tl
    {
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\itdefault
    }
    {
-    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
-    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
+    \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\shapedefault
+    \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\shapedefault
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
    }
-  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
-  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
+  \SetMathAlphabet\mathsf{bold}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\shapedefault
+  \SetMathAlphabet\mathtt{bold}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\shapedefault
  }
 \cs_new:Nn \fontspec_maybe_setup_maths:
  {
@@ -4004,33 +3996,21 @@
 
 %%^^A%%  fontspec-code-xfss.dtx -- part of FONTSPEC <wspr.io/fontspec>
 
-\providecommand*\itscdefault{\itdefault\scdefault}
-\providecommand*\slscdefault{\sldefault\scdefault}
-\DeclareRobustCommand{\sishape}
-  {
-    \not at math@alphabet\sishape\relax
-    \fontshape{\itscdefault}\selectfont
-  }
-\DeclareTextFontCommand{\textsi}{\sishape}
+\providecommand*\scitdefault{\scdefault\itdefault}
+\providecommand*\scsldefault{\scdefault\sldefault}
 \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 \itdefault   \scdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \sldefault   \scdefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \itdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \sldefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \slscdefault \itdefault } {\itscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \itscdefault \sldefault } {\slscdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \itscdefault \updefault } {\scdefault}
-    \tl_const:cn { \__fontspec_shape_merge:nn \slscdefault \updefault } {\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 \scdefault   \itdefault    } {\scitdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scdefault   \sldefault    } {\scsldefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \itdefault    } {\scitdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \sldefault    } {\scsldefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scitdefault \shapedefault } {\scdefault}
+    \tl_const:cn { \__fontspec_shape_merge:nn \scsldefault \shapedefault } {\scdefault}
   }
 \__fontspec_merge_default_shapes:
-\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 }
-  }
 \prg_new_conditional:Nnn \__fontspec_if_merge_shape:n {TF}
   {
     \bool_lazy_and:nnTF
@@ -4044,6 +4024,23 @@
       }
     \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
@@ -4064,7 +4061,7 @@
     \not at math@alphabet\upshape\relax
     \__fontspec_merge_shape:n\updefault
   }
-\cs_new_protected:Npn \emfontdeclare #1
+\cs_set_protected:Npn \emfontdeclare #1
   {
     \prop_gclear:N    \g__fontspec_em_prop
     \int_zero:N       \l__fontspec_emdef_int
@@ -4118,7 +4115,10 @@
 \cs_set:Npn \emreset { \upshape }
 \cs_set:Npn \emshape { \itshape }
 \cs_set:Npn \eminnershape { \upshape }
-\cs_new_protected:Npn \strongfontdeclare #1
+\emfontdeclare{ \emshape, \eminnershape }
+\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
+}
+\cs_set_protected:Npn \strongfontdeclare #1
   {
     \prop_gclear:N   \g__fontspec_strong_prop
     \int_zero:N      \l__fontspec_strongdef_int
@@ -4161,99 +4161,9 @@
     \int_zero:N \l__fontspec_em_int
     \int_zero:N \l__fontspec_strong_int
   }
-\cs_new:Nn \fontspec_set_em_level:n     { \int_set:Nn \l__fontspec_em_int     {#1} }
 \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l__fontspec_strong_int {#1} }
 \strongfontdeclare{ \bfseries }
-\emfontdeclare{ \emshape, \eminnershape }
 
 %%^^A%%  fontspec-code-patches.dtx -- part of FONTSPEC <wspr.io/fontspec>
 
-\cs_new_protected:Nn \fontspec_visible_space:
-  {
-    \__fontspec_primitive_font_glyph_if_exist:NnTF \font {"2423}
-      { \char"2423\scan_stop: }
-      { \fontspec_visible_space_fallback: }
-  }
-\cs_new_protected:Nn \fontspec_visible_space_fallback:
-  {
-    {
-      \usefont{\g_fontspec_encoding_tl}{lmtt}{\f at series}{\f at shape}
-      \textvisiblespace
-    }
-  }
-\group_begin:
-\char_set_catcode_active:n{"20}%
-\cs_gset:Npn\fontspec_print_visible_spaces:{%
-\char_set_catcode_active:n{"20}%
-\cs_set_eq:NN^^20\fontspec_visible_space:%
-}%
-\group_end:
-\AtBeginDocument
-  {
-    \cs_if_exist:NF \verbvisiblespace
-      {
-\__fontspec_patch_verb:
-\__fontspec_patch_verbatim:
-\__fontspec_patch_moreverb:
-\__fontspec_patch_fancyvrb:
-\__fontspec_patch_listings:
-}
-  }
-\cs_new_protected:Npn \__fontspec_patch_verb:
-  {
-\def\verb
-{
-\relax\ifmmode\hbox\else\leavevmode\null\fi
-\bgroup
-\verb at eol@error \let\do\@makeother \dospecials
-\verbatim at font\@noligs
-\@ifstar\__fontspecsverb\@verb
-}
-\def\__fontspecsverb{\fontspec_print_visible_spaces:\@sverb}
-}
-\cs_new_protected:Npn \__fontspec_patch_verbatim:
-  {
-    \@ifpackageloaded{verbatim}
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \group_begin: \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }
-      {
-        \cs_set:cpn {verbatim*}
-          {
-            \@verbatim \fontspec_print_visible_spaces: \@sxverbatim
-          }
-      }
- }
-\cs_new_protected:Npn \__fontspec_patch_moreverb:
-  {
-    \@ifpackageloaded{moreverb}
-      {
-        \cs_set:cpn {listingcont*}
-          {
-            \cs_set:Npn \verbatim at processline
-              {
-                \thelisting at line \global\advance\listing at line1\relax
-                \the\verbatim at line\par
-              }
-            \@verbatim \fontspec_print_visible_spaces: \verbatim at start
-          }
-      }{}
-  }
-\cs_new_protected:Npn \__fontspec_patch_fancyvrb:
-  {
-    \@ifpackageloaded{fancyvrb}
-      {
-        \cs_set_eq:NN \FancyVerbSpace \fontspec_visible_space:
-      }{}
-  }
-\cs_new_protected:Npn \__fontspec_patch_listings:
-  {
-    \@ifpackageloaded{listings}
-      {
-        \cs_set_eq:NN \lst at visiblespace \fontspec_visible_space:
-      }{}
-  }
 

Modified: trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.lua	2020-01-09 22:13:09 UTC (rev 53357)
@@ -23,8 +23,8 @@
 local fontspec    = fontspec
 fontspec.module   = {
     name          = "fontspec",
-    version       = "2.7d",
-    date          = "2019/10/19",
+    version       = "2.7e",
+    date          = "2020/01/09",
     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	2020-01-09 22:12:42 UTC (rev 53356)
+++ trunk/Master/texmf-dist/tex/latex/fontspec/fontspec.sty	2020-01-09 22:13:09 UTC (rev 53357)
@@ -21,7 +21,7 @@
 
 \RequirePackage{xparse}
 \ProvidesExplPackage{fontspec}%
-  {2019/10/19}{2.7d}{Font selection for XeLaTeX and LuaLaTeX}
+  {2020/01/09}{2.7e}{Font selection for XeLaTeX and LuaLaTeX}
 
 %%^^A%%  fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
 \sys_if_engine_luatex:T



More information about the tex-live-commits mailing list