Skip to content

Task #1535: visible-host co-anchored float 표가 선행 float 점유영역을 침범하던 회귀 수정#1548

Merged
edwardkim merged 1 commit into
edwardkim:develfrom
kkyu8925:fix/1535-coanchored-float-exclusion
Jun 27, 2026
Merged

Task #1535: visible-host co-anchored float 표가 선행 float 점유영역을 침범하던 회귀 수정#1548
edwardkim merged 1 commit into
edwardkim:develfrom
kkyu8925:fix/1535-coanchored-float-exclusion

Conversation

@kkyu8925

@kkyu8925 kkyu8925 commented Jun 26, 2026

Copy link
Copy Markdown

변경 요약

같은 visible host 문단에 co-anchored 된 para-relative TopAndBottom float 표가 여러 개일 때,
후행 float 표가 선행 float 표가 점유한 세로 영역(visible_float_exclusions)을 무시하고 그 위에
겹쳐 그려지던 회귀(#1518 후속)를 수정합니다.

문단 텍스트는 이미 활성 float 점유 영역 아래로 밀려나지만(layout.rs의 paragraph jump), float 표
배치는 exclusion 을 push 만 하고 consult 하지 않았습니다. 이 PR 은 float 표 배치에서도, 표의 자연
상단(para_y + outer_margin + max(v_offset, 0))이 활성 exclusion 영역 안에서 시작하면 그 영역
하단으로 table_y_start 를 끌어올립니다. compute_table_y_positionraw_y.max(y_start)
클램프하므로 시작점 상향만으로 표가 영역 아래로 밀립니다.

양수 vertical_offset float 표가 둘 이상 공존하는 작업일지류 양식에서 헤더 셀 텍스트가 겹치던
문제가 해소됩니다. 단일 양수 offset(#1510 샘플)은 자연 상단이 형제 zone 밖이라 영향이 없습니다.

관련 이슈

closes #1535

테스트

  • cargo test 통과 (전체)
  • cargo clippy -- -D warnings 통과
  • cargo fmt --all -- --check 통과
  • tests/issue_1510.rs 4/4 유지 (회귀 가드)
  • 신규 tests/issue_1535.rs — 수정 전 fail / 수정 후 pass
  • 신규 fixture samples/hwpx/issue1535_coanchored_float_exclusion.hwpx (같은 host 문단에 양수 offset 표 A=16996 / B=18000, B 선언 위치가 A 점유영역 안)

검증 방법

issue1535_coanchored_float_exclusion.hwpx 는 issue1510 HWPX 기반(Clone and Narrow)으로, 같은 host
문단에 양수 offset float 표 2개를 둡니다. 렌더트리에서 B 표 상단이 A 표 하단 이상(겹침 금지)임을
단언합니다. 수정 전: B 표가 A 영역 안(y≈376, A=[362,437])에 배치되어 겹침. 수정 후: B 가 A 아래로 밀려 배치.

검증 환경 / 페이지네이션 영향

이 PR 은 co-anchored float 표의 세로 배치를 다루므로 페이지네이션 인접 영역이다. CONTRIBUTING 의 "페이지 분할/페이지네이션 영향 PR" 가이드에 따라 검증 환경과 영향 범위를 명시한다.

  • 환경: macOS, rhwp 로컬 빌드(rust 1.93.1). 한컴 편집기 미접근 환경이라 결정적 자동 검증을 1차 기준으로 사용.
  • 결정적 검증:
    • cargo test --test svg_snapshot 8/8 통과 — golden SVG 불변(기존 커밋 샘플의 렌더가 하나도 바뀌지 않음).
    • cargo test --lib 1937 통과 / 0 실패, cargo clippy --lib -- -D warnings clean.
    • tests/page_number_propagation.rs 2/2, tests/issue_1510.rs 4/4 (page_count==1 유지), 신규 tests/issue_1535.rs red→green.
  • 페이지네이션 영향: 없음. golden SVG 불변 + issue_1510page_count==1 유지로, 기존 문서의 페이지 분할이 변하지 않음을 확인. 본 수정은 "같은 visible host 문단에 양수 offset float 표가 2개 이상" 인 경우(기존 골든 샘플에 없는 조합)에만 작용한다.
  • 비공개 내부 양식(작업일지류)에서 재현·수정 확인했으나 비공개라 fixture 로 커밋하지 못하며, 동일 구조의 합성 HWPX(samples/hwpx/issue1535_coanchored_float_exclusion.hwpx)로 회귀를 고정했다.

… 침범하던 회귀 수정

같은 visible host 문단에 para-relative TopAndBottom float 표가 여럿일 때, 후행
float 표가 선행 float 표가 점유한 세로 영역(visible_float_exclusions)을 무시하고
그 위에 겹쳐 그려지던 회귀(edwardkim#1518 후속)를 수정한다.

float 표 배치도 문단 텍스트와 동일하게, 표의 자연 상단(para_y + outer_margin +
max(v_offset,0))이 활성 exclusion 영역 안에서 시작하면 그 영역 하단으로
table_y_start 를 끌어올린다. compute_table_y_position 이 raw_y.max(y_start) 로
클램프하므로 시작점 상향만으로 표가 영역 아래로 밀린다.

- 회귀 fixture: samples/hwpx/issue1535_coanchored_float_exclusion.hwpx
- 회귀 테스트: tests/issue_1535.rs (B 표 상단 >= A 표 하단)
- 검증: 전체 cargo test 통과, issue_1510 4/4 유지, fmt/clippy clean

closes edwardkim#1535
@kkyu8925 kkyu8925 force-pushed the fix/1535-coanchored-float-exclusion branch from ef75a38 to d646287 Compare June 26, 2026 01:30
@edwardkim edwardkim self-requested a review June 26, 2026 23:46
@edwardkim edwardkim added the bug Something isn't working label Jun 26, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 26, 2026
edwardkim added a commit that referenced this pull request Jun 27, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@edwardkim edwardkim merged commit 350b46f into edwardkim:devel Jun 27, 2026
@edwardkim

Copy link
Copy Markdown
Owner

rhwp 첫 기여 환영합니다, @kkyu8925! 🎉

merge 완료했습니다 (merge commit 350b46f, origin/devel 포함 검증).

첫 PR인데 CONTRIBUTING 가이드를 충실히 따라 주셔서 검토가 수월했습니다 — 페이지네이션 영향 명시, 검증 환경 명시, golden SVG 불변 확인, red→green 회귀 fixture까지 잘 갖춰져 있었습니다.

메인테이너 측 로컬 전체 회귀 검증 결과(fork PR이라 CI 자동 실행분을 대체):

  • 전체 cargo test --tests: FAILED 0건 (lib 1937 passed, 통합 포함)
  • 신규 issue_1535: 수정 revert 시 FAILED → 수정 적용 시 pass (red→green 확정)
  • golden SVG 불변(svg_snapshot 8/8), issue_1510 4/4(page_count==1 유지)로 기존 문서 페이지 분할 무영향 확인
  • fmt/clippy clean

co-anchored float 표 배치가 선행 float 점유 영역(visible_float_exclusions)을 consult하도록 한 수정이 정확합니다. 앞으로의 기여도 기대하겠습니다. 감사합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants