使用 LuaLaTeX 和 fontspec 访问字符变体很困难

使用 LuaLaTeX 和 fontspec 访问字符变体很困难

我已经问过类似问题以前有过,但似乎同样的技巧不起作用。我使用的是 Junicode (1.002) 字体,可在此链接。我想访问长斜杠的字符变体;这应该可以通过 获得StylisticSet=10。但是,我得到的结果是:

风格集 10,使用 LaTeX。

其代码如下(我更愿意使用addfontfeatures,但我根本无法让它工作,甚至小写数字也不行...我只是不明白fontspec)。

\documentclass{article}
\usepackage{fontspec}

\setmainfont{Junicode}[
    Script={Latin},
    Numbers={Lowercase, Proportional},
    Kerning=On, 
    Ligatures={TeX,Required,Common,Contextual}, % plus Rare, Historic
    Contextuals={Alternate,WordInitial}, 
    Fractions=On, 
    StylisticSet={10},
]

\begin{document}
    a/b
\end{document}

另一方面,在 Microsoft Word 中,一切正常:

文体集 10,带有 Word。

是什么赋予了?

编辑:Ulrike Fischer 的答案在一段时间内有效,但现在我更新到较新的版本后,它似乎已经失效了luaotfload。编译时标记的警告如下所示。

Package fontspec Warning: OpenType feature 'Variant=10' (ss10) not available
(fontspec)                for font 'Junicode' with script 'Latin' and
(fontspec)                language 'Default'.

luaotfload | aux : no font with id -1
luaotfload | aux : no font with id -1

编辑二:尝试了其他一些方法后,似乎现在出现的问题完全与 fontspec/luaotfload 有关。我尝试了几种不同的 Windows 系统字体(Cambria、Candara),日志文件标记了相同的错误。这些还包括以下问题。不知道这是否有帮助或相关。

Package fontspec Info: Font family 'Cambria(0)' created for font 'Cambria'
(fontspec)             with options
(fontspec)             [Ligatures=TeX,Script={Latin},Kerning=On,Ligatures={TeX,R
equired,Common,Contextual},Contextuals={Alternate,WordInitial},Fractions=On].
(fontspec)              
(fontspec)              This font family consists of the following NFSS
(fontspec)             series/shapes:
(fontspec)              
(fontspec)             - 'normal' (m/n) with NFSS spec.:
(fontspec)             <->"Cambria:mode=node;script=latn;language=DFLT;+tlig;"
(fontspec)             - 'small caps'  (m/sc) with NFSS spec.: 
(fontspec)             - 'bold' (bx/n) with NFSS spec.:
(fontspec)             <->"Cambria/B:mode=node;script=latn;language=DFLT;+tlig;"

(fontspec)             - 'bold small caps'  (bx/sc) with NFSS spec.: 
(fontspec)             - 'italic' (m/it) with NFSS spec.:
(fontspec)             <->"Cambria/I:mode=node;script=latn;language=DFLT;+tlig;"

(fontspec)             - 'italic small caps'  (m/itsc) with NFSS spec.: 
(fontspec)             - 'bold italic' (bx/it) with NFSS spec.:
(fontspec)             <->"Cambria/BI:mode=node;script=latn;language=DFLT;+tlig;
"
(fontspec)             - 'bold italic small caps'  (bx/itsc) with NFSS spec.: 

編輯三:我认为luaotfload找到了字体——如果我输入luaotfload-tool --find "Junicode/SC"它返回

luaotfload | resolve : Font "Junicode/SC" found!
luaotfload | resolve : Resolved file name "[…]/junicode.ttf"

IE正确的文件)。

答案1

对我来说,它工作得很好,使用 \addfontfeature 也是如此:

\documentclass{article}
\usepackage{fontspec}

\setmainfont{Junicode}[
    Script={Latin},
    Numbers={Lowercase, Proportional},
    Kerning=On,
    Ligatures={TeX,Required,Common,Contextual}, % plus Rare, Historic
    Contextuals={Alternate,WordInitial},
    Fractions=On,
  %  StylisticSet={10},
]

\begin{document}
    a/b \addfontfeature{StylisticSet={10}} a/b
\end{document}

在此处输入图片描述

由于 texlive 中有一个 Junicode,我将较新的版本放在 fonts/truetype 中的本地 texmf 树中,然后调用mktexlsrluaotfload-tool -u -f强制更新字体缓存。

检查日志文件末尾是否使用了正确的字体。

相关内容