
我想檢查這個問題是否是由於我的配置造成的,或者是否是某種錯誤。
這是我加載的套件及其配置(為了測試問題,所有這些都非常小)。我正在使用 XeTeX 0.9998。
\documentclass[12pt,a4paper]{scrbook}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{amsmath,amsthm,mathtools}
\usepackage{mathcomp,mathrsfs,xfrac,bbm}
\usepackage{unicode-math}
\usepackage{xunicode}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Scale=MatchLowercase]{Myriad Pro}
\setmonofont{Inconsolata}
\setmathfont{XITS Math}
當我寫作時,我注意到數學公式中的間距有些奇怪,然後我寫了這篇文章,
這非常糟糕。間距一點都不好,有很多衝突。然後我嘗試使用其他一些字體,選擇 unicode-math 支援的字體(在自述文件中找到列表),結果證明我與 STIX Math 和 Latin Modern Math 具有相同的效果,如您所見
這裡的問題不太明顯,因為字體更輕,但面對拉丁現代的標準版本(不使用 opentype 字體和 unicode-math)
這是正確的,所以我認為這是與 unicode-math 有關的東西,但是使用 Neo Euler 和 Asana Math 看起來不錯
有人知道這個問題的原因可能是什麼嗎?也許是字體?我希望不是,因為我真的很想用 XITS 或 STIX...你能重現這個問題嗎?
答案1
主要問題是 XeTeX 沒有應用數學斜體校正:
- XITS 具有斜體校正功能,需要它才能獲得適當的間距。
- 對於拉丁現代字體,機器人根本不提供斜體校正。
- 體位法數學也缺乏斜體校正,但字形的間隔方式減輕了斜體校正的需要。
- 歐拉,雖然有斜體校正,但它的直立設計使得缺乏斜體校正不是很明顯(雖然你的例子是錯誤的,你必須傳遞
math-style=upright
使用歐拉字母的選項)。
我不清楚為什麼 XeTeX 停止應用斜體校正,這部分程式碼已經很長時間沒有被觸及了,但是程式碼無論如何都有缺陷,所以我的猜測是它意外工作並且最近的一些數學清理失敗了。
但是,有一個解決方法:在字體編輯器(最好是 FontForge)中開啟 XITS 字體,並將空格字形的寬度設為0,這將導致引擎再次應用斜體校正。
出於好奇,是否應用斜體校正取決於字體的空間因子是否為零,即使在程式碼的 OpenType 數學分支中也是如此,儘管對於 TFM 數學字體來說確實如此,但本質上情況並非如此OpenType 字體。
此外,OpenType 數學規範在何時應應用斜體校正方面與 TeX 演算法有所不同,但它非常模糊,而且 MS 實作似乎與實際記錄的內容不同,因此 XeTeX 和 LuaTeX 還沒有很好地支援它。
更新:XeTeX 的主分支現在可以更好地處理這個問題,直到設計出更強大的斜體校正處理方法。