Skip to content

21페이지 2x1 표 위치 오류: TopAndBottom Picture 다음 문단에서 vpos 보정이 차트 높이를 이중 반영 #409

@planet6897

Description

@planet6897

증상

samples/2025년 기부·답례품 실적 지자체 보고서_양식.hwpx 21페이지에서:

  • PDF: 차트 이미지(170×111mm) 바로 아래 2x1 빈 표 배치
  • SVG: 차트와 2x1 표 사이에 ~400px 빈 공간, 2x1 표는 페이지 하단(y≈937)으로 밀려 일부 잘림. 후속 10x5 표(pi=192)는 521px overflow.

근본 원인

vpos 지연 보정(src/renderer/layout.rs:1387-1400)의 lazy_base 산출이 TopAndBottom Picture에서 어긋남.

  • pi=172 (Picture, vert=Para, wrap=TopAndBottom, 419.6px)
  • Shape pi=172 처리 후 sequential y_offset이 차트 바닥까지 진행 (94.5→528.8)
  • 직후 vpos_page_base/lazy_base 무효화 (line 1490-1491)
  • pi=173 vpos 보정 시 vpos_end는 pi=172의 텍스트 라인 끝(차트 미반영)을 사용하지만 y_delta_hu는 차트 바닥 기준 → lazy_base가 차트 높이만큼 낮게 잡힘
  • pi=174 (2x1 표)에서 end_y = 933.7 산출되어 y_offset이 528.8 → 933.7로 강제 점프 (차트 높이 ~31470 HU 이중 반영)

기존 bypass 가드(prev_has_overlay_shape, line 1366-1370):

  • Control::Shape만 검사, Control::Picture 미처리
  • InFrontOfText|BehindText만 우회, TopAndBottom 미처리

수정 방향

prev_has_overlay_shape 가드 확장:

  • Control::Picture (non-TAC) 포함
  • TopAndBottom + vert_rel_to=Para 케이스 우회 추가

검증

  • 21페이지 SVG에서 2x1 표가 차트 바로 아래 배치
  • LAYOUT_OVERFLOW 로그 사라짐 (또는 합당한 잔여 overflow만 남음)
  • 회귀: 기존 샘플 페이지 비교(특히 다른 TopAndBottom 그림 포함 문서)

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