aboutsummaryrefslogtreecommitdiffstats
path: root/docs/design
diff options
context:
space:
mode:
Diffstat (limited to 'docs/design')
-rw-r--r--docs/design/004-text.md13
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)는 싣지 않는다. 선택자는 숨기고 앞 글자는 기본 글리프로 둔다.