![XeLaTeX,小写字母 bfseries](https://linux22.com/image/346029/XeLaTeX%EF%BC%8C%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D%20bfseries.png)
我发现这个 MWE 经过编译后pdflatex
提供了我所需要的内容:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\begin{document}
\begin{center}
{\bfseries\scshape Bold Small Caps}
\end{center}
\end{document}
我还指出,组合\scshape
和\bfseres
仅适用于\usepackage[T1]{fontenc}
选项。现在我想使用获得相同的结果XeLaTeX
,但当然我不能使用fontenc
包。我不知道如何处理fontspec
谢谢
答案1
Luatex(或者更确切地说是luaotfload
Lua 模块)有自己的字体搜索代码,它自然支持 kpathsearch,并且可以通过文件名和内部字体名称(例如)查找系统字体和 texlive 中的字体CMU Serif
。
xetex 使用系统字体缓存(linux 和 cygwin 上是 fc-cache,我认为在 windows 上带有 fc-cache 的本地副本)它可以通过文件名找到系统和 texlive 字体但只能通过字体名称找到系统已知的字体(例如通过 fc-cache)。
您可以通过文件名加载 CMU Serif
\setmainfont{cmunrm.otf}
对于某些字体来说,这没有问题,而且是一种方便的字体加载方式,但通过文件名加载的缺点是 fontspec 不能自动推断出诸如粗体和小型大写字母之类的变体,这些可以单独指定给 fontspec,但对于像 CMU 这样的大型集合来说,这很麻烦。
更简单的方法是让字体可供系统使用,这样 xetex 就可以按名称加载它们。例如,在我的 windows/cygwin 设置中,我只需将副本拖到c:/windows/fonts
,在 Mac 上,您可以将字体安装在 中 /Library/Fonts
。
或者在使用 fc-cache 的系统上,你可以fc-cache
查看 texlive 目录。如果你保存了一个类似这样的文件
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/usr/local/texlive/2016/texmf-dist/fonts/opentype</dir>
</fontconfig>
作为
/etc/fonts/conf.d/09-texlive.conf
然后运行
sudo fc-cache -fsv
xetex 将找到字体。
配置文件是 texlive 中提供的文件的一个版本,如下所示
/fonts/conf/texlive-fontconfig.conf
但仅限于 opentype(原来有两行额外的 truetype 和 type1)
经过所有这些准备工作
\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
%\setmainfont{cmunrm.otf}
\begin{document}
\begin{center}
{\bfseries Bold }
{\scshape Small Caps}
{\bfseries\scshape Bold Small Caps}
\end{center}
\end{document}
生产
(感谢 egreg 对这里的一些细节提供的帮助)