Task #1043: 중첩 표 1×1 wrapper 외곽 테두리 lookup off-by-one 정정#1044
Closed
planet6897 wants to merge 1 commit into
Closed
Task #1043: 중첩 표 1×1 wrapper 외곽 테두리 lookup off-by-one 정정#1044planet6897 wants to merge 1 commit into
planet6897 wants to merge 1 commit into
Conversation
src/renderer/layout/table_layout.rs 의 1×1 wrapper 분기에서 외곽 테두리 borderFill 을 조회할 때 cell.border_fill_id(1-based borderFillIDRef)를 border_styles(0-based Vec) 인덱스로 그대로 사용해, 한 칸 어긋난 borderFill (테두리 NONE)을 읽어 wrapper 외곽 실선 테두리가 누락되었다. 같은 파일의 다른 모든 lookup(일반 셀/표/zone)과 동일하게 .saturating_sub(1) 로 변환하도록 정정. 회귀 가드: tests/issue_nested_table_border.rs 에 신규 테스트 추가 (samples/k-water-rfp.hwp p19). 내부 표 점선 외곽과 y 가 겹치는 전폭 실선 외곽선 존재를 확인 — 좌표 hardcode 없이 '외곽 박스 = 내부 표 외곽' 관계로 판정. 버그 시 0건→실패, 정정 시 2건→통과 양방향 확인. 기존 exam_social 테스트는 무영향 유지. closes edwardkim#1043 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
|
검토 완료 — merge 수용. devel 에 반영합니다. 검증 결과
처리
평가off-by-one 단순 정정 (1 라인) 인데도 정밀한 진단 + 본 환경 재현 가능한 회귀 테스트 + bisect 양방향 검증까지 갖춘 모범적 PR 입니다. 같은 파일의 다른 모든 lookup 과 일관성을 맞춘 점 (모든 borderFill lookup 이 회귀 테스트의 구조 관계 판정 (좌표 hardcode 없이 "내부 표 점선 외곽과 같은 y 의 실선" 으로 판정) 설계가 특히 인상적입니다. 페이지네이션 시프트나 무관한 다른 표의 영향을 받지 않아 장기적으로 안정적인 가드가 됩니다. PR 본문 1차 증상 샘플 ( 기여 감사합니다. |
Owner
|
devel 반영 완료 (cherry-pick). PR close 합니다. |
edwardkim
pushed a commit
that referenced
this pull request
May 21, 2026
Task #1043 중첩 표 1×1 wrapper 외곽 테두리 lookup off-by-one 정정. src/renderer/layout/table_layout.rs:239 1 라인 정정 (다른 lookup 들과 일관성 확보) + 본 환경 재현 가능 회귀 가드 (k-water-rfp.hwp p19). CI 전부 pass + cargo test 1323 passed + 회귀 가드 본 환경 실증 + 작업지시자 시각 판정 통과 → merge 수용. PR #1039 의 "정량 게이트 충족 시 시각 판정 면제 가능" 패턴 강화 사례 (본 환경 회귀 재현 + 시각 판정 동시 통과). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
pushed a commit
that referenced
this pull request
May 21, 2026
…okup off-by-one 정정 table_layout.rs:239 의 1-based borderFillIDRef 를 0-based Vec 인덱스로 그대로 사용한 off-by-one 정정 (다른 lookup 들과 일관성 확보). 본 환경 회귀 가드 (k-water-rfp.hwp p19) 실증 + 작업지시자 시각 판정 통과. PR #1039 의 "정량 게이트 충족 시 시각 판정 면제 가능" 패턴 강화 사례 — 회귀 가드 본 환경 재현 + 시각 판정 동시 통과. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
pushed a commit
that referenced
this pull request
May 22, 2026
VPOS_CORR lazy_base trailing-ls bridge 정합 (closes #1049). #1046 가설 "렌더러 줄높이 과대 계산" 반증 + 진짜 원인 (vpos_adjust::lazy_base 의 trailing-ls bridge 이중 차감) 정확 식별. 2 조건 좁힘 가드 (vpos 연속 + 실텍스트 본문) 로 footnote-01/복학원서 비회귀 보장. CI 전부 pass + cargo test 1323 passed + 골든 SVG 무회귀 + 시각 판정 면제 (PR #1044 패턴 — 정량 게이트 충족) → merge 수용. feedback_diagnosis_layer_attribution 권위 사례 — 가설 반증 후 진짜 원인 식별. feedback_image_renderer_paths_separate 영역 정합 (렌더러·페이지네이터 발산 해소). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
pushed a commit
that referenced
this pull request
May 22, 2026
U+00B7 폭 폰트 metric 정합 — 비례폰트 .notdef 위장값 가드 (HaimLee-4869). cmap .notdef → em_size 위장 메커니즘 정확 식별 + 3 조건 좁힘 가드 (U+00B7 + 전각 위장 + 비례폰트) + monospace 보존 (Issue #630 정합). CI no checks reported (첫 fork PR 권한 정책) → 본 환경 직접 검증으로 대체. 시각 판정 면제 (PR #1044/#1054 패턴 — 정량 게이트 4 조건 충족). 본 환경 검증: cargo test --lib 1324 passed + 신규/기존 회귀 가드 + svg_snapshot 8/8 통과. #1055 회귀와 무관 확인 (sample16-hwp5 에 U+00B7 0 건). feedback_hancom_compat_specific_over_general 권위 사례. feedback_image_renderer_paths_separate 정합 (native·WASM 공유 함수 가드). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
pushed a commit
that referenced
this pull request
May 22, 2026
3 PR 본질 + 3 archives 통합 — author 보존 cherry-pick: - PR #1054 (closes #1049, Jaeook Ryu): VPOS_CORR lazy_base trailing-ls bridge 정합. #1046 가설 반증 후 진짜 원인 (이중 차감) 정확 식별. - PR #1059 (HaimLee-4869): U+00B7 폭 폰트 metric 정합 — 비례폰트 .notdef 위장값 가드. native·WASM 공유 함수 가드. - PR #1057 (Refs #536, seorii): CanvasKit direct replay contract harden (P17). 4 path 동시 정합 + Copilot 6/6 반영. 본 환경 cargo test --release --lib 1324 passed, 0 failed. CI 전부 pass. 시각 판정 면제 (모두 정량 게이트 충족) — 메모리 룰 후보 권위 사례 누적 (PR #1039→#1044→#1054→#1059→#1057 5 사례). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
이슈
closes #1043 — 중첩 표 외곽선 미표시 (1×1 wrapper 외곽 테두리 lookup off-by-one)
원인
src/renderer/layout/table_layout.rs::layout_table의 1×1 wrapper 분기에서 외곽 테두리 borderFill 을 조회할 때cell.border_fill_id(1-basedborderFillIDRef)를 0-basedborder_stylesVec 인덱스로 그대로 사용했다. 같은 파일의 다른 모든 lookup(일반 셀/표/zone)은.saturating_sub(1)로 변환하는데 이 분기만 누락되어, 한 칸 어긋난 borderFill(테두리 NONE)을 읽어 wrapper 외곽 실선 테두리가 누락되었다.수정
좌표/렌더 로직 변경 없음. 본 수정으로 모든 borderFill lookup 이
-1로 일관된다.회귀 테스트
tests/issue_nested_table_border.rs신규 테스트nested_table_border_kwater_rfp_p19_outer_outline_present(trackedsamples/k-water-rfp.hwpp19). 내부 표 점선 외곽과 y 가 겹치는 전폭(>500px) 실선 외곽선 존재를 확인 — 좌표 hardcode 없이 '외곽 박스 = 내부 표 외곽' 관계로 판정.기존
exam_social테스트는 무영향 유지.검증
cargo test전체 0 failedcargo fmt --check(수정 파일) clean🤖 Generated with Claude Code