Имена символов и GeneralPath в Apache FontBox (PDFBox)

Я использую Apache FontBox для получения метрики шрифта. Я получаю GeneralPath от глифа, и оттуда я получаю некоторую информацию, такую ​​как высота глифа.

Я пытаюсь получить объект GeneralPath от имени глифа шрифтом OpenType. Если я использую эту форму, я получаю точную информацию о глифе (путь).

GeneralPath glyphPath = otfFont.getPath("uni24C8");
System.out.println(glyphPath.getBounds2D().getMaxY()); //Ok...

Однако, если я пытаюсь получить имя глифа из кода Unicode, я получаю неверную информацию для глифа:

int glyphID = otfFont.getUnicodeCmap().getGlyphId(0x0075);
String name = otfFont.getCFF().getFont().getCharset().getNameForGID(glyphID);
GeneralPath glyphPath = otfFont.getPath(name);
System.out.println(glyphPath.getBounds2D().getMaxY()); //Incorrect...

Фактически, FontBox не может найти глиф, который соответствует данному имени. Например, следующий вызов возвращает false.

otfFont.hasGlyph(otfFont.getCFF().getFont().getCharset().getNameForGID(glyphID));

Что я делаю неправильно? Всякий раз, когда я использую такие имена, как "uni0075" или "uni24C8", я получаю правильные значения. Но я не знаю, как получить эти имена из GlyphId.

Ps.: otfFont - это объект OpenTypeFont.

Заранее спасибо.

1 ответ

Я нашел решение.

Просто замените следующий вызов:

GeneralPath glyphPath = otfFont.getPath(name);

за это:

GeneralPath glyphPath = otfFont.getCFF().getFont().getPath(name);

Это решает мою проблему с шрифтом OpenType, который я использую.

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