상위 Epic: #309
선행: #310 (분석 도구), #311 (vpos-reset 가설 부정)
배경
#311 검증으로 "vpos-reset 강제 분리" 가설이 부정됨 (21_언어 19→20쪽 악화). 진짜 원인은 우리 엔진의 column 가용 공간 계산이 HWP보다 약 30px 관대한 것으로 재추정.
페이지 7 21_언어 사례
- HWP: `pi=117 line 0` 까지만 단에 넣음 (단 사용 ≈ vpos=89700 HWPUNIT ≈ 1196px)
- 우리: `pi=117 전체` (line 0+1, 약 29.4px) 채움 (단 가용 1226.4px, ~30px 더 큼)
작업 범위
- 21_언어 페이지 7 단 0의 우리 엔진 vs HWP 단 사용 공간 정밀 측정
- 차이의 origin 식별 (후보):
- `paginate_text_lines`의 trailing line_spacing 처리 (`engine.rs:602~620`)
- line_height 누적 시 spacing 분리 모델
- spacing-after 마지막 문단 처리
- 줄간격 누적 오차
- 보정 코드 작성
- 4샘플 검증:
- 단독: 21_언어 ?쪽 (OFF 모드에서 감소 기대)
- 결합: 21_언어 + `--respect-vpos-reset` → 15쪽 (PDF 일치) 목표
- 다른 3샘플 무변화 (회귀 0)
검증 도구
#311 에서 추가된 `--respect-vpos-reset` 실험 플래그를 결합 검증용으로 활용:
```bash
OFF 비교
rhwp dump-pages SAMPLE.hwp | grep -c "^=== 페이지"
ON 결합
rhwp dump-pages SAMPLE.hwp --respect-vpos-reset | grep -c "^=== 페이지"
```
비범위
- 페이지네이션 엔진 전면 재설계
- LINE_SEG 외 다른 메타데이터 활용
참고
- `mydocs/tech/line_seg_vpos_analysis.md` (부록 A: 가설 검증 결과)
- `mydocs/report/task_m100_311_report.md`
상위 Epic: #309
선행: #310 (분석 도구), #311 (vpos-reset 가설 부정)
배경
#311 검증으로 "vpos-reset 강제 분리" 가설이 부정됨 (21_언어 19→20쪽 악화). 진짜 원인은 우리 엔진의 column 가용 공간 계산이 HWP보다 약 30px 관대한 것으로 재추정.
페이지 7 21_언어 사례
작업 범위
검증 도구
#311 에서 추가된 `--respect-vpos-reset` 실험 플래그를 결합 검증용으로 활용:
```bash
OFF 비교
rhwp dump-pages SAMPLE.hwp | grep -c "^=== 페이지"
ON 결합
rhwp dump-pages SAMPLE.hwp --respect-vpos-reset | grep -c "^=== 페이지"
```
비범위
참고