Skip to content

HWPX 시리얼라이제이션 영역의 한컴 2020 정합 결함 — 3 가지 가설 검증 task #655

@edwardkim

Description

@edwardkim

발견 영역

PR #601 검토 영역에서 작업지시자가 발견한 외부 사용자 평가 영역 (X @scope_the_hyena, 4월 28일) 의 권위 본질:

일례로 폰트 크기부터 제대로 조정하기 힘들고 마우스로 셀 선택이 안되는 건 기본에
저장하고 다시 열어봤더니 표가 문서 구석탱이에 처박혔음.
표준이라던 hwpx 저장은 아직 지원조차 안함.
그래서 한컴이 웃을 수 있는 거임.

결함 영역의 본질

시나리오 영역

  1. 메인테이너 영역: rhwp-studio 에서 빈 문서 → 표 생성 → HWPX 저장
  2. 한컴 2020 으로 본 HWPX 영역 열기 → 표 위치 비정상 (표가 구석탱이에 처박힘)
  3. 한컴 2020 종료 후 다시 열기 → HWP 영역과 동일 정상 렌더링 회복

본 환경의 시리얼라이제이션 영역 정답지 영역

  • 본 환경의 HWPX 시리얼라이제이션 영역은 한컴 2010 정답지 영역으로 개발됨
  • 한컴 2010 영역에서는 정상 시각 영역 ✅
  • 한컴 2020 영역에서 결함 발현 ⚠️

메인테이너 권위 가정 영역

한컴은 hwpx 를 기존 hwp 의 디시리얼라이즈 파이프라인에 매핑하는 구조로 개발했을 것. 왜? 한컴의 개발자들은 생각보다 부지런하지 않음. 엔진도 2026년인데 여전히 32비트.

→ 한컴 영역에서:

  • HWP → binary deserialize → 내부 IR → renderer
  • HWPX → 한컴 자체에서 HWP binary 영역의 동일 IR 으로 변환 → 동일 renderer
  • → 한컴 영역에서 HWP / HWPX 시각 결과 동일

본 task 의 본질 — 3 가지 가설 검증

가설 영역의 본질 영역은 다음 보고서 영역에서 도출:
mydocs/report/hwpx_serialize_hancom2020_misalignment_hypothesis.md

가설 #1 (가장 유력) — attribute 누락 / 기본값 영역 차이

본 환경이 만든 HWPX 영역에 한컴 2020 이 필수로 요구하는 일부 attribute 영역이 누락, 한컴 2010 은 누락 영역에 대해 관용적 영역으로 default 처리하지만 한컴 2020 은 엄격 영역으로 처리 → 표 위치 영역 부풉.

검증 영역:

  • 본 환경 출력 HWPX 의 <hp:tbl> element 의 attribute sweep
  • 한컴 2020 자체 출력 HWPX 의 동일 element 영역 sweep
  • attribute 차이 영역 정량 측정 (cellSpacing, noAdjust, lock, dropcapstyle, numberingType, textWrap, textFlow 등)

가설 #2 — 좌표 / 단위 영역 정합 결함

본 환경의 HWPX 시리얼라이제이션 영역이 vert / horz 영역의 좌표 영역 단위 변환 영역에서 한컴 2010 영역과 한컴 2020 영역 사이 정합 결함 → 표 위치 영역 부풉.

좌표 영역 변환 영역의 결함 가능성:

검증 영역:

  • 본 환경 출력 HWPX 의 <hp:tbl>vert* / horz* attribute 영역 측정
  • 한컴 2020 자체 출력 HWPX 의 동일 attribute 영역 비교
  • vertOffset / horzOffset 영역의 단위 영역 정합

가설 #3 — element 순서 / schema 영역 결함

본 환경이 만든 HWPX 영역의 XML element 영역의 순서 / 구조 영역이 한컴 2010 영역의 schema 영역과 정합하지만 한컴 2020 영역의 강화된 schema 영역과 정합 안 됨 → 표 영역의 위치 영역 부풉.

구조 영역 결함 가능성:

  • <hp:tbl> 영역 내부의 <hp:sz> / <hp:pos> / <hp:outMargin> / <hp:inMargin> 영역의 순서
  • <hp:p> 영역 내부의 <hp:run> / <hp:linesegarray> 영역의 순서
  • <hp:tc> (cell) 영역 내부의 <hp:cellAddr> / <hp:cellSpan> / <hp:cellSz> / <hp:cellMargin> 영역의 순서

검증 영역:

  • 본 환경 출력 HWPX 와 한컴 2020 자체 출력 HWPX 의 element 순서 영역 정밀 비교
  • diff 영역 자동 점검 (XML canonicalization 후 비교)

검증 영역의 절차

단계 0 — 빈 문서 + 표 영역 fixture 영역 생성

  1. rhwp-studio 에서 빈 문서 + 표 1 영역 → HWPX 저장 → samples/hwpx/empty_table_rhwp.hwpx
  2. 한컴 2020 에서 동일 빈 문서 + 표 1 영역 → HWPX 저장 → samples/hwpx/empty_table_hancom2020.hwpx
  3. 두 영역의 시각 영역 비교 영역 (한컴 2010 + 한컴 2020 양쪽)

단계 1 — 가설 #1 검증 (attribute 영역 sweep)

  • 두 HWPX 영역의 모든 element 의 attribute 영역 정량 비교 (Python script 또는 별도 도구 영역)
  • 누락 attribute 영역 / 다른 default 영역의 영역 식별

단계 2 — 가설 #2 검증 (좌표 / 단위 영역)

  • <hp:tbl> / <hp:pos> / <hp:offset> 등 좌표 영역의 attribute 영역 정량 비교
  • 좌표 단위 영역 변환 영역의 정합 점검

단계 3 — 가설 #3 검증 (element 순서 영역)

  • XML canonicalization 영역의 결과 비교
  • element 순서 영역의 정합 점검

단계 4 — 가설 영역의 권위 본질 영역 결정

단계 5 — 본질 영역 정정 PR 영역

영향 범위 영역

본 결함 영역의 권위 본질 영역

  • 외부 사용자 영역의 평가 영역 ("hwpx 저장은 아직 지원조차 안함") 의 권위 본질 영역
  • rhwp 의 시장 가치 영역 — DTP 엔진 정체성 영역의 본질 영역의 핵심 영역 (project_dtp_identity 메모리 영역)
  • v1.0.0 진입 직전 핵심 영역 — 사용자 사용성 영역의 본질 영역

연관 영역

→ 두 방향 영역 (디시리얼라이제이션 영역 + 시리얼라이제이션 영역) 모두 본 환경의 HWPX 영역 처리 영역의 본질 결함 영역.

메모리 영역 정합

  • feedback_self_verification_not_hancom — 본 시나리오 (rhwp 출력 → 한컴 2020 거부) 가 권위 케이스 영역
  • project_hwpx_to_hwp_adapter_limit — 단순 어댑터 영역으로 한컴 호환 영역 미달, 완전 변환기 영역 정체성 영역 필요
  • reference_authoritative_hancom — 한컴 2010 정답지 영역의 한계 영역 → 한컴 2020 영역 추가 영역 권고
  • ⚠️ feedback_v076_regression_origin — 자기 환경 PDF 영역을 정답지 영역으로 사용한 회귀 영역 본질의 시리얼라이제이션 영역의 본질 영역

본 task 의 마일스톤

M100 (v1.0.0) — 외부 사용자 평가 영역의 권위 본질 영역으로 v1.0.0 진입 전 우선 처리 영역.

컨트리뷰터 안내

본 이슈는 외부 컨트리뷰터의 PR 을 환영합니다. 진행 전 댓글로 의향 알려주시면 메인테이너가 assignee 지정 + 추가 자료 (한컴 2020 정합 fixture 영역) 안내드립니다.

진행 시 참고

  • 본 보고서 영역: mydocs/report/hwpx_serialize_hancom2020_misalignment_hypothesis.md
  • 한컴 (한컴 2010 + 한컴 2020) 영역의 시각 판정 영역이 권위 기준 (reference_authoritative_hancom 메모리 영역)
  • 본 환경의 HWPX 시리얼라이제이션 영역: src/serializer/hwpx/
  • HWP 시리얼라이제이션 영역과의 정합 영역: src/serializer/control.rs / src/serializer/body_text.rs
  • 권위 영역 점검 영역의 fixture 영역: samples/hwpx/aift.hwpx (한컴 2020 출력 영역, 디시리얼라이제이션 영역의 권위 영역)

참고 영역

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions