Имена символов и 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, который я использую.