Skip to content

[task] sample16 페이지 18 추가 시각 정합 — ◦ x 좌표 + WMF 텍스트 (Task #894 Stage 4 분리) #896

@jangster77

Description

@jangster77

배경

Task #894 의 Stage 4 (sample16 페이지 18 추가 시각 정합) 진단 중 발견된 두 가지 차이. 본 task #894 의 HWP3 파서/IR 영역과 다른 영역 (rhwp paragraph_layout / WMF converter) 으로 별도 task 분리.

상세 분석: PR (Task #894 PR 으로 곧 생성) 의 mydocs/working/task_m100_894_report.md

차이 1 — paragraph 의 ◦ 글머리 x 좌표 차이 (rhwp paragraph_layout)

증상

samples/hwp3-sample16.hwp 페이지 18 의 본문 paragraph 들 ◦ 글머리 x 좌표 불일치:

paragraph 첫 글머리 rhwp SVG x 한컴 viewer
396 117.81 (들여쓰기 정합)
397 107.30 (-10.5 px) (paragraph 396 과 같은 x)
398 107.30 (-10.5 px) (paragraph 396 과 같은 x)
399 107.30 (-10.5 px) (paragraph 396 과 같은 x)

모두 동일 ParaShape (ps_id=426, margins left=6500 indent=-2500). 그러나 paragraph 397~399 만 ◦ x 가 왼쪽으로 시프트.

Root Cause

paragraph 397/398/399 의 raw HWP3 char_shapes 구조 (paragraph 396 과 다름):

paragraph 396:
  [CS] pos=0 id=1116 spacing=-8% char=" "    (single char_shape)

paragraph 397:
  [CS] pos=0 id=1117 spacing=0%  char=""     ← empty char + 0% spacing
  [CS] pos=0 id=1118 spacing=-8% char=" "    ← 그 다음 ' '
  [CS] pos=7 id=1119 spacing=-12% char="사"
  [CS] pos=44 id=1120 spacing=0% char=""     ← 또 empty char

paragraph 397 은 첫 부분에 empty char 의 char_shape (pos=0 id=1117) 가 추가됨. rhwp paragraph_layout 이 이 빈 char_shape 의 spacing/font 를 paragraph 시작 x 계산에 반영하여 ◦ 위치 시프트.

fixup_hwp3_outline_bullets (Task #877) 는 paragraph 397 의 두번째 char 가 이미 ◦ 이라 skip — 이 fixup 이 원인 아님. 한컴 HWP3 raw 자체가 paragraph 별로 다른 char_shape 구조 사용.

영역

src/renderer/layout/paragraph_layout.rs — paragraph 의 첫 빈 char_shape 처리.

Fix 방향 (회귀 위험 높음)

  • paragraph 의 첫 빈 char ("") 의 char_shape 를 paragraph 시작 x 계산에서 skip
  • 단 이는 모든 paragraph 영향 — HWP5/HWPX/HWP3 회귀 점검 필요

차이 2 — WMF 그림 안 텍스트 겹침 (WMF converter)

증상

samples/hwp3-sample16.hwp 페이지 18 의 paragraph 394 picture (WMF 다이어그램 bin_id=3, "주전산센터 목표시스템 구성(안)") 내부의 텍스트 (Windows 서버군, DMZ, Unix 서버군 등) 가 한컴 viewer 와 달리 겹쳐 보임.

영역

src/wmf/converter/ — WMF binary → SVG 변환:

  • text_out, ext_text_out — 텍스트 출력
  • set_text_align, set_text_color, set_text_justification — 텍스트 속성
  • 한컴 사적 WMF 확장 가능성

Fix 방향 (영역 매우 큼)

  • WMF text positioning / font / clipping 정합
  • 한컴 WMF spec 정밀 비교 필요
  • 다른 WMF 샘플 회귀 점검 자료 확보 필요

권장 처리

각 차이가 영역이 다르므로 분리 task 진행 권장:

  1. 차이 1 — rhwp paragraph_layout 의 첫 빈 char_shape 처리 (회귀 매우 높)
  2. 차이 2 — WMF converter 의 text positioning (영역 매우 큼)

본 통합 issue 는 두 차이의 추적용. 각 차이별 독립 작업 가능.

관련

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