← 목록
기타 2026-06-27 2KB 읽기 2분

화면.한선 — 한선씨 프론트엔드 DSL (한 소스, 두 출력)

개요

HTML/CSS/JS 없이 한선씨로 프론트엔드. 한 소스(.한선) → 두 출력: ①크라우니 네이티브 픽셀(cmd→PNG) ②일반 브라우저 인터랙티브 HTML. 컴포넌트 = 6개 듀얼-에미트 프리미티브(RECT/ROUND/SHADOW/TEXT/INIT/END) + 분리 히트PSV.

무엇을 했나

  • /Users/ef/CrownyBrowser/src/화면.한선 — DSL 라이브러리. 환경변수 CROWNY_OUT(cmd|html)으로
분기. API: 화면시작/화면끝/배경/박스/둥근박스/그림자/제목/문단/버튼/입력칸/목록항목/목록/이미지. 헬퍼 _색HTML/_esc/_발행/_히트등록/글자폭추정(코드값>12288=CJK 70·ASCII 40·공백 34 ×크기/60).
  • /Users/ef/CrownyBrowser/src/샘플화면.한선 — 데모(제목 크라우니 + 골드 부제 + 입력칸 + 코랄 버튼 좋아요 + 목록 3).

두 출력 증명 (동일 toau에서)

  • cmd: 17줄 INIT/RECT/TEXT/END → 페이지배선.py(GLYPH 35) → 페이지렌더러 → PPM → PNG(글자 전부 렌더).
  • html: 22줄 유효 HTML(doctype/canvas/button onclick crownyAct/input/10 div), 파서 19태그 통과.
  • 히트맵 /tmp/히트맵.psv 5행(입력1/버튼1/목록3) — 본문 cmd와 분리 사이드카.

실행

cd /Users/ef/CrownyOS/crownyc CROWNY_STD=libs:/Users/ef/CrownyBrowser/src ./hanseonc_high .../샘플화면.한선 > /tmp/s.toau CROWNY_OUT=cmd ./crownyc run /tmp/s.toau > /tmp/page.cmd CW=800 CH=600 python3 .../m3-배선/페이지배선.py /tmp/page.cmd PLAN_FILE=/tmp/page_plan.psv CROWNY_FB_PPM=/tmp/s.ppm ./crownyc run /tmp/페이지렌더러.toau sips -s format png /tmp/s.ppm --out /tmp/s.png CROWNY_OUT=html ./crownyc run /tmp/s.toau > /tmp/s.html

한계 / 잔여 이슈

  • 페이지배선.py가 RECT+TEXT만 소비 → cmd 모드 둥근박스=RECT 폴백, 그림자=픽셀 생략(HTML만 radius/shadow).
  • IMG verb 미지원 → cmd 이미지=회색 플레이스홀더 RECT, HTML만 <img>.
  • TEXT 글자는 CIF 가용 글리프(한글 33+ASCII)만. 미존재 글자는 픽셀에서 사라짐.
  • 픽셀 텍스트 색: 페이지배선이 근흑(<80,80,80)이면 CIF 원색, 아니면 r g b 오버라이드.