Harfbuzz 쉐이핑 엔진에 대한 간소화 된 Cython 바인딩.
import sys
import uharfbuzz as hb
fontfile = sys . argv [ 1 ]
text = sys . argv [ 2 ]
blob = hb . Blob . from_file_path ( fontfile )
face = hb . Face ( blob )
font = hb . Font ( face )
buf = hb . Buffer ()
buf . add_str ( text )
buf . guess_segment_properties ()
features = { "kern" : True , "liga" : True }
hb . shape ( font , buf , features )
infos = buf . glyph_infos
positions = buf . glyph_positions
for info , pos in zip ( infos , positions ):
gid = info . codepoint
glyph_name = font . glyph_to_string ( gid )
cluster = info . cluster
x_advance = pos . x_advance
x_offset = pos . x_offset
y_offset = pos . y_offset
print ( f" { glyph_name } gid { gid } = { cluster } @ { x_advance } , { y_offset } + { x_advance } " )uharfbuzz 패키지를 구축 할 때는 최소한의 Harfbuzz 소스가 자동으로 통합되어 기본 Harfbuzz 라이브러리를 설치할 필요가 없습니다.
그러나 시스템이 제공 한 harfbuzz와 함께 uharfbuzz를 사용하려면 (예 : 사용자 정의 구성이있는 소스에서 구축 한 경우) USE_SYSTEM_LIBS=1 환경 변수를 설정할 수 있습니다 (아래 예제 참조).
USE_SYSTEM_LIBS=1 pip install uharfbuzz --no-binary :uharfbuzz: Harfbuzz 설치는 pkg-config 사용하여 발견되므로 시스템에 Harfbuzz의 .pc 파일이 있어야합니다. 소스에서 구축 한 경우 Meson이 자동으로 설치합니다. 그렇지 않으면 Fedora 유래 배포판에 harfbuzz-devel 같은 Harfbuzz 개발 패키지를 설치할 수 있습니다.
참고 : 실험적인 API 지원을 활성화하여 Harfbuzz를 구축 해야합니다 .
git tag -a 사용하여 선호하는 경우 GPG에 서명 한 주석이 달린 태그를 위해 새 주석이 매겨진 태그 또는 git tag -s 만듭니다.
Semantic Versionsing과 같이 주요 'V'와 3 개의 major.minor.patch 숫자가있는 새 태그의 이름을 지정하십시오. 예제는 기존 태그를보십시오.
태그 메시지에는 이전 태그 이후 변경 사항을 설명하는 짧은 릴리스 노트를 작성합니다. 제목 줄은 릴리스 이름이며 메시지 본문은 릴리스 노트가됩니다.
마지막으로 태그를 원격 저장소로 푸시합니다 (예 : 업스트림이 원점이라고 가정) :
$ git push origin v0.4.3
이렇게하면 모든 테스트가 성공적으로 전달되면 CI가 분배 패키지를 작성하고 파이썬 패키지 인덱스에 자동으로 업로드 할 수 있습니다. CI는 또한 새로운 GitHub 릴리스를 자동으로 생성하고 릴리스 노트에 주석이 붙은 GIT 태그의 내용을 사용합니다.