Skip to content

shortcut.hwp 페이지 3 끝 column-break 행이 페이지 4 첫 줄로 밀림 (다단 zone 분할 결함) #768

@planet6897

Description

@planet6897

본질

samples/basic/shortcut.hwp 페이지 3 끝에 있어야 할 "<편집 화면 분할에서>" + "화면 이동 Ctrl+W,N" 행이 페이지 4 첫 줄로 밀림.

재현

cargo run --release --bin rhwp -- export-svg samples/basic/shortcut.hwp -p 2
cargo run --release --bin rhwp -- dump-pages samples/basic/shortcut.hwp -p 2
cargo run --release --bin rhwp -- dump-pages samples/basic/shortcut.hwp -p 3

진단 (정적 분석)

PDF 권위 자료 (한글 2022, pdf/basic/shortcut-2022.pdf) — 페이지 3 끝

조판 부호 보이기/감추기  Ctrl+G,C   |  화면 확대/축소   Shift+(회색)+/-
... (좌단 6 + 우단 6)
화면 확대 100%      Ctrl+G,Q   |  세로로 나누기    Ctrl+W,V

<편집 화면 분할에서>            |  화면 이동       Ctrl+W,N

→ PDF 페이지 3: 다단 영역 좌단 7 + 우단 7. 마지막 1행이 "<편집 화면 분할에서>" + "화면 이동" 으로 같은 다단 영역 안에 추가됨.

rhwp 현재 동작

페이지 3 (dump-pages -p 2):

  • 단 0: 보기 표 (pi=81)
  • 단 1: pi=82~87 (좌단 6항목)
  • 단 2: pi=88~93 (우단 6항목, used=80px)
  • 다음 항목 없이 zone 종료 → 페이지 break

페이지 3 잔여 공간 = body height 701.7 − used ≈ 561.8 px (10배 이상 여유).

페이지 4 (dump-pages -p 3) 첫 줄로 밀린 것:

  • 단 0: pi=94 ("<편집 화면 분할에서>"), pi=95 ("화면 이동 Ctrl+W,N")
  • 단 1: pi=96 ("입력" 표 — 다음 다단 영역 시작)

IR 확인 (dump -s 0 -p N)

pi text controls ParaShape
82~87 좌단 6항목 ps_id=11
88~93 우단 6항목 ps_id=11
94 "<편집 화면 분할에서>" [단나누기] (column-break) ps_id=12
95 "화면 이동 Ctrl+W,N" ps_id=11
96 "입력" 표 [다단나누기] (multi-col-break)

Root cause 가설 (정적 분석, 추정)

pi=94[단나누기] (column-break) 가 다단 zone 분할에서 잘못 처리됨:

  1. rhwp 가 pi=94 column-break 를 만나면 "여기부터 새 zone 시작" 으로 해석
  2. 새 zone = pi=94 + pi=95 + pi=96 ([다단나누기]) + pi=97..(입력 표 좌우단)
  3. 새 zone height ≈ 입력 표 + 좌우단 12항목 (전체 페이지급)
  4. 페이지 3 잔여 561.8 px 에 안 들어감 판정 → 페이지 break

PDF (한컴) 정합 동작:

  • column-break 는 같은 다단 zone 안의 단 분할 마커
  • pi=94 좌단 마지막 1행, pi=95 우단 마지막 1행으로 같은 다단 zone 에 추가
  • pi=96 의 [다단나누기] 가 진짜 zone 종료

영향 영역

  • src/renderer/pagination/engine.rs
  • src/renderer/typeset.rs (multi-column zone 결정)
  • src/parser/hwp5/, src/parser/hwpx/ 의 column-break / multi-col-break 마커 IR 변환

우선순위

PR #719 (Task #716) merge 후 별도 task 로 진행. 본 결함은 Task #716 의 fix_overlay 와 무관한 다단 zoning 영역으로, 별도 분석 단계 (수행계획서 → 구현계획서) 필요.

관련 자료

  • 샘플: samples/basic/shortcut.hwp (가로 paper, 다단 영역 다수)
  • PDF 권위: pdf/basic/shortcut-2022.pdf

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions