Task #544: passage 글상자 좌표 정정 (closes #544)#560
Closed
planet6897 wants to merge 5 commits intoedwardkim:develfrom
Closed
Task #544: passage 글상자 좌표 정정 (closes #544)#560planet6897 wants to merge 5 commits intoedwardkim:develfrom
planet6897 wants to merge 5 commits intoedwardkim:develfrom
Conversation
… 산식 정정) paragraph_layout.rs: 1. inner_pad 분기 제거 (line 693~717 → 693~700, -22 LOC) - has_visible_stroke / bs_left_px / bs_right_px / inner_pad_left/right 변수 모두 제거 - margin_left = box_margin_left (단일 룰, 텍스트 inset 한 번만) 2. box_x/w 산식 정정 (line 2687~2691) - override 케이스: (ox, ow) — margin 미적용 - 일반 케이스: (col_area.x, col_area.width) — margin 미적용 - paragraph border outline = col_area 전체 (PDF 한컴 2010 정합) integration_tests.rs: - test_544_passage_box_coords_match_pdf_p4 의 #[ignore] 제거 → GREEN - test_547_passage_text_inset_match_pdf_p4 의 #[ignore] 제거 → GREEN 검증: - cargo test --lib: 1121 passed / 3 ignored (baseline 1119/5 → +2 GREEN, -2 ignored) - 회귀 0건 - test_552_passage_box_top_gap_p2_4_6 (--ignored) GREEN 유지 → Task edwardkim#552 가 Task edwardkim#544 (2) 효과 흡수 (Stage 1 finding 확정) 측정값: - test_544: box_left_x 128.51 → 117.0 (PDF 117.0 ±2), box_width 425.1 - test_547: min_x 139.89 → 128.5 (PDF 128.5 ±2) 작업지시자 보고 증상 (글상자 우측 시프트) 직접 fix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…y-pick @planet6897 1 commit) 옵션 A2 채택 — `05beb208` (Task edwardkim#544 v2 Stage 2) 단독 cherry-pick. B1 진단 결과 본 devel 의 Task edwardkim#479 미적용 trailing-ls 모델 확인 → 당초 옵션 A3 (edwardkim#552 + v2 + v3) 의 모델 전환 위험 회피 → 최소 fix 채택. - mydocs/pr/pr_551_review_v3_544_a2.md (검토 문서) - mydocs/pr/pr_551_v3_544_a2_report.md (처리 보고서) - mydocs/orders/20260504.md (오늘할일 신규) closes edwardkim#544 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… (옵션 A2 — passage 글상자 우측 시프트 정정 — @planet6897 1 commit) 작업지시자 보고: "21_언어_기출_편집가능본.hwp 1/2/4/5/7/8/11/13/14 페이지 글상자가 오른쪽으로 밀려있음". 이슈 edwardkim#544 (closed) 재오픈 후 PR edwardkim#551 잔존 cherry-pick. 당초 옵션 A3 (edwardkim#552 + v2 + v3) 검토했으나 B1 진단 결과 본 devel 의 Task edwardkim#479 미적용 (pre-edwardkim#479 trailing-ls 항상 가산 모델) 확인 → edwardkim#552/v3 cherry-pick 시 모델 전환 위험. 옵션 A2 (`05beb208` 단독, edwardkim#547+edwardkim#544(1) 통합) 채택. 본질 정정 (paragraph_layout.rs): 1. box_x = col_area.x / box_w = col_area.width (margin 미적용, paragraph border outline = col_area 전체). 2. inner_pad 분기 제거 (visible-stroke + bs=0 인 경우 margin_left = box_margin_left + inner_pad_left 이중 적용 → 단일 적용). 측정 (페이지 4 [7~9]): - 박스 left x: 128.51 → 117.17 (PDF 117.0) - 박스 width: 402.5 → 425.17 (PDF 425.1) - 본문 첫 글자 '평' x: 153.12 → 128.51 (PDF 128.5) - 9 박스 (col 0/1) 모두 정합 검증: - cargo test --lib 1120 / test_544+test_547 +2 GREEN / 회귀 0건 - clippy 0 신규 (pre-existing 2건 동일 baseline) - 5 샘플 58 페이지 광범위 sweep: 38 differ (의도된 paragraph border 정합 변경, visible-stroke paragraph text -11.33 px 좌측 시프트 의도) - 회귀 검출 가능 영역 (비-border paragraph text) 0 변경 - 작업지시자 시각 판정 통과 cherry-pick 1 commit: - 457d5f3 Task edwardkim#544 v2 Stage 2 (`05beb208` from @planet6897) 처리 보고서: mydocs/pr/pr_551_v3_544_a2_report.md 검토 문서: mydocs/pr/pr_551_review_v3_544_a2.md closes edwardkim#544 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- mydocs/pr/pr_551_review_v3_544_a2.md → archives/ - mydocs/pr/pr_551_v3_544_a2_report.md → archives/ - mydocs/orders/20260504.md: 처리 상태 갱신 (devel merge f6039f3 push + 이슈 edwardkim#544 close) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
planet6897
added a commit
to planet6897/rhwp
that referenced
this pull request
May 4, 2026
…indent cherry-pick @planet6897 `9dc40ddb` (Task edwardkim#544 v2 Stage 3 — Phase C edwardkim#548). 원 commit 의 Phase C 만 본 사이클에서 cherry-pick (Task edwardkim#544 본질은 이미 별도 사이클에서 처리됨, PR edwardkim#560). table_layout.rs (+41 LOC): 1. effective_margin_left_line 헬퍼 추가 (paragraph_layout 의 line_indent 산식과 동일): - positive indent: line 0 에 +indent - negative (hanging): line N≥1 에 +|indent| 2. inline_x 산출 3 분기 (Left/Justify) 에 line_margin 가산: - paragraph 시작 (line 0) - Picture target_line reset (Task edwardkim#500 정합) - Shape target_line reset (Task edwardkim#500 + edwardkim#520 정합) 3. para_margin_left_px / para_indent_px 추출 (ParaShape 에서) integration_tests.rs: - test_548_cell_inline_shape_first_line_indent_p8 의 #[ignore] 제거 → GREEN conflict resolution: - src/renderer/layout/table_layout.rs Shape 분기 (line 1648-1693): incoming 채택 (HEAD 빈 영역 + incoming block 삽입, surrounding context 불일치로 auto-merge 실패, 의미는 단순 삽입) - src/renderer/layout/integration_tests.rs: auto-merge closes edwardkim#548 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 tasks
…이 종결) Stage 1 분석 결과 시프트 양 ~1.0-1.5px (75-110HU @ 96dpi). ㉠/㉡ 만의 결함이 아닌 표 전 셀 동일 시프트 — 폰트 fallback (한컴윤고딕 ↔ HY신명조→Batang) 어센트 차이로 설명 가능. ㉠/㉡ 의 원형 글리프 특성상 시각적 도드라짐 강한 케이스로 결론. 가설 검증: baseline 산식 (bl=978HU) 확정 — paragraph_layout.rs:835. CharShape char_offsets/valign/padding/scale 분기 모두 기각. 옵션 B (산식 정정) 미채택 사유: 광범위 표 셀 회귀 리스크 vs 시각 개선 미미. 후속 필요 시 별도 타스크. closes edwardkim#566
edwardkim
added a commit
that referenced
this pull request
May 4, 2026
…v2 + Task #555) cherry-pick (작업지시자 옵션 A — 7 commits 모두): - a30dca7 (457d5f3): Task #544 v2 Stage 2 paragraph border 좌표/inset - f30b352 (b146b83): PR #551 Task #544 핀셋 처리 보고서 + 검토 문서 - (skip) (f6039f3): merge commit — 이미 적용된 영역 - f45f6a0 (f807378): PR #551 Task #544 처리 후속 archives 이동 - af556a5 (096b573): Task #555 수행/구현 + Stage 1 진단 - f44a721 (beade38): Task #555 Stage 2-4 옛한글 PUA 폰트 매트릭스 정정 (옵션 A) - 4af03b7 (eac36f2): Task #555 최종 보고서 검증: - cargo test --lib 1123 passed (Task #555 단위 테스트 +3 GREEN) - cargo test --test issue_546/530/505/418/501 회귀 0 - cargo test --test svg_snapshot 6/6 passed - cargo clippy --lib 0 건 - WASM 4,585,998 bytes (+42,568 from Task #528, Task #544 v2 + #555 반영) + studio 동기화 작업지시자 시각 판정 (web Canvas): - "웹 에디터에서 옛한글 매트릭스 개선이 시각적으로 확인되었습니다. 아직 미진한 점이 있지만 분할 정복 전략에 맞는 접근법입니다." 본 PR 의 본질: - Task #555 (closes #555): 옛한글 PUA → 자모 변환 후 폰트 매트릭스 갱신 · effective_text_for_metrics 헬퍼 + 호출처 10건 패치 · 13 fixture 481 페이지 481/481 byte-identical (PR 본문) · Conservative fix (현재 visual 영향 없음, 잠재적 결함 차단) - Task #544 v2: paragraph border 좌표/inset 산식 (PR #560 사이클 영역, 본 환경 처음 적용) 컨트리뷰터 메모리 룰 적용 정합: - feedback_no_pr_accumulation, feedback_per_task_pr_branch - feedback_essential_fix_regression_risk, feedback_rule_not_heuristic 산출물: - mydocs/pr/pr_562_report.md (처리 결과) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 4, 2026
…PUA 폰트 매트릭스 — @planet6897 6 commits) — closes #555 본 PR 은 외부 컨트리뷰터 @planet6897 (Jaeuk Ryu) 의 PR. Task #528 후속 결함 (이슈 #555: 옛한글 PUA → 자모 변환 후 폰트 매트릭스 갱신) 정정. 작업지시자 결정으로 옵션 A (7 commits 모두 cherry-pick) 진행 — Task #555 의 본질 외에 PR #551 Task #544 v2 처리 영역 (PR #560 사이클 영역) 도 함께 본 환경에 적용. cherry-pick (6 commits + merge commit 1건 skip): - Task #544 v2 Stage 2: paragraph border 좌표/inset 산식 정정 · paragraph_layout.rs box_x/w 산식 + inner_pad 분기 제거 - PR #551 Task #544 핀셋 처리 보고서 + 검토 + archives - Task #555: 옛한글 PUA → 자모 변환 후 폰트 매트릭스 갱신 (3 commits) · effective_text_for_metrics 헬퍼 (composer.rs) · 호출처 10건 패치 (composer / layout / table_layout) · Task #555 단위 테스트 +3 GREEN 본질 (Task #555): - Task #528 의 Option A (렌더러 시점 변환) 의 인덱싱 불변성 trade-off 로 run.text 가 PUA char 1글자 보존 → 폰트 매트릭스가 자모 시퀀스와 정합 안 됨 - effective_text_for_metrics(run) = run.display_text.as_deref().unwrap_or(&run.text) fallback 패턴 + 호출처 10건 패치 - Conservative fix: 13 fixture 481 페이지 481/481 byte-identical (PR 본문) 검증: - cargo test --lib 1123 passed (Task #555 단위 테스트 +3 GREEN) - cargo test --test issue_546/530/505/418/501 회귀 0 - cargo test --test svg_snapshot 6/6 passed - cargo clippy --lib 0 건 - WASM 4,585,998 bytes + rhwp-studio 동기화 시각 판정 (작업지시자): - "웹 에디터에서 옛한글 매트릭스 개선이 시각적으로 확인되었습니다. 아직 미진한 점이 있지만 분할 정복 전략에 맞는 접근법입니다." 미진한 영역은 향후 별도 task 로 분할 정복 정합. 컨트리뷰터의 메모리 룰 적용 정합: - feedback_no_pr_accumulation: 새 PR 로 등록 (PR #551 잔존 누적 회피) - feedback_per_task_pr_branch: 별도 fork branch (pr-task555) - feedback_essential_fix_regression_risk: 481 페이지 광범위 sweep - feedback_rule_not_heuristic: 단일 fallback 패턴
Owner
|
@planet6897 님, 본 PR 의 본질 (Task #544 v2 Stage 2 — paragraph border 좌표/inset 산식 정정, `457d5f33`) 은 PR #562 의 옵션 A 처리 시 본 환경에 이미 cherry-pick 으로 반영되었습니다 (devel `a30dca7` 시점에 적용 완료). 본 환경 적용 시점
본 PR close 처리본 PR 의 본질이 PR #562 사이클에서 흡수 처리되었으므로 본 PR 도 close 합니다. 동일 영역의 중복 PR 회피. 사이클 내 잔존 task 처리 권장PR #560 / PR #562 가 PR #551 잔존 task 의 분리 cherry-pick 사이클 (Task #525 / Task #528 / Task #544 / Task #555) 의 일부였습니다. 동일 영역의 다른 task 들은 별도 PR (이미 등록되어 있는 경우 그대로 유지) 로 진행 부탁드립니다. 처리 보고서 (PR #562 사이클): `mydocs/pr/archives/pr_562_report.md` |
edwardkim
added a commit
that referenced
this pull request
May 5, 2026
PR #561 (Task #548, @planet6897 / commit author Jaeook Ryu) 1차 검토: - stacked PR (PR #560 위) — PR #560 은 이미 close + devel 적용 완료 - PR mergeable=CONFLICTING (PR base 시점 차이) 이지만 본질 commit (3de0505 + a0dad0d) cherry-pick 충돌 0 - test_548 이 본 환경 devel 에 RED+#[ignore] 로 이미 존재 (PR #560 cherry-pick 시 들어옴) — fix 적용 시 GREEN 전환 확인 - 단일 룰 (effective_margin_left_line) 정합 + Task #500/#520 정합 명시 + 페이지 8 셀 5 line 0 [푸코] rect 정정 권장 처리: 옵션 A — 핀셋 cherry-pick (3de0505 + a0dad0d) + 결정적 검증 + 작업지시자 시각 판정 (★ 게이트).
edwardkim
pushed a commit
that referenced
this pull request
May 5, 2026
cherry-pick @planet6897 `9dc40ddb` (Task #544 v2 Stage 3 — Phase C #548). 원 commit 의 Phase C 만 본 사이클에서 cherry-pick (Task #544 본질은 이미 별도 사이클에서 처리됨, PR #560). table_layout.rs (+41 LOC): 1. effective_margin_left_line 헬퍼 추가 (paragraph_layout 의 line_indent 산식과 동일): - positive indent: line 0 에 +indent - negative (hanging): line N≥1 에 +|indent| 2. inline_x 산출 3 분기 (Left/Justify) 에 line_margin 가산: - paragraph 시작 (line 0) - Picture target_line reset (Task #500 정합) - Shape target_line reset (Task #500 + #520 정합) 3. para_margin_left_px / para_indent_px 추출 (ParaShape 에서) integration_tests.rs: - test_548_cell_inline_shape_first_line_indent_p8 의 #[ignore] 제거 → GREEN conflict resolution: - src/renderer/layout/table_layout.rs Shape 분기 (line 1648-1693): incoming 채택 (HEAD 빈 영역 + incoming block 삽입, surrounding context 불일치로 auto-merge 실패, 의미는 단순 삽입) - src/renderer/layout/integration_tests.rs: auto-merge closes #548 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 5, 2026
…margin + indent — @planet6897 / Jaeook Ryu 2 commits + 시각 판정 ★ 통과) PR #561 (Task #548, @planet6897 PR / Jaeook Ryu commit author): - stacked PR (PR #560 위) — PR #560 이미 close + devel 적용 완료 - 본질 commits 2건 핀셋 cherry-pick (3de0505 + a0dad0d) 충돌 0 - test_548 RED → GREEN 전환 확인 (본 devel 에 RED+#[ignore] 로 이미 존재) 본질: - effective_margin_left_line 헬퍼 (paragraph_layout 산식과 동일 단일 룰) - 페이지 8 셀 5 line 0 [푸코] inline rect: x=131.04 → 155.60 (PDF 155.6) - 3 분기 (paragraph 시작 / Picture target_line reset / Shape target_line reset) 검증: - cargo test --lib --release 1130 passed (test_548 GREEN) - cargo clippy 0건 - WASM 4,570,220 bytes (PR #589 baseline +447 bytes — table_layout.rs +79 LOC 정합) - 광범위 회귀 sweep (3 샘플 39 페이지) 10 differ — 권위 영역 정합 - 시각 판정 ★ 통과 (한국어/영어 시험지 가독성 개선) closes #548.
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.
Summary
paragraph_layout.rs박스 좌표 산식 (box_x = col_area.x/box_w = col_area.width, margin 미적용) + inner_pad 분기 제거 (visible-stroke + bs=0 인 경우margin_left = box_margin_left + inner_pad_left이중 적용 → 단일 적용)05beb208(Task 21_언어_기출 passage 박스 (paragraph border) 위치/크기 PDF 정합 (Task #540 후속) #544 v2 Stage 2) 핀셋 cherry-pick (457d5f33)본질
col_area.x + box_margin_left/col_area.width - margin*2col_area.x/col_area.widthbox_margin_left + inner_pad_left(이중 적용)box_margin_left(단일 적용)측정 (페이지 4 [7~9]):
옵션 A2 채택 (B1 진단 후)
당초 검토 옵션 A3 (#552 + Task #544 v2 + v3) 대신 A2 (
05beb208단독) 채택.이유: 본 devel 의 Task #479 미적용 (pre-#479 trailing-ls 항상 가산 모델) 확인 → #552/v3 cherry-pick 시 #479-style 분기 신설로 광범위 회귀 위험. 사용자 보고 결함 (글상자 우측 시프트) 은 (1) box_x/w 만으로 직접 fix 가능, (2) box top y 는 본 devel 모델에서 이미 정합 (233.97 ≈ PDF 233.8).
잔존 미반영:
Test plan
cargo test --lib: 1120 passed / 0 failed / 3 ignored — baseline +2 GREEN (test_544_passage_box_coords_match_pdf_p4 + test_547_passage_text_inset_match_pdf_p4)cargo clippy --release --lib: 신규 결함 0건 (pre-existing 2건 동일 baseline)처리 보고서
mydocs/pr/archives/pr_551_v3_544_a2_report.mdmydocs/pr/archives/pr_551_review_v3_544_a2.md🤖 Generated with Claude Code