소개

Aspose.Font FOSS for Python은 일반적인 폰트 관리 작업마다 일관된 클래스 집합을 제공합니다: 다양한 형식의 폰트 파일 로드, 메타데이터 및 글리프 데이터 읽기, 형식 간 변환, 웹 배포를 위한 서브셋팅, 최적 파일 크기를 위한 바이너리 테이블 정리 등. 이 가이드는 라이브러리의 검증된 API에서 가져온 실용적인 코드 예제를 통해 각 핵심 기능을 살펴봅니다.

패키지 (aspose-font)는 MIT 라이선스를 따르며, Python 3.10 이상이 필요하고 OS 수준의 폰트 라이브러리 의존성이 없습니다. pip install aspose-font>=1.0.0으로 설치하세요.


핵심 기능

FontLoader을(를) 사용한 폰트 로드

FontLoader은 모든 폰트 로드 작업을 위한 단일 진입점입니다. 정적 open() 메서드는 파일 경로(str 또는 Path)를 받아 형식을 자동 감지합니다. load() 메서드는 인메모리 작업을 위해 원시 바이트를 받아들입니다. 두 메서드 모두 즉시 검토할 수 있는 Font 타입 객체를 반환합니다.

from aspose_font.loader import FontLoader

# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")

# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
    font_bytes = f.read()
font = FontLoader.load(font_bytes)

폰트 기본 클래스를 통한 폰트 메타데이터 읽기

로드되면, Font 기본 클래스는 바이너리 글꼴 테이블을 파싱할 필요 없이 표준 메타데이터 속성을 제공합니다. font_name, font_family, font_style, 및 num_glyphs 속성은 가장 일반적인 메타데이터 요구를 충족합니다.

from aspose_font.loader import FontLoader

font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name:   {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style:  {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")

글리프 인코딩 및 접근

FontEncoding는 Unicode 코드 포인트를 글리프 ID에 매핑합니다. 단일 코드 포인트의 경우 unicode_to_gid()을 사용하고, 글꼴의 전체 커버리지를 열거하려면 get_all_codepoints()를 사용하십시오. 그런 다음 GlyphAccessor은 ID를 통해 get_glyph_by_id()로, Unicode를 통해 get_glyph_by_unicode()로, 텍스트 문자열에 대해서는 get_glyphs_for_text()으로 글리프 객체를 가져옵니다.

from aspose_font.loader import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41)  # 'A'
print(f"Glyph ID for 'A': {glyph_id}")

# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

# Inspect path commands
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

FontConverter를 이용한 글꼴 변환

FontConverter.convert()는 로드된 글꼴을 지원되는 형식 간에 변환합니다. 소스 글꼴과 대상 형식 식별자를 전달하면 대상 형식의 새 글꼴 객체를 얻을 수 있습니다. 이 메서드는 CFF, TTF, WOFF, WOFF2, EOT 및 Type 1을 소스와 대상 모두에서 처리합니다.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter

source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")

FontCleaner를 이용한 웹 최적화

FontCleaner.clean_for_web()는 웹 글꼴 전달에 불필요한 바이너리 테이블—특히 DSIG, FFTM 및 meta—을 제거하고, Mac 플랫폼(platform_id=1) 이름 레코드를 name 테이블에서 삭제합니다. 결과는 아웃라인이나 메트릭을 건드리지 않으면서 네트워크 페이로드를 줄이는 더 가벼운 바이너리입니다. 필요에 따라 특정 테이블 유형을 유지하도록 선택적 키워드 인수를 사용할 수 있습니다.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

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

# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)

# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
    font,
    drop_metadata_tables=False,
    drop_legacy_tables=True,
    drop_mac_names=True,
)

글리프 경로 검사

모든 Glyph 객체는 그 윤곽을 GlyphPath 형태로 노출하며, 그 commands 시퀀스에는 MoveTo, LineTo, QuadraticTo, CurveTo, ClosePath의 타입화된 인스턴스가 포함됩니다. 각 명령은 관련 좌표 속성을 포함합니다 — 예를 들어, CurveTo은 x1, y1, x2, y2, x, y를 가지고 있어, 렌더링, SVG 생성 또는 충돌 기하학을 위한 원시 Bézier 데이터를 추출할 수 있게 합니다.

from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo

font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")

빠른 시작

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")

지원되는 포맷

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

오픈 소스 및 라이선스

Aspose.Font FOSS for Python는 MIT 라이선스를 사용합니다. 소스는 GitHub에 있으며, aspose-font-foss/Aspose.Font-FOSS-for-Python에서 확인할 수 있고, 패키지는 PyPI에 aspose-font로 제공됩니다.


시작하기

관련 리소스