使用 mathspec 的数学模式间距(或字形边界)

使用 mathspec 的数学模式间距(或字形边界)

使用 mathspec 时,当您将数学字体更改为 OpenType 字体时,公式中的间距会变得不合适:它与文本模式间距相同。例如,在公式中$e^j$,大多数情况下,“j”会与“e”相冲突。因此,使用 mathspec 时,您必须键入$e^{"j}$空格来分隔“j”。这在 mathspec 文档中称为“字形边界”问题。真正糟糕的是,它破坏了与 LaTeX 的兼容性。

有没有什么方法可以既有正确的间距又与 LaTeX 兼容?

以下是发生两次冲突的示例:

\documentclass{article}
\usepackage{mathspec}
\setmathsfont(Latin,Digits){Times New Roman}

\begin{document}
$e^j + |f|$ should be written $e^{"j} + |"f|$.
$\"abcdefghijklmnopqrstuvw"$
$abcdefghijklmnopqrstuvw$ : the spacing is too thin, suitable for text, not for math.
\end{document}

答案1

Lierre:感谢您发布完整的 MWE。好消息:我可以重现您的问题。更好的消息:至少在我的系统上,当我省略“(Latin,Digits)”选项时,这些问题会完全消失。顺便问一下,您为什么要指定这些选项?


附录,2011 年 9 月 18/20 日:我刚刚发现了 XITS 数学(和文本)字体的最新版本;请参阅XITS 网站五份.otf文件。XITS Math字母有更好的侧边距,即更大的侧边距。如果XITSXITS Math足以满足您的需求,我认为您会非常满意。新的 MWE 看起来就像

% !TeX program = xelatex
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\begin{document}
\noindent
$e^j + |f|$ \\
$abcdefghijklmnopqrstuvwxyz$ XITS-Math math italics\\    
\textit{abcdefghijklmnopqrstuvwxyz} XITS text italics\\    
\setmainfont{Times New Roman}
\textit{abcdefghijklmnopqrstuvwxyz} TNR text italics
\end{document}

在此处输入图片描述

我想第一行的右侧边距f还可以再宽裕一些,但比起你最初发布的带有 TNR 的示例来说,这是一个巨大的进步!

将 XITS Math 字体的斜体字母与 Times New Roman 的(文本)斜体字母进行比较,新数学字体的主要新特征似乎是:

  • 形状各异的vw
  • 字母的“泪珠”末端更大fr
  • 该字母z有一个基本的“花饰”(但它远不如 Computer Modern 或 MathtimePro 中的斜体 z 的花饰那么明显(后者带有选项zswash集)
  • 大多数字母都更紧凑一些,垂直笔画也更粗一些

第二份附录,2017 年 5 月 27 日:最近,STIX 字体项目发布了 Stix Fonts 2.0 版。STIX Two Text 和 STIX Two Math 字体可从以下网址免费获取https://sourceforge.net/projects/stixfonts/。STIX Two Math(和 Text)字体相对于 XITS 和原始 Stix 字体而言,向前迈出了一大步。也就是说,以下屏幕截图中的数学字距相对于 XITS Math 提供的字距有了很大改进(参见上面的屏幕截图)。STIX Two 斜体字形(在文本和数学模式下)也比 Stix、XITS 和 Times New Roman 的倾斜度更小(或:更直立)。

在此处输入图片描述

% !TeX program = lualatex
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
\begin{document}
\obeylines % just for this example
$e^j + |f|$ 
$abcdefghijklmnopqrstuvwxyz$ --- STIX Two Math, math italics   
\textit{abcdefghijklmnopqrstuvwxyz} --- STIX Two Text, text italics

\setmainfont{XITS}[Scale=MatchLowercase] % make sure x-heights match
\emph{abcdefghijklmnopqrstuvwxyz} --- XITS Text, text italics
\end{document}

答案2

我曾经遇到过类似的 mathspec/opentype/spacing 问题,并通过采用纯 latex 数学模式间距命令解决了这些问题:

$
\,      % a small space
\:      % a medium space
\;      % a large space
\quad   % a really large space
\qquad  % a huge space
\!      % a negative space (moves things back to the left)
$

"与 mathspec 相比,它的优势\"..."有两个方面:您可以在任何地方使用这些命令(而不是只能在单个字符前面),并且它们与 LaTeX 和 XeTeX 兼容。

我不确定这是否正是您所需要的,但它解决了我的(类似)问题。

相关内容