писать специальные символы, используя собственный шрифт с помощью itext java

Я добавляю собственный шрифт в itext вот так:

PdfContentByte cb = writer.getDirectContent();
BaseFont customfont = BaseFont.createFont("/assets/fonts/GillSans-SemiBold.ttf", BaseFont.CP1257, BaseFont.EMBEDDED);

теперь это нормально, но когда я пытаюсь напечатать символы с акцентом, такие как Matemática, он печатает ?
Есть мысли о том, как печатать символы с акцентом шрифтом gilSans SemiBold?


person fr3d0    schedule 27.03.2016    source источник
comment
Кодовая страница 1257 не содержит символа á.   -  person Jongware    schedule 27.03.2016


Ответы (1)


Пожалуйста, измените второй параметр в этой строке:

BaseFont customfont = BaseFont.createFont(
    "/assets/fonts/GillSans-SemiBold.ttf",
    BaseFont.CP1257, BaseFont.EMBEDDED);

Сделай это:

BaseFont customfont = BaseFont.createFont(
    "/assets/fonts/GillSans-SemiBold.ttf",
    BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

При использовании CP1257 вы создаете простой шрифт, содержащий всего 256 символов. Вы используете символы, которые не являются частью этих 256 символов. Вам нужно создать составной шрифт, который принимает символы UNICODE. Поскольку вы используете горизонтальную систему письма, используйте IDENTITY_H в качестве «кодировки».

person Bruno Lowagie    schedule 27.03.2016