diff options
| author | eunhhu <[email protected]> | 2026-09-30 13:19:01 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-30 13:19:01 +0100 |
| commit | 8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1 (patch) | |
| tree | 10b2265e2eed861853258e58893548b77af9c961 /docs | |
| parent | 611b54fefc8a02f67cd59041c1795a083ac0bb4c (diff) | |
| download | vega-8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1.tar.gz vega-8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1.zip | |
Say how a value is shown, and what a screen never lets it do
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/design/001-first-component.md | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/docs/design/001-first-component.md b/docs/design/001-first-component.md index 325093a..d3ba7e6 100644 --- a/docs/design/001-first-component.md +++ b/docs/design/001-first-component.md @@ -56,8 +56,25 @@ TUI 입력: 앱에 text 입력이 있으면 처음에는 글자가 입력 줄로 Tab이 키 모드로 바꾸면 글자·숫자·Space가 `KeyA`·`Digit0`·`Space` 입력이 된다(앱이 Tab을 쓰면 Tab은 앱의 것). 화살표·Delete·Home 같은 키는 두 모드 모두 앱으로 간다. Ctrl-C나 Ctrl-Q로 끝내고 터미널을 되돌린다. -표시 폭은 Vega가 맡는다. 한글·CJK·그림 이모지는 두 칸, 결합 문자·변이 선택자·ZWJ는 0칸, 제어 문자는 -제어 그림(U+2400대)으로 보인다. grapheme 단위 자르기는 아직 없어 ZWJ 이모지 묶음은 근사다. +표시 폭은 Vega가 맡는다. 한글·CJK·그림 이모지는 두 칸, 결합 문자·변이 선택자·ZWJ는 0칸이다. grapheme 단위 +자르기는 아직 없어 ZWJ 이모지 묶음은 근사다. + +**값이 보이는 방식.** 값은 제 자리 안에서 제 글자로 보인다. 화면에 작용할 글자만 예외다(Pure +`docs/design/015-boundary-meaning.md`가 정한 값의 뜻의 화면 쪽이다). + +- 제어 문자(C0)와 DEL은 제어 그림(␀…␟, ␡)으로, C1 제어는 �로, 줄과 문단의 구분자(U+2028, U+2029)는 로 보인다 + (`vega_visible`). CLI, TUI, 픽셀, 웹 페이지가 모두 같다. 값은 제 줄을 끊지 못한다. +- 터미널의 칸(TUI, CLI)에서는 뒤따르는 글줄을 뒤집을 제어(방향 임베딩·오버라이드·격리, U+202A–202E, U+2066–2069)도 + �로 보인다(`vega_cell`). 터미널은 그 뒤의 칸까지 제 방식으로 다시 늘어놓기 때문이다. 픽셀은 Vega가 값의 자리 안에서 + 양방향을 처리하고, 웹 페이지는 값마다 격리한다(`unicode-bidi: isolate`). +- 문장(NUI)은 작용할 글자를 공백으로 말하고, 방향 제어는 말하지 않는다. +- 웹의 `/screen` JSON은 값을 그대로 싣는다(API는 잃지 않는다). 페이지가 위의 규칙대로 보인다. +- 그래서 값의 어떤 바이트도 터미널에 제어로 닿지 않는다. 다른 노드가 보낸 글(메신저의 줄)로도 받는 쪽의 화면을 + 조작하지 못한다. +- 픽셀에서 방향 제어가 든 값은 칸 너비가 한 칸 넓게 잡힌다(칸 너비는 `vega_cell`로 센다). 드물고, 겉모양만의 일이다. + +`tests/check.py`의 `screen_meaning`이 CLI, TUI, 문장, 웹 JSON을 이 규칙으로 보고, 어느 표면에도 작용할 글자가 날로 +나가지 않는지 본다. `browser`가 페이지의 그림과 격리를 본다. ## 웹 (GUI) |
