文字層錯誤。 fontforge 和 {xe|lua}latex 中的字距調整不匹配

文字層錯誤。 fontforge 和 {xe|lua}latex 中的字距調整不匹配

在輸入上運行xelatex(或)lualatex

\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont[Ligatures=TeX]{texgyretermes-math.otf}
\begin{document}
\(\{f\}\)
\end{document}

應該產生某種形式的

{F}

在 PDF 的文本層中。但它產生

{F }

f 和 } 之間有一個空格。這個空間不應該存在。如何擺脫它?

至於可見輸出,這裡是:

在此輸入影像描述

如您所見,左大括號和 f 在 PDF 中重疊。但是,當您使用 fontforge 打開字體,並將帶有弗羅林的左大括號放入度量視窗時,它們不會重疊!輸出不一致。我缺什麼?如何一勞永逸地適當增加出現「{F「在我的大文檔(不是 MWE)中?我試圖自己改進字體(開發人員過去沒有對類似的請求做出反應),但到目前為止沒有任何結果...

答案1

PDF 的「文字圖層」中的空格是透過 PDF 檢視器的啟發式插入的,因為f和之間存在著一定距離}。從長遠來看,帶有標籤的 PDF 文件應該可以解決這個問題,但特別是對於數學公式,我不會保持我的廣度。因此,從短期來看,您要么使用 例如 為每個數學公式指定替換文本,repltext要么就接受這個空間。

關於 FontForge 中的「不一致」:弗羅林符號 (U+0192) 和數學斜體小寫字母 f (U+1D453) 不是相同的字形。在 FontForge 中比較兩者顯示出與 TeX 相同的外觀:

(數學斜體小寫 F 第一個,弗羅林第二個)

在此輸入影像描述

但一般來說,我不會推薦 FontForge 的公制視窗用於數學輸出,因為數學的格式與普通文字不同。特別是像這種情況下的「經典字距調整」實際上並不存在,因為{f是單獨的對象,也不屬於單字的一部分。

當然,如果您更喜歡弗羅林符號而不是數學 f,您可以使用

\Umathcode`\f 7 0 "192

之後\begin{document},LaTeX 在數學模式下將弗羅林符號插入 U+1D453 中,表示「f」。一個缺點是文字圖層也會包含弗羅林符號。您也可以U+1D453直接在 FontForge 中修改。

相關內容