ITextSharp неправильно пишет слова RTL - PullRequest
0 голосов
/ 28 августа 2018

Я испытываю что-то странное, когда пишу текст с именами с помощью ITextSharp - я пишу какой-то текст, а именно «حبیب الله ځاځی» Я пытаюсь записать эту строку в PDF, используя ITextSharp 5.5.13, используя следующий код:

var fp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), “arial.ttf”);
var bf = BaseFont.CreateFont(fp, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

... ..

IList<AcroFields.FieldPosition> fieldPositions = frm.GetFieldPositions(fieldName);
AcroFields.FieldPosition fieldPosition = fieldPositions[0];
iTextSharp.text.Rectangle rec1 = fieldPosition.position;
var sizef = ColumnText.FitText(new Font(bf), ourstring, rec1, font_size, PdfWriter.RUN_DIRECTION_RTL);

Phrase px = new Phrase();
Chunk chunk = new Chunk(ourstring, new Font(bf, sizef));
px.Add(chunk);
ColumnText.ShowTextAligned(stamper.GetOverContent(i), Element.ALIGN_RIGHT,
                                            px, rec1.Right, rec1.Bottom - bf.GetDescentPoint(ourstring, sizef), 0, PdfWriter.RUN_DIRECTION_RTL,ColumnText.AR_LIG);

... Во время отладки я подтвердил, что имя отправляется правильно

Но когда я открываю получившийся документ - текст отображается неправильно, как показано ниже enter image description here

Когда я открываю этот файл в Adobe Acrobat Pro с целью редактирования - я вижу, что назначенный шрифт правильный, т. Е. Arial enter image description here Если я изменю его на другой шрифт, а затем вернусь к Arial - текст будет отображаться правильно, как и должно быть

enter image description here Я пробовал различные комбинации арабских опций ColumnText.AR_XXX и ничего не меняется

Кто-нибудь имеет представление о том, что здесь происходит?

...