Замены лигатур, обратное разделение глифов и gsub в PDFbox

Программы просмотра PDF не отображают все тамильские буквы, как ожидалось, в PDF, сгенерированном с помощью PDFbox. Кажется, мне нужно сделать необходимые замены при создании PDF-файла, чтобы он отображался должным образом.

Попытка замены, любая помощь будет оценена. В основном это три случая, требующие замены или изменения тамильских букв. Большинство замен остальных букв более или менее следуют одному и тому же.

Нужно обратить глифы

              கெ = க + ெ =  க ெ  ->  ெ + க = கெ 

Нужно разделить и изменить порядок глифов

              கொ = க + ொ  = க ொ  ->    க + ெ + ா  ->  ெ + க + ா = கொ
                                    

Новый результирующий глиф — замена ряда глифов новым глифом. Новый глиф не имеет юникода, он существует только в файле шрифта.

              கு = க + ு = க ு -> கு            

Ниже приведен фактический рендеринг контента из программы просмотра PDF.

Ниже приведено ожидаемое содержимое, выполненные жестко закодированные замены (для идентификатора глифа без юникода, жестко закодированного в PDCIDFontType2#public byte[] encode(int unicode). Перед вызовом showtext перевернуть, разделить и изменить порядок входной текстовой последовательности. Также добавлены идентификатор глифа, который не имеет юникода в TrueTypeEmbedder Subsetter для встраивания глифа в сгенерированный PDF-файл.), просто чтобы получить его.

Как эффективно обрабатывать эти замены?

Глядя на GlyphSubstitutionTable, fontbox.cmap.Identity-H, fontbox.unicode.Scripts.txt. Не удалось получить это до сих пор. Любая помощь будет оценена по достоинству.

Шрифт

Действительный

Ожидал

Замены

1 ответ

Вам необходимо внедрить механизм формирования текста для обработки письма на тамильском языке.

Пожалуйста, ознакомьтесь со спецификацией OpenType: https://docs.microsoft.com/en-us/typography/opentype/spec/ , таблицы GSUB/GPOS представляют для вас наибольший интерес.

Это непростая задача, поэтому, возможно, лучшим выбором будет использование внешней библиотеки, такой как HarfBuzz .

Существует также проблема PDFBox (4189), касающаяся бенгальской письменности. Возможно, это поможет вам реализовать поддержку тамильского языка.

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