デーヴァナーガリー文字の正しい検索可能なテキストを取得する

デーヴァナーガリー文字の正しい検索可能なテキストを取得する

私の知る限り、デーヴァナーガリー文字のサンスクリット語テキストをタイプセットするのに推奨される方法は、次のかなりシンプルなドキュメントです。

\documentclass{article}

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

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

これをタイプセットすると、出力が視覚的に問題ない場合でも、PDF からテキストをコピーしようとすると、毎回間違った結果になります。 と の両方で試しましたがxelatexlualatex4 つのフォントはすべてオンラインで無料で入手できます。チャンダスNoto Sans デバナーガリ文字、Noto Serif デバナーガリ文字アディシラ:

  • 正しいテキスト:

    • キリンビールペルーの首都ウプサラ
  • xelatex:

    • カー・バナペルーの首都(チャンダス)
    • 良いニュース映画「スターウォーズ」の登場人物(ノートサンスデーヴァナーガリー文字)
    • 良いニュースペルーの首都ウプサラ(ノートセリフデーヴァナーガリー)
    • 良いニュースペルーの首都ウプサラ(アディシラ)
  • lualatex:

    • 良いニュースペルーの首都ウプサラ(チャンダス)
    • 良いニュースペルーの首都ウプサラ(Noto Sans Devanagari も出力が壊れています)
    • 良いニュースペルーの首都ウプサラ(Noto Serif Devanagari — 出力も壊れています)
    • िकं बzना ।ペルーの首都ウプサラ(アディシラ)

したがって、これらはどれも正しくありませんが、いくつかの組み合わせでは、最初の音節のみが問題でした。(最初の音節であるかどうかは関係ありません。किं はどこでも同じ問題があります。)

(余談ですが、これは TeX Live 2020 を使用していたため、 LuaHBTeX を使用していますが、2 つのフォント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 レンダリングをサポートしていますが、それを選択する必要があります。

関連情報