XeLaTeX Fontspec:恢复原始字体

XeLaTeX Fontspec:恢复原始字体

我正在尝试使用 TTF 字体来显示代码摘录,但希望对文档的其余部分使用标准 latex 字体。我使用以下代码,这是这个问题

\usepackage{fontspec}
\newfontfamily\codefont{Andale Mono}
\usepackage[OT1]{fontenc}

\renewcommand\rmdefault{lmr}
\renewcommand\sfdefault{lmss}
\renewcommand\ttdefault{lmtt}

这种将字体恢复正常的方法可以正常工作,因为渲染的字体都是正确的,但文档已丢失所有粗体和斜体格式。我该如何恢复这些?

非常感谢。

答案1

您的要求和您指出的帖子之间的主要区别在于,他们在前言中使用\setmainfont\setsansfont和更改了文档的主字体\setmonofont,然后他们想在文档中重新定义这些字体。确实是这三个命令定义了文档字体,而不仅仅是使用fontspec

如果我理解正确的话,您的要求是在整个文档中使用普通字体,除了几个想要使用 TrueType 字体的地方。

广义上讲fontspec,它使用新引擎方便在 LaTeX 中使用字体,并且与 XeTeX 和 LuaTeX 兼容。它还Fontspec替换了fontenc包(只能使用其中一个,不能同时使用,否则事情可能会变得相当有趣。fontspec它默认使用 OTF 字体而不是 Type1 字体,并且默认使用 Latin Modern 字体集,它基本上是 Computer Modern type1 字体的 OTF 等价物。

从您提供的信息来看,很难确切知道您想要什么。Andale Mono 是一种等宽字体,因此人们可能会将您的问题解释为“如何替换 mono 字体?”。在这种情况下,类似这样的方法应该适合您:

\documentclass[12pt,preview]{standalone}
\usepackage{fontspec}

%\setmainfont{Latin Modern Roman} %this is not needed as this should be the default
%\setsansfont{Latin Modern Sans}
\setmonofont{Andale Mono}

\begin{document}

This text using the {\bfseries Latin} {\sffamily Modern} {\itshape Font}

{\ttfamily This text is using the \textbf{Andale} \textit{Mono} font}

The is now back to the latin Modern Font

\end{document} 

为您提供:

在此处输入图片描述

请注意,Andale Mono 字体不带有粗体和斜体字形,因此它会恢复为正常字形。但是,fontspec您可以使用字体定义命令的选项来伪造它:

\setmonofont[AutoFakeBold,AutoFakeSlant]{Andale Mono}

在此处输入图片描述

另一方面,如果您希望将默认字体(罗马字体、无字体和单字体)保留为默认字体,并在 Andale Mono 中添加段落或某些内容,则方法略有不同,您需要像示例代码一样声明一个新的字体系列:

\documentclass[12pt,preview]{standalone}
\usepackage{fontspec}

\newfontfamily\codefamily[AutoFakeBold,AutoFakeSlant]{Andale Mono}
\DeclareTextFontCommand{\codefont}{\codefamily}

\begin{document}

This text using {\ttfamily the} {\bfseries Latin} {\sffamily Modern} {\itshape Font}

{\codefamily This text is using the \textbf{Andale} \textit{Mono} font}

The is now back to the latin Modern Font

\end{document}

为您提供:

在此处输入图片描述

相关内容