aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/design/004-text.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/design/004-text.md b/docs/design/004-text.md
index 502eeb2..8b0758c 100644
--- a/docs/design/004-text.md
+++ b/docs/design/004-text.md
@@ -295,6 +295,23 @@ Vega의 셰이핑은 HarfBuzz와 경우마다 같아야 하고, 유니코드 성
옮겨야 한다. 도구가 줄여 주는 것은 무엇을 옮길지 찾는 일이다. AAT와 사용자 기능, 가변 글꼴은 아직 받지 않는다(시험 모음에서
빼고 센다).
+## 동결: HarfBuzz 10.2와 유니코드 16
+
+2026-09-28 결정. 글자 하위 시스템은 HarfBuzz 10.2.0과 유니코드 16.0.0을 기준으로 멈춘다.
+
+- 도구로 HarfBuzz 14.5와 유니코드 18을 받아 보았다. 생성기 둘이 깨졌다. 줄 바꿈에 새 클래스(HH)가 생겼고, HarfBuzz의 표가
+ packtab 형식으로 바뀌었다. 10.2 이후 셰이핑 출력을 바꾼 변경도 열 가지가 넘었다. 음절 단위 조회의 문맥을 음절 안으로 막은
+ 것, 옛 `kern` 표를 몇 셰이퍼로 좁힌 것, 교차 방향 부호 배치의 순서, 유니코드 17·18 따위다.
+- 따라가는 비용에는 끝이 없다. 판마다 남의 구현을 그 버릇까지 복제하는 일이고, 추상화를 압축하는 일이 아니다. Pure가 나아갈
+ 곳(코어와 외부 피드백)에 쓸 시간을 먹는다.
+- 그래서 HarfBuzz의 버그와 버릇을 맞추는 일은 그만둔다. AAT, Zawgyi, 글리프를 나눠 쓰는 아랍 대체 셰이핑은 받지 않는 채로
+ 둔다(시험 모음의 known에 남는다).
+- 올리는 것은 꼭 필요할 때뿐이다. 새 문자 체계가 필요하거나 보안 문제가 있을 때 [text/upstream.py](../../text/upstream.py)로
+ 한다.
+- 나중 설계 과제: 글꼴의 행동을 빌드할 때 Vega 자신의 형식으로 끝까지 컴파일하는 것. 지금은 계획만 컴파일하고, 실행 중에는
+ HarfBuzz의 절차를 옮긴 엔진이 OpenType 표를 읽는다. 행동 전체를 자체 형식으로 내리면 HarfBuzz는 빌드 때 대 보는 참조로만
+ 남는다. 실행 중의 셰이핑이 HarfBuzz를 따라갈 까닭도 사라진다.
+
## 비례폭 글줄
[text/layout.c](../../text/layout.c)는 검증한 부품을 UAX #9 3.4절과 UAX #14가 말하는 순서로 잇는다.