diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/design/015-boundary-meaning.md | 14 | ||||
| -rw-r--r-- | docs/research/108-one-value-every-path.md | 23 |
2 files changed, 34 insertions, 3 deletions
diff --git a/docs/design/015-boundary-meaning.md b/docs/design/015-boundary-meaning.md index bdc68df..08a4636 100644 --- a/docs/design/015-boundary-meaning.md +++ b/docs/design/015-boundary-meaning.md @@ -67,4 +67,16 @@ 전달이 한 번씩, 순서대로 적용되는 것은 링크의 검사들(`server_links_udp_lossy`, `server_links_moved`, `server_upgrade`)과 [012](012-link-protocol.md)이 지킨다. 필드를 이름으로 받는 규칙은 `server_fields`가 지킨다. -화면(Vega가 보기를 그리는 것)은 이 문서 밖이다. 다음 단계다. +## 화면 + +보기를 그리는 것은 Vega다. 규칙은 Vega의 `docs/design/001-first-component.md`("값이 보이는 방식")에 있고, 요약하면 +이렇다. + +- 값은 제 자리 안에서 제 글자로 보인다. +- 화면에 작용할 글자만 그림으로 보인다. 제어 문자, DEL, C1 제어, 줄과 문단의 구분자가 그렇고, 터미널에서는 방향 제어도 + 그렇다. +- 문장(NUI)에서는 그것을 공백으로 말하거나 말하지 않는다. +- 웹의 JSON은 값을 그대로 싣는다. +- 값의 어떤 바이트도 터미널에 제어로 닿지 않는다. + +Vega의 `screen_meaning`과 `browser` 검사가 지킨다. diff --git a/docs/research/108-one-value-every-path.md b/docs/research/108-one-value-every-path.md index 387ef24..7a241fe 100644 --- a/docs/research/108-one-value-every-path.md +++ b/docs/research/108-one-value-every-path.md @@ -75,8 +75,27 @@ - 착수 기준은 −0을 내다보지 못했다(수를 비트까지 비교한다고만 적었다). 0의 부호는 aup에서 뜻이 없으므로(가르는 연산이 없고, 글자와 `distinct`가 이미 같게 본다) 바꾸지 않고 계약으로 적었다(015). 검사는 0끼리를 같게 본다. +## 화면 + +범위 밖으로 남겼던 화면(Vega가 보기를 그리는 경계)도 같은 방식으로 이어서 봤다. 무엇이든 받는 목록 하나에 위험한 +text를 넣고 표면마다 출력을 떴다. + +- **CLI와 TUI는 이미 막고 있었다.** ESC, C0, DEL, C1이 그림으로 나왔다. 그러나 두 가지가 그대로 나갔다. + - 줄 구분자(U+2028)가 그대로 나갔다. CLI의 코드는 "값이 줄을 끊지 않게"라고 적었는데, 파이썬의 `splitlines()` 같은 + 읽는 쪽에는 U+2028이 줄바꿈이다. + - 방향 오버라이드(U+202E)가 그대로 나갔다. 양방향을 처리하는 터미널은 같은 줄의 나머지를 뒤집는다. 표의 옆 칸, 곧 다른 + 값까지 뒤집힌다. +- **문장(NUI)은 0x20 미만만 공백으로 바꿨다.** C1 제어(일부 터미널에 U+009B는 CSI다), DEL, 줄 구분자, 방향 제어를 + 그대로 냈다. +- **웹 페이지는 제어 문자를 그대로 보였고,** 레이블의 오버라이드가 같은 항목의 배지까지 뒤집을 수 있었다. +- 메신저처럼 다른 노드가 보낸 글을 보이는 앱이라면, 보낸 쪽이 받는 쪽의 화면을 이렇게 속일 수 있다. + +고쳤다(Vega `611b54f`). 모든 표면이 같은 그림을 쓰고(`vega_visible`), 터미널의 칸은 방향 제어도 �로 보인다 +(`vega_cell`). 문장은 공백으로 말하거나 말하지 않는다. 웹 페이지는 그림으로 보이고 값마다 격리한다. `/screen`의 JSON은 +값을 그대로 싣는다. Vega의 `screen_meaning`이 CLI, TUI, 문장, JSON을 값 16개로 보고, `browser`가 페이지를 본다. + ## 다음 -- **화면.** Vega가 보기를 그리는 경계다. 터미널과 CLI와 문장이 같은 값을 어떻게 보이는지(제어 문자, U+2028, 넓은 글자를 - 그대로 보일지, 이스케이프할지)를 정하고 같은 방식으로 고정한다. - bytes 필드는 목록의 레코드에 담기지 않으므로 여기서 보지 않았다. 문서 모델의 검사(`server_parity`)가 본다. +- 넓은 글자와 ZWJ 이모지 묶음의 칸 너비는 근사다(Vega 001: grapheme 단위 자르기가 아직 없다). 뜻이 아니라 모양의 일이라 + 여기서 다루지 않았다. |
