← 목록
기타 2026-07-12 3KB 읽기 3분

크라우니워드프로세서 기초도구 — 페이지뷰.한선

개요

크라우니워드프로세서 기초도구 시리즈(도메인별 .한선 파일)에 "페이지뷰" 도메인을 추가. A4 페이지 기하(mm↔pt 변환), 본문/머리글/바닥글 영역, 페이지 분할·총페이지수·스크롤 y오프셋, 가로세로 전환, 페이지 테두리 명령, 설정 직렬화/역직렬화, 인쇄영역 검증까지 15개 핵심 함수 + 4개 헬퍼.

무엇을 했는지

  • crownycode-learn.sh search "페이지" / "여백 A4 mm 페이지분할" 조회 → 관련 기존 패턴 없음(MISS), 신규 작성.
  • 기존 10파일(/Users/ef/crowny-word/도구/) 중 문서파일.한선의 줄분할 패턴을 일반화해 조각내기(s,구분자) 헬퍼로 이식.
  • 설정 직렬화 규약: "폭mm|높이mm|여백상|여백우|여백하|여백좌|mm" (7필드, | 구분자).
  • VM 함정 대응: 한선씨 나눗셈은 자연반올림(가장 가까운 정수로 반올림)이라 페이지당 줄수처럼 floor가 필요한 계산에 그대로 쓰면 과다산정(예: 100/6은 자연반올림 17, 실제 floor는 16) → 내림나눗셈(a,b)(가드레일 §실측감사 헬퍼 패턴) 도입 후 전 계산에 적용.
  • mm→pt 변환은 (mm*720)/254 정수 나눗셈(자연반올림), A4 210x297mm/20mm 여백 기준 실측 검증(20mm=57pt, 210mm=595pt, 297mm=842pt, 콘텐츠 170x257mm=482x729pt).
  • 머리글/바닥글 영역은 좌여백 시작 x, 콘텐츠 폭(본문영역 재사용)으로 설계(에지투에지 아님, 본문과 좌우 정렬).
  • 페이지분할은 0-based 반개구간 "시작|끝" 문자열 배열로 반환, 빈 문서(총줄<=0)는 페이지 1개("0|0")로 처리. 총페이지수는 페이지분할 길이를 재사용(중복로직 없음).

관련 파일

  • 구현: /Users/ef/crowny-word/도구/페이지뷰.한선
  • 컴파일 산출물(임시): /tmp/페이지뷰.toau
  • 참고(이식 원천): /Users/ef/crowny-word/도구/문서파일.한선
  • 동일 시리즈: 텍스트버퍼·커서선택·편집연산·실행취소·검색치환·서식런·문단배치·문서파일·한글통계·클립보드뷰·스크롤뷰포트확장(같은 디렉토리)

검증

cd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/crowny-word/도구/페이지뷰.한선 > /tmp/페이지뷰.toau 2>/tmp/페이지뷰.err
./crownyc run /tmp/페이지뷰.toau
결과: 검사: PASS 27/27 (전부 통과, 1회차 성공).

크라우니코드: lookup/search MISS(관련패턴 없음, 신규생성) / learn 추가 3건(페이지분할총줄페이지당줄수·내림나눗셈floor보정·페이지y오프셋간격포함스크롤; mm퍼포인트변환은 50자 미만으로 학습DB 거부됨).

잔여 이슈

  • 가로세로전환 시 여백은 그대로 유지(상/하/좌/우 물리적 재배치는 하지 않음) — 필요 시 방향별 여백 재매핑 로직 추가 여지.
  • 헤더/바닥글 영역을 "본문 폭과 정렬"로 설계(에지투에지 대안 가능) — 요구사항에 따라 조정 가능.
  • 명세의 괄호 안 설명("A4(210x297 여백20, mm)" 등)은 시그니처가 아닌 서술로 해석해 함수 파라미터를 실용적으로 설계함(문서에 근거 명시).