IIRC, iText поддерживает арабский шейпинг на более высоком уровне, чем drawString
.Давайте посмотрим здесь ...
Ах!ColumnText.showTextAligned(PdfContentByte canvas, int alignment, Phrase phrase, float x, float y, float rotation, int runDirection, int arabicOptions)
Выравнивание является одним из Element.ALIGN_*
.Направление бега одно из PdfWriter.RUN_DIRECTION_*
.Арабские опции - это битовые флаги, ColumnText.AR_*
Это должно сработать с одним предупреждением: я не уверен, что он будет обрабатывать несколько направлений в одной фразе.Ваша тестовая строка содержит CJKV, арабские и латинские символы, поэтому должно иметь два изменения направления.
Удачи.