Layout 리팩터링 Phase 0~2 + 옛한글 PUA (#528) + Square wrap fixes (#533/#534) + planet6897 6건#527
Closed
planet6897 wants to merge 0 commit into
Closed
Layout 리팩터링 Phase 0~2 + 옛한글 PUA (#528) + Square wrap fixes (#533/#534) + planet6897 6건#527planet6897 wants to merge 0 commit into
planet6897 wants to merge 0 commit into
Conversation
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
- @planet6897 (Jaeook Ryu) Task #618 회귀 정정 PR 검토 - Task #519 fix (transform: extract_shape_transform) 의 devel 누락 정합 직접 검증 - 본 환경 git merge-base --is-ancestor 7ead89d devel: 부재 - 본 환경 git merge-base --is-ancestor a7e43f9 devel: 부재 - 회귀 origin: PR #527 (CLOSED) 묶음 머지가 본 환경 devel 도달 못 함 - 본 환경 검증: cargo test 1140 passed / clippy 0 / svg_snapshot 6/6 - 정량 측정: BEFORE 0 → AFTER 1 transform 래퍼 (page 4 Q28 박스), PR 본문 명시 100% 일치 - 광범위 sweep: 167 fixture / 1,687 페이지 / 차이 0 - WASM: 4,590,537 bytes (PR #611 baseline +230) - 회귀 방지 후속 영역: Task #517/#518/#523 누락 가능성 + Task #520 (PR #627 별도 영역) - 옵션 A (cherry-pick) 권장 + 옵션 B (후속 task 권유) 결합 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
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
planet6897 사이클 누적 PR. 최근 작업 영역:
exam_kor 18p Square wrap 표 + TAC 그림 위치 결함 (#534) — 신규 추가
samples/exam_kor.hwp18 페이지 우측 단 [A]/[B] 표시기 옆 인라인 그림이 단 영역을 30-70% 침범하는 결함 정정.layout_shape_item의 TAC Picture x 계산이paragraph_layout의 inner_pad 로직 (visible stroke + border_spacing[0,1]=0 케이스) 과 비정합. wrap_host paragraph (Square wrap 표 보유) 는paragraph_layout미호출되어layout_shape_item만 emit → inner_pad (= box_margin_left) 누락된 위치 (~11.33 px 좌측 시프트)src/renderer/layout.rs::layout_shape_itemTAC Picture 분기에 has_visible_stroke + border_spacing 검사 + inner_pad_left 가산 (+19 라인)검증: exam_kor p18 pi=50/56 image x: 593.39 → 604.72 (+11.33 px), p19 pi=60: 128.51 → 139.84. 광범위 8 샘플 192 페이지 중 190 byte-identical, 변경 2 페이지 모두 동일 본질 의도된 정정.
exam_kor 14p Square wrap 표 직후 baseline 누락 (#533)
samples/exam_kor.hwp14 페이지 우측 단 줄간격 일관성 결함 정정.y_offset이 표 bottom 으로만 advance — 호스트 문단 텍스트가 표보다 길게 늘어진 케이스에서 다음 문단이 baseline (~13 px ≈ 978 HU) 만큼 위로 시프트src/renderer/layout.rs::layout_table_item의 비-TAC Square wrap 분기에 호스트 마지막 LINE_SEG 영역 max() 가산 (+18 라인). vpos 가 column 누적 좌표이므로first.vertical_pos차감 패턴 필수!is_tac+wrap=Square+max()3중 가드검증: 광범위 8 샘플 192 페이지 중 190 byte-identical, 변경 2 페이지 (p14 + p17) 모두 동일 본질 의도된 정정.
옛한글 PUA → KS X 1026-1:2007 자모 변환 (#528, #512 흡수)
samples/exam_kor.hwpp17 의 중세국어 표기 미렌더 결함 해결.src/renderer/pua_oldhangul.rs(자동 생성) + Composerdisplay_text인프라 + svg/web_canvasdraw_text시점 변환 (Option A — 인덱싱 불변성 유지)검증 (exam_kor p17): PUA 잔존 112 → 0 (100%), Hangul Jamo 0 → 102, 책괄호 0 → 66.
Layout 리팩터링 Phase 0~2
mydocs/tech/layout_refactor_roadmap.md)RHWP_LAYOUT_DEBUG=1) + 회귀 검증 도구 (scripts/svg_regression_diff.sh)line_break_char_idx다중화 (Option → Vec) — exam_science.hwp 2페이지 12번 본문 줄간격 압축 (인라인 수식 다수) #496 본질 (B) 해결planet6897 작성 issue 6건 처리
회귀 정정 / 외부 PR 처리
변경 통계
주요 신규 영역:
src/renderer/layout.rs::layout_shape_item(+19 라인, TAC Picture inner_pad 정합)src/renderer/layout.rs::layout_table_item(+18 라인, host 텍스트 영역 max advance)src/renderer/pua_oldhangul.rs(자동 생성, 5,773 라인)src/renderer/composer.rs(display_text 필드 + convert_pua_old_hangul)src/renderer/svg.rs/web_canvas.rs(draw_text PUA 변환 적용)src/renderer/mod.rs::generic_fallback(font-family 체인 보강)src/renderer/layout/paragraph_layout.rs::map_pua_bullet_char(책괄호 + 예시 마커)web/fonts/SourceHanSerifK-OldHangul-subset.woff2+SourceHanSerifK-OFL.txtrhwp-studio/src/core/font-loader.ts(FontEntry.unicodeRange + 신규 엔트리)scripts/gen_pua_oldhangul_rs.py(재생성 스크립트)Test plan
cargo test --lib1116 passedcargo test --test svg_snapshot6/6 통과cargo test --test issue_4181/1 통과cargo test --test issue_5011/1 통과scripts/svg_regression_diff.sh) — 회귀 0 (Tasks exam_kor.hwp 14p 우측 단 — Square wrap 표 다음 문단 baseline 누락 (~13px 시프트) #533/exam_kor.hwp 18p 우측 단 — Square wrap 인라인 표 + TAC 그림 동일 paragraph 의 그림 x 좌표 우측 과다 시프트 #534)참고
src/renderer/layout.rs만 변경, 단독 cherry-pick 가능mydocs/report/task_m100_534_report.md+task_m100_533_report.md+task_m100_528_report.md+ Stage 보고서들닫히는 이슈