为 \setmonofont{} 定义“窄化”字体

为 \setmonofont{} 定义“窄化”字体

由于企业设计规则,我需要使用字体源代码管理软件对于等宽文本和宋体用于纯文本。使用 KOMA 脚本,我声明

\setmainfont{Arial}
\renewcommand{\sfdefault}{\familydefault}
\setmonofont{Source Code Pro}

不幸的是,等宽字体在用于单个单词或段落行时太显眼了(不符合我的口味)。其他情况也许可以接受,但并不吸引人。为了减轻痛苦,我使用宏

\newcommand{\mono}[1]{\texttt{\protect\scalebox{.9}[1.0]{#1}}}

这对于纯文本来说效果很好,但会导致问题

  • 当用于超链接\url宏(\mono{\url{...}}如果可以接受失去破坏文本的能力,则有效,但\url{\mono{...}不能),更令人讨厌的是,

  • 在使用时根本不起作用清单lstlisting环境。

我不想以某种方式尝试解决这两个问题,而是希望有一种方法可以传递缩放字体的信息,\setmonofont{}从而声明所有出现的源代码管理软件狭窄。

有什么建议吗?

答案1

您可以使用选项加载单色字体FakeStretch(手册fontspec,示例 17)。

\documentclass{article}
\usepackage{fontspec}

\setmainfont{Arial}
\setsansfont{Arial}
\setmonofont{Source Code Pro}[FakeStretch=0.9]

\newfontfamily{\scp}{Source Code Pro}% for comparing

\begin{document}

Some words in Arial and \texttt{some in shrinked mono font}

Some words in Arial and {\scp some in unshrinked mono font}

\end{document}

在此处输入图片描述

相关内容