Skip to content

[task] WMF unit scale 정합 — 한컴 사적 WMF 의 SetWindowExt 비표준 비례 (Task #896 Stage 9 분리) #902

@jangster77

Description

@jangster77

배경

Task #896 의 Stage 9 (WMF text positioning) 진단 중 발견된 root cause 의 fix 가 영역 매우 깊고 한컴 사적 WMF spec 분석 필요 → 별도 task 분리.

증상

samples/hwp3-sample16.hwp 페이지 18 의 paragraph 394 picture (WMF, "주전산센터 목표시스템 구성(안)") 안의 텍스트가 rhwp-studio 와 한컴 viewer (HWP5 변환본 .hwpx) 비교 시 크기/간격 미세 차이.

항목 rhwp 한컴 viewer
한글 글리프 표시 ✅ 정상 (Task #896 fix)
텍스트 크기 작음 (가까이 모임) 큼 (적당 간격)

진단 결과 (Task #896 Stage 9 timeboxed 분석)

WMF binary 분석

rec[0] SETMAPMODE mode=8 (MM_ANISOTROPIC)
rec[1] SETWINDOWEXT (y=72, x=56)    ← 단 1회 호출, 매우 작은 값
rec[2] SETWINDOWORG (y=4161, x=6333)
SETVIEWPORTEXT/ORG: 호출 안 됨
SCALEWINDOWEXT/VIEWPORTEXT: 호출 안 됨

Root Cause

  • WMF spec 의 MM_ANISOTROPIC: SetWindowExt + SetViewportExt 의 비율로 unit scale 결정
  • 한컴 사적 WMF 는 SetWindowExt(56, 72) 단 1회 + SetViewportExt 미호출
  • 실 element 좌표는 (0, 0, 6333, 4212) 사용 — WindowExt 와 비표준 비례
  • rhwp 의 viewBox 자동 확장 (Task #860 src/wmf/converter/svg/mod.rs:75-94) 으로 (0, 0, 6333, 4212) 사용
  • font-size 117 (in element 좌표) → effective 11.24 px

한컴 사적 WMF unit scale 의 진짜 의미 부재

  • WMF spec 외 한컴 사적 의미 추정 (예: cell unit 56x72 면 117 = ~2 cells) 부정합
  • 단순 ratio 변환 (117 × ratio) 시도 모두 추측 — 정확 fix 불가
  • 한컴 변환기의 reverse engineering 또는 정밀 spec 분석 필요

Fix 방향 후보

후보 처리 위험
α WMF SetMapMode + WindowExt + ViewportExt 의 정밀 ratio 처리 매우 높 (다른 WMF 회귀)
β viewBox 결정 알고리즘 변경 (Task #860 자동 확장) 매우 높 (Task #860 fixture 회귀)
γ font-size scale factor 추가 (한컴 사적 ratio) 매우 높 (정확값 부재)
δ 한컴 WMF spec 정밀 분석 + 별도 unit scale 결정 알고리즘 매우 큼 (시간 매우 들)

권장 처리

  1. 한컴 WMF binary 의 더 많은 sample 수집 (sample14, sample16 등) — pattern 비교
  2. 한컴 변환기의 실제 동작 비교 (PDF 또는 동등 변환 도구)
  3. 단계별 fix 시도 + 광범위 WMF 회귀 검증

관련

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