获取天城文文本的正确可搜索文本

获取天城文文本的正确可搜索文本

考虑这个相当简单的文档,据我所知,这是排版天城文梵语文本的推荐方式:

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Chandas}

\begin{document}
किं  बहुना । परस्परं द्वैधम् उत्पन्नम् ।
\end{document}

当我排版此内容时,即使输出看起来不错,每次尝试从 PDF 复制文本都会产生错误的结果。我尝试了和xelatexlualatex其中四种字体都可以在网上免费获得:钱达斯Noto Sans Devanagari、Noto Serif Devanagari阿迪希拉

  • 正确文字:

    • 藝術本身成人护理 成人护理
  • xelatex

    • 韓國比预期还早(钱达斯)
    • 藝術本身艾特里公园(Noto 无天城文)
    • 藝術本身成人护理 成人护理(诺托衬线天城文)
    • 藝術本身成人护理 成人护理(阿迪什拉)
  • lualatex

    • 藝術本身परपरं द्वैधम् उपन्नम् । (钱达斯)
    • 藝術本身成人护理 成人护理(Noto Sans Devanagari — 此外,输出已损坏)
    • 藝術本身成人护理 成人护理(Noto Serif Devanagari — 此外,输出已损坏)
    • 藝術本身成人护理 成人护理(阿迪什拉)

所以这些都不正确,尽管对于某些组合来说,只有第一个音节有问题。(它是否是第一个音节并不重要;任何地方的किं 都有同样的问题。)

(补充:这是使用 TeX Live 2020,因此使用 LuaHBTeX……但与两种字体lualatex相比,输出不正确。)xelatex

有没有办法可以复制正确的文本?

我也尝试使用accsupp包来包装每个单词,比如\BeginAccSupp{ActualText=किं}किं\EndAccSupp{}等等,但结果却是完全乱码。

答案1

当我在 TeX Live 2020 上使用 LuaLaTeX 进行编译时,复制并粘贴时会出现此信息:

藝術本身成人护理 成人护理

从以下 MWE,如果您还想定义、等,它还可以为您节省一些\devanagarifontsf输入\devanagarifonttt

\documentclass{article}
\tracinglostchars=2

\usepackage{iftex}
\usepackage{polyglossia}

\ifluahbtex
  \defaultfontfeatures{ Renderer=HarfBuzz, Ligatures=TeX }
\fi

\setmainlanguage{sanskrit}
%% Font available at:
%% https://www.google.com/get/noto/#serif-deva
\newfontfamily\devanagarifont[Script=Devanagari]{Noto Serif Devanagari}

\begin{document}
किं  बहुना । परस्परं द्वैधम् उत्पन्नम् ।
\end{document}

但是,这仍然无法正确地从 XeLaTeX 复制粘贴。

我通常使用babel,它可以自动检测我输入的语言,但解决方案非常相似。

正如 Marcel Kruger 在评论中所说,现代 LuaLaTeX 支持 HarfBuzz 渲染,但您需要选择它。

相关内容