증상
samples/2022년 국립국어원 업무계획.hwp 6페이지 마지막 줄(' 및 점자 해당 분야 전문인력 확보 어려움')이 다음 페이지로 분리됨. HWP 원본은 같은 페이지에 배치.
분석
- 대상: pi=80, 2줄 문단 (line=160%, lh=1500HU=20px)
- HWP vpos 기준 line1 bottom = 931.2px ≤ body 933.5px → fits (여유 2.3px)
- 우리 렌더러: page used=906.7px, hwp_used=899.2px → +7.5px 드리프트
- 잔여 26.8px < line_advance 32px → page break 발생
Root Cause
pagination/engine.rs:864 의 fit 판정이 누적 current_height 기반.
페이지 상단 표(pi=61, wrap=TopAndBottom, tac=true) 부근에서 드리프트 시작 의심:
- HWP vpos diff: 60.0px, 우리 표 보고 높이: 43.5px
조치 방향
- drift 발생 지점 특정 (TYPESET_DRIFT_PI 로그)
- pagination fit 판정을 vpos 기반으로 보정
- 회귀 테스트 추가
재현
rhwp dump-pages 'samples/2022년 국립국어원 업무계획.hwp' -p 5
증상
samples/2022년 국립국어원 업무계획.hwp6페이지 마지막 줄(' 및 점자 해당 분야 전문인력 확보 어려움')이 다음 페이지로 분리됨. HWP 원본은 같은 페이지에 배치.분석
Root Cause
pagination/engine.rs:864의 fit 판정이 누적 current_height 기반.페이지 상단 표(pi=61, wrap=TopAndBottom, tac=true) 부근에서 드리프트 시작 의심:
조치 방향
재현