![取得梵文文本的正確可搜尋文本](https://rvso.com/image/420759/%E5%8F%96%E5%BE%97%E6%A2%B5%E6%96%87%E6%96%87%E6%9C%AC%E7%9A%84%E6%AD%A3%E7%A2%BA%E5%8F%AF%E6%90%9C%E5%B0%8B%E6%96%87%E6%9C%AC.png)
考慮這個相當小的文檔,據我所知,這是排版天城文梵文語言文本的推薦方法:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Chandas}
\begin{document}
किं बहुना । परस्परं द्वैधम् उत्पन्नम् ।
\end{document}
當我排版時,即使輸出在視覺上很好,嘗試從 PDF 複製文字每次都會給出錯誤的結果。我嘗試過xelatex
和lualatex
,四種字體都可以免費在線獲取:錢達斯,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 渲染,但你需要選擇它。