소개

TrueType 글꼴 (.ttf) 및 그 OpenType 상위 집합 (.otf)은 현대 운영 체제에서 주된 글꼴 형식입니다. 두 형식은 OpenType 사양에 기반한 동일한 바이너리 테이블 구조를 공유합니다. Python용 Aspose.Font FOSS은 TtfFont를 통해 이 구조를 노출하여 개별 OpenType 테이블, kern pair data, variable font axes, 그리고 glyph outlines에 직접 액세스할 수 있게 합니다.

TtfFont 클래스는 Font 기본 클래스를 TTF 전용 메서드인 get_blob, get_table_bytes, set_table_bytes, instantiate(가변 글꼴 축 잠금용)으로 확장합니다. TtfTableSet 속성(ttf_tables)은 가장 일반적인 OpenType 테이블에 대한 형식화된 접근을 제공하며, 해당 테이블은 head, hhea, maxp, os2, name, post입니다.

이 라이브러리는 PyPI에 aspose-font 이름으로 공개되었으며 MIT 라이선스로 배포됩니다. 필수 상업적 종속성이 없습니다.


핵심 기능

TTF 및 OTF 글꼴 로드

FontLoader.open를 사용하여 TrueType 또는 OpenType 글꼴 파일을 로드합니다:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open은 파일 헤더에서 글꼴 형식을 감지합니다. .ttf (TrueType)와 .otf (OpenType CFF) 파일이 모두 지원되며, 두 경우 모두 TtfFont 인스턴스를 반환합니다.


TtfTableSet을(를) 통해 OpenType 테이블에 접근

ttf_tables 속성은 일반적인 OpenType 테이블에 대한 형식화된 접근자를 가진 TtfTableSet을 반환합니다. 각 속성은 테이블 객체를 반환하거나 존재하지 않을 경우 None를 반환합니다:

TtfFont의 ttf_tables 속성은 TtfTableSet 인스턴스를 반환합니다. 사용 가능한 테이블 접근자:

  • head — HeadTable | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — PostTable | None

각 속성은 테이블 객체를 반환하며, 해당 테이블이 폰트 파일에 존재하지 않을 경우 None을 반환합니다. 특정 테이블을 읽기 전에 확인하려면 TtfTableSet 속성에 접근하십시오. 명명된 접근자에 포함되지 않은 테이블의 경우, TtfTableSet.get_raw(tag)를 사용하여 네 글자 OpenType 태그로 원시 바이트를 가져올 수 있습니다.


원시 테이블 바이트 읽기

get_table_bytes(tag)은(는) 모든 OpenType 테이블에 대한 원시 바이트를 반환합니다. 테이블이 없을 때 None를 반환하는 None-안전 변형을 사용하려면 get_blob(tag)을 사용하십시오:

TtfFont은(는) 원시 테이블 접근을 위한 두 가지 메서드를 제공합니다:

  • get_table_bytes(tag) -> bytes — 지정된 테이블에 대한 원시 바이트를 반환합니다 (없을 경우 예외 발생)
  • get_blob(tag) -> bytes | None — 테이블이 없을 경우 None을 반환합니다 (안전 변형)

두 방법 모두 OpenType 테이블 태그 네 글자를 허용합니다. 예: "cmap", "GDEF", 또는 "GPOS". 테이블이 선택 사항일 경우 get_blob을 사용하여 처리하기 전에 None를 확인할 수 있습니다.


커닝 페어

get_kern_pairs()은(는) 폰트에 인코딩된 모든 kern pairs를 반환합니다. 각 KernPair은 left (GlyphId), right (GlyphId), 및 value (폰트 단위의 정수)를 가집니다:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

글꼴 메트릭

Standard metrics는 metrics 속성을 통해 접근할 수 있습니다:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

가변 글꼴 지원

Variable fonts의 경우, TtfFont은 is_variable, variable_axes, 및 named_instances을 노출합니다. 특정 축을 네 글자 태그로 가져오려면 get_axis(tag)을 사용하십시오:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

TtfFont의 get_axis(tag) 메서드는 네 글자 태그로 VariableAxis를 검색합니다(예: weight는 "wght", width는 "wdth"). 축이 폰트의 fvar 테이블에 없으면 None를 반환합니다.


글꼴 변환

to_bytes(font_type)은(는) 글꼴을 다른 형식으로 변환합니다. 대상은 FontType 열거형을 사용하여 지정하십시오:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

빠른 시작

라이브러리를 설치합니다:

.venv/bin/pip install aspose-font

TTF 글꼴을 로드하고 검사합니다:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

지원되는 형식

형식확장자읽기쓰기
TTF.ttf✓—
OTF.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

모든 형식은 FontLoader.open을 통해 로드됩니다. TTF/OTF 글꼴은 TtfFont 인스턴스를 반환합니다.


오픈 소스 및 라이선싱

Aspose.Font FOSS for Python은(는) MIT 라이선스로 출시되었습니다. 개인, 상업 및 오픈소스 프로젝트에서 비용 없이 사용할 수 있습니다. 소스 코드는 GitHub에서 확인할 수 있으며 패키지는 PyPI를 통해 aspose-font로 배포됩니다.


시작하기

관련 리소스