![将“传统”字体包(例如 Type 1)与 fontspec 结合起来](https://linux22.com/image/318859/%E5%B0%86%E2%80%9C%E4%BC%A0%E7%BB%9F%E2%80%9D%E5%AD%97%E4%BD%93%E5%8C%85%EF%BC%88%E4%BE%8B%E5%A6%82%20Type%201%EF%BC%89%E4%B8%8E%20fontspec%20%E7%BB%93%E5%90%88%E8%B5%B7%E6%9D%A5.png)
我在尝试将“传统”字体包 ( 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}