по правилам переполнения стека юристов;Я знаю, что это не полный ответ, но он слишком длинный для комментария.
Поскольку я не владею языком, мне довольно сложно выявить различия здесь.Там довольно много текста, и хотя я вижу, что шрифты разные, мне не ясно, что это за отдельные символы.Можете ли вы указать на один конкретный глиф, который является неправильным после его копирования?
Шрифт, встроенный в файл (Arial Unicode MS), имеет прикрепленный ToUnicode CMap, который мне кажется правильным, хотя несколько из одного символакоды сопоставляются с несколькими кодовыми точками Unicode.Например, код символа 0x564 сопоставляется со значениями Unicode 0x093e, 0x0901.
Я не могу легко сказать, правильно ли это.Я мог бы кропотливо декодировать всю строку, проверить, что такое кодовые точки Unicode, а затем попытаться сопоставить их с символами в исходном файле, поместив их по отдельности в документ Word, используя Arial Unicode MS.Но мне кажется, что очень много символов правильные, и я не хочу тратить на это много времени.
[править]
Так вот чтоТекст в файле PDF выглядит так.Код символа - это фактический код символа в файле PDF, который отображается на программу глифа в шрифте через CMap и другие части механизма шрифтов, о которых нам здесь не нужно беспокоиться.Он также сопоставляется через ToUnicode CMap с набором кодовых точек Unicode
code Имя символа Unicode
059A 0938 स Sa
0565 0902 ं vowel sign Anusvara
0597 093F ि vowel sign I
05A8 0948 ै vowel sign Ai
0589 0927 ध Dha
059E 093E ा vowel sign Aa
059F 0935 व Va
058A 0928 न Na
0577 0915 क Ka
Делая все возможное, чтобы вспомнить, как читать Деванагри, я считаю, что оригинал - это что-то вродеSa (с диакритическим знаком 'am') Va (с модификатором гласного ай) Dha (с модификатором гласного aa) Na (с модификатором гласного i) и, наконец, Ka.
Боюсь, что причина этогонеправильно вырезать и вставлять просто потому, что значения ToUnicode кажутся частично неправильными.Коду символа 0x0597 было присвоено значение Unicode U + 093F, когда оно должно быть U + 0935, и коду символа 0x059f было присвоено кодовая точка Unicode U + 0935, когда оно должно быть U + 093F.То есть значения Юникода этих двух кодов символов были транспонированы.
Когда вы копируете и вставляете это, вы получаете несовместимые модификаторы, поэтому вы получаете забавные символы.Пунктирное кольцо в глифе указывает, где должен быть символ, изменяемый акцентом.Вы никогда не должны этого видеть, но поскольку движок верстки не может найти базовый символ для изменения, он просто рисует акцент сам по себе.
Боюсь, что ваш файл PDF был плохо создан, единственныйспособ исправить это будет исправить ошибки в ToUnicode CMap.Я сделал это для двух символов, которые я отметил выше, а затем скопировал и вставил:
संवैधाषनक
Что выглядит более или менее правильно (кажется, я допустил ошибку с одной гласноймодификатор).Однако в этой таблице могут быть и другие ошибки, и попытаться исправить их очень нетривиально.Я потратил большую часть времени на решение этой проблемы, и проверка всего CMap заняла бы у меня день или два.И этот CMap является специфическим для этого документа, я не мог использовать его в другом месте, потому что шрифт является подмножеством.У другого документа будет другое подмножество, что будет означать, что коды символов будут другими.