fix(renderer): VPOS_CORR lazy_base trailing-ls bridge 정합 — 본문 하단 잔여 overflow 해소 (closes #1049)#1054
Closed
planet6897 wants to merge 1 commit into
Closed
fix(renderer): VPOS_CORR lazy_base trailing-ls bridge 정합 — 본문 하단 잔여 overflow 해소 (closes #1049)#1054planet6897 wants to merge 1 commit into
planet6897 wants to merge 1 commit into
Conversation
…verflow 해소 (closes edwardkim#1049) 특정 폼 페이지(인라인 1×1 TAC 표 직후 vpos 연속 본문)에서 본문 마지막 줄이 본문 하단을 ~4.6px 초과하던 spurious overflow 를 해소. 근본 원인 (줄높이 모델 아님 — edwardkim#1046 가설 반증): - height_cursor.rs::vpos_adjust 가 인라인 TAC 표 직후 vpos_page_base 리셋 후 lazy_base 를 재산출할 때, Task edwardkim#1022 v2 trailing-ls bridge(+trailing_ls_hu)가 직전 본문 문단의 trailing 줄간격(예 960HU=12.8px)을 base 에서 또 빼 lazy_base 과소 → 이후 lazy 문단 전부 +12.8px 과대 전진 → 마지막 줄 본문 초과. (페이지네이터는 인라인 TAC 에 리셋 안 해 정확 — 두 엔진 발산.) 수정 (1지점): - vpos 연속(curr_first_vpos == prev_vpos_end) + 직전 실텍스트 본문 문단이면 trailing_ls 가 이미 연속 vpos·sequential y 에 포함되므로 bridge 를 끈다. - gap(top-box 후 본문·footnote-01 p1) 또는 직전 빈 문단(복학원서 page1, 빈줄 높이 억제)은 bridge 유지 → 무회귀. 검증: cargo test --release 1517 passed / 0 failed (골든 SVG 전수, footnote-01·복학원서 포함), clippy 0. 한컴 2022 PDF(보안 서약서 폼) 시각 정합. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Owner
|
검토 완료 — merge 수용. devel 에 반영합니다. 검증 결과
처리
평가#1046 가설 반증 + 진짜 원인 정확 식별의 진단 본질이 뛰어납니다. 렌더러·페이지네이터 발산을 본질로 명시한 점도 정합입니다. 페이지네이터 ( 2 조건 좁힘 가드 (
비회귀 영역을 명시적으로 식별해서 종전 동작을 보존하는 설계 패턴이 PR #1044 (1×1 wrapper 외곽 lookup) 와 일관됩니다.
기여 감사합니다. |
Owner
|
devel 반영 완료 (cherry-pick). PR close 합니다. |
This was referenced May 21, 2026
edwardkim
pushed a commit
that referenced
this pull request
May 22, 2026
…t check 복구) Task #1058 Stage 16 (adaa0b0) 에서 추가된 신규 파일이 rustfmt 정합 미통과 — devel CI #970 (sha=749048c9) Format check 실패. cargo fmt 적용으로 정정. 본 환경 cargo fmt --check 전체 exit 0 검증. 본 정정은 PR #1057 처리 진행 전 devel CI 회복 위한 단독 commit. 다른 처리분 (PR #1054/#1059 누적 + 예정 PR #1057) 은 별도 누적 push 계획 (작업지시자 결정 "본 PR 처리분 누적 후 push"). 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>
edwardkim
added a commit
that referenced
this pull request
May 22, 2026
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.
배경
#1049 (#1046 후속). 특정 폼 페이지(인라인 1×1 TAC 표 직후 vpos 연속 본문)에서 본문 마지막 줄이 본문 하단을 ~4.6px 초과하는 spurious overflow.
근본 원인 (줄높이 모델 아님)
#1046 진단의 "렌더러 줄높이 과대 계산" 가설은 반증됨 —
corrected_line_height는 정확(20.0px).진짜 원인은
src/renderer/height_cursor.rs::vpos_adjust의 lazy_base 오산출:vpos_page_base가 리셋(layout.rs:2538)되어 lazy 경로로 전환.+ trailing_ls_hu)가 직전 본문 문단의 trailing 줄간격(예: 제목 960 HU = 12.8px)을 base 에서 또 빼lazy_base가 과소산출.수정 (1지점)
vpos_adjust의 trailing-ls bridge 를 다음 조건에서만 끈다:curr_first_vpos == prev_vpos_end) 이고 직전이 실텍스트 본문 문단일 때 — trailing_ls 가 이미 연속 vpos·sequential y 에 포함되므로 bridge 가 이중 차감.다음은 종전대로 bridge 유지(무회귀):
검증
cargo test --release: 1517 passed / 0 failed (골든 SVG 전수 — footnote-01·복학원서 포함 무회귀)cargo clippy: 경고 0변경
src/renderer/height_cursor.rs(+22/-5)mydocs/수행·구현 계획서 + 단계/최종 보고서closes #1049
🤖 Generated with Claude Code