Skip to content

[task] Task #877 잔존 통합 — HWP3 페이지 외곽선 좌표 / multi-line picture 중복 / HWP5 페이지 수 inflate #894

@jangster77

Description

@jangster77

개요

Task #877 (hwp3-sample16.hwp WASM 로드 실패 + paragraph alignment + 시각 정합) 완료 후 별도 task 로 분리된 잔존 3건을 1개 통합 이슈로 묶음.

본 task #877 의 핵심 목표 (panic 차단 + paragraph alignment + 한컴 viewer 시각 정합) 는 22 commits 로 달성되었으나, 아래 3건은 모두 rhwp 렌더러 / HWP5 파서 영역으로 본 task (HWP3 파서) 범위 외부.

상세 분석: mydocs/working/task_m100_877_residual.md (PR #890 merge 후 접근 가능)

잔존 항목 (Scope)

1. HWP3 페이지 외곽선 좌표 기준 정합 (renderer / layout)

증상: sample16 페이지 2 (목차) 의 우측 페이지 번호 (1, 3, 5, 6, ...) 가 페이지 외곽선 박스 밖에 표시됨. 한컴 viewer (HWP5 변환본) 에서는 외곽선 안에 표시.

원인 추정:

  • Task [bug] hwp3-sample16.hwp WASM 로드 실패 — RawVec capacity overflow (HWP3 picture record alignment) #877 의 page border IR 변환 (c8ba53b) 에서 border_margin*=355 hunit (5mm)spacing_* 으로 설정
  • 그러나 renderer (src/renderer/layout.rs:748-776) 의 attr & 0x01 가드:
    • paper_based = false → body_area 기준 (= 페이지 여백 안)
    • 외곽선 = body_area + spacing
    • paragraph 텍스트 (목차 우측 페이지 번호) 가 body_area width 초과
  • 또는 한컴 viewer 가 paper_based 인데 rhwp 는 body_based 라 크기 다름

영역: rhwp renderer / layout (page border 좌표 기준).

2. paragraph multi-line picture SVG image 중복 emit (renderer / svg)

증상: sample16 페이지 18 (한컴 16쪽) 의 paragraph 394 [1] 그림 (WMF, bin_id=3) 이 SVG 에 3개 <image> 로 emit됨 (모두 동일 href). 시각상 2~3개 다이어그램 중복.

dump 결과:

  • paragraph 394: ls_count=3, controls=3 ([0] 표 + [1] 그림 + [2] 표)
  • text: " " (3 picture markers)

시도한 fix (효과 없음):

  • treat_as_char picture wrap=Square → TopAndBottom 정합 (9e9d1bf): wrap 변경 후에도 image 3개 그대로
  • → wrap 영향 아님. paragraph 의 multi-line + picture-per-line 처리 영역 bug

영역: rhwp 렌더러의 paragraph multi-line picture 처리 (typeset.rs / picture_footnote.rs / svg.rs).

3. HWP5 변환본 페이지 수 inflate (HWP5 파서 / pagination)

증상: samples/hwp3-sample16-hwp5.hwp (한컴 HWP3 → HWP5 변환본) 를 rhwp 가 98 페이지로 인식. 한컴 viewer 표시 = 62 페이지.

관찰:

  • rhwp HWP3 sample16: 64 페이지 (한컴 정합)
  • rhwp HWP5 변환본: 98 페이지 (한컴 62 페이지)
  • HWP5 변환본은 외곽선 / 그림 / 글머리 등 시각 정합도 sample16 HWP3 보다 더 정확

원인: rhwp 의 HWP5 파서 또는 pagination 영역. 본 task #877 (HWP3 파서) 범위 외부.

우선순위

항목 우선순위 사유
1. 페이지 외곽선 좌표 sample16 1개에서만 관찰. 외곽선 자체는 표시됨
2. paragraph multi-line picture 중복 sample16 16쪽 다이어그램 가시성 영향. 한컴 정합 시각 미달
3. HWP5 변환본 페이지 수 36 페이지 inflate (62 → 98) 는 광범위 영향 가능. 다른 샘플 회귀 점검 필요

권장 처리 방식

각 항목은 독립적이며 영역이 다르므로 (renderer × 2, HWP5 파서 × 1), 본 통합 이슈는 추적용으로 유지하고 실제 작업은 항목별 별도 task 브랜치 로 진행 권장:

  • local/task{이번호}_1_page_border — 항목 1
  • local/task{이번호}_2_picture_dup — 항목 2
  • local/task{이번호}_3_hwp5_pagination — 항목 3

각 항목 완료 시 본 통합 이슈에 진행 보고. 모두 완료 시 본 이슈 close.

관련

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions