증상
samples/exam_kor.hwp 페이지 1 단 1 끝 (3번 문제 ⑤번 답안 + 체크 그림, pi=30) 이 페이지 2 로 일부 split 됨. 한컴 PDF 와 비교 시 1페이지 안에 1, 2, 3번 문제 모두 완전히 들어가야 정상.
페이지 1 단 1: items=25, used=1207.6px, hwp_used≈1153.1px, diff=+54.5px
... pi=29 (④번)
PartialParagraph pi=30 lines=0..1 vpos=84992..87171 ← 일부만
페이지 2 단 0: items=2, used=49.0px
PartialParagraph pi=30 lines=1..3 vpos=87171..89009 ← 잔여 (PDF 에는 없음)
Shape pi=30 ci=0 (체크 그림)
정량 진단
RHWP_TYPESET_DRIFT=1 진단 + HWP vpos 비교:
| 위치 |
typeset cur_h |
HWP vpos→px |
차이 |
| 단 1 시작 (pi=12 직전) |
306.1 |
94.5 |
+211.6 |
| pi=29 끝 |
1178.5 |
1122 |
+56.5 |
| pi=30 배치 시도 |
1247.4 → split |
1202 → fit |
— |
두 가지 미스매치가 합쳐진 결과:
(A) col 1 시작 reserve 과대 (+212 px)
- col 0 의 body-wide TopAndBottom 표 (
pi=0 ci=4, w=888.2 h=147.4) 로 인해 `pending_body_wide_top_reserve` 가 typeset 에서 306.1 px 으로 산정
- HWP 는 col 1 에서 pi=12 를 94.5 px 위치에 배치 (vpos 7085)
(B) 항목별 누적이 layout vpos 진행보다 과소 (-155 px)
두 효과 합산: 순 +57 px 과대 → pi=30 가 끝에서 ~37 px 부족하여 강제 분할.
원하는 동작
수정 방향 (옵션 A — col 1 reserve 정정)
`compute_body_wide_top_reserve_for_para` 의 다단 보정 검토. 현재 reserve 가 표 높이 자체 (147.4) 가 아니라 ~212 px 더 큰 값 (306.1) 으로 산정되는 원인 추적:
마일스톤
v1.0.0 (M100)
관련
증상
samples/exam_kor.hwp페이지 1 단 1 끝 (3번 문제 ⑤번 답안 + 체크 그림, pi=30) 이 페이지 2 로 일부 split 됨. 한컴 PDF 와 비교 시 1페이지 안에 1, 2, 3번 문제 모두 완전히 들어가야 정상.정량 진단
RHWP_TYPESET_DRIFT=1진단 + HWP vpos 비교:두 가지 미스매치가 합쳐진 결과:
(A) col 1 시작 reserve 과대 (+212 px)
pi=0 ci=4, w=888.2 h=147.4) 로 인해 `pending_body_wide_top_reserve` 가 typeset 에서 306.1 px 으로 산정(B) 항목별 누적이 layout vpos 진행보다 과소 (-155 px)
두 효과 합산: 순 +57 px 과대 → pi=30 가 끝에서 ~37 px 부족하여 강제 분할.
원하는 동작
수정 방향 (옵션 A — col 1 reserve 정정)
`compute_body_wide_top_reserve_for_para` 의 다단 보정 검토. 현재 reserve 가 표 높이 자체 (147.4) 가 아니라 ~212 px 더 큰 값 (306.1) 으로 산정되는 원인 추적:
마일스톤
v1.0.0 (M100)
관련