取得梵文文本的正確可搜尋文本

取得梵文文本的正確可搜尋文本

考慮這個相當小的文檔,據我所知,這是排版天城文梵文語言文本的推薦方法:

\documentclass{article}

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

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

當我排版時,即使輸出在視覺上很好,嘗試從 PDF 複製文字每次都會給出錯誤的結果。我嘗試過xelatexlualatex,四種字體都可以免費在線獲取:錢達斯,Noto Sans 天城體、Noto Serif 天城體,阿迪什拉:

  • 正確文字:

    • किं बहुना । परस्परं द्वैधम् उत्पन्नम् ।
  • xelatex:

    • कंबहुना। परɕपरं जैधम् उɊपਯम् । (錢達斯)
    • ɫकʌ बहुना । परşरं द्वैधम् उत्पşम् । (Noto 無梵文)
    • क बहुना । परस्परं द्वैधम् उत्पन्नम् । (諾托襯線天成體)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (阿迪什拉)
  • lualatex:

    • िकं बहुना । परपरं द्वैधम् उ�पन्नम् । (錢達斯)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (Noto Sans Devanagari — 而且輸出也損壞了)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (Noto Serif Devanagari — 而且輸出也損壞了)
    • िकं बzना । परस्परं द्वैधम् उत्पन्नम् । (阿迪什拉)

因此,這些都不正確,儘管對於某些組合,只有第一個音節是有問題的。 (這是第一個音節並不重要;किं任何地方都有同樣的問題。)

(旁白:這是使用 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 渲染,但你需要選擇它。

相關內容