“波浪线”字形从 LM 字体中错误复制

“波浪线”字形从 LM 字体中错误复制

从生成的 PDF 中复制文本并将其粘贴到某处:

\font\tentt=rm-lmtt10 \tentt
a\char'176 b
\font\tentt=cmtt10 \tentt
c\char'176 d
\bye

对我来说(TeX Live 2015),第一个波浪号是通过向前移动插入的。

为什么波浪符号从 LM 字体中复制错误?这是错误吗?

答案1

PFB 文件可以(通常会)包含CMap用于建立从 PDF 文件中的字形到 Unicode 的映射的资源;当选择 PDF 文件中的字形并进行“复制”时,映射提供的代码点将被存储以便稍后选择要粘贴的字符。

CMap 资源cmtt10.pfb将字符槽0x7E(八进制 176)产生的字形映射到U+007E(我不知道它是否真的这样的资源,但并不是很重要。

资源将lmtt10.pfb相同的字形映射到 U+0303(组合波浪线),这可能被视为更明智的选择,因为plain.tex它定义了

\def\~#1{{\accent"7E #1}}

所以这不是一个错误,而是设计师的选择。

可以从 TeX 方面改变这一点吗?也许可以,通过在字体加载时替换 CMap 资源(参见https://tex.stackexchange.com/a/22551/4427例如)。

相关内容