Task #722: hwp3-sample5.hwp wrap=Square 그림 paragraph 시각 정합 (closes #722)#723
Task #722: hwp3-sample5.hwp wrap=Square 그림 paragraph 시각 정합 (closes #722)#723jangster77 wants to merge 8 commits into
Conversation
…loses edwardkim#722) 페이지 8/27/48 의 wrap=Square 그림 paragraph 한컴 PDF 권위 자료 정합 회복. 본질 정정 영역: - typeset.rs: anchor 다음 paragraph register + anchor host self register (image margin_right 추출, LINE_SEG 갯수 + caption_room 가드) - pagination.rs: WrapAnchorRef.anchor_image_margin_right 필드 추가 - paragraph_layout.rs: wrap_anchor 처리 cs/sw 보정 (inter-image-text gap 3mm) 3 paragraph 정합: - 페이지 8 paragraph 175 (LINE_SEG 2): image 우측 wrap zone + gap 3mm - 페이지 27 paragraph 779 (LINE_SEG 1, caption_room>line_height): image 위 caption - 페이지 48 paragraph 1394 (LINE_SEG 1, caption_room≤line_height): image 우측 wrap zone 검증: 1165 lib + clippy clean + 광범위 sweep 209 fixture DIFF 0 + rsvg-convert PNG 시각 판정 PDF 권위 정합 ★ 통과. HWP5 변환본 결함 (hwp3-sample5-hwp5.hwp paragraph 441) 은 별도 issue 분리. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…시각 정합 PR #723 (@jangster77) 옵션 A 처리 — 1 commit cherry-pick + no-ff merge. 본질 정정 (3 영역): - src/renderer/pagination.rs (+6 LOC): WrapAnchorRef 영역 anchor_image_margin_right 필드 추가 - src/renderer/typeset.rs (+56 LOC): anchor 다음 paragraph + anchor host self-register, caption_room 가드 (LINE_SEG ≥ 2 / LINE_SEG 1 + caption_room ≤ line_height → wrap zone, LINE_SEG 1 + caption_room > line_height → caption-style) - src/renderer/layout/paragraph_layout.rs (+10/-3): wrap_anchor 영역 cs/sw 영역 inter-image-text gap (3mm = 852 HU) 보정 대상 영역: - 페이지 8 paragraph 175 (디렉토리 트리 설명) - 페이지 27 paragraph 779 (Figure 4-4 caption — caption-style 보존) - 페이지 48 paragraph 1394 (접근 제어) 자기 검증: - cargo build --release ✅ - cargo test --release: lib 1173 + 통합 ALL GREEN - cargo clippy --release: 신규 경고 0 - 광범위 sweep: 7 fixture / 170 페이지 / 168 same / 2 diff (exam_science_001/002.svg) → text 좌표 시프트 영역, exam_science 영역 wrap=Square 그림 부재 영역 → 작업지시자 시각 판정 게이트 영역 시각 판정 게이트: - 페이지 8/27/48 PDF 권위본 (pdf/hwp3-sample5-2022.pdf) 정합 점검 - exam_science p1 회귀 점검 (text 좌표 시프트 의도성) 분리된 후속: - Issue #732 (Task #724): HWP5 변환본 paragraph 441 영역 별도 처리 closes #722
…#732 통합 결정 - mydocs/pr/archives/pr_723_review.md: 검토 문서 archives 이동 - mydocs/pr/archives/pr_723_report.md: 처리 보고서 작성 · PR 본질 (페이지 8/27/48 PDF 정합) ✅ 시각 판정 통과 · exam_science p1/p2/p8 5번/8번/12번 문항 지문 왼쪽 경계 클립핑⚠️ 회귀 판정 · 처리 결정: 머지 유지 + PR #732 (Task #724, 동일 컨트리뷰터) 후속 통합 - mydocs/plans/archives/task_m100_722.md(_impl).md: plans archives 이동 - mydocs/orders/20260510.md: PR #723 항목 추가 + 후속 영역 PR #732 영역 통합 명시 `feedback_pr_supersede_chain` 신규 패턴 (c) 등록 — 머지+회귀 정정 후속 PR 통합 영역
|
@jangster77 님, 검토 + 머지 완료했습니다. 처리 결과옵션 A (1 commit cherry-pick + no-ff merge 시각 판정 (작업지시자)✅ PR 본질 — 통과
|
- mydocs/pr/archives/pr_725_review.md: 검토 문서 archives 이동 - mydocs/pr/archives/pr_725_report.md: 처리 보고서 작성 · cursor_rect.rs 영역 table_id 격리 + 중첩 표 cellPath 보존 · 회귀 가드 3건 신규 + 광범위 sweep 170/170 same · 시각 판정 면제 합리 (query API + 시각 출력 무영향) - mydocs/plans/archives/task_m100_717.md(_impl).md: plans archives 이동 - mydocs/orders/20260510.md: PR #725 항목 추가 (5/10 사이클 패턴 영역 영역 PR #720/#723/#725 영역 3건)
…am_science 5번/8번/12번 클립핑 정정 본질 - PR edwardkim#723 (Task edwardkim#722) 머지 후 메인테이너 광범위 sweep 에서 발견 (PR edwardkim#723 보고서): exam_science.hwp 1, 2, 8 페이지 — 5번/8번/12번 문항 지문과 그림 배치 영역 에서 지문 왼쪽 끝 경계 글자 클립핑 회귀 (HWP3 native sweep diff 2건). - 진단 영역 — Task edwardkim#722 typeset.rs Block 2 (host_self register, 786~) 가 exam_science p.21 (5번)/p.37 (8번)/p.60 (12번) 의 Square wrap picture (image_voff=0, image_mr=0) 에서 fire → wrap_anchor 등록 후 paragraph_layout 의 wrap_anchor 분기에서 line cs/sw 본 sample line_seg 인코딩 (sw=19592 등) 으로 layout → text justification 영향 → 글자 위치 ±2~13px 시프트 + 좌측 경계 클립핑. 가드 영역 - Task edwardkim#722 의 본질 (sample5 page 8/27/48) 영역 image_mr > 0 (image margin 부재 아님) → 가드 통과, host_self register 정합 보존. - exam_science 의 회귀 영역 image_mr = 0 (image margin 없음, line_seg 가 이미 wrap zone 정합) → 가드 차단, OLD 의 col_area-full-width layout 정합 복원. 검증 - exam_science 1, 2 페이지: feb11e7 baseline 정합 회복 (diff 0) - sample5 page 8/27/48: ab910d6 (Task edwardkim#722 본질) 정합 보존 (diff 0) - exam_eng/aift/synam-001 등 다른 sample: 본 가드 영향 없음 (HEAD 의 다른 PR merge 영역 기존 diff 와 동일) - cargo test --lib --release: 1173 passed - cargo clippy --release --lib: 신규 경고 0 후속 - 메인테이너 광범위 sweep 에서 exam_eng/aift/synam-001 영역의 다른 diff (HEAD 의 multiple devel merge 영역 기존) 확인 필요 시 별도 task.
PR #729 (@oksure) 옵션 A 처리 — 7 commits squash cherry-pick (개별 cherry-pick 영역 영역 commit 영역 영역 의 부분 변경 누적 영역 영역 충돌 발생 영역 영역 영역 PR HEAD 영역 squash 채택) + no-ff merge. 본질 정정 (6 files, +735/-11): - src/renderer/equation/symbols.rs (+87/-5): FontStyleKind 5개 추가 (Blackboard/Calligraphy/Fraktur/SansSerif/Monospace) + 기호 별칭 ~80개 (관계/논리/화살표/연산자/큰 연산자/기호/함수/장식/괄호) - src/renderer/equation/parser.rs (+599/-3): 구조 명령어 (\frac/\dfrac/\tfrac/\text/\operatorname/\binom/\overset/\underset/\stackrel/\phantom) + 환경 파싱 (pmatrix/bmatrix/cases/aligned/array/smallmatrix/split) + LaTeX 호환 테스트 41건 신규 - src/renderer/equation/tokenizer.rs (+40): \\, \, \: \; \!, \{, \}, \|, \# 영역 LaTeX 이스케이프 토큰화 - src/renderer/equation/canvas_render.rs / svg_render.rs / skia/equation_conv.rs (+9/-3): FontStyleKind 5개 영역 exhaustive match 동기 정정 채택 접근: - 메인테이너 권고 영역 영역 듀얼 토크나이저 (별도 파일) → 기존 파서 확장 채택 — 신규 인프라 도입 부재 영역 영역 위험 좁힘 회귀 가드: - test_hwpeq_not_regressed (hwpeq 회귀 가드) — 신규 - equation 모듈 114 PASS (43 → 84 신규 41건 + tokenizer/symbols 영역) 자기 검증: - cargo build/test --release ✅ ALL GREEN - cargo test --lib renderer::equation ✅ 114 PASS - cherry-pick: 개별 영역 영역 충돌 발생 영역 영역 영역 PR HEAD squash 영역 영역 단일 commit 영역 영역 적용 영역 (충돌 0건) - 광범위 sweep: 7 fixture / 170 페이지 / **168 same / 2 diff** (exam_math_014/016.svg) → 회귀 본질: `inf`/`sup`/`lim` 영역 영역 FUNCTIONS HashMap 영역 영역 추가 영역 영역 영역 lookup 우선 매칭 영역 영역 회귀 영역 영역 — exam_math.hwp 영역 영역 hwpeq script 영역 영역 영역 `inf` 영역 영역 ∞ 기호 영역 영역 영역 의미 영역 영역 영역 영역 LaTeX 영역 영역 영역 inf (infimum 함수) 영역 영역 영역 의미 영역 영역 충돌 - WASM 빌드 4.61 MB - 작업지시자 시각 검증: ⓐ LaTeX 입력 (samples/equation-lim.hwp 영역) ✅ 통과 ⓑ exam_math p14/16 회귀 확인⚠️ 처리 결정 (PR #723 영역 영역 (c) 패턴 정합): - PR #729 머지 유지 (LaTeX 본질 확장 영역 영역 보존 영역 영역 본질 통과 영역) - exam_math 회귀 정정 영역 영역 후속 PR 영역 영역 통합 처리 영역 으로 묶음 (`feedback_pr_supersede_chain` 영역 영역 (c) 패턴) 후속 분리 (PR 본문 명시): - UI 명시적 모드 토글 — rhwp-studio (프론트엔드) 범위 영역 별건 이슈 closes #143
- mydocs/pr/archives/pr_729_review.md: 검토 문서 archives 이동 - mydocs/pr/archives/pr_729_report.md: 처리 보고서 작성 · LaTeX 명령어 호환 확장 (FontStyleKind 5개 + 구조 명령어 + 환경 파싱 + 기호 별칭 ~80개) · PR HEAD squash cherry-pick (7 commits → 1 commit `f65ffd03`) · equation 모듈 114 PASS · 작업지시자 시각 검증: LaTeX 입력 ✅ + exam_math p14/16 회귀⚠️ · 처리 결정: 머지 유지 + Issue #762 후속 PR 통합 (PR #723 영역 (c) 패턴) - mydocs/orders/20260510.md: PR #729 항목 추가 (5/10 사이클 영역 영역 5건 처리)
… IR 정합 (closes #724) PR #723 (Task #722) 후속. HWP5 변환본 paragraph 441 wrap zone 매칭 실패 + HWP3 파서 sw=0 인코딩 결함 (한컴 HWP5 변환본 IR 정합 sw=51024 위반). 본질 정정: - typeset.rs: anchor host cs=0 caption-style 매칭 가드 (anchor_image_match) + Task #321 vpos-reset 가드의 wrap_around 강제 종료 (anchor cs=0 한정) - parser/hwp3/mod.rs: 빈 paragraph + page break flag 가드 (column_type=Normal + force_vpos_reset) + wrap_zone 영역 끝 sw=col_area_width 정합화 + wrap_zone 비활성 cs=0/sw=0 정합화 작업지시자 핵심 지적: "HWP3 파서가 잘못해석해서 IR 로 잘못 전달, composer.rs 에서 처리하면 너무 예외" — HWP3 파서 ↔ Document IR 표준 정합 영역 본질 식별. CLAUDE.md HWP3 파서 규칙 정합 (composer/layout 미수정). 3 paragraph 정합 회복 (HWP3 native): - 페이지 4 paragraph 75: image 우측 wrap zone 21 lines - 페이지 9 paragraph 191/192: "루트 파일시스템" 등 표시 회복 - 페이지 16 paragraph 435/441/443: 본문 + image wrap zone HWP5 변환본: - 페이지 16 paragraph 441/442/443: image 우측 wrap zone (anchor_image_match) - 페이지 22 paragraph 599: 페이지 분할 정합 검증: 1166 lib + clippy clean + 광범위 sweep 209 fixture DIFF 0 시각 판정 PDF 권위 정합 ★ 통과. PR #723 (Task #722) 머지 후 적용 요청. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…2번 클립핑 정정 본질 - PR #723 (Task #722) 머지 후 메인테이너 광범위 sweep 에서 발견 (PR #723 보고서): exam_science.hwp 1, 2, 8 페이지 — 5번/8번/12번 문항 지문과 그림 배치 영역 에서 지문 왼쪽 끝 경계 글자 클립핑 회귀 (HWP3 native sweep diff 2건). - 진단 영역 — Task #722 typeset.rs Block 2 (host_self register, 786~) 가 exam_science p.21 (5번)/p.37 (8번)/p.60 (12번) 의 Square wrap picture (image_voff=0, image_mr=0) 에서 fire → wrap_anchor 등록 후 paragraph_layout 의 wrap_anchor 분기에서 line cs/sw 본 sample line_seg 인코딩 (sw=19592 등) 으로 layout → text justification 영향 → 글자 위치 ±2~13px 시프트 + 좌측 경계 클립핑. 가드 영역 - Task #722 의 본질 (sample5 page 8/27/48) 영역 image_mr > 0 (image margin 부재 아님) → 가드 통과, host_self register 정합 보존. - exam_science 의 회귀 영역 image_mr = 0 (image margin 없음, line_seg 가 이미 wrap zone 정합) → 가드 차단, OLD 의 col_area-full-width layout 정합 복원. 검증 - exam_science 1, 2 페이지: feb11e7 baseline 정합 회복 (diff 0) - sample5 page 8/27/48: ab910d6 (Task #722 본질) 정합 보존 (diff 0) - exam_eng/aift/synam-001 등 다른 sample: 본 가드 영향 없음 (HEAD 의 다른 PR merge 영역 기존 diff 와 동일) - cargo test --lib --release: 1173 passed - cargo clippy --release --lib: 신규 경고 0 후속 - 메인테이너 광범위 sweep 에서 exam_eng/aift/synam-001 영역의 다른 diff (HEAD 의 multiple devel merge 영역 기존) 확인 필요 시 별도 task.
…one + HWP3 파서 IR 정합 + exam_science 회귀 정정 PR #732 (@jangster77) 옵션 A 처리 — 2 commits cherry-pick (ab910d6 skip — PR #723 영역 영역 적용 영역) + no-ff merge. 본질 정정: 1. Task #724 본질 (commit a8b8eff) — HWP5 변환본 paragraph 441 wrap zone + HWP3 파서 IR 정합 - typeset.rs (+49): anchor host cs=0 caption-style 매칭 가드 (anchor_image_match) + Task #321 vpos-reset 가드 영역 wrap_around 강제 종료 (anchor cs=0 한정) - parser/hwp3/mod.rs (+37/-5): 빈 paragraph + page break flag 가드 + wrap_zone 영역 끝 sw=col_area_width 정합화 + wrap_zone 비활성 cs=0/sw=0 정합화 - CLAUDE.md HWP3 파서 규칙 정합 (composer/layout 미수정) 2. PR #732 후속 (commit ab2fa52) — exam_science 회귀 정정 (PR #723 영역 영역 host_self register 영역 영역) - typeset.rs (+9/-1): image_margin_right_hu > 0 가드 추가 - exam_science p.21 (5번) / p.37 (8번) / p.60 (12번) 영역 image_mr=0 → 가드 차단 → OLD 의 col_area-full-width layout 정합 복원 - hwp3-sample5.hwp 페이지 8/27/48 (Task #722 본질) 영역 image_mr > 0 → 가드 통과 → 정합 유지 PR supersede 체인 (c) 패턴 권위 사례: - PR #723 (Task #722, 16번째) 머지 commit 6ced74b + 시각 판정 영역 exam_science 회귀 발견 - PR #732 (Task #724, 17번째) 영역 컨트리뷰터 자발 영역 영역 회귀 정정 통합 - feedback_pr_supersede_chain (c) 패턴 정합 자기 검증: - cherry-pick a8b8eff + ab2fa52 충돌 0건 (ab910d6 영역 영역 PR #723 머지 영역 영역 skip) - cargo build/test --release ✅ ALL GREEN - 광범위 sweep 7 fixture / 170 페이지: exam_science 2 diff — **회귀 정정 입증** (좌측 시프트 영역 영역 정상 복원, BEFORE 우측 시프트 회귀 → AFTER 정상) · "후" 585.34 → 583.18 / "시" 608.23 → 603.93 / "간" 620.80 → 616.50 / 그림 655.87 → 649.87 - WASM 빌드 4.65 MB - 작업지시자 시각 판정 ✅ 통과 (HWP3 sample5 8/27/48 정합 보존 + HWP5 변환본 16/22 본질 + exam_science p1/p2 회귀 정정 입증) IR 정합 검증 (HWP3 native vs HWP5 변환본): - 171 column_type: Page → Normal (HWP5 변환본 정합) - 189 ls[3~6] sw: 0 → 51024 (col_area 전체 폭) - 191 ls[0] sw: 0 → 51024 - 435 ls[0~2] vpos: 221760 (절대) → 1440 (페이지 안) - 443 ls[2~6] sw: 0 → 51024 closes #724 관련: PR #723 영역 영역 회귀 정정 통합 (Issue #762 영역 영역 별 영역 — exam_math `inf` 회귀 영역 영역 별건)
- mydocs/pr/archives/pr_732_review.md: 검토 문서 archives 이동 - mydocs/pr/archives/pr_732_report.md: 처리 보고서 작성 · Task #724 본질 (HWP5 변환본 paragraph 441 wrap zone + HWP3 파서 IR 정합) · PR #732 후속 (PR #723 영역 영역 exam_science 회귀 정정 — image_mr > 0 가드) · feedback_pr_supersede_chain (c) 패턴 권위 사례 · 작업지시자 시각 판정 ✅ 통과 - mydocs/plans/archives/task_m100_724.md(_impl).md: plans archives 이동 - mydocs/orders/20260510.md: PR #732 항목 추가 (5/10 사이클 영역 영역 7건 처리)
요약
hwp3-sample5.hwp 의 wrap=Square 그림 paragraph 3 곳 (페이지 8/27/48) 에서 한컴 PDF 권위 자료와 시각 불일치 회복.
본질 결함
정정 영역
src/renderer/typeset.rssrc/renderer/pagination.rsWrapAnchorRef.anchor_image_margin_right필드 추가src/renderer/layout/paragraph_layout.rsCase 가드 정합
3 paragraph 정합:
검증
cargo test --lib --release: 1166 passed (회귀 0)cargo clippy --release: 신규 경고 0후속
HWP5 변환본 (hwp3-sample5-hwp5.hwp) paragraph 441 wrap zone 매칭 결함은 별도 issue 로 분리 예정. Stage 8~9 시도 (
anchor_full_width_match가드) 했으나 paragraph 442/443 까지 broad 매칭으로 페이지 분할 왜곡 회귀 발생 → rollback.Test plan
cargo test --lib --release회귀 0 (1166 passed)cargo clippy --release신규 경고 0🤖 Generated with Claude Code