VagabondK.OpenType 네임스페이스
TTF 및 OTF 폰트 파일 생성 기능들을 지원하는 라이브러리입니다.
클래스
CaretSlope
hhea caretSlopeRise / caretSlopeRun 값을 한 쌍으로 정의하는 값 객체입니다. CaretSlope(CaretSlope)에 설정하면 hhea의 caretSlope 필드에 적용됩니다.
FontBase
sfnt 형식 폰트 파일 생성의 공통 로직을 제공하는 추상 베이스 클래스입니다.
TTF(glyf/loca)와 OTF(CFF)는 sfnt 디렉터리 조립, checksum 계산,
head/hhea/OS/2 메트릭 자동 계산 등이 동일하므로 이 클래스에서 공유합니다.
윤곽 테이블(glyf/loca 또는 CFF), maxp 버전, sfnt version은
파생 클래스가 구현하는 추상 멤버로 구분됩니다.
문자 코드에서 글리프로의 매핑을 dictionary처럼 접근할 수 있습니다:
인덱서(font[charCode]), ContainsGlyph(int), TryGetGlyph(int, out Glyph),
RemoveGlyph(int), 그리고 foreach로 전체 매핑을 열거할 수 있습니다.
FontBuilder
폰트를 생성하는 빌더입니다. 옵션을 플루언트 메서드로 설정한 후 Build<T>()를 호출하면 폰트 객체를 반환합니다. Build<T>()의 형식 매개변수로 TTF(TtfFont) 또는 OTF(OtfFont)를 지정합니다.
FontMetrics
폰트의 수직 metrics를 한 번에 정의하는 값 객체입니다. Metrics(FontMetrics)에 설정하면 hhea/OS/2의 metrics 필드에 적용됩니다.
OtfFont
OpenType(CFF 윤곽, OTF) 폰트 파일을 생성하는 클래스입니다. 글리프와 메타데이터를 추가한 후 ToBytes()를 호출하여 sfnt 형식의 OTF 파일 바이트 배열을 생성합니다. sfnt 파일은 테이블 디렉터리와 각 테이블 데이터로 구성되며, CFF/hmtx/cmap/maxp 테이블은 글리프에서 자동 생성됩니다. TTF와 달리 glyf/loca 테이블 대신 CFF 테이블을 사용하고, sfnt version은 'OTTO'(0x4F54544F)를 사용합니다.
PanoseProperties
panose입니다. 특정 서체의 시각적 특성을 설명하는 10바이트 배열입니다. 이름이 다르지만 외관이 비슷한 폰트를 연관시키는 데 사용됩니다. 첫 번째 바이트(bFamilyType)에 따라 나머지 바이트의 의미가 달라집니다.
TtfFont
TrueType(TTF) 폰트 파일을 생성하는 클래스입니다. 글리프와 메타데이터를 추가한 후 ToBytes()를 호출하여 sfnt 형식의 TTF 파일 바이트 배열을 생성합니다. sfnt 파일은 테이블 디렉터리와 각 테이블 데이터로 구성되며, glyf/loca/hmtx/cmap/maxp 테이블은 글리프에서 자동 생성됩니다.
구조체
ValidationResult
Validate()의 단일 검사 결과입니다.
열거형
DirectionHint
head 테이블의 fontDirectionHint 필드의 값입니다. 더 이상 사용되지 않으며(deprecated), 2로 설정하는 것이 권장됩니다.
FontSelection
OS/2 테이블의 fsSelection입니다. 폰트 패턴의 특성에 대한 정보를 포함합니다. bit 0(Italic)은 head의 macStyle bit 1과, bit 5(Bold)은 macStyle bit 0과 일치해야 합니다.
FontType
OS/2 테이블의 fsType입니다. 폰트 임베딩 라이선스 권한을 나타냅니다. bit 0-3(사용 권한)은 상호 배타적이며, 유효한 값은 0, 2, 4, 8 중 하나입니다.
HeadFlag
head 테이블의 flags 필드의 비트 플래그입니다.
MacStyleFlag
head 테이블의 macStyle 필드의 비트 플래그입니다. Windows에서는 OS/2 테이블의 fsSelection 비트가 우선 사용되며, macStyle 비트는 fsSelection 비트와 일치해야 합니다.
ValidationLevel
Validate() 결과의 심각도입니다.
Weight
OS/2 테이블의 usWeightClass입니다. 글리프의 시각적 굵기(선 두께)를 나타냅니다. 1 이상 1000 이하의 값이 유효합니다.
Width
OS/2 테이블의 usWidthClass입니다. 글리프의 정상 종횡비(너비 대 높이 비율)에 대한 상대적 변화를 나타냅니다. 5(Medium)가 정상(100%)입니다.