GlyphMetrics 클래스

GlyphMetrics 클래스

GlyphMetrics 클래스는 단일 글리프에 대한 정보를 나타내요. 글리프는 하나 이상의 문자의 시각적 표현이에요. GlyphMetrics 인스턴스는 Font에 의해 생성되며, 특정 Font의 특정 글리프에 적용돼요.

출처: Java API Reference

본문

글리프는 네 가지 종류로 나뉘어요.

  • STANDARD — 단일 문자를 나타내는 데 흔히 쓰이는 글리프
  • LIGATURE — 문자 시퀀스를 나타내는 글리프
  • COMPONENTGlyphVector에서 텍스트 모델의 특정 문자에 대응하지 않는 글리프. 아랍어 정렬 같은 타이포그래피 이유로 추가돼요.
  • COMBININGSTANDARDLIGATURE 글리프를 장식하는 글리프(예: 액센트 기호). 캐럿이 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() — 글리프 종류를 확인해요.

더 알아보기