diff options
| author | eunhhu <[email protected]> | 2026-09-28 14:53:40 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-28 14:53:40 +0100 |
| commit | 9bb85cffb10e0d4bc007406d1487a6dede3db975 (patch) | |
| tree | ed8058b7ede0702391fafec91e4985339b30e4b4 /docs/design | |
| parent | 60a3c0232bbca8d5d8c1107ab8197d272212ef42 (diff) | |
| download | vega-9bb85cffb10e0d4bc007406d1487a6dede3db975.tar.gz vega-9bb85cffb10e0d4bc007406d1487a6dede3db975.zip | |
Shape Khmer and Myanmar as HarfBuzz does
Two more shapers on the syllabic groundwork, from HarfBuzz 10.2's
source. Khmer reorders before any lookup: a coeng and Ro go before the
base, masked for pref, what follows them for cfar, a left matra goes
first; split matras decompose with U+17C1. Myanmar finds the base after
a kinzi, gives each glyph its place around it and sorts by place, and
zeroes mark advances before GPOS rather than after.
Noto Sans Khmer and Noto Sans Myanmar shape as HarfBuzz does at 20,000
runs a plan, and so do Unifont's Khmer and Myanmar (no GSUB).
Diffstat (limited to 'docs/design')
| -rw-r--r-- | docs/design/004-text.md | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/docs/design/004-text.md b/docs/design/004-text.md index 065c4db..a681589 100644 --- a/docs/design/004-text.md +++ b/docs/design/004-text.md @@ -165,11 +165,22 @@ Malayalam은 psts와 rlig가 한 조회를 나눠 쓰는데, 안정 정렬로는 - 새 규격 글꼴(dev2 등): 인터넷에서 받은 Noto Sans 아홉 벌(데바나가리부터 말라얄람까지), 계획마다 5천 실행, 다른 실행 0. - 속도: HarfBuzz의 1.25–1.3배 시간(Noto Sans Devanagari 문자당 1,614 대 1,235 ns, Tamil 674 대 526 ns). +### 크메르와 미얀마 + +같은 틀에 두 셰이퍼를 더 올렸다(HarfBuzz 10.2의 `hb-ot-shaper-khmer.cc`, `-myanmar.cc`). 음절 기계는 앞의 생성기가 이미 +만들고 검증한 것이고, 범주는 같은 인도계 표에서 읽는다. 크메르는 음절을 찾은 뒤 조회 전에 재배치한다. coeng과 Ro를 기저 +앞으로 옮겨 pref로 표시하고 그 뒤를 cfar로 표시하며, 왼쪽 모음 부호를 맨 앞으로 옮긴다. 쪼개진 모음(U+17BE 등)은 유니코드에 +분해가 없어도 U+17C1과 함께 쪼갠다. 미얀마는 kinzi(Ra, asat, virama) 뒤의 기저를 찾고, 글리프마다 기저 둘레의 자리를 매겨 +안정 정렬한다. 미얀마는 부호의 폭을 GPOS 앞에서 0으로 만든다(다른 셰이퍼는 뒤에서). + +결과: Noto Sans Khmer와 Noto Sans Myanmar(인터넷에서 받은 OpenType 글꼴), 계획마다 2만 실행, 다른 실행 0. Unifont(GSUB +없음)의 두 문자도 0. 처음 돌린 검사에서 바로 맞았다. 음절 기계와 표를 HarfBuzz 원본에서 그대로 가져온 덕이다. + 받지 않는 것(빌드 도구가 이유를 말하고 거부한다): - `kern` 표의 상태 기계(Apple 형식 1), 등급 형식(2, 3), 교차 방향 커닝. 설치된 글꼴의 `kern` 표는 모두 짝 형식(0)이다. - AAT 표(morx, kerx, trak), 늘이기(stch), 아랍 형태가 없어 HarfBuzz가 표시형으로 대체 셰이핑을 하는 글꼴(Unifont의 아랍). -- 기본·아랍·히브리·한글·인도계 셰이퍼가 아닌 문자 체계: 태국·라오, 크메르, 미얀마, USE 문자 체계들(싱할라, 티베트, 자바 +- 기본·아랍·히브리·한글·인도계·크메르·미얀마 셰이퍼가 아닌 문자 체계: 태국·라오, USE 문자 체계들(싱할라, 티베트, 자바 등), 시리아. - 이체 선택자(cmap 형식 14)는 싣지 않는다. 선택자는 숨기고 앞 글자는 기본 글리프로 둔다. |
