![如何使用 fontspec 中的所有拉丁现代罗马字体变体?](https://linux22.com/image/257442/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20fontspec%20%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%8B%89%E4%B8%81%E7%8E%B0%E4%BB%A3%E7%BD%97%E9%A9%AC%E5%AD%97%E4%BD%93%E5%8F%98%E4%BD%93%EF%BC%9F.png)
抱歉,我对字体系列在 TeX 中的工作方式知之甚少。在尝试阅读 fontspec 文档后,我越来越困惑。我试图让尽可能多的拉丁现代罗马字体变体工作,尤其是非倾斜罗马字体、倾斜小型大写字母的变体。例如,我不知道如何在 itshape 和 scshape 都有效时使用倾斜小型大写字母。
我原本想要\textup
使用 Unslanted 字体变体,但这样做UprightFont = Latin Modern Roman Unslanted
会将所有普通字体也更改为 Unslanted 字体。我认为\textup
和\textrm
作为独立命令的全部意义在于允许与 upshape 进行区分?无论如何,正因为如此,我才为 Unslanted 变体进行定义\textun
。
是否也可以通过使用 fontspec 来实现带有小型大写字母的假粗体,weight
以便我可以放入\textsc{Abc}
章节标题(即,使其可以与 一起使用\bfseries
)?
\documentclass[a4paper,10pt,english,draft]{article}
% Additional Options
\usepackage[log-declarations=false]{xparse}
\usepackage[quiet]{fontspec}
%fontspec options:
\setmainfont[Ligatures=TeX,SmallCapsFont={* Caps}, SlantedFont={* Slanted}]{Latin Modern Roman}
\newfontface\textun{lmromanunsl10-regular.otf}
%I cannot use \newfontface\textun{Latin Modern Roman Unslanted} for some reason...
\begin{document}
Latin Modern Roman normal text \newline
\textit{Latin Modern Roman italic text} \newline
\textsl{Latin Modern Roman Slanted} \newline
\textun{Latin Modern Roman Unslanted} \newline
\textsc{Latin Modern Roman Caps} \newline
\emph{\textsc{Latin Modern Roman Oblique small caps?}}
\end{document}
答案1
你的原文\textun
充当了一个开关(如\itshape
),所以我重新定义\textun
为
\newfontface\unshape[]{Latin Modern Roman Unslanted}
\newcommand\textun[1]{{\unshape #1}}
\textrm
和\textup
/或\textun
您可以轻松地重新定义\textrm
并\textup
使用
\renewcommand\textup[1]{{\unshape #1}} % see section "Code" for \unshape
\renewcommand\textrm[1]{{\unshape #1}}
normal \textup{unslanted} normal \textup{unslanted}
这给你
虽然这确实有效,但这并不是一个好主意。\textrm
并且\textup
是实现良好的宏。谁知道你可能会破坏哪个包?
除了,\textrm
并且\textup
不一样,对于 LaTeX 适用:
rm
(罗马)是家庭说明符(“衬线家庭(一般来说)ro米an/serif/antiqua,s安塞利F/怪诞和吨伊佩里吨呃。up
是一个形状说明符(“坡”)。其他形状有:它斜向/斯洛文尼亚已添加/斯洛文尼亚社论,年代ᴍᴀʟʟCᴀᴘꜱ- 然后还有系列(“重量“): 光,米埃dium †、半粗体、粗体、重体……(名称和定义可能有所不同)。
bf
代表b老的F高手。
代码(示例)
{\sffamily sans-serif family \textrm{roman family} sf \textup{up shape} sf} \par
{\itshape italics \textrm{roman family} it \textup{up shape} it}
输出(示例)
FakeBold 和 SmallCaps
借用sdaau 的回答OP 自己找到了以下地图解决方法:
代码 (FakeBold SmallCaps)
\fontspec[
FakeBold=4,
SmallCapsFont={Latin Modern Roman Caps}
]{Latin Modern Roman}
\DeclareFontShape{EU1}{LatinModernRoman(0)}{bx}{sc}{<->ssub * LatinModernRoman(1)/m/sc}{}
字体大小?
以下代码显示 PDF 中包含的这些字体:
- 5:常规
- 7:常规、斜体
- 8:常规、斜体、倾斜
- 9:常规、斜体、倾斜
- 10:常规(+大写)、斜体、斜大写、倾斜、Unsl
- 12:常规、斜体、倾斜
- 17:常规,倾斜
代码
\documentclass[a4paper,10pt,draft]{article}
% Additional Options
\usepackage[landscape]{geometry}
\usepackage{fontspec}
%fontspec options:
\setmainfont[
Ligatures=TeX,
SmallCapsFont={Latin Modern Roman Caps},
SlantedFont={* Slanted},
ItalicFeatures = {
SmallCapsFont = {LMRomanCaps10-Oblique}
},
]{Latin Modern Roman}
\newfontface\unshape[]{Latin Modern Roman Unslanted}
\newcommand\textun[1]{{\unshape #1}}
\fontspec[
FakeBold=4,
SmallCapsFont={Latin Modern Roman Caps}
]{Latin Modern Roman}
\DeclareFontShape{EU1}{LatinModernRoman(0)}{bx}{sc}{<->ssub * LatinModernRoman(1)/m/sc}{}
\def\testtext{%
Latin Modern Roman normal text \par
\textit{Latin Modern Roman italic text} \par
\textsl{Latin Modern Roman Slanted} \par
{\textun{Latin Modern Roman Unslanted}} \par
\textsc{Latin Modern Roman Caps} \par
\emph{\textsc{Latin Modern Roman Oblique small caps?}} \par
{\bfseries\scshape Latin Modern Roman Caps FakeBold}\par
\null\par
}
\begin{document}
{\tiny\testtext}
{\scriptsize\testtext}
{\footnotesize\testtext}
{\small\testtext}
\testtext
{\large\testtext}
{\Large\testtext}
{\LARGE\testtext}
{\huge\testtext}
{\Huge\testtext}
\end{document}
输出(正常尺寸)
†是的,\mdshape
有\textmd
。