![Получение корректного поискового текста для текста деванагари](https://rvso.com/image/420759/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%B4%D0%B5%D0%B2%D0%B0%D0%BD%D0%B0%D0%B3%D0%B0%D1%80%D0%B8.png)
Рассмотрим этот довольно минимальный документ, который, насколько мне известно, является рекомендуемым способом набора текста на санскрите, написанного шрифтом деванагари:
\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, но вам нужно его выбрать.