我在尝试将“传统”字体包 ( berasans
) 与 fontspec(使用 TeX Gyre Pagella)结合起来时遇到了问题。只需使用两者,就可以正确地将文本字体更改为 TeX Gyre Pagella,但文本设置\sffamily
使用的是 Latin Modern(Sans 或 Roman,取决于包的加载顺序)而不是 Bera Sans。
寻找解决方案时,我发现这个答案建议(尽管是在不同的上下文中)必须手动设置字体编码。这让我得到了以下最小示例:
\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\usepackage{berasans}
\let\sffamilyold\sffamily
\def\sffamily{\fontencoding{T1}\sffamilyold}
\begin{document}
TeX Gyre Pagella
\sffamily Bera Sans
\end{document}
它可以工作,但我对重新定义感到有点不安\sffamily
。对于这种 Type 1 字体和 的组合,有没有更简单/更好的解决方案fontspec
?或者更好的是,有没有好的无衬线 OTF/TTF 字体可以与 TeX Gyre Pagella 一起使用?
答案1
我建议你使用由开发的 opentype 版本Arkandis 数字铸造厂以 为名Verana Sans
,甚至使用受 Bitstream Vera 启发的字体Switzera
。以下是演示:
\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\usepackage{berasans}
\let\sffamilyold\sffamily
\def\sffamily{\fontencoding{T1}\sffamilyold}
%\setsansfont{Verana Sans}
%\setsansfont{Switzera ADF}
\begin{document}
TeX Gyre Pagella
\sffamily Bera Sans
\fontspec{Verana Sans}Verana Sans. Baffling, isn’t it?
\fontspec{Switzera ADF}
Switzera ADF
\end{document}