Task #674: paragraph_layout 측정 corrected_line_height 보정 — 마지막 줄 시각 클립 정정 (closes #674)#678
Task #674: paragraph_layout 측정 corrected_line_height 보정 — 마지막 줄 시각 클립 정정 (closes #674)#678jangster77 wants to merge 3 commits into
Conversation
|
참고로 머지가 완료되면 계획서.hwp 는 repository 에서 삭제 부탁드립니다. 실제 회사 문서라서, 공개하지 않는게 좋아서요. |
closes #672 3 commits 단계별 보존 (Task #672 영역만 — Task #671 영역 commits 영역은 PR #673 영역에서 이미 머지됨): - 071e952 Stage 1: 본질 진단 + 임계값 평가 - b524c4f Stage 2: 본질 정정 — TAC 표 비례 축소 임계값 강화 - d071d37 Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신 본질 정정: - src/renderer/height_measurer.rs:805 영역 단일 분기 - 정정 전: raw > common + 1.0 (절대값 1px 임계값) - 정정 후: raw > common + max(common * 2%, 1px) - 본질: 측정 오차 / line_height 보정 부산물 영역의 미세한 불일치 영역에서 비례 축소 발동 영역 → 셀 콘텐츠 클립 영역. 한컴 권위 영역: 작은 차이 영역 비례 축소 안 함 (계획서.hwp 1.32% 차이 영역 3 줄 정상 표시). - 187 fixture sweep 영역: ≤2% 7 건 면제, ≥5% 11 건 그대로 (의도적 압축 보존) 본 환경 검증: - cherry-pick: Task #672 commits 만 (Task #671 commits 는 PR #673 영역에서 머지됨) - Stage 1+2 깨끗, Stage 3 orders 영역 ours - cargo test --release ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13) - clippy clean - 광범위 sweep 7 샘플 170 페이지: same=167 / diff=3 - 2010-01-06 p5 (1.97% 차이 면제) - synam-001 p19 / p31 (0.38~0.94% 차이 면제) 작업지시자 가설 점검: PR #673 영역의 A1 (자동보정 셀 폭 정정) 영역만으로는 본 PR 영역의 본질 영역 미해결 영역. 두 영역의 본질 영역 다름: - A1: LINE_SEG 채움 영역의 셀 폭 영역 정정 영역 - Task #672: HeightMeasurer 영역의 row_heights 비례 축소 영역의 임계값 영역 PR: #675 컨트리뷰터: @jangster77 (Taesup Jang) — 14번째 사이클 PR 잔존 분리: Issue #674 → PR #678 (paragraph_layout 줄 위치 vs row_heights 정합)
PR #675 (Task #672): TAC 표 비례 축소 임계값 강화 — 작은 차이 (≤2%) 면제 - merge commit: 877e020 (3 commits 단계별 보존 no-ff merge) - 본질: height_measurer.rs:805 영역 단일 분기 — TAC_SHRINK_THRESHOLD_RATIO = 0.02 - 187 fixture sweep: ≤2% 7 건 면제 / ≥5% 11 건 보존 - 본 환경 결정적 검증 1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13 + clippy clean - 광범위 sweep 7 샘플 170 페이지: same=167 / diff=3 (영향 영역만) - WASM 빌드 4,589,098 bytes 작업지시자 가설 점검: "#674 PR 메인테이너 자동보정으로 #675 문제 해결?" → ❌ 미정합 - 그대로 보기 영역 SVG md5 다름 (b66efd77 → cc174155, -706 bytes) - 두 영역 본질 다름: - PR #673 + A1: LINE_SEG 채움 영역의 셀 폭 정정 (document.rs) - PR #675: HeightMeasurer row_heights 비례 축소 임계값 (height_measurer.rs) 작업지시자 시각 판정: - 자동보정 영역 ★ 정합 (셀내 2줄 컨텐츠 한컴처럼 정렬) - 그대로 보기 영역 클립핑 유지 (PR #678 영역 잔존) 작업지시자 결정: 머지 유지 영역 (PR #678 머지 시 자연 해소 영역) 잔존 분리: Issue #674 → PR #678 (paragraph_layout 줄 위치 vs row_heights) closes #672 산출물: - mydocs/pr/archives/pr_675_review.md - mydocs/pr/archives/pr_675_report.md - mydocs/orders/20260508.md 갱신
수행계획서 / 구현계획서 작성 + Stage 1 진단 보고서. 본질 진단: - samples/계획서.hwp 셀 [21] (r=5,c=1) 의 paragraph layout 시작 위치 text_y_start = 379.37 (이론값 cell_y + pad_top = 355.37 보다 24px 큼) - effective_valign=Center, total_content_height=16.00 (잘못!) - mechanical_offset = (64 - 16) / 2 = 24.00 (Center 정렬 보정) 본질 결함 위치: - table_layout.rs:746 calc_para_lines_height 가 line.line_height (raw 5.33 px) 그대로 사용 — corrected_line_height 보정 누락 - line_segs 부재 paragraph fallback line_height (400 HU = 5.33 px) 가 폰트 크기 기반 보정 (21.33 px) 안 받음 → 3줄 × 5.33 = 16 잘못 측정 - height_measurer.rs / paragraph_layout.rs 는 corrected 값 사용 (정합) → table_layout.rs 의 calc_para_lines_height 만 누락 refs edwardkim#674
본질: calc_para_lines_height 가 line.line_height (raw 5.33 px) 그대로 사용 — corrected_line_height 보정 누락. height_measurer.rs / paragraph_layout 은 corrected 사용 (21.33 px). 측정/layout 불일치로 인해 line_segs 부재 paragraph 의 mechanical_offset (Center 정렬) 잘못 계산 → text_y_start 24px 위로 밀림 → 마지막 줄 cell-clip 영역 초과 → 시각 클립. 정정: table_layout.rs:746 calc_para_lines_height 시그니처에 styles 추가 + corrected_line_height 보정 적용 (height_measurer.rs:570-587 와 동일). 호출자 시그니처 정정: - calc_cell_paragraphs_content_height → calc_para_lines_height(styles 추가) - calc_composed_paras_content_height → calc_para_lines_height(styles 추가) 정정 효과: - total_content_height (3줄): 16.00 → 64.00 ✅ - mechanical_offset (Center): 24.00 → 0.00 ✅ - text_y_start: 379.37 → 355.37 (cell_y + pad_top, 정확) ✅ - 줄 2 y: 422.04 (clip 초과) → 397.71 (clip 안) ✅ 검증: - cargo test --lib --release: 1155 passed (회귀 0) - svg_snapshot 6/6 / issue_546 1/1 / issue_554 12/12 / clippy 0 - 시각 판정 ★: 셀 [21] 3줄 모두 표시 + 셀 [52] 3 paragraph 모두 표시 refs edwardkim#674
광범위 페이지네이션 회귀 sweep: - 187 fixtures / 2013 pages BEFORE/AFTER - 차이 0 (회귀 위험 영역 완전 좁힘 입증) 본 task 본질 영역 정정 완료: - calc_para_lines_height 시그니처 + corrected_line_height 보정 적용 - 측정/layout 일관성 정합 (height_measurer 와 동일 로직) - 회귀 위험 좁힘 (정상 인코딩 paragraph 영향 미미) 시각 판정 ★ 통과: - 셀 [21] "목적" 3줄 모두 표시 (마지막 줄 정상 표시) - 셀 [52] "특허 취득" 3 paragraph 모두 표시 (◦특허사무소 검토 / ◦자료제공 / ◦특허의뢰) - 다른 셀 회귀 0 Task edwardkim#671 ~ edwardkim#674 시리즈 완성: - edwardkim#671: 셀 paragraph line_segs 부재 → 줄겹침 (composer.rs) - edwardkim#672: TAC 표 비례 축소 (height_measurer.rs:822 임계값) - edwardkim#674: calc_para_lines_height corrected_line_height 누락 (table_layout.rs) samples/계획서.hwp 시각 결함 완전 해소. 산출물: - mydocs/report/task_m100_674_report.md — 최종 결과 보고서 - mydocs/working/task_m100_674_stage3.md — Stage 3 단계별 보고서 - mydocs/orders/20260507.md — Task edwardkim#674 상태 갱신 closes edwardkim#674
…보정 — 마지막 줄 시각 클립 정정 closes #674 3 commits 단계별 보존 (Task #674 영역만 — Task #671/#672 영역 commits 영역은 PR #673/#675 영역에서 머지됨): - fda8601 Stage 1: 본질 진단 — 24px 오프셋 식별 - f50297b Stage 2: 본질 정정 — calc_para_lines_height 보정 - 230099f Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신 본질 정정: - src/renderer/layout/table_layout.rs:746 영역 calc_para_lines_height 영역 시그니처 영역 + corrected_line_height 영역 보정 적용 (height_measurer.rs 영역과 동일 로직) - 호출자 영역 시그니처 정정: calc_cell_paragraphs_content_height + calc_composed_paras_content_height - 본질: line_segs 부재 셀 paragraph 영역의 fallback line_height (raw 5.33px) 영역이 폰트 보정 (corrected 21.33px) 영역 안 받아 영역 mechanical_offset 영역 잘못 계산 영역 → text_y_start 영역 24px 위로 밀림 영역 → 마지막 줄 cell-clip 초과 영역 → 시각 클립 영역 본 환경 검증: - cherry-pick: Task #674 commits 만 (Task #671/#672 영역은 PR #673/#675 영역에서 머지) - Stage 1+2 깨끗, Stage 3 orders 영역 ours - cargo test --release ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13) - clippy clean - 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅ Task #671 ~ #674 시리즈 완성: - #671: 셀 paragraph line_segs 부재 영역 — composer.rs (recompose_for_cell_width) - #672: TAC 표 비례 축소 영역 임계값 — height_measurer.rs:822 (2% 가드) - #674: calc_para_lines_height corrected_line_height 영역 — table_layout.rs:746 PR: #678 컨트리뷰터: @jangster77 (Taesup Jang) — 15번째 사이클 PR (HWP 3.0 파서 영역의 핵심 영역) 선행 PR: #673 (Task #671) + #675 (Task #672) 영역 머지 영역 후 영역
…즈 완성) PR #678 (Task #674): paragraph_layout 측정 corrected_line_height 보정 - merge commit: f8b38cc (3 commits 단계별 보존 no-ff merge) - 본질: calc_para_lines_height 영역의 corrected_line_height 보정 누락 영역 → 24px 영역 mechanical_offset 잘못 계산 → text_y_start 24px 위로 밀림 → 클립 - 정정: table_layout.rs:746 영역 시그니처 + 보정 + 호출자 시그니처 정정 - 본 환경 결정적 검증 1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13 + clippy clean - 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅ - WASM 빌드 4,589,700 bytes - 작업지시자 시각 판정 ★ 통과 (그대로 보기 + 자동보정 영역 모두 정합) 🎉 Task #671~#674 시리즈 완성: - PR #673 (#671) — 셀 paragraph line_segs 부재 영역 → composer.rs (recompose_for_cell_width) - A1 (메인테이너) — 자동보정 col_width → cell_inner_width (document.rs) - PR #675 (#672) — TAC 표 비례 축소 임계값 → height_measurer.rs (2% 가드) - PR #678 (#674) — calc_para_lines_height corrected_line_height → table_layout.rs @jangster77 (Taesup Jang) — 15번째 사이클 PR (HWP 3.0 파서 영역 핵심 컨트리뷰터) 한컴 LINE_SEG 비표준 영역의 자체 재계산 영역 정합 영역 도달 영역 (project_hancom_lineseg_behavior) closes #674 산출물: - mydocs/pr/archives/pr_678_review.md - mydocs/pr/archives/pr_678_report.md - mydocs/orders/20260508.md 갱신
|
@jangster77 님 15번째 사이클 PR 처리 완료입니다 — Task #671~#674 시리즈 완성 🎉 본 환경 검증 결과: 결정적 검증 통과:
광범위 회귀 sweep (7 샘플 170 페이지): same=170 / diff=0 ✅ 작업지시자 시각 판정 ★ 통과:
→ 그대로 보기 + 자동보정 영역 모두 정합 영역. PR #675 영역의 잔존 영역 (그대로 보기 영역의 클립핑 영역) 영역 자연 해소 영역. 처리: 3 commits 단계별 보존 no-ff merge.
Task #671~#674 시리즈 완성 — 4 단계 영역 본질 분리 영역의 누적 영역:
→ 한컴 LINE_SEG 비표준 영역의 자체 재계산 영역 정합 영역 도달 영역 (`samples/계획서.hwp` 영역의 본 환경 영역의 시각 결함 영역 완전 해소 영역). 본질 정정 영역의 정확성: `table_layout.rs:746` 영역 영역 `calc_para_lines_height` 영역 시그니처 영역에 `styles` 영역 추가 + `corrected_line_height` 영역 보정 적용 영역 (`height_measurer.rs` 영역과 동일 로직 영역). 호출자 영역 시그니처 정정 (calc_cell_paragraphs_content_height + calc_composed_paras_content_height). 처리 보고서: `mydocs/pr/archives/pr_678_report.md` @jangster77 영역의 4 단계 영역 본질 분리 영역의 깔끔한 영역 정합 영역 영역 영역 정합 영역 영역 깊이 영역 감사 영역. HWP 3.0 파서 영역에서 영역 본 시리즈 영역까지 영역 누적 기여 영역 정합 영역. closes #674 |
|
계획서.hwp 는 sample 에서 삭제 부탁드립니다. 실제 회사 문서라서, 공개하지 않는게 좋아서요. |
네. 삭제하겠습니다. |
|
감사합니다.
2026년 5월 8일 (금) 오후 8:02, edward kim ***@***.***>님이 작성:
… *edwardkim* left a comment (edwardkim/rhwp#678)
<#678 (comment)>
계획서.hwp 는 sample 에서 삭제 부탁드립니다. 실제 회사 문서라서, 공개하지 않는게 좋아서요.
네. 삭제하겠습니다.
—
Reply to this email directly, view it on GitHub
<#678 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ASIDG6RFIMAD4LPFCETFPKT4ZW5EDAVCNFSM6AAAAACYUQ4RI6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DIMBVHA4TONRWGA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
요약
calc_para_lines_height의corrected_line_height보정 누락이 본질 결함. line_segs 부재 셀 paragraph 의 fallback line_height (5.33 px) 가 폰트 보정 (21.33 px) 안 받아 mechanical_offset 잘못 계산 → text_y_start 24 px 위로 밀림 → 마지막 줄 cell-clip 영역 초과 → 시각 클립.closes #674
본 PR 은 Task #671 + #672 정정 위에서 분기. 두 PR 머지 후 본 PR 의 diff 가 Task #674 단일 분기 정정으로 자동 축약.
본질 진단
samples/계획서.hwp셀 [21] (r=5, c=1) text_y_start 결정:결함 메커니즘
본질 정정
src/renderer/layout/table_layout.rs:746calc_para_lines_height시그니처에styles추가 +corrected_line_height보정 적용 (height_measurer.rs:570-587 와 동일 로직).호출자 시그니처 정정:
calc_cell_paragraphs_content_height→ calc_para_lines_height(styles 추가)calc_composed_paras_content_height→ calc_para_lines_height(styles 추가)정정 효과
회귀 위험 영역 좁힘
calc_para_lines_height) 보정 적용검증
cargo build --releasecargo test --lib --releasecargo test --release --test svg_snapshotcargo test --release --test issue_546cargo test --release --test issue_554cargo clippy --release광범위 페이지네이션 회귀 sweep
시각 판정 ★ 통과
samples/계획서.hwp1페이지 표:Task #671 ~ #674 시리즈 완성
3 task 시리즈 완성 —
samples/계획서.hwp시각 결함 완전 해소.산출물
src/renderer/layout/table_layout.rs(calc_para_lines_height + 호출자)mydocs/plans/task_m100_674{,_impl}.md,mydocs/working/task_m100_674_stage{1,2,3}.md,mydocs/report/task_m100_674_report.md커밋 시퀀스 (3 단계)