Получение корректного поискового текста для текста деванагари

Получение корректного поискового текста для текста деванагари

Рассмотрим этот довольно минимальный документ, который, насколько мне известно, является рекомендуемым способом набора текста на санскрите, написанного шрифтом деванагари:

\documentclass{article}

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

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

Когда я набираю это, даже если вывод визуально хорош, попытка скопировать текст из PDF каждый раз дает неправильный результат. Я пробовал и с , xelatexи lualatexс четырьмя шрифтами, которые все щедро доступны онлайн бесплатно:Чандас,Noto Sans Devanagari, Noto Serif Devanagari,Адишила:

  • Правильный текст:

    • Кин Бахунья. Перспективы развития.
  • xelatex:

    • कं बहुना. Пожалуйста, посетите наш сайт. (Чандас)
    • Да, конечно. Пожалуйста, дайте мне знать. (Ното Санс Деванагари)
    • Да, это так. Перспективы развития. (Шрифт Noto Serif Devanagari)
    • это так. Перспективы развития. (Адишила)
  • lualatex:

    • это так. Пожалуйста, дайте мне знать. (Чандас)
    • это так. Перспективы развития. (Noto Sans Devanagari — также, вывод сломан)
    • это так. Перспективы развития. (Noto Serif Devanagari — также, вывод сломан)
    • это так. Перспективы развития. (Адишила)

Итак, ни один из вариантов не является правильным, хотя в некоторых комбинациях проблематичной была только первая буква слога. (Неважно, что это первая буква слога; в слове किं везде та же проблема.)

(Примечание: это было сделано с использованием TeX Live 2020, поэтому lualatexиспользуется LuaHBTeX… однако вывод неверен по сравнению с xelatexдвумя шрифтами.)

Есть ли способ скопировать правильный текст?

Я также пробовал обёртывать каждое слово с помощью accsuppпакета, например, \BeginAccSupp{ActualText=किं}किं\EndAccSupp{}и т. д., но это приводит к полной тарабарщине.

решение1

Когда я компилирую с помощью LuaLaTeX в TeX Live 2020, при копировании и вставке я получаю следующее:

Кин Бахунья. Перспективы развития.

Из следующего 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, который, помимо прочего, может автоматически определять язык, на котором я печатаю, но решение очень похожее.

Как сказал Марсель Крюгер в комментариях, современный LuaLaTeX поддерживает рендеринг HarfBuzz, но вам нужно его выбрать.

Связанный контент