Как выбрать лигатуру для "FI" в Java (и других)

У нас есть система, которая анализирует PDF-файлы и извлекает текст для индексации и тому подобное. Одна проблема, с которой мы столкнулись, заключается в том, что Illustrator устанавливает слова, содержащие "fi", чтобы использовать лигатуру для fi (одиночный глиф).

Например, эта строка...

"скамейка и богатая керамическая плитка."

Появляется так в моем отладчике Java

"Ешьте скамейку и богатую витрину керамической плитки."

Похоже, что \u001F - это код символа, который файлы Adobe PDF используют для лигатуры "fi". Я мог бы явно поменять местами \u001F на "fi", но кто-нибудь знает надежный способ справиться с этим и подобные случаи?

1 ответ

Последовательность байтов, используемая в качестве операнда для операторов "показать текст" в PDF (TJ, Tj и т. Д.), Должна быть преобразована в текст с использованием кодирования активного шрифта в графическом состоянии и карты ToUnicode, связанной с этим шрифтом. Некоторые шрифты включают в себя карту ToUnicode, которая отображает код 0x001F (или любой другой код, который он использовал для глифа) на символы "f" и "l". Другие шрифты используют кодировку с массивом /Differences, который отображает код 0x1F в символ /fl. Эти структуры должны быть обработаны для получения правильных результатов.

Другие вопросы по тегам