소개
이 랩에서는 Python 의 Matplotlib 라이브러리를 사용하여 글꼴 테이블이 서로 어떻게 관련되는지 보여주는 예제를 안내합니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
글꼴 로드
먼저, 글꼴 파일을 로드해야 합니다. 이 예제에서는 DejaVuSans.ttf 글꼴 파일을 사용합니다.
import os
import matplotlib
from matplotlib.ft2font import FT2Font
font = FT2Font(os.path.join(matplotlib.get_data_path(), 'fonts/ttf/DejaVuSans.ttf'))
문자 맵 설정
다음으로, 문자 맵을 표준 유니코드 문자 맵으로 설정합니다.
font.set_charmap(0)
문자 코드 및 글리프 가져오기
글꼴에서 문자 코드와 해당 글리프를 가져와 coded 및 glyphd 두 개의 딕셔너리에 저장합니다.
codes = font.get_charmap().items()
coded = {}
glyphd = {}
for ccode, glyphind in codes:
name = font.get_glyph_name(glyphind)
coded[name] = ccode
glyphd[name] = glyphind
글리프 로드
이제 글꼴에서 문자 'A' 글리프를 로드하고 glyph.bbox 속성을 사용하여 경계 상자 (bounding box) 를 출력합니다.
code = coded['A']
glyph = font.load_char(code)
print(glyph.bbox)
커닝 값 가져오기
font.get_kerning() 메서드를 사용하여 두 글리프 사이의 커닝 값 (kerning values) 을 가져올 수 있습니다. 이 예제에서는 'A'와 'V' 글리프 사이의 커닝 값과 'A'와 'T' 글리프 사이의 커닝 값을 가져옵니다.
## kerning values for 'AV'
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_DEFAULT))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNFITTED))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNSCALED))
## kerning value for 'AT'
print('AT', font.get_kerning(glyphd['A'], glyphd['T'], KERNING_UNSCALED))
요약
이 랩에서는 글꼴 파일을 로드하고, 문자 맵 (character map) 을 설정하고, 문자 코드와 글리프를 가져오고, 글리프를 로드하고, 글리프 간의 커닝 값 (kerning values) 을 얻는 방법을 배웠습니다. 이는 Python 프로젝트에서 글꼴 및 텍스트 작업을 원하는 모든 사람에게 유용한 기술입니다.