aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-30 13:19:01 +0100
committereunhhu <[email protected]>2026-09-30 13:19:01 +0100
commit8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1 (patch)
tree10b2265e2eed861853258e58893548b77af9c961
parent611b54fefc8a02f67cd59041c1795a083ac0bb4c (diff)
downloadvega-8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1.tar.gz
vega-8fc6f35b30642f3a8ebbd7f5f47b70195c8ffea1.zip
Say how a value is shown, and what a screen never lets it do
-rw-r--r--docs/design/001-first-component.md21
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)