Task #157: 비-TAC wrap=위아래 표 out-of-flow 배치#266
Merged
edwardkim merged 3 commits intoedwardkim:develfrom Apr 24, 2026
Merged
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…#157) layout.rs: Para-relative float 표(vert=Para, TopAndBottom, non-TAC)를 vpos 기준점 리셋 예외 처리하여 앵커 문단 y 좌표 drift 수정. 초기화 시 lazy_base가 잘못된 값으로 교정되어 표 y가 body_bottom에 clamp → 텍스트와 중첩되는 버그 해결. engine.rs: Para-float 표가 body 범위 내에 완전히 들어오는 경우 effective_table_height = 0.0 방어 코드 추가. - 수정: layout.rs(is_para_float_table 예외, +18줄) pagination/engine.rs(effective_table_height 보정, +4줄) - 테스트: svg_snapshot.rs issue_157_page_1 신규 등록 - golden: tests/golden_svg/issue-157/page-1.svg - 검증: cargo test 941+4 passed, Table pi=25 LAYOUT_OVERFLOW 해소 Table y 894.7px(clamp) → 819.2px(정상) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
edwardkim
approved these changes
Apr 24, 2026
Owner
edwardkim
left a comment
There was a problem hiding this comment.
Approved. 🎉
검토 결과
@seanshin 님, 긴 시간 걸린 레이아웃 버그 수정 감사합니다. #103과 #157을 근본 원인 공유로 동시 해결하신 점이 인상적입니다.
특히 인상 깊은 부분
- 루트 원인 정확 — Para-relative float 표의 vpos 기준점 리셋이 후속 문단 vpos를 잘못된 lazy_base로 교정 → 앵커 y body_bottom clamp → 중첩. 원인 경로 추적이 명확.
- 수정 범위 타이트 —
is_para_float_table를 3-조건 AND (!treat_as_char && TopAndBottom && VertRelTo::Para) 로 엄격히 한정. TAC/Shape/기타 케이스 영향 없음. - Golden SVG 등록 — 507줄 전체 페이지 스냅샷. 향후 회귀 즉시 감지 가능.
메인테이너 검증
| 항목 | 결과 |
|---|---|
cargo test --test svg_snapshot |
✅ 4 / 0 (issue_157 포함) |
cargo test --lib |
✅ 963 / 0 / 1 ignored |
cargo clippy --lib -- -D warnings |
✅ clean |
cargo check --target wasm32 |
✅ clean |
| devel 자동 merge 시뮬레이션 | ✅ 충돌 0건, 머지 후 964 / 0 |
| WASM Docker 빌드 | ✅ 성공 |
| rhwp-studio 브라우저 시각 검증 | ✅ 주주총회 참석장 2페이지 중첩 해소 확인 |
후속 요청 (merge 후 별도 커밋 가능)
CLAUDE.md 절차 기준으로 아래 문서가 누락되어 있습니다:
- 최종 보고서
mydocs/report/task_m100_157_report.md— 전체 타스크 정리 (근본 원인, 수정, 검증, 파급 효과) - 구현 계획서에 2단계 이상이 있었다면 stage2/stage3 보고서 (현재 stage1.md만 존재)
코드 수정과 검증이 양호하여 merge 진행합니다. 후속 커밋으로 문서만 보완 부탁드립니다.
BEHIND 상태이지만 충돌 없이 자동 merge 가능합니다 — 진행합니다.
edwardkim
added a commit
to seanshin/rhwp
that referenced
this pull request
Apr 24, 2026
# Conflicts: # mydocs/orders/20260424.md
edwardkim
added a commit
that referenced
this pull request
Apr 24, 2026
edwardkim
added a commit
that referenced
this pull request
Apr 24, 2026
…, #103) - 작성자: @seanshin (Task #157, PR #266) - Merge commit: a65bd06 (admin merge, BEHIND 상태였으나 충돌 없음) - 이슈 #157, #103 closed (근본 원인 공유) 변경: - src/renderer/layout.rs: Para-relative float 표 vpos 리셋 예외 - src/renderer/pagination/engine.rs: effective_table_height 방어 - tests/golden_svg/issue-157/page-1.svg 신규 (507줄) 검증: - cargo test --lib: 964 passed / 0 failed (merge 시뮬레이션) - cargo clippy + wasm32 check: clean - WASM Docker 빌드 + rhwp-studio 브라우저 시각 검증 성공 후속 요청: 최종 보고서(task_m100_157_report.md) + stage2/3 보고서 작성자 제출 대기 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
Apr 24, 2026
…r 복구 (closes #275) - 작성자: @planet6897 (Task #275, PR #278) - Merge commit: 2a27b36 (admin merge, orders 문서 충돌 직접 해결) - 이슈 #275 closed - 커뮤니티 리뷰: @seanshin APPROVED 처리 절차: - PR 브랜치에 origin/devel 머지 → orders 문서 충돌 해결 (Task #275 섹션 "## 5" 재배치) - planet6897/local/task275에 push (maintainerCanModify 허용) - 재승인 + admin merge 검증: - cargo test --lib svg_fragment: 19 passed / 0 failed - cargo test --lib: 983 passed / 0 failed / 1 ignored (+19 신규 svg_fragment) - cargo clippy + wasm32 check: clean - svg_snapshot: 6 passed 파급 효과: WASM canvas 에서 OLE 네이티브 이미지/EMF/OOXML 차트/Placeholder 모두 복구 ===== 오늘 처리 5개 PR 완료 ===== #284 (#280) @planet6897 - 수식 폰트 스택 #285 (#283) @planet6897 - 수식 파렌 글리프 #266 (#157/#103) @seanshin - 비-TAC 표 out-of-flow #273 (#267) @seanshin - right tab 공백 처리 #277 (#147) @seanshin - MEMO 바탕쪽 오분류 #278 (#275) @planet6897 - WASM OLE RawSvg/Placeholder 별도 추적: 이슈 #291 (KTX.hwp 2단 TAC 표 회귀, 핀셋 처리 예정) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
Apr 24, 2026
#297) - 작성자: @planet6897 (Task #297, PR #300, 오늘 6번째 기여) - Merge commit: 0e3fb02 (admin merge, orders 3구간 충돌 직접 해결) - 이슈 #297 CLOSED 처리 절차: - PR 브랜치에 origin/devel 머지 → orders 섹션 3구간 해결 (#295 "## 7", #296 "## 8", #297 "## 9") - planet6897/task297 에 push - 재승인 + admin merge 변경 (1파일): - src/renderer/layout/table_layout.rs +5 -2: - VertRelTo::Page => (col_area.y, col_area.height) [쪽 본문 영역] - VertRelTo::Paper => (0, page_h_approx) [용지 전체, 유지] - HWP 스펙 Page=쪽 본문, Paper=용지 전체 반영 성과: - pi=22 "* 확인 사항" 박스 y: 1371.5 → 1224.07 (PDF 1226.5 ±2 일치) - 145 샘플 중 본문 Page 표 13건 + 바탕쪽 5건 회귀 스캔 완료 (의도 범위 외 무회귀) 검증: - cargo test --lib: 992 passed - svg_snapshot: 6 passed (golden 유지) - 실제 SVG y 좌표 확인: 1224.07px (PDF 일치) #295 → #297 연결 모범 사례: PR #298 리뷰 중 사전 존재 버그로 분리 → 1시간 만에 PR #300 해결. 초기 가설(바탕쪽 Paper) 폐기 → pdftotext 실측으로 근본 원인(enum 미구분) 발견 → 1줄 수정. ===== 오늘 9번째 PR 머지 ===== #284 #285 #266 #273 #277 #278 #289 #292 #298 #300 + 메인테이너 핀셋 #296 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
seanshin
pushed a commit
to seanshin/rhwp
that referenced
this pull request
Apr 26, 2026
- mydocs/report/task_m100_157_report.md 신규 작성 - 수행계획서 원인 분석과 실제 원인(layout.rs vpos 리셋) 차이 기록 - 단계 1(layout.rs) + 단계 2(engine.rs) + 단계 3(검증) 통합 정리 - stage1.md에 단계 2·3 내용이 이미 통합됨 (단계별 진행 중 합산) - PR edwardkim#266 메인테이너 리뷰 결과 및 edwardkim#103 동시 해결 파급 효과 포함 Requested-by: edwardkim (PR edwardkim#266 review comment)
seanshin
pushed a commit
to seanshin/rhwp
that referenced
this pull request
Apr 26, 2026
- 최근 변경: v0.7.3 → v0.7.6 (2026-04-26) 교체 - PR edwardkim#266 (Task edwardkim#157), edwardkim#273 (Task edwardkim#267), edwardkim#282 (Task edwardkim#279) by @seanshin - PR edwardkim#256, edwardkim#327, edwardkim#341, edwardkim#343 by @planet6897 - PR edwardkim#334, edwardkim#335 by @oksure, PR edwardkim#339 by @postmelee - devel 섹션: 머지된 항목 제거, 현재 분석 중(edwardkim#362/edwardkim#345) + 계획 중(edwardkim#150/edwardkim#253) 반영 - 테스트 수: 891+ → 1000+ - README_EN.md 동일 내용 영문 반영
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
개요
비-TAC
wrap=위아래(TopAndBottom)+vert=Para표가 텍스트와 중첩되는 버그 수정.Fixes #157, #103
원인
layout.rs의 vpos 기준점 리셋 로직이 Para-relative float 표 처리 후 무조건 실행되어,한컴이 Para-float 기준으로 기록한 후속 문단 vpos가 잘못된 lazy_base로 교정됨.
수정
1.
src/renderer/layout.rs— vpos 기준점 리셋 예외Para-relative float 표(
!treat_as_char+TextWrap::TopAndBottom+VertRelTo::Para)는vpos 기준점 초기화에서 제외.
2.
src/renderer/pagination/engine.rs— effective_table_height 방어Para-float 표가 body 범위 내에 완전히 들어오면
effective_table_height = 0.0.검증
cargo testcargo clippy --lib -- -D warningstests/golden_svg/issue-157/page-1.svg신규 등록🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com