2017-10-23 2 views
0

글꼴 메트릭을 가져 오기 위해 Apache FontBox를 사용하고 있습니다. 글리프에서 GeneralPath를 가져오고 거기에서 글리프의 높이와 같은 정보를 얻습니다.Apache FontBox의 글리프 이름과 GeneralPath (PDFBox)

OpenType 글꼴의 글리프 이름에서 GeneralPath 개체를 가져 오려고합니다. 이 양식을 사용하면 정확한 글리프 정보 (경로)를 얻을 수 있습니다.

사실
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 지정된 일치하는 문양을 찾을 수 없습니다 : 나는 유니 코드에서 문자 모양 이름을 가져하려고하면

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

그러나, 나는 문양에 대한 incorret 정보를 얻을 수 이름. 예를 들어, 다음 호출은 false를 반환합니다.

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

내가 뭘 잘못하고 있니? "uni0075"또는 "uni24C8"과 같은 이름을 직접 사용할 때마다 정확한 값을 얻습니다. 그러나 GlyphId에서이 이름을 얻는 방법을 모르겠습니다.

Ps .: otfFont는 OpenTypeFont 객체입니다.

미리 감사드립니다.

답변

0

해결책을 찾았습니다. 이것에 대한

GeneralPath glyphPath = otfFont.getPath(name); 

:

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

이 내가 사용하고 오픈 타입 글꼴로 내 문제를 해결

그냥 다음 호출을 대체합니다.

관련 문제