diff options
Diffstat (limited to 'docs/design')
| -rw-r--r-- | docs/design/004-text.md | 17 |
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가 말하는 순서로 잇는다. |
