개요
samples/hwp3-sample16-hwp5.hwp (HWP3 → HWP5 변환본) 의 페이지 분할이 한컴 viewer 와 다름. 한컴은 section 1 (Ⅰ. 사업개요) 만 page 1 에 표시 후 section 2 ("(2) 주전산센터 서버통합...") 를 새 페이지로 분리. rhwp 는 section 2 시작도 page 1 에 packed.
재현
rhwp dump-pages samples/hwp3-sample16-hwp5.hwp -p 2
rhwp-studio 에서 사업개요 페이지 확인.
진단
HWP5 binary 안에 명시적 page break 정보 부재 확인:
paragraph.raw_break_type=0x00 (no 쪽나누기 flag)
ParaShape.page_break_before=false (attr1 bit 19 미설정)
그러나 한컴은 section 2 를 새 페이지로 분리. 즉 한컴의 layout 알고리즘이 page-fill heuristic 으로 자동 분할 결정.
rhwp 는 paragraph 누적 시 한컴보다 compact 하여 더 많은 content 가 page 에 fit.
격차 위치
Fix 후보
- ParaShape 누적 spacing 추가 buffer — 한컴 정합 정확 공식 미상 (휴리스틱)
- page-fill 휴리스틱 reverse-engineering — 한컴의 paragraph 간격 가산 방식 정밀 분석
- Empty paragraph 자동 page break 감지 — pi=87 같은 empty paragraph 다음에 section 시작 시 page break
회귀 risk
- 모든 HWP5 변환본 + 일반 HWP5 페이지 분할에 영향
- Sweep 검증 필수 (sample10/12/14/16/18/19, exam_*, aift, biz_plan 등)
관련
Task #1001 (closes #1001) 의 잔존 격차 — PR #1005 본문 참조.
milestone: v1.0.0
개요
samples/hwp3-sample16-hwp5.hwp(HWP3 → HWP5 변환본) 의 페이지 분할이 한컴 viewer 와 다름. 한컴은 section 1 (Ⅰ. 사업개요) 만 page 1 에 표시 후 section 2 ("(2) 주전산센터 서버통합...") 를 새 페이지로 분리. rhwp 는 section 2 시작도 page 1 에 packed.재현
rhwp-studio 에서 사업개요 페이지 확인.
진단
HWP5 binary 안에 명시적 page break 정보 부재 확인:
paragraph.raw_break_type=0x00(no 쪽나누기 flag)ParaShape.page_break_before=false(attr1 bit 19 미설정)그러나 한컴은 section 2 를 새 페이지로 분리. 즉 한컴의 layout 알고리즘이 page-fill heuristic 으로 자동 분할 결정.
rhwp 는 paragraph 누적 시 한컴보다 compact 하여 더 많은 content 가 page 에 fit.
격차 위치
Fix 후보
회귀 risk
관련
Task #1001 (closes #1001) 의 잔존 격차 — PR #1005 본문 참조.
milestone: v1.0.0