当我使用 pdflatex 创建包含英文文本的 pdf 文件时,我可以从中复制文本,并在文本编辑器中粘贴时获得相当不错的文本。但是,当我对使用 xelatex 创建的马拉雅拉姆语文本的 pdf 执行相同操作时,粘贴的文本有几个间隙,而且经常出现错误的字符。我的印象是,使用 xelatex 创建的 pdf 也会有 Unicode 文本,然后可以搜索、索引和复制。至少,这是我从阅读有关 xelatex 的文章中得到的印象。另一方面,我发现可以从 Libre Office Writer 创建的 pdf 中清楚地复制马拉雅拉姆语文本。我对 XeLaTeX 的印象是错误的,还是我对 pdf 格式的理解是错误的?还是我在其他地方弄错了?如果有人对此有了解,我将不胜感激。
答案1
马拉雅拉姆语是一种与梵语相关的文字,单个字符从输入到输出经历了相当大的变化。特别是,一些元音被放置在前相应的辅音和字形被组合成复合字,即所谓的连字。参见https://en.wikipedia.org/wiki/Malayalam_script有关连字和元音位置的示例(还有更多!)。
在字体方面,这些辅音复合词通常是预先组合好的,即单独绘制以使其看起来正确。在排版过程中,字符会被替换为字体中预先组合好的代码点,但这些代码点通常没有文本表示。
有解决方法,并且字体可以声明从代码点到字符序列的映射,但这通常不可用。
答案2
这似乎是 XeLaTeX 引擎的技术限制。问题是 PDF 中嵌入的字体的 CMAP(字符映射)不完整。最新版本的luahbtex
可以生成包含复杂脚本文本的 PDF,这些文本可以正确地复制粘贴回文本编辑器。以下是此类文档的一个示例:http://books.sayahna.org/ml/pdf/bbh-web.pdf