Skip to content

Square wrap 표 직후 col 0 over-fill (exam_kor 페이지 14 단 0 1225>1211) #439

@planet6897

Description

@planet6897

증상

samples/exam_kor.hwp 섹션 1 페이지 14 (rhwp Stage 2 기준) 의 col 0 이 본문 높이를 초과하고 col 1 은 거의 비어있음.

페이지 14 단 0: items=25, used=1225.8px (본문 1211.3 초과 14px)
페이지 14 단 1: items=2,  used=64.3px (pi=48, pi=49 만)
                          hwp_used≈1189.0px, diff=-1124.7px

PDF 비교: 한컴은 page 14 양쪽 단을 모두 채워 1 페이지에 화법과 작문 38~42 번 콘텐츠를 담음. rhwp 는 같은 콘텐츠가 page 14 + page 15 의 2 페이지에 걸쳐 출력.

정황

페이지 14 col 0 에는 Square wrap 표 4 개가 포함됨:

  • pi=33, pi=37, pi=40, pi=47 — 모두 wrap=Square 3×2 작은 표

각 paragraph 가 line 단위로 처리되며 옆에 작은 표가 wrap. Square wrap 시 typeset 의 cur_h 누적이 표 높이만큼 정상 진행되는지 검토 필요.

추정 원인

paginate_text_lines (src/renderer/pagination/engine.rs:702-711) 의 표 직후 trailing line_spacing 제외 로직:

let overflow_threshold = if prev_is_table {
    let trailing_ls = mp.line_spacings.get(end_line.saturating_sub(1)).copied().unwrap_or(0.0);
    cumulative - trailing_ls   // <- trailing 제외
} else {
    cumulative
};

prev_is_table 분기에서 trailing 을 빼고 fit 검사 → col 0 over-fill 통과 → 다음 paragraph 가 col 1 시작 → col 1 에 대한 cur_h 가 부정확하게 시작 → pi=50 의 [단나누기] 까지 만나기 전에 col 1 가 거의 비어있는 상태로 페이지 종료.

디버깅 데이터

# 페이지 14 컬럼 사용량
rhwp dump-pages samples/exam_kor.hwp -p 13

# 표 직후 typeset cur_h 진행 확인
RHWP_TYPESET_DRIFT=1 rhwp export-svg samples/exam_kor.hwp -o /tmp/x 2>&1 | grep "pi=4[0-9] col="

원하는 동작

  • 페이지 14 col 0 used ≤ 본문 높이 1211.3 px
  • 페이지 14 col 1 used ≈ 1189 px (HWP 와 동일 수준)
  • exam_kor.hwp 22 → 21 페이지 (페이지 14 + 15 통합)

회귀 우려

  • 다른 Square wrap 표 사용 문서 (특히 hwpspec.hwp 의 표 + 텍스트 혼합)
  • 단단 + 표 직후 paragraph fit 케이스

관련

마일스톤

v1.0.0 (M100)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions