是否有人在致力于实现对新OpenType 可变字体在任何 TeX/LaTeX 实现中,例如 XeTeX 或 LuaTeX?fontspec 是否支持访问新表?
答案1
目前已支持luatex
(版本 1.13.0):
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\defaultfontfeatures{RawFeature={+axis={wght=100}}}
\setmainfont[
ItalicFont=SourceSansVariable-Italic.otf,
BoldFont=SourceSansVariable-Roman.otf,
BoldItalicFont=SourceSansVariable-Italic.otf,
BoldFeatures={RawFeature={+axis={wght=900}}},
BoldItalicFeatures={RawFeature={+axis={wght=900}}}
]{SourceSansVariable-Roman.otf}
\begin{document}
\par the quick brown fox jumps over the lazy dog.
\par\textit{the quick brown fox jumps over the lazy dog.}
\par\textbf{the quick brown fox jumps over the lazy dog.}
\par\textbf{\textit{the quick brown fox jumps over the lazy dog.}}
\end{document}
在大多数情况下它都能很好地工作,但是当字体宽度改变时(包括一些会根据粗细改变宽度的字体),某些字符之间的间距,如双引号和韧带(fi,fl),会变得太宽(当改变后的字体的实际宽度小于常规字体时)或太窄(当改变后的字体的实际宽度大于常规字体时)。
luaotfload
3.19 版和1.15.0 版(TeXLive 2022 默认版本)之后LuaTeX
,模式中也支持可变字体harf
。
答案2
@lambda05 的回答有一点补充,非常好。请注意
\defaultfontfeatures{RawFeature={+axis={wght=100}}}
似乎是绝对必要的(至少在 2021 年 4 月推出 lualatex、fontspec、luaotfload 组合的情况下)。否则 LuaLaTeX 会出错并显示错误:
(cff): Type2 Charstring Parser: subroutine called but no subroutine found
这是因为,虽然luaotfload
现在支持可变字体,但这种支持的激活还不是自动的,只有在存在axis
或instance
参数后才会发生。根据luaotfload 跟踪器上的错误 120应尽快尝试实现自动激活。