Как внедрить идентификаторы и позиции глифов в форме HarfBuzz в поток контента PDFBox 3.0?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как внедрить идентификаторы и позиции глифов в форме HarfBuzz в поток контента PDFBox 3.0?

Сообщение Anonymous »

Я работаю над рендерингом тайского текста с помощью PDFBox 3. Тайский язык — это сложный скрипт, который в значительной степени зависит от таблиц GSUB и GPOS для правильного формирования текста (например, расположения гласных).
Как отмечено в PDFBOX-3147, PDFBox пока не полностью поддерживает сложное формирование скрипта. Чтобы решить эту проблему, я использую внешний механизм формирования (HarfBuzz), который предоставляет мне правильные идентификаторы глифов и точные позиции X/Y.
Проблема: я не могу найти поддерживаемый API в PDFBox 3 для прямого внедрения этих предварительно рассчитанных идентификаторов и позиций глифов. Метод PDPageContentStream.showText(String text) заставляет входные данные быть строкой Юникода. Внутренне PDFBox перекодирует эту строку и применяет собственное ограниченное формирование, которое эффективно переопределяет работу, проделанную HarfBuzz.
Что я учел:
  • Необработанные команды: Я знаю о AppendRawCommands(" Tj"). Однако это похоже на взлом. Он обходит поднабор шрифтов и генерацию ToUnicode, делая текст недоступным для поиска, и я опасаюсь, что он может быть удален в будущих версиях.
  • Векторные контуры: Отображение глифов в виде фигур/путей. Визуально это выглядит правильно, но ухудшает возможность выбора текста и возможности поиска.
Мой вопрос: Есть ли какой-либо поддерживаемый метод или API в PDFBox 3, который позволяет передавать идентификаторы глифов или предварительно закодированные массивы байтов непосредственно в конвейер вывода текста, сохраняя при этом правильное управление ресурсами шрифтов?

Подробнее здесь: https://stackoverflow.com/questions/798 ... content-st
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»