증상
samples/exam_science.hwp rhwp SVG 출력에서 문제 6번 <보기> 박스 + 답안 ① ② ③ ④ ⑤ 가 page 1 우측 단 하단에 정상적으로 들어갈 자리가 있는데도 page 2 로 밀려난다. PDF(한컴 정답) 에선 같은 콘텐츠가 page 1 안에 들어가고 page 2 는 문제 7 부터 시작.
| 페이지 |
내용 |
| SVG p1 (2단) |
우단: 문제 4, 5, 6 stem [3점] 까지 |
| SVG p2 |
<보기> 표(3×3) + 답안 1줄, 아래 1080+px 공백 |
| SVG p3 |
문제 7~9 (정상) |
dump-pages 분석
page 1 단 1 (오른쪽 단): items=46, used=1112.6 px / body_height 1215.1 px, 잔여 102.5 px
- 다음 pi=30 (3×3 표) 높이 107.1 px → 잔여 102.5 px 보다 4.6 px 부족 → break → page 2
HWP 원본 vpos 검사:
- 표 pi=30 vpos = 78952 HU
- 표 pi=30 높이 = 8033 HU
- column body 높이 = 91136 HU
- 78952 + 8033 = 86985 < 91136 → HWP 좌표상 4151 HU (≈55 px) 여유 있게 들어가야 한다
→ rhwp 의 누적 y(1112.6 px) 가 HWP vpos(78952 HU ≈ 1051 px) 대비 약 61 px 과적되어 마지막 표가 단 하단을 넘는 것으로 잘못 판정됨.
원인 가설
pi=0..29 누적 렌더 높이가 HWP vpos 기준 대비 ~61 px (≈4570 HU) 누적 오버슈트.
후보:
- 다수 인라인 수식(pi=13/16/18/22/27)에서 line_height 추정이 HWP 기록값보다 약간 큼 (
paragraph_layout.rs:798-806 has_tac_shape 분기 추정)
- 문단 spacing_before/after 가 HWP vpos 인코딩(이미 spacing 반영)과 중복 가산
- 빈 문단(pi=20/25/26 "(빈)") 이 HWP vpos 의도 폭보다 더 차지
#496 / Layout Refactor Phase 3-4 의 누적 baseline/vpos drift 영역과 동일 family.
처리 방향
Layout Phase 3 (누적 vpos drift / baseline 정렬) 본질로 종속 — 단발 fix 보다 종합 검토. 단기 미봉으로 'HWP vpos 기준 fit / 누적 px 기준 overflow' 경계 케이스에 HWP vpos 신뢰 분기 추가 가능하나 회귀 위험.
증상
samples/exam_science.hwprhwp SVG 출력에서 문제 6번<보기>박스 + 답안 ① ② ③ ④ ⑤ 가 page 1 우측 단 하단에 정상적으로 들어갈 자리가 있는데도 page 2 로 밀려난다. PDF(한컴 정답) 에선 같은 콘텐츠가 page 1 안에 들어가고 page 2 는 문제 7 부터 시작.[3점]까지<보기>표(3×3) + 답안 1줄, 아래 1080+px 공백dump-pages 분석
page 1 단 1 (오른쪽 단): items=46, used=1112.6 px / body_height 1215.1 px, 잔여 102.5 px
HWP 원본 vpos 검사:
→ rhwp 의 누적 y(1112.6 px) 가 HWP vpos(78952 HU ≈ 1051 px) 대비 약 61 px 과적되어 마지막 표가 단 하단을 넘는 것으로 잘못 판정됨.
원인 가설
pi=0..29 누적 렌더 높이가 HWP vpos 기준 대비 ~61 px (≈4570 HU) 누적 오버슈트.
후보:
paragraph_layout.rs:798-806has_tac_shape 분기 추정)#496 / Layout Refactor Phase 3-4 의 누적 baseline/vpos drift 영역과 동일 family.
처리 방향
Layout Phase 3 (누적 vpos drift / baseline 정렬) 본질로 종속 — 단발 fix 보다 종합 검토. 단기 미봉으로 'HWP vpos 기준 fit / 누적 px 기준 overflow' 경계 케이스에 HWP vpos 신뢰 분기 추가 가능하나 회귀 위험.