Python에서 폰트 테이블 작업하기

Python에서 폰트 테이블 작업하기

이 가이드는 TtfFont를 사용하여 Aspose.Font FOSS에서 Python용으로 명명된 TTF 테이블을 읽고, 원시 바이너리 테이블 바이트를 가져오며, 수정된 테이블 데이터를 쓰는 방법을 보여줍니다. TrueType 폰트는 4자 태그로 식별되는 바이너리 테이블에 모든 데이터를 저장합니다. Aspose.Font FOSS는 명명된 테이블 접근을 위해 TtfTableSet을, 원시 바이너리 접근을 위해 TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data)을 제공합니다.

단계별 가이드

1단계: 패키지 설치

아래 명령을 사용하여 Aspose.Font FOSS 패키지를 설치합니다:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

2단계: 필요한 클래스 가져오기

폰트 파일을 로드하고 해당 테이블 집합에 접근하려면 FontLoader와 TtfFont을 가져옵니다:

from aspose_font import FontLoader
from aspose_font import TtfFont

3단계: 명명된 테이블에 접근

FontLoader.open()를 사용하여 TTF 파일을 로드하고 ttf_tables 속성을 통해 명명된 테이블에 접근합니다:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)

4단계: 원시 테이블 바이트 읽기

특정 테이블의 4자리 태그를 get_table_bytes()에 전달하여 원시 바이너리 데이터를 읽습니다:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

5단계: 수정된 테이블 바이트 쓰기

set_table_bytes()를 사용하여 태그와 바이트 페이로드를 지정해 수정된 바이너리 데이터를 명명된 테이블에 다시 씁니다:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

일반적인 문제 및 해결 방법

AttributeError: Font has no attribute ttf_tables — ttf_tables 가 켜져 있습니다 TtfFont, 기본이 아닙니다 Font 클래스. 사용 ttf_font: TtfFont = FontLoader.open(...) 타입이 지정된 참조를 가져오려면.

get_table_bytes 빈 바이트를 반환합니다 — 태그는 정확히 4자여야 합니다(필요하면 공백으로 채우세요, 예: "kern" not "KRN").

자주 묻는 질문

TtfTableSet에서 노출되는 명명된 테이블은 무엇인가요?

head, hhea, maxp, os2, name, post, cmap, loca, hmtx, 및 kern.

새 테이블을 폰트에 추가할 수 있나요?

예. 유효한 4바이트 태그와 바이트 데이터를 TtfFont.set_table_bytes(tag, data)에 전달하세요.

참조

 한국어