在输入上运行xelatex
(或)lualatex
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont[Ligatures=TeX]{texgyretermes-math.otf}
\begin{document}
\(\{f\}\)
\end{document}
应该产生某种形式的
{F}
在 PDF 的文本层中。但它会产生
{F }
f 和 } 之间有一个空格。这个空格不应该存在。如何去掉它?
至于可见的输出,它如下:
如您所见,PDF 中的左括号和 f 重叠。但是,当您使用 fontforge 打开字体,并将左括号和 florin 放入度量窗口时,它们不会重叠!输出不一致。我遗漏了什么?如何一劳永逸地正确增加“{F“在我的大型文档(不是 MWE)中?我试图自己改进字体(开发人员过去没有对类似请求做出反应),但迄今为止没有任何结果......
答案1
PDF 的“文本层”中的空格是由 PDF 查看器的启发式方法插入的,因为 和 之间有一段距离f
。}
从长远来看,带标签的 PDF 文件应该可以解决这个问题,但对于数学公式,我不会坚持下去。因此,从短期来看,您要么使用 eg 为每个数学公式指定替换文本,repltext
要么忍受这个空格。
关于 FontForge 中的“不一致”:florin 符号 (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 中修改。