Skip to content

samples/hwpspec.hwp 20 페이지 이미지 이중 출력 (PR 처리 후 회귀) #418

@edwardkim

Description

@edwardkim

결함 요약

`samples/hwpspec.hwp` 20 페이지에서 같은 이미지가 y 좌표 약 2.67px 차이로 두 번 그려지는 회귀.

Task #416 진행 중 시각 검증에서 발견됨. 본 결함은 #416 의 `find_bin_data` 가드 결함과 다른 origin — devel 시점 (Task #416 정정 전) 에도 4 개 `` 요소가 같은 이중 출력 패턴으로 존재. Task #416 정정 후 4 → 6 개로 증가 (정확 매칭 후 일부 이미지가 추가로 그려진 부수효과로 추정).

증상

`samples/hwpspec.hwp` 20 페이지를 export-svg 로 출력하면 `` 요소가 6 개 (3 쌍의 이중 출력):

```bash
cargo run --release --bin rhwp -- export-svg samples/hwpspec.hwp -p 19 -o output/svg/issue-dup/
```

y₁ y₂ 차이 폭/높이
1 445.43 442.76 2.67 516×72
2 604.09 601.43 2.67 516×72
3 741.43 738.76 2.67 516×188

x 좌표 / 폭 / 높이 동일, y 좌표만 정확히 2.67px 차이. 이미지 데이터 (base64) 도 동일한 SVG 임베딩.

정황

  • 메인테이너의 정황 진단: PR 처리 과정에서 회귀 가 발생했고 검토에서 인지 못한 실책
  • 어떤 PR / 시점에서 이중 출력이 도입됐는지 git bisect 로 origin 추적 필요
  • Task find_bin_data 가드 결함 — Task #195 회귀 (페이지 배경 이미지 잘못 표시) #416 정정 (가드 제거) 으로 노출이 더 명확해짐 (4 → 6 image 로 늘어남) — 이는 이미지 정확 매칭이 복원된 후 더 많은 이미지가 그려져 이중 출력 패턴이 더 잘 보이게 된 것 으로 추정

분석 후보 영역

본 결함의 가능한 origin:

  1. 이미지 컨트롤이 두 번 등록되는 경로 — paragraph_layout / shape_layout / picture 처리 어딘가에서 같은 컨트롤을 두 번 emit
  2. inline + 다른 wrap 방식의 중복 — 같은 그림이 inline 처리 + 다른 wrap 처리로 양쪽에서 그려짐
  3. 헤더/풋터 또는 마스터 페이지의 이미지가 본문 이미지와 함께 그려짐 — 영역 분기 누락
  4. z-order 처리 변경 PR 의 부작용 — 같은 이미지를 다른 z 레벨에서 두 번 emit

git log 로 이미지 / 그림 / picture 관련 최근 PR 점검 후보:

재현 절차

```bash

1. 현재 devel checkout

git checkout devel

2. 페이지 20 SVG 출력

cargo run --release --bin rhwp -- export-svg samples/hwpspec.hwp -p 19 -o /tmp/dup-check/

3. 개수 확인

grep -c '<image' /tmp/dup-check/hwpspec_020.svg

결과: 6 (정상이면 3)

```

권위 기준

  • 작업지시자 환경의 한컴 2010 + 2022 편집기 출력에서 페이지 20 의 정상 이미지 개수 (3 개로 추정)
  • 시각적으로 확인 가능

처리 절차

CLAUDE.md 의 하이퍼-워터폴 절차로 진행:

  1. `local/task{이슈번호}` 브랜치 생성
  2. Stage 0 — git bisect 또는 최근 이미지 관련 PR 점검 으로 origin 식별
  3. 수행 / 구현 계획서 작성 → 승인
  4. 단계별 정정 + 보고서
  5. 회귀 테스트 추가 (단위 / svg_snapshot)
  6. 작업지시자 시각 판정

검증

  • `samples/hwpspec.hwp` 20 페이지 `` 요소 6 → 3 정상화
  • 다른 hwp 샘플 무회귀 (svg_snapshot 6/6 통과 유지)
  • 작업지시자 한컴 출력과 시각 일치

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions