Fix regression with automatic detection and selection of small caps when the font script or language was requested but not found. (#517)
Add additional tests to check against regressions. (#516, #518)
Improve message in log file when defining a font without small caps.
Demote warnings when Script or Language are requested but not found to the log file instead of the console. (#421)
Now that Script and Language are retained even if the font doesn’t support them,
we can no longer check for font feature existence before applying the OpenType tags.
This release removes checking. (#515)
Fix bug/regression in loading font families constructed from fonts with different file extensions; e.g.: (#514)
\setmainfont{MyLato}
[
UprightFont = Lato-Regular.ttf ,
BoldFont = FiraSans-Bold.otf ,
]
Language feature (primarily exposed through babel package). (#513)expl3 for deprecated commands.Letters=Uppercase (LuaLaTeX only) as an interface to luaotfload
feature which automatically performs case-changing at the font level
(i.e., not using macros to process the text tokens). (#461)Fix long-standing bug when loading fonts which only have extensions specified internally to the font shape (#504). E.g.:
\setmainfont{pagella}[ UprightFont = texgyrepagella-regular.otf ]
Script=CJK) and it is not
available within the font, fontspec previously would fall back on a default script.
This is now changed to always pass through the requested script so the renderer can
make use of that information regardless of whether the font itself supports the script.
(#507)hypenchar settings seemingly erroneously. (#344)math=foo, where fontspec
is expecting math=true. Now, the global option will be ignored. (#501)Scale=MatchAveragecase parameter which averages Scale=MatchLowercase and Scale=MatchUppercase.verbose to undo silent/quiet.euenc/tuenc options are now obsolete (TU is the only encoding).KpseOnly.SwashFont and BoldSwashFont features to support LaTeX’s now-builtin \textsw
and \swshape commands, with matching SwashFeatures and BoldSwashFeatures.
A simple implementation that has scope to get more complex if need be.b and bx font series by default to avoid spurious warnings in some
cases, and broken behaviour in pathological cases.language=DFLT changed to language=dflt.SlantedFont and BoldSlantedFont
being specified in a .fontspec file.unicode-math related log files showing the wrong
NFSS-based font ‘identifier’.fontspec was loaded
(e.g., to use legacy fonts by default but use a fontspec font occasionally).polyglossia and perhaps elsewhere when Script is set without
a corresponding Language.\familydefault instead of \rmdefault when calculating scaling parameters in
Scale=MatchLowercase and Scale=MatchUppercase.Letters=Uppercase to Style=Uppercase, as this feature does
not generally affect the letters themselves, only symbols and accents.
The old name will be retained for the time being.Style=TitlingCaps to Style=Titling.expl3.\addfontfeatures
would overwrite previous ones when using UprightFeatures={...} or similar.
Now the ‘UprightFeatures’ are accumulated.Renderer=HarfBuzz (the old Harfbuzz name is kept for compatibility)\verbvisiblespace
has now been offered by the kernel for a year.\rmdefault, \sfdefault, \ttdefault
if desired. Note this could cause problems if the fontspec encoding does not
match the encoding of the specified families.\EncodingCommand.HyphenChar feature in XeLaTeX.Ligatures=TeXOff even though it’s not a real OpenType feature.
(Functionally equivalent to Ligatures=TeXReset.)Numbers=Arabic, HypenChar=None for \ttfamily.muzimuzhi!).FakeBold being available in luaotfload (thanks Khaled!).tlig feature in LuaTeX.FontFace options. Thanks to Bob Tennent for the test file and bringing
the problem to my attention.Fix regression in loading Language=Turkish. This now allows users to define more
than one OpenType tag when defining a language name, where the first tag found is
the one selected for the font. E.g.,
\newfontlanguage{Turkish}{TRK,TUR}
when selected, this first checks for the existence of the TRK language tag, and if not found then checks for the TUR language tag to use if available.
Add new Renderer options for LuaTeX that enable the HarfBuzz engine. These only
work running under luahbtex and are currently experimental. The new options are
Harfbuzz, OpenType, AAT, and Graphite.
Always try to remove ‘clashing’ font features inside \addfontfeatures even in
cases when the requested font feature doesn’t exist. E.g., now if a font is loaded
with Numbers=OldStyle and doesn’t have Numbers=Lining, requesting the latter
will still reset the former.
Add pxfonts, txfonts, newpxmath, newtxmath, mtpro2 to the list
of packages that automatically invoke no-math.
Add \providefontfamily, \setfontface, \renewfontface, and \providefontface.
Add local/global distinction with \fontspec_(g)set_family:Nnn and \fontspec_(g)set_fontface:NNnn.
LocalForms=On/Off/Reset to control the locl OpenType tag.\- which is nowadays defined correctly by the LaTeX2e kernel.\verbvisiblespace command is defined in a future version of LaTeX2e.ScaleAgain feature for compounding scale factors.
(This is largely to support unicode-math but may be useful by others.)\oldstylenums no longer overwritten if textcomp loaded after fontspec.expl3 for deprecated commands.\hbar if anyone is relying on fontspec to emulate legacy maths.\defaultfontfeatures to specify a font face by a custom name can now use
Font= to specify the filename.expl3 internals updated so loading expl3 with the check-declarations option will run without error.FontFace in which spaces weren’t being ignored.Bugfix for clash introduced with last version. When loading babel
before fontspec the following error arose:
! Control sequence \latinencoding already defined.
\tracingoutput mode.expl3 option check-declarations.HyphenChar=None in LuaLaTeX. (Hyphenation and font choice are
decoupled in LuaTeX, except for this one setting.)unicode-math to fix some cross-over code.HyphenChar feature when running LuaTeX — use \prehyphenchar LuaTeX primitive instead.Scale=MatchLowercase.IgnoreFontspecFile to avoid loading the .fontspec file for a font.\fontspec_if_feature:nTF
(which broke realscripts, oops — must improve my test suite)..Reset and ResetAll keys.\newfontface.\emph (and \emfontdeclare) to act only on the NFSS font shape; using the series as well was too fragile.\strong as the “weight” analogy to \emph. This will need some extra syntactic sugar from fontspec before it becomes truly useful.Numbers=Tabular alias for Numbers=Monospaced.Numbers={Lining,Proportional} in which only the first choice would be recognised.RawFeature and “proper” fontspec features.C:\... file paths in Windows couldn’t be used.Ligatures=TeX overrode Mapping=.. regardless of where the former was declared in the feature list.\newopentypefeature.Improve monospace font in documentation.
fontspec interface, but this issue should soon be addressed by the luaotfload package.\fontspec_if_small_caps:TF\emph (!!)TU font encoding now default, with encoding files provided by the kernel.Ornament=n corresponding to OpenType feature +ornm=n.FontIndex=n to support TrueType Collection (TTC) files.\emph is now much smarter and will cleverly nest even if manual font changes are made.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.\fontspec_if_current_feature:nTF for querying selected features based on their OpenType tag.\IfFontFeatureActiveTF for querying selected features based on their fontspec specification.Feat/FeatOff/FeatReset forms to disable and reset them.ResetAll provided for all “tag-based” OpenType feature keys. (E.g., Ligatures=ResetAll.)Script selection.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).fontspec loaded before `\documentclass’.unicode-math was broken.)fontspec.cfg file to the distribution.+trep from Ligatures=TeX (no longer necessary).l3build; more to come.[tuenc]'; once it becomes the default (later this year), [euenc]` option will revert to the old behaviour.\emfontdeclare for defining font shapes when arbitrarily nesting the \emph command.Script=Bengali, fontspec will first query the font for the bng2 OpenType script, and if not found select beng.\addfontfeatures that were causing some font-loading confusion.\baselineskip and \f@size would (possibly) change values after loading the package.fixltx2e’s code for footnote symbols; handled by LaTeX2e now.ExternalLocation for the simpler (and identical) Path option.[Path=...] to be specified for individual font faces.\@fnsymbol and avoid overwriting it if already fixed.Renderer=Graphite” (off-by-one error).\aliasfontfeature.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.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.
\defaultfontfeatures<fontname>.fontspec per-font configuration files[CharacterVariant=5:2].fontspec-compatible \oldstylenums and \liningnums commands.\fontspec_set_fontface:NNnn (for use when
\zf@basefont might previously have been queried).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).expl3 support to latest CTAN version.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)`
Bug fix and documentation tune-up.
Actually the final release before TeX Live 2010.
CharacterVariant now supportedLigatures=Historical is now Ligatures=Historic for consistencyFinal release before TeX Live 2010.
\fontspec_glyph_if_exist:NnTFFeatureFile=... and Numbers=Arabic.Parsi and Persian synonyms for Language=Farsi