GlyphMetrics 클래스
GlyphMetrics 클래스
GlyphMetrics 클래스는 단일 글리프에 대한 정보를 나타내요. 글리프는 하나 이상의 문자의 시각적 표현이에요. GlyphMetrics 인스턴스는 Font에 의해 생성되며, 특정 Font의 특정 글리프에 적용돼요.
본문
글리프는 네 가지 종류로 나뉘어요.
- STANDARD — 단일 문자를 나타내는 데 흔히 쓰이는 글리프
- LIGATURE — 문자 시퀀스를 나타내는 글리프
- COMPONENT —
GlyphVector에서 텍스트 모델의 특정 문자에 대응하지 않는 글리프. 아랍어 정렬 같은 타이포그래피 이유로 추가돼요. - COMBINING —
STANDARD나LIGATURE글리프를 장식하는 글리프(예: 액센트 기호). 캐럿이COMBINING글리프 앞에 나타나지 않아요.
public final class GlyphMetrics
extends Object
메트릭
- advance — 글리프의 원점에서 기준선(세로 또는 가로)을 따라 다음 글리프 원점까지의 거리예요. 회전된 글꼴의 글리프는 X·Y 두 성분을 가질 수 있어요. 참고로
GlyphVector에서 한 글리프에서 다음 글리프까지의 거리는 커닝 등 위치 조정 때문에 advance와 다를 수 있어요. - bounds — 글리프의 윤곽선을 완전히 포함하는 가장 작은 사각형이에요. 글리프 원점에 상대적이에요.
- 왼쪽 사이드 베어링(left-side bearing) — 글리프 원점에서 bounds 사각형 왼쪽까지의 거리예요. 음수면 글리프 일부가 원점 왼쪽에 그려져요.
- 오른쪽 사이드 베어링(right-side bearing) — bounds 사각형 오른쪽에서 다음 글리프 원점(원점+advance)까지의 거리예요.
bounds는 래스터화·픽셀 조정 효과 때문에 렌더링할 때 영향받는 모든 픽셀을 반드시 포함하지는 않아요.
사용 예제
GlyphMetrics 인스턴스는 직접 만들 수도 있지만 거의 항상 GlyphVector에서 얻어요. 한번 생성되면 변경할 수 없어요(immutable).
Font font = ...;
int glyphIndex = ...;
GlyphMetrics metrics = GlyphVector.getGlyphMetrics(glyphIndex);
int isStandard = metrics.isStandard();
float glyphAdvance = metrics.getAdvance();
주요 메서드
getAdvance()— 글리프의 advance를 반환해요.getBounds2D()— 글리프의 경계 사각형을 반환해요.getLSB()/getRSB()— 왼쪽·오른쪽 사이드 베어링을 반환해요.isStandard()/isLigature()/isComponent()/isCombining()— 글리프 종류를 확인해요.