一种无衬线字体(最好类似 Helvetica),其大写字母高度和 x 高度与罗马新文本完全匹配?

一种无衬线字体(最好类似 Helvetica),其大写字母高度和 x 高度与罗马新文本完全匹配?

Newtx 字体很棒。不过,当您的主要字体是罗马字体时,当您偶尔使用 newtx 附带的无衬线字体时,您会得到略小的大写无衬线字母和略大的小写无衬线字母。我认为 newtx 的文档说的是 90% 的默认缩放比例。

的结果

\documentclass{article}
\usepackage{newtxtext}
\usepackage[slantedGreek]{newtxmath}
\begin{document}
M\textsf{M}x\textsf{x}\emph{M\textsf{M}x\textsf{x}}\(M\mathsf{M}x\mathsf{x}\)
\end{document}

pdflatex 的输出

我想知道是否可以使衬线“M”和无衬线“M”的高度完全相等,同时使衬线“x”和无衬线“x”的高度完全相等(无论是在直立还是斜体设置中)。当然,默认情况下应该会发生这种情况:例如,我不想将每个字母分别排版为缩放的 tikz 图片 ;-)。

是否有类似 sans-serif helvetica 的软件包,其提供的字体的比率(大写字母的高度)/(小写字母的高度)与 newtx 完全相同?另一个 Times 克隆版本也可以,但事实上,我非常喜欢它(它经过newtx充分测试,包含许多有用的字形,并且与出版商的类别相符)。

答案1

您最近的编辑增加了一些要求,例如斜体字体。所以,现在开始吧。首先,是适用于现代工具链的版本。由于您说您偏爱newtx,我将主文本字体更改为 TeX Gyre Termes X,这是基于 的变体newtx。任何 Unicode 文本和数学字体的覆盖率都将比任何旧版 NFSS 包的组合要好得多。

对于无衬线字体,我选择了 Universalis ADF Std.,它是免费的,在 CTAN 上。您也可以尝试 Condensed 变体。相对 x 高度是正确的,斜体的倾斜度和粗细都差不多。

\documentclass[varwidth, preview]{standalone}

\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes X}[Ligatures={Common, TeX}]
\defaultfontfeatures{Scale=MatchLowercase}
\setsansfont{Universalis ADF Std}
\setmathfont{TeX Gyre Termes Math}
\setmathfont[range=sfup]{Universalis ADF Std}
\setmathfont[range=sfit]{Universalis ADF Std Italic}
\setmathfont[range=bfsfup]{Universalis ADF Std Bold}
\setmathfont[range=bfsfit]{Universalis ADF Std Bold Italic}

\begin{document}
\textrm{M}\textsf{M}\textrm{x}\textsf{x}
\textit{\textrm{M}\textsf{M}\textrm{x}\textsf{x}}
\( \mathrm{M}\mathsf{M}\mathrm{x}\mathsf{x}
\mathit{M}\mathsfit{M}\mathit{x}\mathsfit{x} \)
\end{document}

TeX Gyre Termes X/Universalis ADF Std

您在修改后的问题中指出您需要\mathsf,因此我将sfupsfit和字母设置为相应的无衬线文本字体。如果您不需要全部定义它们或更喜欢默认值,则可以删除这四行bfsfupbfsfit\setmathfont[range=

您可以将\mathrm、和命令替换为\mathit、和,以便以牺牲向后兼容性为代价获得略微更好的单字母变量间距。也可以对 、 等使用与默认字体(或数学罗马字体)和 sans 字体不同的字体。 \mathsf\mathsfit\symup\symit\symsfup\symsfit\symup\symit\symsfup下面是您可能想要这样做的原因的一个例子。

为了向后兼容

与 PDFTeX 兼容的传统解决方案无法完全实现其他解决方案的所有功能,但您可以这样做:

\documentclass[varwidth, preview]{standalone}

\usepackage{newtxtext}
\usepackage[sfdefault, type1]{universalis}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[slantedGreek]{newtxmath}
\RequirePackage{textcomp}

\begin{document}
\textrm{M}\textsf{M}\textrm{x}\textsf{x}
\textit{\textrm{M}\textsf{M}\textrm{x}\textsf{x}}
\( \mathrm{M}\mathsf{M}\mathrm{x}\mathsf{x} \)
\end{document}

Newtx/Universalis

您可能需要加载许多其他软件包才能获得一些unicode-math开箱即用的功能。例如,您需要加载isomath才能获得\mathsfit字母表,但如果您想使用粗体无衬线字体,它不会加载它。例如:

\usepackage[rmdefault=newtxi,
            sfdefault=iwona,
            OMLmathrm,
            OMLmathsf,
            OMLmathsfit]{isomath}

这会稍微破坏直立无衬线数学字母表,但允许以下操作:

\( \mathrm{\alpha} \beta \mathsf{\gamma} \mathsfit{\delta} \)

如果您想要其他数学字母,则需要从不同的包中加载它们。例如,mathalfa可以加载书法、手写体、Fraktur 和黑板粗体字母。

更新

您澄清说您需要在出版物中使用 Times。在这种情况下,如果您的出版商支持,我建议您使用unicode-math和。使用 时,只有相对 x 高度需要与 Times 相同,而不是所有字体指标相同,并且您不必猜测缩放因子。这是一个更严肃的例子:\setmathfont{TeX Gyre Termes Math}[Scale=MatchLowercase]\setsansfont[Scale=MatchLowercase]

\documentclass[varwidth, preview]{standalone}

\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes}[Ligatures={Common, TeX}]
\defaultfontfeatures{Scale=MatchLowercase}
\setsansfont{Comfortaa}
\setmathfont{TeX Gyre Termes Math}

\begin{document}

\textrm{M}\textsf{M}\textrm{m}\textsf{m}\textrm{x}\textsf{x}

\end{document}

嗯嗯

如果没有,您可以尝试\usepackage[no-math]{fontspec}后跟\usepackage{newtxmath},尽管出版商似乎不太可能支持fontspec但不支持unicode-math

否则,这是 CTAN 上所有标记为 sans-serif 字体的软件包的列表。(而fontspec可以加载任何 TTF 或 OTF 字体。)您需要检查每个选项并通过反复试验确定比例因子,例如:

\documentclass[varwidth, preview]{standalone}

\usepackage[T1]{fontenc} % best for Western European languages
\usepackage[utf8]{inputenc} % The default as of June 2018
\usepackage{amsthm}% cannot be loaded after newtxmath
\usepackage{newtxtext}
\usepackage[defaultsans, scale=0.85]{comfortaa}
\usepackage{newtxmath}
\RequirePackage{textcomp} % Probably loaded already, but make sure.
\useosf % for osf in normal text

\begin{document}

\textrm{M}\textsf{M}\textrm{m}\textsf{m}\textrm{x}\textsf{x}

\end{document}

嗯嗯

此 PDFTeX 兼容模板未设置所有数学字母。如果您需要任何其他数学字母,请使用或unicode-math等包加载它们。mathalfaisomath

以前的

虽然该newtxtext字体没有自带匹配的无衬线字体,但该newtxmath字体支持该libertine选项,这使得该字体与 Libertine 兼容。它确实有一个匹配的无衬线字体 Biolinum。因此,newtx稍微修改一下文档中的一个示例,我们可以这样写:

\documentclass[varwidth, preview]{standalone}

\usepackage[lining,proportional,semibold]{libertine}
\usepackage[T1]{fontenc} % best for Western European languages
\usepackage{textcomp} % required to get special symbols
\usepackage[utf8]{inputenc} % The default as of June 2018
\usepackage{amsthm}% must be loaded before newtxmath
\usepackage[libertine,vvarbb]{newtxmath}
\useosf % for osf in normal text

\begin{document}

\textrm{M}\textsf{M}\textrm{m}\textsf{m}\textrm{x}\textsf{x}

\end{document}

嗯嗯

这也适用于 Libertinus OpenType 字体系列,甚至更简单:

\usepackage{unicode-math}

\setmainfont{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmonofont{Libertineus Mono}
\setmathfont{Libertinus Math}

具体来说,如果你想使用 Times,最好的办法可能是将其加载TeX Gyre Termes Math为数学字体,并使用 加载无衬线字体Scale=MatchUppercase。然后,只有大写字母和小写字母的高度比需要与 Times 匹配。以下是少数几种常见的无衬线字体之一的示例:

\documentclass[varwidth, preview]{standalone}

\usepackage{fontspec}

\setmainfont{TeX Gyre Termes}
\setsansfont[Scale=MatchUppercase]{Comic Sans MS}

\begin{document}

\textrm{M}\textsf{M}\textrm{m}\textsf{m}\textrm{x}\textsf{x}

\end{document}

嗯嗯

相关内容