如何使用 fontspec 中的所有拉丁现代罗马字体变体?

如何使用 fontspec 中的所有拉丁现代罗马字体变体?

抱歉,我对字体系列在 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}

这给你
rm 及以上

虽然这确实有效,但这并不是一个好主意。\textrm并且\textup是实现良好的宏。谁知道你可能会破坏哪个包?

除了,\textrm并且\textup不一样,对于 LaTeX 适用:

  • rm(罗马)是家庭说明符(“衬线家庭(一般来说)roan/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}

输出(示例)

rm 及以上

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

相关内容