diff options
author | Karl Berry <karl@freefriends.org> | 2017-09-22 22:54:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-09-22 22:54:18 +0000 |
commit | d51add942fa9edcf2de40adbb7ce915bcba38768 (patch) | |
tree | 3bde82167b1510ffd8fa01ba5b030161e15fbc44 | |
parent | 95a2badc031cd53b7456fbda90afd45806639e62 (diff) |
fontspec (22sep17)
git-svn-id: svn://tug.org/texlive/trunk@45381 c570f23f-e606-0410-a88d-b1316a301751
16 files changed, 968 insertions, 896 deletions
diff --git a/Master/texmf-dist/doc/latex/fontspec/CHANGES.md b/Master/texmf-dist/doc/latex/fontspec/CHANGES.md new file mode 100644 index 00000000000..3d63ff45475 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fontspec/CHANGES.md @@ -0,0 +1,329 @@ + +Change history +============== + +- v2.6e (2017/09/22) + + * 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. + + +- 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. + + +- v2.6c (2017/07/23) + + * 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` + (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`. + +- 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. + + * 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` (!!) + +- 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. + 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. + +- 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 + (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'. + +- 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. + +- 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@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.) + +- v2.4d (2015/07/22) + + * 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 (2014/08/23) + + * 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 + mixed-case ".fontspec" files. + * 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. + +- v2.4 (2014/06/01) + + * 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 + + \defaultfontfeatures[\rmfamily]{...} + + or + + \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. + + * 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.) + + * `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 + 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. + A more verbose syntax allows arbitrary font features as well (and this also plays nicely with `SizeFeatures`): + + \fontspec{myfont.otf}[ + FontFace = {b}{ui}{Font = myfont-bui.otf, <features>} , + ] + + 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. + + * 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 + removed. + +- v2.3b (2013/05/12) + + * Compatibility with new (and future) version of luaotfload + +- v2.3a (2013/03/16) + + * 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 + +- 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 + (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 + +- v2.2a (2011/09/14) + + * 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) + using new syntax `[CharacterVariant=5:2]`. + * Add `fontspec`-compatible `\oldstylenums` and `\liningnums` commands. + * New programmer's function `\fontspec_set_fontface:NNnn` (for use when + `\zf@basefont` might previously have been queried). + * 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: + - `xkeyval` package no longer used for option processing; + `expl3`'s `l3keys` used instead. + This allows `fontspec` to be loaded before `\documentclass` + (thanks Heiko Oberdiek for reporting the issue) + and fixes a potential conflict with the `preview` package + (thanks again Vafa). + - Internal names changed; avoid "\zf@basefont", "\zf@family", etc. + from now on -- there are public interfaces now to get access to the + same information + - Update `expl3` support to latest CTAN version. + +- v2.1g (2011/08/02) + + * 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 + were shown in the log file. + * Some small documentation improvements. + +- v2.1e (2010/11/17) + + * Internal changes for luatexbase v0.3. + +- v2.1d (2010/11/07) + + * 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. + +- v2.1c (2010/10/13) + + * 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 + 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: + 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 + (such as using \slshape when no slanted font specified) + * 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: + + - `\fontspec_if_feature:n(TF)` + - `\fontspec_if_language:n(TF)` + - `\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 + to being "native expl3". + +- v2.1 (2010/09/19) + + * Now load xunicode internally for consistent behaviour in + XeLaTeX and LuaLaTeX. + * 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. + in the transition to v2. + * 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 + Don Hosek. + * 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 + 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 + +- 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 + `FeatureFile=...` and `Numbers=Arabic`. + * Add `Parsi` and `Persian` synonyms for `Language=Farsi` diff --git a/Master/texmf-dist/doc/latex/fontspec/README.md b/Master/texmf-dist/doc/latex/fontspec/README.md index e3855384086..77e00a69132 100644 --- a/Master/texmf-dist/doc/latex/fontspec/README.md +++ b/Master/texmf-dist/doc/latex/fontspec/README.md @@ -1,36 +1,18 @@ The FONTSPEC package ==================== -The fontspec package provides an automatic and unified interface for loading +The `fontspec` package provides an automatic and unified interface for loading fonts in LaTeX. XeTeX and LuaTeX (the latter through the `luaotfload` package) -allows a direct interface to fonts which may be loaded by their name rather -than filename, so no manual font installation is required. +allows a direct interface to fonts which may be loaded by their name or filename, +so no manual font installation is required. This package also provides access to the large number of font features -available with AAT and OpenType fonts, including upper and lower case numbers, +available with OpenType (and other) fonts, including upper and lower case numbers, proportional and monospaced numbers, swash letters, ligature control, and many -others. +many others. See the documentation `fontspec.pdf` for full information. -Release versions of fontspec are available from CTAN: - <http://www.ctan.org/pkg/fontspec> - -Development and historical versions are available from Github: - <http://github.com/wspr/fontspec> - -Please offer suggestions and file bug reports in the issue tracker: - <http://github.com/wspr/fontspec/issues> - - -Table of Contents ------------------ - -* Summary of user commands -* Change history ("what's new?") -* Installation instructions -* License details - Summary of user commands ------------------------ @@ -65,338 +47,23 @@ To add features to the font family currently in use: \addfontfeatures{<font options to add>} +Package details +--------------- -Change history --------------- - -- 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. - - -- v2.6c (2017/07/23) - - * 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` - (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`. - -- 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. - - * 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` (!!) - -- 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. - 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. - -- 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 - (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'. - -- 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. - -- 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@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.) - -- v2.4d (2015/07/22) - - * 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 (2014/08/23) - - * 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 - mixed-case ".fontspec" files. - * 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. - -- v2.4 (2014/06/01) - - * 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 - - \defaultfontfeatures[\rmfamily]{...} - - or - - \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. - - * 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.) - - * `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 - 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. - A more verbose syntax allows arbitrary font features as well (and this also plays nicely with `SizeFeatures`): - - \fontspec{myfont.otf}[ - FontFace = {b}{ui}{Font = myfont-bui.otf, <features>} , - ] - - 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. - - * 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 - removed. - -- v2.3b (2013/05/12) - - * Compatibility with new (and future) version of luaotfload - -- v2.3a (2013/03/16) - - * 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 - -- 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 - (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 - -- v2.2a (2011/09/14) - - * 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) - using new syntax `[CharacterVariant=5:2]`. - * Add `fontspec`-compatible `\oldstylenums` and `\liningnums` commands. - * New programmer's function `\fontspec_set_fontface:NNnn` (for use when - `\zf@basefont` might previously have been queried). - * 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: - - `xkeyval` package no longer used for option processing; - `expl3`'s `l3keys` used instead. - This allows `fontspec` to be loaded before `\documentclass` - (thanks Heiko Oberdiek for reporting the issue) - and fixes a potential conflict with the `preview` package - (thanks again Vafa). - - Internal names changed; avoid "\zf@basefont", "\zf@family", etc. - from now on -- there are public interfaces now to get access to the - same information - - Update `expl3` support to latest CTAN version. - -- v2.1g (2011/08/02) - - * 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 - were shown in the log file. - * Some small documentation improvements. - -- v2.1e (2010/11/17) - - * Internal changes for luatexbase v0.3. - -- v2.1d (2010/11/07) - - * 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. - -- v2.1c (2010/10/13) - - * 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 - 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: - 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 - (such as using \slshape when no slanted font specified) - * 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: - - - `\fontspec_if_feature:n(TF)` - - `\fontspec_if_language:n(TF)` - - `\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 - to being "native expl3". - -- v2.1 (2010/09/19) - - * Now load xunicode internally for consistent behaviour in - XeLaTeX and LuaLaTeX. - * 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. - in the transition to v2. - * 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 - Don Hosek. - * 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 - 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 - -- 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 - `FeatureFile=...` and `Numbers=Arabic`. - * Add `Parsi` and `Persian` synonyms for `Language=Farsi` +Release versions of fontspec are available from CTAN: + <http://www.ctan.org/pkg/fontspec> +Development and historical versions are available from Github: + <http://github.com/wspr/fontspec> -Installation ------------- +Please offer suggestions and file bug reports in the issue tracker: + <http://github.com/wspr/fontspec/issues> -If you are running TeX Live, you can get the latest version of this package by running +If you are running TeX Live, you can update to the latest version of this package by running tlmgr install fontspec -If you wish to download the latest release version from CTAN, get the pre-built TDS package and extract it into your local texmf tree: +If you wish to manually download the latest release version from CTAN, get the pre-built TDS package and extract it into your local texmf tree: http://mirror.ctan.org/install/macros/latex/contrib/fontspec.tds.zip @@ -404,33 +71,22 @@ If you wish to use the latest development version from Github, either use git to git clone git://github.com/wspr/fontspec.git -or if you don't have git you can download it from - - http://github.com/wspr/fontspec/zipball/master - -Having obtained the package from Github, extract the package code by running - - tex fontspec.dtx - -and then move the necessary files into your local texmf tree. -The documentation can be compiled by running - - xelatex -shell-escape fontspec.dtx - -These steps are automated in the Makefile; run +(For bleeding edge versions, see the `working` branch.) +Having obtained the package from Github, install the package code by running texlua build.lua install -to compile the documentation and install all necessary files in your +This will compile the documentation and install all necessary files in your local texmf tree. Depending how your TeX distribution is configured you may then need to update the filename database with `texhash`. + License ------- -Copyright 2004--2016 Will Robertson <wspr81@gmail.com> -Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> +Copyright 2004--2017 Will Robertson <will.robertson@latex-project.org> +Copyright 2009--2010 Khaled Hosny <khaledhosny@eglug.org> Distributable under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of diff --git a/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf Binary files differindex f93f79d9822..dbaa1f5660c 100644 --- a/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf +++ b/Master/texmf-dist/doc/latex/fontspec/fontspec.pdf diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-closing.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-closing.dtx index f2d3c1c2ce8..73ec2cfe255 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-closing.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-closing.dtx @@ -7,28 +7,6 @@ % \end{macrocode} % \fi % -% \subsection{Compatibility} -% -% \begin{macro}{\zf@enc} -% \begin{macro}{\zf@family} -% \begin{macro}{\zf@basefont} -% \begin{macro}{\zf@fontspec} -% Old interfaces. -% These are needed by, at least, the \pkg{mathspec} package. -% \begin{macrocode} -\tl_set:Nn \zf@enc { \g_fontspec_encoding_tl } -\cs_set:Npn \zf@fontspec #1 #2 - { - \@@_select_font_family:nn {#1} {#2} - \tl_set:Nn \zf@family { \l_fontspec_family_tl } - \tl_set:Nn \zf@basefont { \l_fontspec_font } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% % \subsection{Finishing up} % Now we just want to set up loading the \texttt{.cfg} file, if it exists. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex b/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex index 269a0602b3b..17d4a9da151 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-doc-featset.tex @@ -462,13 +462,16 @@ use this feature in \cs{addfontfeatures}. \subsection{The hyphenation character} The letter used for hyphenation may be chosen with the \feat{HyphenChar} -feature. This is a \XeTeX-only feature since \LuaTeX\ cannot set the hyphenation character on a per-font basis; see its \cs{prehyphenchar} primitive for further details. +feature. +With one exception (\feat{HyphenChar} \texttt{=} \opt{None}), +this is a \XeTeX-only feature since \LuaTeX\ cannot set the hyphenation character on a per-font basis; +see its \cs{prehyphenchar} primitive for further details. -It takes three types of input, which are chosen according to some +\feat{HyphenChar} takes three types of input, which are chosen according to some simple rules. If the input is the string \opt{None}, then hyphenation is suppressed for this font. -If the input is a single character, then this -character is used. Finally, if the input is longer than a single character +If the input is a single character, then this character is used. +Finally, if the input is longer than a single character it must be the UTF-8 slot number of the hyphen character you desire. This package redefines \LaTeX's \cmd\-\ macro such that it adjusts along with the above changes. @@ -503,9 +506,9 @@ and Lua\TeX\ able to compare the difference for equivalent font sizes. The -\opt{OpticalSize} option may be used to specify a different optical +\feat{OpticalSize} feature may be used to specify a different optical size. -With \opt{OpticalSize} set +With \feat{OpticalSize} set to zero, no optical size font substitution is performed, as shown in \exref{optsize0}. @@ -545,14 +548,14 @@ of font size. For example, something like: In rare situations users may want to mechanically distort the shapes of the glyphs in the current font such as shown in \exref{fake}. Please don't overuse these features; they are \emph{not} a good alternative to having the real shapes. \begin{Xexample}{fake}{Articifial font transformations.} - \fontspec{Charis SIL} \emph{ABCxyz} \quad - \fontspec{Charis SIL}[FakeSlant=0.2] ABCxyz + \fontspec{Quattrocento.otf} \emph{ABCxyz} \quad + \fontspec{Quattrocento.otf}[FakeSlant=0.2] ABCxyz - \fontspec{Charis SIL} ABCxyz \quad - \fontspec{Charis SIL}[FakeStretch=1.2] ABCxyz + \fontspec{Quattrocento.otf} ABCxyz \quad + \fontspec{Quattrocento.otf}[FakeStretch=1.2] ABCxyz - \fontspec{Charis SIL} \textbf{ABCxyz} \quad - \fontspec{Charis SIL}[FakeBold=1.5] ABCxyz + \fontspec{Quattrocento.otf} \textbf{ABCxyz} \quad + \fontspec{Quattrocento.otf}[FakeBold=1.5] ABCxyz \end{Xexample} If values are omitted, their defaults are as shown above. diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex b/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex index a2ded3ca205..3869ce73430 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-doc-opentype.tex @@ -493,7 +493,7 @@ Note the occasional inconsistency with which font features are labelled; a long- \begin{Xexample}[firstline=2]{style-alt}{Example of the \opt{Alternate} option of the \feat{Style} feature.} \Large - \fontspec{Quattrocento Roman} + \fontspec{Quattrocento.otf} M Q W \\ \addfontfeature{Style=Alternate} M Q W diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-fontload.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-fontload.dtx index 0f0bfedb9f3..f25ee8fbbb6 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-fontload.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-fontload.dtx @@ -71,6 +71,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_primitive_font_set_hyphenchar:Nn} +% \begin{macrocode} +\cs_new:Nn \@@_primitive_font_set_hyphenchar:Nn + { + \tex_hyphenchar:D #1 = #2 \scan_stop: + } +% \end{macrocode} +% \end{macro} +% % \iffalse % \begin{macrocode} %</fontspec&(xetexx|luatex)> diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-interfaces.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-interfaces.dtx new file mode 100644 index 00000000000..f9c536f5300 --- /dev/null +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-interfaces.dtx @@ -0,0 +1,198 @@ +% \section{User commands}\label{sec:codeuser} +% +% This section contains the definitions of the commands detailed in +% the user documentation. Only the `top level' definitions of the +% commands are contained herein; they all use or define macros which +% are defined or used later on in \vref{sec:codeinternal}. +% +% \iffalse +% \begin{macrocode} +%<*fontspec&(xetexx|luatex)> +% \end{macrocode} +% \fi +% +% \begin{macrocode} +\NewDocumentCommand \fontspec { O{} m O{} } + { + \@@_main_fontspec:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setmainfont { O{} m O{} } + { + \@@_main_setmainfont:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setsansfont { O{} m O{} } + { + \@@_main_setsansfont:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setmonofont { O{} m O{} } + { + \@@_main_setmonofont:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setmathrm { O{} m O{} } + { + \@@_main_setmathrm:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setboldmathrm { O{} m O{} } + { + \@@_main_setboldmathrm:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setmathsf { O{} m O{} } + { + \@@_main_setmathsf:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \setmathtt { O{} m O{} } + { + \@@_main_setmathtt:nn {#1,#3} {#2} + } +% \end{macrocode} +% +% \begin{macro}{\setromanfont} +% This is the old name for \cs{setmainfont}, retained \emph{ad infinitum} +% for backwards compatibility. It was deprecated in 2010. +% \begin{macrocode} +\NewDocumentCommand \setromanfont { O{} m O{} } + { + \@@_main_setmainfont:nn {#1,#3} {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NewDocumentCommand \newfontfamily { m O{} m O{} } + { + \@@_main_newfontfamily:nnn {#1} {#2,#4} {#3} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \newfontface { m O{} m O{} } + { + \@@_main_newfontface:nnn {#1} {#2,#4} {#3} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \defaultfontfeatures { t+ o m } + { + \@@_main_defaultfontfeatures:nnn {#1} {#2} {#3} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \addfontfeatures {m} + { + \@@_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \addfontfeature {m} + { + \@@_main_addfontfeatures:n {#1} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \newfontfeature {mm} + { + \@@_main_newfontfeature:nn {#1} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \newAATfeature {mmmm} + { + \@@_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \newopentypefeature {mmm} + { + \@@_main_newopentypefeature:nnn {#1} {#2} {#3} + } +% \end{macrocode} +% +% \begin{macro}{\newICUfeature} +% Deprecated. +% \begin{macrocode} +\NewDocumentCommand \newICUfeature {mmm} + { + \@@_main_newopentypefeature:nnn {#1} {#2} {#3} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NewDocumentCommand \aliasfontfeature {mm} + { + \@@_main_aliasfontfeature:nn {#1} {#2} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \aliasfontfeatureoption {mmm} + { + \@@_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} + } +% \end{macrocode} +% +% \begin{macro}{\newfontscript} +% Mostly used internally, but also possibly useful for users, to define new OpenType +% `scripts', mapping logical names to OpenType script tags. +% \begin{macrocode} +\NewDocumentCommand \newfontscript {mm} + { + \fontspec_new_script:nn {#1} {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfontlanguage} +% Mostly used internally, but also possibly useful for users, to define new OpenType +% `languages', mapping logical names to OpenType language tags. +% \begin{macrocode} +\NewDocumentCommand \newfontlanguage {mm} + { + \fontspec_new_lang:nn {#1} {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NewDocumentCommand \DeclareFontsExtensions {m} + { + \@@_main_DeclareFontsExtensions:n {#1} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \IfFontFeatureActiveTF {mmm} + { + \@@_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} + } +% \end{macrocode} +% +% \iffalse +% \begin{macrocode} +%</fontspec&(xetexx|luatex)> +% \end{macrocode} +% \fi diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-internal.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-internal.dtx index 7c4daabcd19..0bc6e64d130 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-internal.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-internal.dtx @@ -7,7 +7,6 @@ % \fi % % \subsection{The main function for setting fonts} -% \label{sec:codeinternal} % % \begin{macro}{\@@_select_font_family:nn} % This is the command that defines font families for use, the underlying @@ -75,7 +74,7 @@ % \begin{macro}{\fontspec_select:nn} % This old name has been used by 3rd party packages so for compatibility: % \begin{macrocode} -\cs_set_eq:NN \fontspec_select:nn \@@_select_font_family:nn +\cs_set_eq:NN \fontspec_select:nn \@@_select_font_family:nn %% deprecated, for compatibility only % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-keyval.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-keyval.dtx index 8f790533a7c..13ed395a784 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-keyval.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-keyval.dtx @@ -577,16 +577,19 @@ % \meta{glyph}, or \meta{slot}. If the input isn't the first, % and it's one character, then it's the second; otherwise, it's % the third. +% +% LuaTeX decouples hyphenation from font settings, so only \verb|HyphenChar=None| works +% for that engine. % \begin{macrocode} \@@_keys_define_code:nnn {fontspec} {HyphenChar} { - \@@_warning:nx {only-xetex-feature} {HyphenChar} \str_if_eq:nnTF {#1} {None} { \tl_put_right:Nn \l_@@_postadjust_tl - { \hyphenchar \font = -1 \relax } + { \@@_primitive_font_set_hyphenchar:Nn \font {-1} } } { + \@@_warning:nx {only-xetex-feature} {HyphenChar} \tl_if_single:nTF {#1} { \tl_set:Nn \l_fontspec_hyphenchar_tl {`#1} } @@ -595,7 +598,7 @@ \@@_primitive_font_glyph_if_exist:NnTF \l_fontspec_font {\l_fontspec_hyphenchar_tl} { \tl_put_right:Nn \l_@@_postadjust_tl - { \hyphenchar \font = \l_fontspec_hyphenchar_tl \scan_stop: } + { \@@_primitive_font_set_hyphenchar:Nn \font { \l_fontspec_hyphenchar_tl } } } { \@@_error:nx {no-glyph}{#1} } diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-user.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-user.dtx index 6ba11f53a0d..8ab76d375ed 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec-user.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec-user.dtx @@ -1,9 +1,5 @@ -% \section{User commands}\label{sec:codeuser} -% -% This section contains the definitions of the commands detailed in -% the user documentation. Only the `top level' definitions of the -% commands are contained herein; they all use or define macros which -% are defined or used later on in \vref{sec:codeinternal}. +% \section{User command internals} +% \label{sec:codeinternal} % % \iffalse % \begin{macrocode} @@ -11,23 +7,17 @@ % \end{macrocode} % \fi % -% \subsubsection{Font selection} +% +% \subsection{Font selection} % \begin{macro}{\fontspec} % This is the main command of the package that % selects fonts with various features. It takes two arguments: the % font name and the optional requested features of that % font. Then this new font family is selected. % \begin{macrocode} -\NewDocumentCommand \fontspec { O{} m O{} } - { - \@@_main_fontspec:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_fontspec:nnn +\cs_set:Nn \@@_main_fontspec:nn { - \fontspec_set_family:Nnn \f@family {#1,#3} {#2} + \fontspec_set_family:Nnn \f@family {#1} {#2} \fontencoding { \l_@@_nfss_enc_tl } \selectfont \ignorespaces @@ -42,16 +32,9 @@ % (monospaced). I end them with |\normalfont| so that if they're % used in the document, the change registers immediately. % \begin{macrocode} -\DeclareDocumentCommand \setmainfont { O{} m O{} } - { - \@@_main_setmainfont:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_setmainfont:nnn +\cs_set:Nn \@@_main_setmainfont:nn { - \fontspec_set_family:Nnn \g_@@_rmfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g_@@_rmfamily_family {#1} {#2} \tl_set_eq:NN \rmdefault \g_@@_rmfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \rmfamily } { @@ -62,6 +45,7 @@ } \str_if_eq_x:nnT {\familydefault} {\rmdefault} { \tl_set_eq:NN \encodingdefault \l_@@_nfss_enc_tl } + \@@_setmainfont_hook:nn {#1} {#2} \normalfont \ignorespaces } @@ -70,16 +54,9 @@ % % \begin{macro}{\setsansfont} % \begin{macrocode} -\DeclareDocumentCommand \setsansfont { O{} m O{} } - { - \@@_main_setsansfont:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_setsansfont:nnn +\cs_set:Nn \@@_main_setsansfont:nn { - \fontspec_set_family:Nnn \g_@@_sffamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g_@@_sffamily_family {#1} {#2} \tl_set_eq:NN \sfdefault \g_@@_sffamily_family \use:x { \exp_not:n { \DeclareRobustCommand \sffamily } { @@ -90,6 +67,7 @@ } \str_if_eq_x:nnT {\familydefault} {\sfdefault} { \tl_set_eq:NN \encodingdefault \l_@@_nfss_enc_tl } + \@@_setsansfont_hook:nn {#1} {#2} \normalfont \ignorespaces } @@ -98,16 +76,9 @@ % % \begin{macro}{\setmonofont} % \begin{macrocode} -\DeclareDocumentCommand \setmonofont { O{} m O{} } - { - \@@_main_setmonofont:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_setmonofont:nnn +\cs_set:Nn \@@_main_setmonofont:nn { - \fontspec_set_family:Nnn \g_@@_ttfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g_@@_ttfamily_family {#1} {#2} \tl_set_eq:NN \ttdefault \g_@@_ttfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \ttfamily } { @@ -118,6 +89,7 @@ } \str_if_eq_x:nnT {\familydefault} {\ttdefault} { \tl_set_eq:NN \encodingdefault \l_@@_nfss_enc_tl } + \@@_setmonofont_hook:nn {#1} {#2} \normalfont \ignorespaces } @@ -125,89 +97,76 @@ % \end{macro} % % -% \begin{macro}{\setromanfont} -% This is the old name for \cs{setmainfont}, retained \emph{ad infinitum} -% for backwards compatibility. It was deprecated in 2010. -% \begin{macrocode} -\DeclareDocumentCommand \setromanfont { O{} m O{} } - { - \@@_main_setmainfont:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% \end{macro} % % % \begin{macro}{\setmathrm} -% \begin{macro}{\setmathsf} -% \begin{macro}{\setboldmathrm} -% \begin{macro}{\setmathtt} % These commands are analogous to \cmd\setmainfont\ and others, % but for selecting the font used for \cmd\mathrm, \etc. They % can only be used in the preamble of the % document. \cmd\setboldmathrm\ is used for specifying which % fonts should be used in \cmd\boldmath. % \begin{macrocode} -\DeclareDocumentCommand \setmathrm { O{} m O{} } +\cs_set:Nn \@@_main_setmathrm:nn { - \@@_main_setmathrm:nnn {#1} {#2} {#3} +%<XE> \fontspec_set_family:Nnn \g_@@_mathrm_tl {#1} {#2} +%<LU> \fontspec_set_family:Nnn \g_@@_mathrm_tl {Renderer=Basic,#1} {#2} + \@@_setmathrm_hook:nn {#1} {#2} } % \end{macrocode} +% \end{macro} % +% \begin{macro}{\setboldmathrm} % \begin{macrocode} -\cs_set:Nn \@@_main_setmathrm:nnn - { - \fontspec_set_family:Nnn \g_@@_mathrm_tl {#1} {#2} - } -% \end{macrocode} -% -% \begin{macrocode} -\DeclareDocumentCommand \setboldmathrm { O{} m O{} } +\cs_set:Nn \@@_main_setboldmathrm:nn { - \@@_main_setboldmathrm:nnn {#1} {#2} {#3} +%<XE> \fontspec_set_family:Nnn \g_@@_bfmathrm_tl {#1} {#2} +%<LU> \fontspec_set_family:Nnn \g_@@_bfmathrm_tl {Renderer=Basic,#1} {#2} + \@@_setboldmathrm_hook:nn {#1} {#2} } % \end{macrocode} +% \end{macro} % +% \begin{macro}{\setmathsf} % \begin{macrocode} -\cs_set:Nn \@@_main_setboldmathrm:nnn - { - \fontspec_set_family:Nnn \g_@@_bfmathrm_tl {#1} {#2} - } -% \end{macrocode} -% -% \begin{macrocode} -\DeclareDocumentCommand \setmathsf { O{} m O{} } +\cs_set:Nn \@@_main_setmathsf:nn { - \@@_main_setmathsf:nnn {#1} {#2} {#3} +%<XE> \fontspec_set_family:Nnn \g_@@_mathsf_tl {#1} {#2} +%<LU> \fontspec_set_family:Nnn \g_@@_mathsf_tl {Renderer=Basic,#1} {#2} + \@@_setmathsf_hook:nn {#1} {#2} } % \end{macrocode} +% \end{macro} % +% \begin{macro}{\setmathtt} % \begin{macrocode} -\cs_set:Nn \@@_main_setmathsf:nnn - { - \fontspec_set_family:Nnn \g_@@_mathsf_tl {#1} {#2} - } -% \end{macrocode} -% -% \begin{macrocode} -\DeclareDocumentCommand \setmathtt { O{} m O{} } +\cs_set:Nn \@@_main_setmathtt:nn { - \@@_main_setmathtt:nnn {#1} {#2} {#3} +%<XE> \fontspec_set_family:Nnn \g_@@_mathtt_tl {#1} {#2} +%<LU> \fontspec_set_family:Nnn \g_@@_mathtt_tl {Renderer=Basic,#1} {#2} + \@@_setmathtt_hook:nn {#1} {#2} } % \end{macrocode} +% \end{macro} % +% Hooks: % \begin{macrocode} -\cs_set:Nn \@@_main_setmathtt:nnn - { - \fontspec_set_family:Nnn \g_@@_mathtt_tl {#1} {#2} - } +\cs_set_eq:NN \@@_setmainfont_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setsansfont_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setmonofont_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setmathrm_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setmathsf_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setmathtt_hook:nn \use_none:nn +\cs_set_eq:NN \@@_setboldmathrm_hook:nn \use_none:nn % \end{macrocode} % +% Hmm, this isn't necessary with \pkg{unicode-math}; oh well: % \begin{macrocode} \@onlypreamble\setmathrm \@onlypreamble\setboldmathrm \@onlypreamble\setmathsf \@onlypreamble\setmathtt % \end{macrocode} +% % If the commands above are not executed, then \cmd\rmdefault\ (\etc) % will be used. % \begin{macrocode} @@ -215,8 +174,6 @@ \tl_set:Nn \g_@@_mathsf_tl {\sfdefault} \tl_set:Nn \g_@@_mathtt_tl {\ttdefault} % \end{macrocode} -% \end{macro} \end{macro} \end{macro} -% \end{macro} % % \begin{macro}{\newfontfamily} % This macro takes the arguments of \cs{fontspec} with a prepended @@ -230,16 +187,9 @@ % \cs{l_fontspec_family_tl}. This family is then used in a typical NFSS \cmd\fontfamily\ % declaration, saved in the macro name specified. % \begin{macrocode} -\DeclareDocumentCommand \newfontfamily { m O{} m O{} } - { - \@@_main_newfontfamily:nnnn {#1} {#2} {#3} {#4} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_newfontfamily:nnnn +\cs_set:Nn \@@_main_newfontfamily:nnn { - \fontspec_set_family:cnn { g_@@_ \cs_to_str:N #1 _family } {#2,#4} {#3} + \fontspec_set_family:cnn { g_@@_ \cs_to_str:N #1 _family } {#2} {#3} \use:x { \exp_not:N \DeclareRobustCommand \exp_not:N #1 @@ -256,21 +206,14 @@ % \begin{macro}{\newfontface} % \cmd\newfontface\ uses the fact that if the argument to \feat{BoldFont}, etc., is empty (\ie, |BoldFont={}|), then no bold font is searched for. % \begin{macrocode} -\DeclareDocumentCommand \newfontface { m O{} m O{} } - { - \@@_main_newfontface:nnnn {#1} {#2} {#3} {#4} - } -% \end{macrocode} -% -% \begin{macrocode} -\cs_set:Nn \@@_main_newfontface:nnnn +\cs_set:Nn \@@_main_newfontface:nnn { - \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} + \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3} } % \end{macrocode} % \end{macro} % -% \subsubsection{Font feature selection} +% \subsection{Font feature selection} % % \begin{macro}{\defaultfontfeatures} % This macro takes one argument that consists of all of feature @@ -279,15 +222,17 @@ % \cs{g_fontspec_default_fontopts_tl} (initialised empty), which is % concatenated with the individual macro choices in the % [...] macro. -% % \begin{macrocode} -\DeclareDocumentCommand \defaultfontfeatures { t+ o m } +\cs_set:Nn \@@_main_defaultfontfeatures:nnn { \IfNoValueTF {#2} { \@@_set_default_features:nn {#1} {#3} } { \@@_set_font_default_features:nnn {#1} {#2} {#3} } \ignorespaces } +% \end{macrocode} +% +% \begin{macrocode} \cs_new:Nn \@@_set_default_features:nn { \IfBooleanTF {#1} \clist_put_right:Nn \clist_set:Nn @@ -345,13 +290,6 @@ % \cs{addfontfeature} is defined as an alias, as I found that I % often typed this instead when adding only a single font feature. % \begin{macrocode} -\DeclareDocumentCommand \addfontfeatures {m} - { - \@@_main_addfontfeatures:n {#1} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_addfontfeatures:n { %<debug> \typeout{^^J::::::::::::::::::::::::::::::::::^^J: addfontfeatures} @@ -376,24 +314,16 @@ } \ignorespaces } -\cs_set_eq:NN \addfontfeature \addfontfeatures % \end{macrocode} % \end{macro} % -% \subsubsection{Defining new font features} +% \subsection{Defining new font features} % % \begin{macro}{\newfontfeature} % \cs{newfontfeature} takes two arguments: the name of the feature % tag by which to reference it, and the string that is used to % select the font feature. % \begin{macrocode} -\DeclareDocumentCommand \newfontfeature {mm} - { - \@@_main_newfontfeature:nn {#1} {#2} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_newfontfeature:nn { \keys_define:nn { fontspec } @@ -413,13 +343,6 @@ % Better than \cmd\newfontfeature\ because it checks if the feature exists in the % font it's being used for. % \begin{macrocode} -\DeclareDocumentCommand \newAATfeature {mmmm} - { - \@@_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_newAATfeature:nnnn { \keys_if_exist:nnF { fontspec } {#1} @@ -438,13 +361,6 @@ % Better than \cmd\newfontfeature\ because it checks if the feature exists in the % font it's being used for. % \begin{macrocode} -\DeclareDocumentCommand \newopentypefeature {mmm} - { - \@@_main_newopentypefeature:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_newopentypefeature:nnn { \keys_if_exist:nnF { fontspec / options } {#1} @@ -467,27 +383,11 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\newICUfeature} -% Deprecated. -% \begin{macrocode} -\DeclareDocumentCommand \newICUfeature {mmm} - { - \@@_main_newopentypefeature:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% \end{macro} % % % \begin{macro}{\aliasfontfeature} % User commands for renaming font features and font feature options. % \begin{macrocode} -\DeclareDocumentCommand \aliasfontfeature {mm} - { - \@@_main_aliasfontfeature:nn {#1} {#2} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_aliasfontfeature:nn { %<debug> \typeout{::::::::::::::::::::^^J:: aliasfontfeature{#1}{#2}} @@ -512,13 +412,6 @@ % % \begin{macro}{\aliasfontfeatureoption} % \begin{macrocode} -\DeclareDocumentCommand \aliasfontfeatureoption {mmm} - { - \@@_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_aliasfontfeatureoption:nnn { \bool_set_false:N \l_@@_alias_bool @@ -554,57 +447,24 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\newfontscript} -% Mostly used internally, but also possibly useful for users, to define new OpenType -% `scripts', mapping logical names to OpenType script tags. -% \begin{macrocode} -\DeclareDocumentCommand \newfontscript {mm} - { - \fontspec_new_script:nn {#1} {#2} - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\newfontlanguage} -% Mostly used internally, but also possibly useful for users, to define new OpenType -% `languages', mapping logical names to OpenType language tags. -% \begin{macrocode} -\DeclareDocumentCommand \newfontlanguage {mm} - { - \fontspec_new_lang:nn {#1} {#2} - } -% \end{macrocode} -% \end{macro} -% % % \begin{macro}{\DeclareFontsExtensions} % \texttt{dfont} would never be uppercase, right? % \begin{macrocode} -\DeclareDocumentCommand \DeclareFontsExtensions {m} - { - \@@_main_DeclareFontsExtensions:n {#1} - } -% \end{macrocode} -% -% \begin{macrocode} \cs_set:Nn \@@_main_DeclareFontsExtensions:n { \clist_set:Nn \l_@@_extensions_clist { #1 } \tl_remove_all:Nn \l_@@_extensions_clist {~} } -\DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} % \end{macrocode} -% \end{macro} - - -% \begin{macro}{\IfFontFeatureActiveTF} +% % \begin{macrocode} -\DeclareDocumentCommand \IfFontFeatureActiveTF {mmm} - { - \@@_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} - } +\DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} % \end{macrocode} +% \end{macro} % +% +% \begin{macro}{\IfFontFeatureActiveTF} % \begin{macrocode} \cs_set:Nn \@@_main_IfFontFeatureActiveTF:nnn { diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx index 06b3f7ae308..4b271817da0 100644 --- a/Master/texmf-dist/source/latex/fontspec/fontspec.dtx +++ b/Master/texmf-dist/source/latex/fontspec/fontspec.dtx @@ -41,6 +41,7 @@ And the derived files: fontspec*.sty,fontspec.lua, fontspec.pdf. \DTX{fontspec-msg.dtx} \DTX{fontspec-opening.dtx} \DTX{fontspec-fontload.dtx} + \DTX{fontspec-interfaces.dtx} \DTX{fontspec-user.dtx} \DTX{fontspec-api.dtx} \DTX{fontspec-internal.dtx} @@ -58,10 +59,10 @@ And the derived files: fontspec*.sty,fontspec.lua, fontspec.pdf. \DTX{fontspec-patches.dtx} } -\def\DTX#1{\from{#1}{fontspec,xetexx\FSDEBUG}} +\def\DTX#1{\from{#1}{fontspec,XE,xetexx\FSDEBUG}} \generate{\file{fontspec-xetex.sty}{\FONTSPECDTX}} -\def\DTX#1{\from{#1}{fontspec,luatex\FSDEBUG}} +\def\DTX#1{\from{#1}{fontspec,LU,luatex\FSDEBUG}} \generate{\file{fontspec-luatex.sty}{\FONTSPECDTX}} \def\tmpa{plain} @@ -79,14 +80,14 @@ And the derived files: fontspec*.sty,fontspec.lua, fontspec.pdf. %<fontspec&xetexx>\ProvidesExplPackage{fontspec-xetex}% %<fontspec&luatex>\ProvidesExplPackage{fontspec-luatex}% %<*fontspec> - {2017/08/14}{2.6d}{Font selection for XeLaTeX and LuaLaTeX} + {2017/09/22}{2.6e}{Font selection for XeLaTeX and LuaLaTeX} %</fontspec> %<lua>fontspec = fontspec or {} %<lua>local fontspec = fontspec %<lua>fontspec.module = { %<lua> name = "fontspec", -%<lua> version = "2.6d", -%<lua> date = "2017/08/14", +%<lua> version = "2.6e", +%<lua> date = "2017/09/27", %<lua> description = "Font selection for XeLaTeX and LuaLaTeX", %<lua> author = "Khaled Hosny, Philipp Gesang, Will Robertson", %<lua> copyright = "Khaled Hosny, Philipp Gesang, Will Robertson", diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty index 54bb94c2835..ae6bb9c4b7d 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty @@ -4,26 +4,27 @@ %% %% The original source files were: %% -%% fontspec.dtx (with options: `fontspec,luatex') -%% fontspec-vars.dtx (with options: `fontspec,luatex') -%% fontspec-msg.dtx (with options: `fontspec,luatex') -%% fontspec-opening.dtx (with options: `fontspec,luatex') -%% fontspec-fontload.dtx (with options: `fontspec,luatex') -%% fontspec-user.dtx (with options: `fontspec,luatex') -%% fontspec-api.dtx (with options: `fontspec,luatex') -%% fontspec-internal.dtx (with options: `fontspec,luatex') -%% fontspec-opentype.dtx (with options: `fontspec,luatex') -%% fontspec-graphite.dtx (with options: `fontspec,luatex') -%% fontspec-keyval.dtx (with options: `fontspec,luatex') -%% fontspec-feat-opentype.dtx (with options: `fontspec,luatex') -%% fontspec-scripts.dtx (with options: `fontspec,luatex') -%% fontspec-lang.dtx (with options: `fontspec,luatex') -%% fontspec-feat-aat.dtx (with options: `fontspec,luatex') -%% fontspec-enc.dtx (with options: `fontspec,luatex') -%% fontspec-math.dtx (with options: `fontspec,luatex') -%% fontspec-closing.dtx (with options: `fontspec,luatex') -%% fontspec-xfss.dtx (with options: `fontspec,luatex') -%% fontspec-patches.dtx (with options: `fontspec,luatex') +%% fontspec.dtx (with options: `fontspec,LU,luatex') +%% fontspec-vars.dtx (with options: `fontspec,LU,luatex') +%% fontspec-msg.dtx (with options: `fontspec,LU,luatex') +%% fontspec-opening.dtx (with options: `fontspec,LU,luatex') +%% fontspec-fontload.dtx (with options: `fontspec,LU,luatex') +%% fontspec-interfaces.dtx (with options: `fontspec,LU,luatex') +%% fontspec-user.dtx (with options: `fontspec,LU,luatex') +%% fontspec-api.dtx (with options: `fontspec,LU,luatex') +%% fontspec-internal.dtx (with options: `fontspec,LU,luatex') +%% fontspec-opentype.dtx (with options: `fontspec,LU,luatex') +%% fontspec-graphite.dtx (with options: `fontspec,LU,luatex') +%% fontspec-keyval.dtx (with options: `fontspec,LU,luatex') +%% fontspec-feat-opentype.dtx (with options: `fontspec,LU,luatex') +%% fontspec-scripts.dtx (with options: `fontspec,LU,luatex') +%% fontspec-lang.dtx (with options: `fontspec,LU,luatex') +%% fontspec-feat-aat.dtx (with options: `fontspec,LU,luatex') +%% fontspec-enc.dtx (with options: `fontspec,LU,luatex') +%% fontspec-math.dtx (with options: `fontspec,LU,luatex') +%% fontspec-closing.dtx (with options: `fontspec,LU,luatex') +%% fontspec-xfss.dtx (with options: `fontspec,LU,luatex') +%% fontspec-patches.dtx (with options: `fontspec,LU,luatex') %% ------------------------------------------------ %% The FONTSPEC package for XeLaTeX/LuaLaTeX %% (C) 2004--2017 Will Robertson and Khaled Hosny @@ -32,7 +33,7 @@ \RequirePackage{expl3} \RequirePackage{xparse} \ProvidesExplPackage{fontspec-luatex}% - {2017/08/14}{2.6d}{Font selection for XeLaTeX and LuaLaTeX} + {2017/09/22}{2.6e}{Font selection for XeLaTeX and LuaLaTeX} \bool_new:N \l__fontspec_firsttime_bool \bool_new:N \l__fontspec_nobf_bool \bool_new:N \l__fontspec_noit_bool @@ -471,24 +472,116 @@ \prg_return_false: \fi: } +\cs_new:Nn \__fontspec_primitive_font_set_hyphenchar:Nn + { + \tex_hyphenchar:D #1 = #2 \scan_stop: + } \NewDocumentCommand \fontspec { O{} m O{} } { - \__fontspec_main_fontspec:nnn {#1} {#2} {#3} + \__fontspec_main_fontspec:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmainfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setsansfont { O{} m O{} } + { + \__fontspec_main_setsansfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmonofont { O{} m O{} } + { + \__fontspec_main_setmonofont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathrm { O{} m O{} } + { + \__fontspec_main_setmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setboldmathrm { O{} m O{} } + { + \__fontspec_main_setboldmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathsf { O{} m O{} } + { + \__fontspec_main_setmathsf:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathtt { O{} m O{} } + { + \__fontspec_main_setmathtt:nn {#1,#3} {#2} + } +\NewDocumentCommand \setromanfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \newfontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:nnn {#1} {#2,#4} {#3} + } +\NewDocumentCommand \newfontface { m O{} m O{} } + { + \__fontspec_main_newfontface:nnn {#1} {#2,#4} {#3} + } +\NewDocumentCommand \defaultfontfeatures { t+ o m } + { + \__fontspec_main_defaultfontfeatures:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \addfontfeatures {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \addfontfeature {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \newfontfeature {mm} + { + \__fontspec_main_newfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \newAATfeature {mmmm} + { + \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} + } +\NewDocumentCommand \newopentypefeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newICUfeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \aliasfontfeature {mm} + { + \__fontspec_main_aliasfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \aliasfontfeatureoption {mmm} + { + \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newfontscript {mm} + { + \fontspec_new_script:nn {#1} {#2} + } +\NewDocumentCommand \newfontlanguage {mm} + { + \fontspec_new_lang:nn {#1} {#2} + } +\NewDocumentCommand \DeclareFontsExtensions {m} + { + \__fontspec_main_DeclareFontsExtensions:n {#1} + } +\NewDocumentCommand \IfFontFeatureActiveTF {mmm} + { + \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} } -\cs_set:Nn \__fontspec_main_fontspec:nnn +\cs_set:Nn \__fontspec_main_fontspec:nn { - \fontspec_set_family:Nnn \f@family {#1,#3} {#2} + \fontspec_set_family:Nnn \f@family {#1} {#2} \fontencoding { \l__fontspec_nfss_enc_tl } \selectfont \ignorespaces } -\DeclareDocumentCommand \setmainfont { O{} m O{} } - { - \__fontspec_main_setmainfont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setmainfont:nnn +\cs_set:Nn \__fontspec_main_setmainfont:nn { - \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1} {#2} \tl_set_eq:NN \rmdefault \g__fontspec_rmfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \rmfamily } { @@ -499,16 +592,13 @@ } \str_if_eq_x:nnT {\familydefault} {\rmdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setmainfont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setsansfont { O{} m O{} } - { - \__fontspec_main_setsansfont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setsansfont:nnn +\cs_set:Nn \__fontspec_main_setsansfont:nn { - \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1} {#2} \tl_set_eq:NN \sfdefault \g__fontspec_sffamily_family \use:x { \exp_not:n { \DeclareRobustCommand \sffamily } { @@ -519,16 +609,13 @@ } \str_if_eq_x:nnT {\familydefault} {\sfdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setsansfont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setmonofont { O{} m O{} } - { - \__fontspec_main_setmonofont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setmonofont:nnn +\cs_set:Nn \__fontspec_main_setmonofont:nn { - \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1} {#2} \tl_set_eq:NN \ttdefault \g__fontspec_ttfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \ttfamily } { @@ -539,45 +626,37 @@ } \str_if_eq_x:nnT {\familydefault} {\ttdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setmonofont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setromanfont { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathrm:nn { - \__fontspec_main_setmainfont:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathrm_hook:nn {#1} {#2} } -\DeclareDocumentCommand \setmathrm { O{} m O{} } +\cs_set:Nn \__fontspec_main_setboldmathrm:nn { - \__fontspec_main_setmathrm:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2} + \__fontspec_setboldmathrm_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathrm:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2} - } -\DeclareDocumentCommand \setboldmathrm { O{} m O{} } - { - \__fontspec_main_setboldmathrm:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setboldmathrm:nnn - { - \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2} - } -\DeclareDocumentCommand \setmathsf { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathsf:nn { - \__fontspec_main_setmathsf:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathsf_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathsf:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2} - } -\DeclareDocumentCommand \setmathtt { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathtt:nn { - \__fontspec_main_setmathtt:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2} + \__fontspec_setmathtt_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathtt:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2} - } +\cs_set_eq:NN \__fontspec_setmainfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setsansfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmonofont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathrm_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathsf_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathtt_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setboldmathrm_hook:nn \use_none:nn \@onlypreamble\setmathrm \@onlypreamble\setboldmathrm \@onlypreamble\setmathsf @@ -585,13 +664,9 @@ \tl_set:Nn \g__fontspec_mathrm_tl {\rmdefault} \tl_set:Nn \g__fontspec_mathsf_tl {\sfdefault} \tl_set:Nn \g__fontspec_mathtt_tl {\ttdefault} -\DeclareDocumentCommand \newfontfamily { m O{} m O{} } - { - \__fontspec_main_newfontfamily:nnnn {#1} {#2} {#3} {#4} - } -\cs_set:Nn \__fontspec_main_newfontfamily:nnnn +\cs_set:Nn \__fontspec_main_newfontfamily:nnn { - \fontspec_set_family:cnn { g__fontspec_ \cs_to_str:N #1 _family } {#2,#4} {#3} + \fontspec_set_family:cnn { g__fontspec_ \cs_to_str:N #1 _family } {#2} {#3} \use:x { \exp_not:N \DeclareRobustCommand \exp_not:N #1 @@ -602,15 +677,11 @@ } } } -\DeclareDocumentCommand \newfontface { m O{} m O{} } - { - \__fontspec_main_newfontface:nnnn {#1} {#2} {#3} {#4} - } -\cs_set:Nn \__fontspec_main_newfontface:nnnn +\cs_set:Nn \__fontspec_main_newfontface:nnn { - \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} + \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3} } -\DeclareDocumentCommand \defaultfontfeatures { t+ o m } +\cs_set:Nn \__fontspec_main_defaultfontfeatures:nnn { \IfNoValueTF {#2} { \__fontspec_set_default_features:nn {#1} {#3} } @@ -644,10 +715,6 @@ } } } -\DeclareDocumentCommand \addfontfeatures {m} - { - \__fontspec_main_addfontfeatures:n {#1} - } \cs_set:Nn \__fontspec_main_addfontfeatures:n { \fontspec_if_fontspec_font:TF @@ -670,11 +737,6 @@ } \ignorespaces } -\cs_set_eq:NN \addfontfeature \addfontfeatures -\DeclareDocumentCommand \newfontfeature {mm} - { - \__fontspec_main_newfontfeature:nn {#1} {#2} - } \cs_set:Nn \__fontspec_main_newfontfeature:nn { \keys_define:nn { fontspec } @@ -685,10 +747,6 @@ } } } -\DeclareDocumentCommand \newAATfeature {mmmm} - { - \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} - } \cs_set:Nn \__fontspec_main_newAATfeature:nnnn { \keys_if_exist:nnF { fontspec } {#1} @@ -699,10 +757,6 @@ \__fontspec_define_aat_feature:nnnn {#1}{#2}{#3}{#4} } -\DeclareDocumentCommand \newopentypefeature {mmm} - { - \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_newopentypefeature:nnn { \keys_if_exist:nnF { fontspec / options } {#1} @@ -719,14 +773,6 @@ { \str_case:nnF {#1} { {+} {#2} {-} {#2} } {#1#2} } -\DeclareDocumentCommand \newICUfeature {mmm} - { - \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} - } -\DeclareDocumentCommand \aliasfontfeature {mm} - { - \__fontspec_main_aliasfontfeature:nn {#1} {#2} - } \cs_set:Nn \__fontspec_main_aliasfontfeature:nn { \bool_set_false:N \l__fontspec_alias_bool @@ -744,10 +790,6 @@ \bool_if:NF \l__fontspec_alias_bool { \__fontspec_warning:nx {rename-feature-not-exist} {#1} } } -\DeclareDocumentCommand \aliasfontfeatureoption {mmm} - { - \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_aliasfontfeatureoption:nnn { \bool_set_false:N \l__fontspec_alias_bool @@ -777,29 +819,12 @@ \bool_if:NF \l__fontspec_alias_bool { \__fontspec_warning:nx {rename-feature-not-exist} {#1/#2} } } -\DeclareDocumentCommand \newfontscript {mm} - { - \fontspec_new_script:nn {#1} {#2} - } -\DeclareDocumentCommand \newfontlanguage {mm} - { - \fontspec_new_lang:nn {#1} {#2} - } -\DeclareDocumentCommand \DeclareFontsExtensions {m} - { - \__fontspec_main_DeclareFontsExtensions:n {#1} - } \cs_set:Nn \__fontspec_main_DeclareFontsExtensions:n { \clist_set:Nn \l__fontspec_extensions_clist { #1 } \tl_remove_all:Nn \l__fontspec_extensions_clist {~} } \DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} - -\DeclareDocumentCommand \IfFontFeatureActiveTF {mmm} - { - \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_IfFontFeatureActiveTF:nnn { \__fontspec_if_font_feature:nTF {#1} {#2} {#3} @@ -1078,7 +1103,7 @@ } \group_end: } -\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn +\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn %% deprecated, for compatibility only \cs_new:Nn \__fontspec_sanitise_fontname:Nn { \tl_set:Nx #1 {#2} @@ -2195,13 +2220,13 @@ } \__fontspec_keys_define_code:nnn {fontspec} {HyphenChar} { - \__fontspec_warning:nx {only-xetex-feature} {HyphenChar} \str_if_eq:nnTF {#1} {None} { \tl_put_right:Nn \l__fontspec_postadjust_tl - { \hyphenchar \font = -1 \relax } + { \__fontspec_primitive_font_set_hyphenchar:Nn \font {-1} } } { + \__fontspec_warning:nx {only-xetex-feature} {HyphenChar} \tl_if_single:nTF {#1} { \tl_set:Nn \l_fontspec_hyphenchar_tl {`#1} } @@ -2210,7 +2235,7 @@ \__fontspec_primitive_font_glyph_if_exist:NnTF \l_fontspec_font {\l_fontspec_hyphenchar_tl} { \tl_put_right:Nn \l__fontspec_postadjust_tl - { \hyphenchar \font = \l_fontspec_hyphenchar_tl \scan_stop: } + { \__fontspec_primitive_font_set_hyphenchar:Nn \font { \l_fontspec_hyphenchar_tl } } } { \__fontspec_error:nx {no-glyph}{#1} } @@ -3455,13 +3480,6 @@ } } \AtBeginDocument{\fontspec_maybe_setup_maths:} -\tl_set:Nn \zf@enc { \g_fontspec_encoding_tl } -\cs_set:Npn \zf@fontspec #1 #2 - { - \__fontspec_select_font_family:nn {#1} {#2} - \tl_set:Nn \zf@family { \l_fontspec_family_tl } - \tl_set:Nn \zf@basefont { \l_fontspec_font } - } \bool_if:NT \g__fontspec_cfg_bool { \InputIfFileExists{fontspec.cfg} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty index 6ff78f06dbb..ee1f0dbdf01 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty @@ -4,26 +4,27 @@ %% %% The original source files were: %% -%% fontspec.dtx (with options: `fontspec,xetexx') -%% fontspec-vars.dtx (with options: `fontspec,xetexx') -%% fontspec-msg.dtx (with options: `fontspec,xetexx') -%% fontspec-opening.dtx (with options: `fontspec,xetexx') -%% fontspec-fontload.dtx (with options: `fontspec,xetexx') -%% fontspec-user.dtx (with options: `fontspec,xetexx') -%% fontspec-api.dtx (with options: `fontspec,xetexx') -%% fontspec-internal.dtx (with options: `fontspec,xetexx') -%% fontspec-opentype.dtx (with options: `fontspec,xetexx') -%% fontspec-graphite.dtx (with options: `fontspec,xetexx') -%% fontspec-keyval.dtx (with options: `fontspec,xetexx') -%% fontspec-feat-opentype.dtx (with options: `fontspec,xetexx') -%% fontspec-scripts.dtx (with options: `fontspec,xetexx') -%% fontspec-lang.dtx (with options: `fontspec,xetexx') -%% fontspec-feat-aat.dtx (with options: `fontspec,xetexx') -%% fontspec-enc.dtx (with options: `fontspec,xetexx') -%% fontspec-math.dtx (with options: `fontspec,xetexx') -%% fontspec-closing.dtx (with options: `fontspec,xetexx') -%% fontspec-xfss.dtx (with options: `fontspec,xetexx') -%% fontspec-patches.dtx (with options: `fontspec,xetexx') +%% fontspec.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-vars.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-msg.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-opening.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-fontload.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-interfaces.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-user.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-api.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-internal.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-opentype.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-graphite.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-keyval.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-feat-opentype.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-scripts.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-lang.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-feat-aat.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-enc.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-math.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-closing.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-xfss.dtx (with options: `fontspec,XE,xetexx') +%% fontspec-patches.dtx (with options: `fontspec,XE,xetexx') %% ------------------------------------------------ %% The FONTSPEC package for XeLaTeX/LuaLaTeX %% (C) 2004--2017 Will Robertson and Khaled Hosny @@ -32,7 +33,7 @@ \RequirePackage{expl3} \RequirePackage{xparse} \ProvidesExplPackage{fontspec-xetex}% - {2017/08/14}{2.6d}{Font selection for XeLaTeX and LuaLaTeX} + {2017/09/22}{2.6e}{Font selection for XeLaTeX and LuaLaTeX} \bool_new:N \l__fontspec_firsttime_bool \bool_new:N \l__fontspec_nobf_bool \bool_new:N \l__fontspec_noit_bool @@ -468,24 +469,116 @@ \prg_return_false: \fi: } +\cs_new:Nn \__fontspec_primitive_font_set_hyphenchar:Nn + { + \tex_hyphenchar:D #1 = #2 \scan_stop: + } \NewDocumentCommand \fontspec { O{} m O{} } { - \__fontspec_main_fontspec:nnn {#1} {#2} {#3} + \__fontspec_main_fontspec:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmainfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setsansfont { O{} m O{} } + { + \__fontspec_main_setsansfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmonofont { O{} m O{} } + { + \__fontspec_main_setmonofont:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathrm { O{} m O{} } + { + \__fontspec_main_setmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setboldmathrm { O{} m O{} } + { + \__fontspec_main_setboldmathrm:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathsf { O{} m O{} } + { + \__fontspec_main_setmathsf:nn {#1,#3} {#2} + } +\NewDocumentCommand \setmathtt { O{} m O{} } + { + \__fontspec_main_setmathtt:nn {#1,#3} {#2} + } +\NewDocumentCommand \setromanfont { O{} m O{} } + { + \__fontspec_main_setmainfont:nn {#1,#3} {#2} + } +\NewDocumentCommand \newfontfamily { m O{} m O{} } + { + \__fontspec_main_newfontfamily:nnn {#1} {#2,#4} {#3} + } +\NewDocumentCommand \newfontface { m O{} m O{} } + { + \__fontspec_main_newfontface:nnn {#1} {#2,#4} {#3} + } +\NewDocumentCommand \defaultfontfeatures { t+ o m } + { + \__fontspec_main_defaultfontfeatures:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \addfontfeatures {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \addfontfeature {m} + { + \__fontspec_main_addfontfeatures:n {#1} + } +\NewDocumentCommand \newfontfeature {mm} + { + \__fontspec_main_newfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \newAATfeature {mmmm} + { + \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} + } +\NewDocumentCommand \newopentypefeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newICUfeature {mmm} + { + \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \aliasfontfeature {mm} + { + \__fontspec_main_aliasfontfeature:nn {#1} {#2} + } +\NewDocumentCommand \aliasfontfeatureoption {mmm} + { + \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} + } +\NewDocumentCommand \newfontscript {mm} + { + \fontspec_new_script:nn {#1} {#2} + } +\NewDocumentCommand \newfontlanguage {mm} + { + \fontspec_new_lang:nn {#1} {#2} + } +\NewDocumentCommand \DeclareFontsExtensions {m} + { + \__fontspec_main_DeclareFontsExtensions:n {#1} + } +\NewDocumentCommand \IfFontFeatureActiveTF {mmm} + { + \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} } -\cs_set:Nn \__fontspec_main_fontspec:nnn +\cs_set:Nn \__fontspec_main_fontspec:nn { - \fontspec_set_family:Nnn \f@family {#1,#3} {#2} + \fontspec_set_family:Nnn \f@family {#1} {#2} \fontencoding { \l__fontspec_nfss_enc_tl } \selectfont \ignorespaces } -\DeclareDocumentCommand \setmainfont { O{} m O{} } - { - \__fontspec_main_setmainfont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setmainfont:nnn +\cs_set:Nn \__fontspec_main_setmainfont:nn { - \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1} {#2} \tl_set_eq:NN \rmdefault \g__fontspec_rmfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \rmfamily } { @@ -496,16 +589,13 @@ } \str_if_eq_x:nnT {\familydefault} {\rmdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setmainfont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setsansfont { O{} m O{} } - { - \__fontspec_main_setsansfont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setsansfont:nnn +\cs_set:Nn \__fontspec_main_setsansfont:nn { - \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1} {#2} \tl_set_eq:NN \sfdefault \g__fontspec_sffamily_family \use:x { \exp_not:n { \DeclareRobustCommand \sffamily } { @@ -516,16 +606,13 @@ } \str_if_eq_x:nnT {\familydefault} {\sfdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setsansfont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setmonofont { O{} m O{} } - { - \__fontspec_main_setmonofont:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setmonofont:nnn +\cs_set:Nn \__fontspec_main_setmonofont:nn { - \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1,#3} {#2} + \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1} {#2} \tl_set_eq:NN \ttdefault \g__fontspec_ttfamily_family \use:x { \exp_not:n { \DeclareRobustCommand \ttfamily } { @@ -536,45 +623,37 @@ } \str_if_eq_x:nnT {\familydefault} {\ttdefault} { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + \__fontspec_setmonofont_hook:nn {#1} {#2} \normalfont \ignorespaces } -\DeclareDocumentCommand \setromanfont { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathrm:nn { - \__fontspec_main_setmainfont:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2} + \__fontspec_setmathrm_hook:nn {#1} {#2} } -\DeclareDocumentCommand \setmathrm { O{} m O{} } +\cs_set:Nn \__fontspec_main_setboldmathrm:nn { - \__fontspec_main_setmathrm:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2} + \__fontspec_setboldmathrm_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathrm:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2} - } -\DeclareDocumentCommand \setboldmathrm { O{} m O{} } - { - \__fontspec_main_setboldmathrm:nnn {#1} {#2} {#3} - } -\cs_set:Nn \__fontspec_main_setboldmathrm:nnn - { - \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2} - } -\DeclareDocumentCommand \setmathsf { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathsf:nn { - \__fontspec_main_setmathsf:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2} + \__fontspec_setmathsf_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathsf:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2} - } -\DeclareDocumentCommand \setmathtt { O{} m O{} } +\cs_set:Nn \__fontspec_main_setmathtt:nn { - \__fontspec_main_setmathtt:nnn {#1} {#2} {#3} + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2} + \__fontspec_setmathtt_hook:nn {#1} {#2} } -\cs_set:Nn \__fontspec_main_setmathtt:nnn - { - \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2} - } +\cs_set_eq:NN \__fontspec_setmainfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setsansfont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmonofont_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathrm_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathsf_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setmathtt_hook:nn \use_none:nn +\cs_set_eq:NN \__fontspec_setboldmathrm_hook:nn \use_none:nn \@onlypreamble\setmathrm \@onlypreamble\setboldmathrm \@onlypreamble\setmathsf @@ -582,13 +661,9 @@ \tl_set:Nn \g__fontspec_mathrm_tl {\rmdefault} \tl_set:Nn \g__fontspec_mathsf_tl {\sfdefault} \tl_set:Nn \g__fontspec_mathtt_tl {\ttdefault} -\DeclareDocumentCommand \newfontfamily { m O{} m O{} } - { - \__fontspec_main_newfontfamily:nnnn {#1} {#2} {#3} {#4} - } -\cs_set:Nn \__fontspec_main_newfontfamily:nnnn +\cs_set:Nn \__fontspec_main_newfontfamily:nnn { - \fontspec_set_family:cnn { g__fontspec_ \cs_to_str:N #1 _family } {#2,#4} {#3} + \fontspec_set_family:cnn { g__fontspec_ \cs_to_str:N #1 _family } {#2} {#3} \use:x { \exp_not:N \DeclareRobustCommand \exp_not:N #1 @@ -599,15 +674,11 @@ } } } -\DeclareDocumentCommand \newfontface { m O{} m O{} } - { - \__fontspec_main_newfontface:nnnn {#1} {#2} {#3} {#4} - } -\cs_set:Nn \__fontspec_main_newfontface:nnnn +\cs_set:Nn \__fontspec_main_newfontface:nnn { - \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3} + \newfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3} } -\DeclareDocumentCommand \defaultfontfeatures { t+ o m } +\cs_set:Nn \__fontspec_main_defaultfontfeatures:nnn { \IfNoValueTF {#2} { \__fontspec_set_default_features:nn {#1} {#3} } @@ -641,10 +712,6 @@ } } } -\DeclareDocumentCommand \addfontfeatures {m} - { - \__fontspec_main_addfontfeatures:n {#1} - } \cs_set:Nn \__fontspec_main_addfontfeatures:n { \fontspec_if_fontspec_font:TF @@ -667,11 +734,6 @@ } \ignorespaces } -\cs_set_eq:NN \addfontfeature \addfontfeatures -\DeclareDocumentCommand \newfontfeature {mm} - { - \__fontspec_main_newfontfeature:nn {#1} {#2} - } \cs_set:Nn \__fontspec_main_newfontfeature:nn { \keys_define:nn { fontspec } @@ -682,10 +744,6 @@ } } } -\DeclareDocumentCommand \newAATfeature {mmmm} - { - \__fontspec_main_newAATfeature:nnnn {#1} {#2} {#3} {#4} - } \cs_set:Nn \__fontspec_main_newAATfeature:nnnn { \keys_if_exist:nnF { fontspec } {#1} @@ -696,10 +754,6 @@ \__fontspec_define_aat_feature:nnnn {#1}{#2}{#3}{#4} } -\DeclareDocumentCommand \newopentypefeature {mmm} - { - \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_newopentypefeature:nnn { \keys_if_exist:nnF { fontspec / options } {#1} @@ -716,14 +770,6 @@ { \str_case:nnF {#1} { {+} {#2} {-} {#2} } {#1#2} } -\DeclareDocumentCommand \newICUfeature {mmm} - { - \__fontspec_main_newopentypefeature:nnn {#1} {#2} {#3} - } -\DeclareDocumentCommand \aliasfontfeature {mm} - { - \__fontspec_main_aliasfontfeature:nn {#1} {#2} - } \cs_set:Nn \__fontspec_main_aliasfontfeature:nn { \bool_set_false:N \l__fontspec_alias_bool @@ -741,10 +787,6 @@ \bool_if:NF \l__fontspec_alias_bool { \__fontspec_warning:nx {rename-feature-not-exist} {#1} } } -\DeclareDocumentCommand \aliasfontfeatureoption {mmm} - { - \__fontspec_main_aliasfontfeatureoption:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_aliasfontfeatureoption:nnn { \bool_set_false:N \l__fontspec_alias_bool @@ -774,29 +816,12 @@ \bool_if:NF \l__fontspec_alias_bool { \__fontspec_warning:nx {rename-feature-not-exist} {#1/#2} } } -\DeclareDocumentCommand \newfontscript {mm} - { - \fontspec_new_script:nn {#1} {#2} - } -\DeclareDocumentCommand \newfontlanguage {mm} - { - \fontspec_new_lang:nn {#1} {#2} - } -\DeclareDocumentCommand \DeclareFontsExtensions {m} - { - \__fontspec_main_DeclareFontsExtensions:n {#1} - } \cs_set:Nn \__fontspec_main_DeclareFontsExtensions:n { \clist_set:Nn \l__fontspec_extensions_clist { #1 } \tl_remove_all:Nn \l__fontspec_extensions_clist {~} } \DeclareFontsExtensions{.otf,.ttf,.OTF,.TTF,.ttc,.TTC,.dfont} - -\DeclareDocumentCommand \IfFontFeatureActiveTF {mmm} - { - \__fontspec_main_IfFontFeatureActiveTF:nnn {#1} {#2} {#3} - } \cs_set:Nn \__fontspec_main_IfFontFeatureActiveTF:nnn { \__fontspec_if_font_feature:nTF {#1} {#2} {#3} @@ -1075,7 +1100,7 @@ } \group_end: } -\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn +\cs_set_eq:NN \fontspec_select:nn \__fontspec_select_font_family:nn %% deprecated, for compatibility only \cs_new:Nn \__fontspec_sanitise_fontname:Nn { \tl_set:Nx #1 {#2} @@ -2319,13 +2344,13 @@ } \__fontspec_keys_define_code:nnn {fontspec} {HyphenChar} { - \__fontspec_warning:nx {only-xetex-feature} {HyphenChar} \str_if_eq:nnTF {#1} {None} { \tl_put_right:Nn \l__fontspec_postadjust_tl - { \hyphenchar \font = -1 \relax } + { \__fontspec_primitive_font_set_hyphenchar:Nn \font {-1} } } { + \__fontspec_warning:nx {only-xetex-feature} {HyphenChar} \tl_if_single:nTF {#1} { \tl_set:Nn \l_fontspec_hyphenchar_tl {`#1} } @@ -2334,7 +2359,7 @@ \__fontspec_primitive_font_glyph_if_exist:NnTF \l_fontspec_font {\l_fontspec_hyphenchar_tl} { \tl_put_right:Nn \l__fontspec_postadjust_tl - { \hyphenchar \font = \l_fontspec_hyphenchar_tl \scan_stop: } + { \__fontspec_primitive_font_set_hyphenchar:Nn \font { \l_fontspec_hyphenchar_tl } } } { \__fontspec_error:nx {no-glyph}{#1} } @@ -3734,13 +3759,6 @@ } } \AtBeginDocument{\fontspec_maybe_setup_maths:} -\tl_set:Nn \zf@enc { \g_fontspec_encoding_tl } -\cs_set:Npn \zf@fontspec #1 #2 - { - \__fontspec_select_font_family:nn {#1} {#2} - \tl_set:Nn \zf@family { \l_fontspec_family_tl } - \tl_set:Nn \zf@basefont { \l_fontspec_font } - } \bool_if:NT \g__fontspec_cfg_bool { \InputIfFileExists{fontspec.cfg} diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua index ceac6a80f5d..7c34ab65c5b 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.lua +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.lua @@ -15,8 +15,8 @@ fontspec = fontspec or {} local fontspec = fontspec fontspec.module = { name = "fontspec", - version = "2.6d", - date = "2017/08/14", + version = "2.6e", + date = "2017/09/27", description = "Font selection for XeLaTeX and LuaLaTeX", author = "Khaled Hosny, Philipp Gesang, Will Robertson", copyright = "Khaled Hosny, Philipp Gesang, Will Robertson", diff --git a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty index 993f4428f6c..c392f9668be 100644 --- a/Master/texmf-dist/tex/latex/fontspec/fontspec.sty +++ b/Master/texmf-dist/tex/latex/fontspec/fontspec.sty @@ -13,7 +13,7 @@ \RequirePackage{expl3} \RequirePackage{xparse} \ProvidesExplPackage{fontspec}% - {2017/08/14}{2.6d}{Font selection for XeLaTeX and LuaLaTeX} + {2017/09/22}{2.6e}{Font selection for XeLaTeX and LuaLaTeX} \sys_if_engine_luatex:T { \RequirePackage{luaotfload} \directlua{require("fontspec")} |