증상
samples/basic/calendar_year.hwp: HWP/PDF 1페이지인데 SVG 2페이지 (마지막 PushButton 'pi=12' 가 page 2 로 밀림)
samples/통합재정통계(2010.11월).hwp, (2011.10월).hwp: HWP/PDF 1페이지인데 SVG 2페이지 (마지막 빈 paragraph pi=14 가 page 2 로 밀림)
정량 분석 결과
| 파일 |
누적 height drift |
부족분 (trailing pi fit 검사) |
| calendar_year |
+31.8 px (24 px 가 pi=1 단일 문단) |
18.96 px |
| 통합재정통계 |
+5.9 px |
0.84 px |
Root cause
src/renderer/height_measurer.rs 가 BehindText / InFrontOfText 표를 paragraph 높이에서 제외하지 않음.
grep -n 'BehindText\|InFrontOfText' src/renderer/height_measurer.rs 결과 0 건
pagination/engine.rs:976 와 typeset.rs 의 process_controls 는 BehindText 표를 'Shape처럼 push 후 continue' 로 본문 흐름 제외
- 그러나 paragraph 측정 단계에서 캐리어 paragraph 의 measured height 에 표 outer_margin 또는 line_height 가 포함되어 cur_h 누적 시 잘못된 값 가산
calendar_year 의 pi=1 (글뒤로 1×1 wrapper 표를 가진 빈 문단):
- HWP 기여: lh+ls = 1600 HU = 21.33 px (라인 한 줄)
- 렌더러 기여: 45.10 px (+23.77 px excess)
추정 정정 위치
src/renderer/height_measurer.rs 의 measure_paragraph (또는 동등 함수) — 컨트롤 순회 시 treat_as_char=false && wrap in (BehindText, InFrontOfText) 인 표/도형은 paragraph 높이에 가산하지 않도록 분기 추가.
회귀 검증 대상
- 196 샘플 SVG/PDF 비율 표 (
/tmp/svg_vs_pdf.tsv)
- 영향 받을 가능성: 글뒤로 표 사용 문서 (워터마크/배경 box)
관련 분석 자료
이번 분석 컨버세이션 (svg_vs_pdf 비율 ≥1.5× 5건 중 calendar_year/통합재정통계)
증상
samples/basic/calendar_year.hwp: HWP/PDF 1페이지인데 SVG 2페이지 (마지막 PushButton 'pi=12' 가 page 2 로 밀림)samples/통합재정통계(2010.11월).hwp,(2011.10월).hwp: HWP/PDF 1페이지인데 SVG 2페이지 (마지막 빈 paragraph pi=14 가 page 2 로 밀림)정량 분석 결과
Root cause
src/renderer/height_measurer.rs가 BehindText / InFrontOfText 표를 paragraph 높이에서 제외하지 않음.grep -n 'BehindText\|InFrontOfText' src/renderer/height_measurer.rs결과 0 건pagination/engine.rs:976와typeset.rs의 process_controls 는 BehindText 표를 'Shape처럼 push 후 continue' 로 본문 흐름 제외calendar_year 의 pi=1 (글뒤로 1×1 wrapper 표를 가진 빈 문단):
추정 정정 위치
src/renderer/height_measurer.rs의 measure_paragraph (또는 동등 함수) — 컨트롤 순회 시treat_as_char=false && wrap in (BehindText, InFrontOfText)인 표/도형은 paragraph 높이에 가산하지 않도록 분기 추가.회귀 검증 대상
/tmp/svg_vs_pdf.tsv)관련 분석 자료
이번 분석 컨버세이션 (svg_vs_pdf 비율 ≥1.5× 5건 중 calendar_year/통합재정통계)