Vagabond K's Libraries Vagabond K's Libraries
Vagabond K's Libraries Vagabond K's Libraries
https://k.vagabond.builders

검색 결과:

    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로 전체 매핑을 열거할 수 있습니다.

    상속
    object
    FontBase
    OtfFont
    TtfFont
    구현
    IEnumerable<KeyValuePair<int, Glyph>>
    IEnumerable
    네임스페이스: VagabondK.OpenType
    어셈블리: VagabondK.OpenType.dll
    구문
    public abstract class FontBase : IEnumerable<KeyValuePair<int, Glyph>>, IEnumerable

    생성자

    이름 설명
    FontBase()

    FontBase의 새 인스턴스를 생성합니다. 글리프 0은 .notdef(테두리만 있는 사각형) 글리프로 자동 생성됩니다.

    속성

    이름 설명
    CharToGlyph

    문자 코드에서 glyph ID로의 매핑입니다.

    Glyphs

    전체 글리프 목록입니다. (glyph ID 순서, 0=.notdef) .notdef와 추가된 글리프를 결합하여 반환합니다. 반환된 Glyph는 실제 인스턴스이므로, AdvanceWidth/ LeftSideBearing 또는 Outline을 수정하면 다음 ToBytes()에 반영됩니다.

    Head

    head 테이블입니다. 글리프에서 자동 계산되는 바운딩 박스 값을 제외하고 속성을 조작할 수 있습니다.

    Hhea

    hhea 테이블입니다. 글리프에서 자동 계산되는 메트릭 값을 제외하고 속성을 조작할 수 있습니다.

    this[int]

    문자 코드에 해당하는 글리프를 가져오거나 설정합니다. get: 해당 글리프를 반환하며, 매핑되지 않은 문자는 null입니다. set: 글리프를 추가하거나 교체합니다(upsert). 이미 매핑된 문자 코드는 그 자리에서 글리프만 교체되어 glyph ID가 유지되고, 새로운 문자 코드는 마지막 glyph ID로 추가됩니다. 반환된 Glyph는 실제 인스턴스이므로, AdvanceWidth/ LeftSideBearing 또는 Outline을 수정하면 다음 ToBytes()에 반영됩니다.

    Name

    name 테이블입니다. 폰트 이름 및 메타데이터 속성을 조작할 수 있습니다.

    Notdef

    .notdef 글리프(glyph 0)입니다. .notdef은 "not defined"의 약어로, cmap에 매핑되지 않은 문자가 렌더링될 때 사용되는 글리프입니다. 매핑되지 않은 문자는 전부 이 글리프로 표시되므로, advance width가 0이면 문자들이 같은 위치에 겹쳐 표시됩니다. 기본값은 missing glyph로 통용되는 테두리만 있는 사각형입니다.

    Os2

    OS/2 테이블입니다. 글리프에서 자동 계산되는 문자 범위 값을 제외하고 속성을 조작할 수 있습니다.

    Post

    post 테이블입니다. 밑줄 및 이탤릭 각도 속성을 조작할 수 있습니다.

    SfntVersion

    sfnt version 필드에 기록할 값입니다. TTF는 0x00010000, OTF는 0x4F54544F('OTTO')입니다.

    메서드

    이름 설명
    AddGlyph(int, Glyph)

    문자 코드에 해당하는 글리프를 추가합니다. 글리프 0은 .notdef(누락 문자 글리프)로 자동 생성되며, cmap에 매핑되지 않은 문자는 이 .notdef 글리프로 렌더링됩니다.

    ContainsGlyph(int)

    문자 코드가 글리프에 매핑되어 있는지 확인합니다.

    CreateOutlineTables(int, int, int, int)

    윤곽 테이블을 생성합니다. TTF는 glyf/loca, OTF는 CFF 테이블을 반환합니다.

    GetEnumerator()

    문자 코드에서 글리프로의 전체 매핑을 charCode 오름차순으로 열거합니다.

    Load(Stream)

    sfnt 형식 폰트 파일을 스트림에서 읽어 FontBase로 재구성합니다. sfnt version 필드로 폰트 타입을 자동 감지합니다: 0x00010000 → TtfFont, 0x4F54544F('OTTO') → OtfFont. 이 구현은 이 라이브러리가 생성한 폰트(셀프 리더)만 지원합니다.

    Load(string)

    sfnt 형식 폰트 파일을 파일에서 읽어 FontBase로 재구성합니다. Load(Stream)과 동일하며, 파일 확장자가 아닌 sfnt version 필드로 타입을 감지합니다.

    RemoveGlyph(int)

    문자 코드에 해당하는 글리프를 제거합니다. glyph ID는 0..n-1로 연속해야 하므로, 제거된 글리프 이후의 glyph ID는 1씩 감소합니다.

    Save(Stream)

    sfnt 형식 폰트 파일을 스트림에 저장합니다. ToBytes()와 동일한 바이트를 기록합니다. 스트림의 소유권은 호출자에게 있으며, 이 메서드는 스트림을 닫지 않습니다.

    Save(string)

    sfnt 형식 폰트 파일을 파일로 저장합니다.

    ToBytes()

    sfnt 형식 폰트 파일 바이트 배열을 생성합니다. 윤곽/hmtx/cmap/maxp 테이블을 생성하고, 글리프에서 자동 계산된 값을 head/hhea/OS/2 테이블에 반영한 후, sfnt 테이블 디렉터리와 함께 조립합니다. head의 checkSumAdjustment는 0xB1B0AFBA - 전체 폰트 checksum으로 계산됩니다.

    TryGetGlyph(int, out Glyph)

    문자 코드에 해당하는 글리프를 시도하여 가져옵니다.

    Validate()

    폰트 상태를 검사하여 오류와 경고 목록을 반환합니다. 글리프/테이블 설정이 모두 완료된 후(상태 단위 불변식)에 호출해야 합니다. 값 단위(설정 시점) 검사는 이미 생성자/속성에서 fail-fast로 처리됩니다. 이 메서드는 파일을 수정하지 않으며, 검사만 수행합니다.

    ValidateOutline(List<ValidationResult>)

    윤곽 테이블(glyf/loca 또는 CFF)에 대한 추가 검사를 수행합니다. 기본 구현은 아무것도 하지 않으며, OTF(CFF)는 CFF 전용 검사를 오버라이드합니다.

    확장 메서드

    ConvertExtensions.ToNullable<T>(object)
    ConvertExtensions.To<T>(object, T)
    ConvertExtensions.TryConvert<T>(object, out T)
    PropertyExtensions.Get<TProperty>(object, ref TProperty, Func<TProperty>)
    PropertyExtensions.Set<TProperty>(object, ref TProperty, TProperty)
    GenericValueConverter.To<TSource, TTarget>(TSource)
    Copyright © 2024. Vagabond K. All Rights Reserved.