증상
HWP3 원본 파일은 정확한 페이지 수로 렌더링되지만, 동일 문서를 HWP5/HWPX로 변환한 파일은 페이지 수가 증가하는 회귀가 발생.
| 파일 |
파서 |
페이지 수 |
비고 |
samples/hwp3-sample.hwp |
HWP3 |
16 |
정상 (한컴 뷰어 일치) |
samples/hwp3-sample-hwp5.hwp |
HWP5 |
17 |
+1 페이지 회귀 |
samples/hwp3-sample-hwpx.hwpx |
HWPX |
17 |
+1 페이지 회귀 |
samples/hwp3-sample5.hwp |
HWP3 |
64 |
정상 (Task #511 정정 적용) |
samples/hwp3-sample5-hwp5.hwp |
HWP5 |
68 |
+4 페이지 회귀 |
samples/hwp3-sample5-hwpx.hwpx |
HWPX |
68 |
+4 페이지 회귀 |
본질
HWP3 파서가 정확히 처리한 문서를 한컴 한글에서 HWP5/HWPX로 저장한 결과를 rhwp가 다시 파싱하면 페이지네이션이 어긋남. 이는:
- 포맷 변환 시 한컴 자체가 일부 정보 손실 가능성 (LineSeg cs/sw 정보, 그림 wrap zone 등)
- rhwp의 HWP5/HWPX 파서 또는 페이지네이션이 한컴 변환 결과를 정확히 재현 못함
- 공통 페이지네이션 엔진의 누적 height 계산 결함 (Task #546과 유사 패턴)
Task #546 트러블슈팅 ("결함의 본질이 wrap-around paragraph 들의 누적 height 와 결합 영역") 과 같은 맥락에서, 그림 어울림 (Square wrap) 이 있는 문단의 누적 height 계산 방식이 포맷별로 다르게 작동.
재현 방법
# 본 PR (#553) 또는 upstream/devel HEAD 기준
cargo run --bin rhwp -- export-svg samples/hwp3-sample.hwp -o /tmp/hwp3/
cargo run --bin rhwp -- export-svg samples/hwp3-sample-hwp5.hwp -o /tmp/hwp5/
cargo run --bin rhwp -- export-svg samples/hwp3-sample-hwpx.hwpx -o /tmp/hwpx/
# 페이지 수 비교 (16 vs 17 vs 17)
ls /tmp/hwp3/ | wc -l
ls /tmp/hwp5/ | wc -l
ls /tmp/hwpx/ | wc -l
관련 fixture (PR #553에 추가)
PR #553 머지 후 다음 변환본 fixture 사용 가능:
samples/hwp3-sample-hwp5.hwp / samples/hwp3-sample-hwpx.hwpx
samples/hwp3-sample4-hwp5.hwp
samples/hwp3-sample5-hwp5.hwp / samples/hwp3-sample5-hwpx.hwpx
의심 영역
우선순위
참고
본 issue는 PR #553 (Task #511 HWP3 Square wrap 보완) 작업 중 발견. PR #553이 추가하는 변환본 fixture를 회귀 검증에 사용 가능.
Test plan
증상
HWP3 원본 파일은 정확한 페이지 수로 렌더링되지만, 동일 문서를 HWP5/HWPX로 변환한 파일은 페이지 수가 증가하는 회귀가 발생.
samples/hwp3-sample.hwpsamples/hwp3-sample-hwp5.hwpsamples/hwp3-sample-hwpx.hwpxsamples/hwp3-sample5.hwpsamples/hwp3-sample5-hwp5.hwpsamples/hwp3-sample5-hwpx.hwpx본질
HWP3 파서가 정확히 처리한 문서를 한컴 한글에서 HWP5/HWPX로 저장한 결과를 rhwp가 다시 파싱하면 페이지네이션이 어긋남. 이는:
Task #546 트러블슈팅 ("결함의 본질이 wrap-around paragraph 들의 누적 height 와 결합 영역") 과 같은 맥락에서, 그림 어울림 (Square wrap) 이 있는 문단의 누적 height 계산 방식이 포맷별로 다르게 작동.
재현 방법
관련 fixture (PR #553에 추가)
PR #553 머지 후 다음 변환본 fixture 사용 가능:
samples/hwp3-sample-hwp5.hwp/samples/hwp3-sample-hwpx.hwpxsamples/hwp3-sample4-hwp5.hwpsamples/hwp3-sample5-hwp5.hwp/samples/hwp3-sample5-hwpx.hwpx의심 영역
src/parser/hwp5/,src/parser/hwpx/— 한컴 변환본의 LineSeg/wrap zone 파싱src/renderer/typeset.rs— pagination 엔진 (특히 Task exam_science.hwp 2페이지 페이지네이션 회귀 — PR #506 머지 후 본문 누락 (4페이지 → 6페이지) #546 revert 영역)src/renderer/composer.rs— 줄 분리 (wrap_precomputed가 아닌 일반 paragraph 처리)src/renderer/height_measurer.rs— paragraph 높이 측정 (셀 padding 가드 등)우선순위
참고
본 issue는 PR #553 (Task #511 HWP3 Square wrap 보완) 작업 중 발견. PR #553이 추가하는 변환본 fixture를 회귀 검증에 사용 가능.
Test plan