从生成的 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例如)。