Astro 파일 기반 라우팅. 각 .astro 파일이 하나의 페이지 경로에 대응.
| 파일 | 경로 | 설명 |
|---|---|---|
index.astro | / | 홈. 최신 포스트 SITE.postPerIndex개 표시 |
about.md | /about | 소개 페이지 (마크다운) |
shelf.astro | /shelf | 서가 — 읽은 책/본 영화 목록 (data/shelf.ts) |
atlas.astro | /atlas | 세계지도 — 방문 장소 (data/bucket-list.ts) |
komake.astro | /komake | 高麗氏 60대 당주와 방계의 독립 전자 가계도 |
search.astro | /search | Pagefind 검색 (빌드 후에만 동작) |
404.astro | /404 | 404 페이지 |
og.png.ts | /og.png | 동적 OG 이미지 엔드포인트 |
rss.xml.ts | /rss.xml | RSS 피드 |
robots.txt.ts | /robots.txt | robots.txt |
| 디렉토리 | 용도 |
|---|---|
posts/ | 포스트 상세 + 페이지네이션 |
tags/ | 태그별 포스트 목록 |
archives/ | 아카이브 (SITE.showArchives로 토글) |
khitan/)모든 거란어 페이지는 /khitan/ 아래로 통합 (구 /kss, /kssIME는 astro.config.ts의 redirects로 301).
| 파일 | 경로 | 설명 |
|---|---|---|
khitan/index.astro | /khitan | 거란어 허브 (하위 페이지 목록) |
khitan/kss.astro | /khitan/kss | 거란소자 자소표 |
khitan/kss/[ids].astro | /khitan/kss/244-80-151 | 거란소자 글자 페이지 (글로싱·용례) |
khitan/ime.astro | /khitan/ime | 거란소자 입력기 (독립 앱) |
khitan/kls/index.astro | /khitan/kls | 거란대자 글리프 일람 (색인 역구축) |
khitan/kls/[code].astro | /khitan/kls/211 | 거란대자 글리프 페이지 |
khitan/corpus.astro | /khitan/corpus | 코퍼스 자료 일람표 |
khitan/corpus/[slug].astro | /khitan/corpus/kls-yelvqi | 자료별 코퍼스 (원문/간이/정밀 3모드) |
khitan/resources.astro | /khitan/resources | 자료 종합 목록 (블로그 포스트 id 2026/4 렌더) |
dev 전용 편집 API: api/khitan/glossary.ts, api/khitan/kls.ts (prod에선 403).
lab/, dev 전용)블로그 홈을 프로젝트 포트폴리오로 바꾸기 위한 시안. ① 板本은 2026-09-29 홈 index.astro로 옮겨 공개했다(LabShell의 public prop으로 검색·OG 메타, 정적 prerender). ②·③은 참고용으로 보존. /lab은 src/utils/devOnlyRoutes.ts에 등록돼 운영에선 404이며, 각 페이지는 prerender = false. 헤더 없는 LabShell.astro 레이아웃을 쓴다.
| 파일 | 경로 | 설명 |
|---|---|---|
lab/index.astro | /lab | 시안 세 벌 입구 |
index.astro | / | ① 板本 — 목판 한 장. 첫 면은 部·類만, 누르면 판심 너머로 하위가 펼쳐짐 |
lab/cheonsang.astro | /lab/cheonsang | ② 分野 — 천상열차분야지도식 성도. 별 하나 = 데이터 항목 하나, 캔버스 |
lab/ilja.astro | /lab/ilja | ③ 一字 — ⿰字⿱史藝로 조립한 가상 글자. 부건을 누르면 줌 인 |
板本 동작:
.pb-block)이다. WebGL 3D는 쓰지 않는다.
.pb-hit)이 받는다. 올라가면 판이 살짝 돌아 앞면을 엿보이지만(is-peek), 커서 아래 판정은 그대로다.localStorage pb-seen)는 처음부터 판면이 열려 있다..pb-shade 캔버스, 45°·5px)은 판의 실제 회전각을 읽어 그 면이 정면에서 돌아간 만큼만 보인다(판면 θ/55°, 옆면 (90°−θ)/22°). 어느 면이든 정면을 똑바로 볼 때는 0이다. 판면은 모서리에서 멀수록, 옆면은 모서리 쪽에만 점이 굵다. 회전각은 판이 도는 동안(transitionrun~transitionend)에만 매 프레임 읽는다.is-solid). 다 돌면(transitionend → is-settled) 물 캔버스가 반전 영역을 넘겨받는다.Esc를 누르면 한 단계 접힌다.PREFACE)이다. 세반시옷 = ㅿ(半齒, 韻書의 日母) 셋이라 三日母字다. 서문에는 이름·내력·체재·목적만 적고 개별 주제는 언급하지 않는다. 날짜는 음력으로 적는다(開設 丙午正月, 撰 丙午仲秋). 한 덩이 글이 세로쓰기 행을 따라 흐르고, 행 폭은 계선 간격과 같다. 목록은 제목 「部類總目」 아래 部·類를 판심 너머 왼쪽 반엽에 판심 쪽부터 싣는다. 두 제목은 두 글자 들여쓰고 본문은 頂格이다. 항목을 누르면 서문은 밀려나 사라지고(is-reading), 오른쪽 반엽에 고른 갈래, 왼쪽에 하위가 놓인다..pb-w)는 띄어쓰기 없이 두 줄로 흘러내린다. 두 줄 폭 = 큰 글자 한 자 폭이다(0.45em × 2). 줄은 마크업에서 글자 수의 절반으로 미리 가른다(warichuLines, 오른쪽 줄이 먼저·홀수면 한 자 길게). 대체 글꼴 글자가 섞여 세로 폭이 달라져도 세 줄이 되지 않는다.projects.ts의 한문 note, 데이터에서 센 규모, sources 경로의 마지막 git 커밋 달(간지, 예: 丙午九月補)이다. 部는 「凡N類N種 內未刊 收字」를, 類는 하위 항목별 규모를 적는다.-webkit-text-stroke가 불어나 굵어진다.public/fonts/lab/ZhuqueFangsong-panbon.woff2이고, 라이선스는 public/fonts/lab/OFL-ZhuqueFangsong.txt다. 원본 TTF는 저장소 밖(~/Documents/석사 연구/.../zhuque-fangsong/v0.212/)에 있다. 글자가 바뀌면 python3 scripts/fonts/panbon_font.py zhuque로 다시 뽑는다.--adv: 1).panbon_font.py jinhua로 뽑을 수 있다(ss01 傳承字形을 cmap에 건다, 결과는 git에서 빠진 private/). 다만 GB2312 + 82자라 판면 한자의 27%가 없어 쓰지 않는다. Noto·대만 자형(TC)·송명(Song Myung)은 쓰지 않는다.프로젝트 정본은 src/data/projects.ts의 catalog 트리(部 › 類 › 書, 契丹 › 小字만 한 층 더). 같은 항목을 두 자리에 싣을 때(互著)는 두 번째에 sameAs로 원래 id를 가리킨다. 잎 노드의 status는 open(링크) · sealed(목록만, 펼치면 墨釘 — 詩帖) · forthcoming(未刊 — 張皇地名). projects는 잎을 펼친 목록(시안 ②·③용). 수치는 src/lib/projectSpecimens.ts가 빌드 때 데이터에서 센다.
| 部 | 類 | 하위 |
|---|---|---|
| 字部 | 漢字 | 外字 · 東俗字 |
| 契丹 | 資料 · 大字 · 小字(字素 · 入力) | |
| 史部 | 地名 | 地名調査綴 · 張皇地名(未刊) |
| 藝部 | 版畫 | 巴水朝鮮行 |
| 詩帖 | /sichep | |
| 器部 | 入力 | 契丹小字(= 小字 › 入力, 互著) |
시첩 /sichep(구 /sichyep)은 2026-09-29부터 공개다(정적 prerender). 작품 데이터는 src/data/sichyep.ts, 하이쿠 작업실 /haiku는 여전히 dev 전용.
폐기한 프로젝트 /rarecjk(+/api/rarecjk)와 /chimyong-ekimei는 2026-09-26부터 dev 전용이다(운영 404, 허브 링크도 dev에서만 노출).
src/layouts/)| 파일 | 용도 |
|---|---|
Layout.astro | 최상위 HTML 쉘 (head, body, 테마, 폰트) |
Main.astro | 컨텐츠 영역 래퍼 (pageTitle prop) |
PostDetails.astro | 포스트 상세 레이아웃 (태그, 날짜, 공유, 댓글) |
AboutLayout.astro | 소개 페이지 레이아웃 |
BookShell.astro | 독립 페이지 판식(版式) — 아래 참고 |
LabShell.astro | 헤더 없는 맨몸 셸(홈 板本·/lab 시안) |
BookShell (2026-09-29~)목록(src/data/projects.ts)에 걸린 독립 페이지는 모두 BookShell로 뜬다: /hanqca/woyca, /twongswokca, /khitan/resources, /khitan/kls, /khitan/kss, /khitan/ime, /toponym/cwosachel, /sichep. (/hasui는 아직 자체 HTML 문서 — 이식 전.)
node id로 trailOf()에서 읽음). 판심과 본문은 가는 계선 하나로 갈린다. 물(파문)은 쓰지 않는다.flush prop으로 본문 칸을 고정한다(시첩).sichep.astro)은 세로쓰기 책이라 오른쪽이 처음이다: 스크롤러·시간축 모두 direction: rtl(원점이 오른쪽 끝, scrollLeft는 왼쪽으로 갈수록 음수)이고, DOM은 읽는 차례(오래된 것이 먼저)로 담아 긁어 복사해도 그 차례로 나온다. 시의 전문(.visually-hidden)은 복사에서 빼고(user-select: none) 눈에 보이는 두 줄만 복사된다. 마우스 휠(세로)은 가로 스크롤로 바뀌어 아래로 돌리면 읽는 쪽(왼쪽)으로 가고, 스크롤 멈춤(scroll-snap)은 쓰지 않는다(끄는 동안 뚝뚝 끊겼다).
Intl(chinese 달력)로 양력 10일 구간으로 옮기고, 그 위에 七十二候 경계(src/lib/seasons.ts, 홈 판심과 같은 데이터)를 눈금으로 긋는다. 浣 구간은 길 위의 마디(눌러서 이동), 읽은 만큼은 accent로 차고, 머리(손잡이)가 지금 자리를 가리키며, 위에 “浣 · 節氣 차례 候名”이 뜬다. 스크롤 거리 ↔ 시각은 닻(처음·각 浣이 화면 한가운데 올 때·끝)을 직선으로 이은 것이다. 눈금이 12개를 넘으면 候 이름을, 30개를 넘으면 節氣 아닌 눈금의 차례도 숨긴다(data-density). 정확한 작성일은 저장소에 없다 — 얻는 것은 浣의 10일 구간뿐이다.src/styles/panbon.css(--pb-*, 朱雀仿宋 부분 글꼴).src/data/)| 파일 | 용도 |
|---|---|
shelf.ts | 서가 데이터 — ShelfItem[] + groupByMonth(), formatMonth() |
bucket-list.ts | 방문 장소 — Place[] (좌표/Plus Code) |