我尝试使用字体系列来更改由中文和英文字母组成的文本的字体。但它似乎只影响中文字符。
有什么方法可以使用相同的字体系列来更改它们的字体吗?
\documentclass{standalone}
\usepackage{xeCJK}
\newCJKfontfamily\familyA{NotoSansCJKtc-Medium}
\newCJKfontfamily\familyB{NotoSansCJKtc-Light}
\newCJKfontfamily\familyC{NotoSansCJKtc-Regular}
\newCJKfontfamily\familyD{NotoSansCJKtc-Black}
\begin{document}
{ \familyA 中文 Eng } ||
{ \familyB 中文 Eng } ||
{ \familyC 中文 Eng } ||
{ \familyD 中文 Eng }
\end{document}{}
答案1
您应该认真对待“字体系列”的概念,即,不要使用不同的系列来表示不同的粗细,而应该使用单个系列并配合合适的字体命令来切换字体粗细。此外,您应该为拉丁字符定义相应的字体。这里我使用的是 Noto Serif:
\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{NotoSerif}[
UprightFont=*-Regular,
BoldFont=*-Bold,
FontFace={l}{n}{*-Light},
FontFace={mb}{n}{*-Medium},
FontFace={k}{n}{*-Black},
]
\usepackage{xeCJK}
\setCJKmainfont{NotoSansCJKtc}[
UprightFont=*-Regular,
BoldFont=*-Bold,
FontFace={l}{n}{*-Light},
FontFace={mb}{n}{*-Medium},
FontFace={k}{n}{*-Black},
]
\DeclareRobustCommand\lseries{\fontseries{l}\selectfont}
\DeclareTextFontCommand{\textl}{\lseries}
\DeclareRobustCommand\mbseries{\fontseries{mb}\selectfont}
\DeclareTextFontCommand{\textmb}{\mbseries}
\DeclareRobustCommand\kseries{\fontseries{k}\selectfont}
\DeclareTextFontCommand{\textk}{\kseries}
\begin{document}
{ \mbseries 中文 Eng } ||
{ \lseries 中文 Eng } ||
{ 中文 Eng } ||
{ \kseries 中文 Eng }
\end{document}
结果:
请注意,这个答案部分基于https://tex.stackexchange.com/a/264275/140850。