fix: HWPX ColorRef 상위 바이트 보존#607
Conversation
v0.7.9 후속 patch 사이클 (5/4 ~ 5/6). ## 신규 기능 - **CLI 바이너리 릴리즈** (Issue #608/#612, @almet 의 요청) - 4 플랫폼 GitHub Release 자산 첨부 (Linux x86_64 / macOS x86_64+aarch64 / Windows x86_64) + SHA-256 체크섬 - **PNG raster backend** (PR #599, @seo-rii) — render P4 단계 - native Skia 기반 PageLayerTree → PNG export, native-skia feature gate - **AI 파이프라인 + VLM 연동 도입** (메인테이너 후속 정정): - --vlm-target claude (1568 longest edge / 1.15 MP, Claude Vision 정합) - --scale / --max-dimension (자동 scale 계산) - export-png CLI 명령 + 매뉴얼 (한글 + 영문 dual) - 한글 폰트 fallback chain + char 단위 fallback (공백 두부 정정) + --font-path 동적 로딩 ## 외부 PR cherry-pick (13 PR / 7 컨트리뷰터) - @planet6897 / Jaeook Ryu (협업): PR #587/#589/#561/#564/#570/#575/ #580/#584/#592/#593/#567 - @oksure (Hyunwoo Park): PR #600 (closes #513) - @seo-rii: PR #599 (refs #536) - @cskwork / @johndoekim / @nameofSEOKWONHONG / @jangster77 — 사이클 누적 ## 메인테이너 정정 Skia 폰트 영역 5개 정정 (한글 fallback / font-path / char-fallback / VLM 옵션 / export-png CLI). ## 인프라 - CI 빌드 안정성 (Cargo.toml [[example]] required-features) - 광범위 페이지네이션 회귀 sweep 도구 (164 fixture / 1,614 페이지 자동) ## 후속 이슈 - #613 (VLM 프리셋 확장) - #614 (DPI 메타데이터) - #615 (pua_oldhangul.rs U+F53A 한컴 정합) - #598 (rhwp-studio 각주 삭제, 외부 컨트리뷰터 공개) ## 잔여 PR (v0.7.11 후속 patch) PR #601, #602 (@oksure) / PR #607 (@dicebattle) / PR #609 (@jangster77, Task #604) / PR #611 (@kihyunnn). 상세: CHANGELOG.md (한글) / CHANGELOG_EN.md (영문).
|
@dicebattle 님 안녕하세요. 첫 PR 환영합니다. 검토 진행 중 안내 한 가지 드립니다. 시각 판정 자료 영역본 PR 의 본질 ( 다만 본 환경 보완 요청 사항본 PR 머지 전 가능하다면 다음 두 가지 함께 부탁드립니다:
이 두 자료가 추가되면 본 PR 의 본질 영역 (HWPX 8자리 색상 + 알파 채널) 회귀 차단 가드로 영구 보존되어, 향후 다른 영역 정정에서도 본 결함 재발 차단이 가능해집니다. 본 환경 측정 요약 (참고)
본 PR 의 진단 ( 샘플 파일 + 한컴 버전 정보 추가 후 메인테이너 시각 판정 → 머지 단계로 진행하겠습니다. 수고하셨습니다. |
|
준비해서 보강하겠습니다. 코멘트 감사드립니다. |
- @dicebattle (Sunyong Lim) 첫 PR 검토 - Task #606 HWPX ColorRef 상위 바이트 보존 (단일 파일 +9/-5) - 본 환경 검증: cargo test 1140 passed / clippy 0 / svg_snapshot 6/6 - 광범위 sweep: 164 fixture / 1,684 페이지 / 차이 0 - WASM: 4,588,198 bytes - 본 환경 샘플 (123kb.hwp/74kb.hwp) 미존재 → 시각 판정 자료 부재 - 컨트리뷰터에게 샘플 동봉 + 한컴 버전 정보 보완 요청 댓글 등록 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
변경 요약
HWPX 색상 문자열
#AARRGGBB를 HWPColorRef로 변환할 때 상위 바이트를 버리지 않고 보존하도록 수정했습니다.이번 문제에서는
faceColor="#FF000000"/alpha="0"조합이 들어간 표 배경이 검정색으로 렌더링되고 있었습니다. 기존 파서는#FF000000을0x00000000으로 바꿨고, 이 값이 뒤쪽 렌더링 단계에서 일반 검정 채우기로 처리되었습니다.style_resolver쪽에는 이미ColorRef의 상위 바이트가 0이 아닌 경우 특수값 또는 확장값으로 보고 채우기 없음으로 처리하는 로직이 있으므로, 파서에서#AARRGGBB를0xAABBGGRR형태로 보존하게 바꾸는 것이 가장 작은 수정 범위라고 판단했습니다.추가로
parse_color_str단위 테스트에서#FF000000,#FFFFFFFF, 반투명 예시의 상위 바이트 보존을 검증하도록 기대값을 갱신했습니다.관련 이슈
closes #606
테스트
cargo test통과cargo clippy -- -D warnings통과123kb.hwp2페이지:rect fill="#000000"65개 → 0개74kb.hwp1페이지:rect fill="#000000"31개 → 0개export-svg/export-pdf경로에서 수행했습니다)추가로 실행한 검증:
cargo test --libcargo test --test svg_snapshotcargo build --release --bin rhwptarget/release/rhwp export-pdf로 두 샘플 PDF 재생성 후 비교스크린샷
123kb.hwp 2페이지
74kb.hwp 1페이지
이 PR의 코드 변경과 본문 작성에는 AI 도구(Codex)가 사용되었습니다.