Skip to content

ir-diff 보강 — 표 속성 / paragraph line_segs / controls 식별 가능 단위 비교 영역 추가 #653

@edwardkim

Description

@edwardkim

발견 영역

PR #601 검토 영역에서 발견된 Issue #652 (aift.hwp/aift.hwpx 표 조판 영역 결함) 의 본질 영역을 ir-diff 명령으로 점검한 결과, 현재 ir-diff 는 본 결함 영역의 본질을 검출하지 못함.

현재 ir-diff 의 비교 영역 (매뉴얼 정합)

카테고리 비교 항목
문단 단위 text / cc / char_offsets / char_shapes / line_segs / controls (수만) / tab_extended
ParaShape ml / mr / indent / tab_def / sb / sa / ls
TabDef 탭 수 / position / tab_type / fill_type

본 환경 점검 결과 — Issue #652 의 결함 영역 미검출

./target/release/rhwp ir-diff samples/hwpx/aift.hwpx samples/aift.hwp 실행 결과:

=== 비교 완료: 차이 650 건 ===

검출되는 영역:

  • controls: A=3 vs B=4 (HWPX 3 vs HWP5 4 — 갯수만)
  • cc / char_offsets / char_shapes (paragraph 영역)
  • ✅ ParaShape (ml / indent / sb / sa 등)

검출 안 되는 영역 ⚠️:

매뉴얼 명시 영역의 한계

mydocs/manual/ir_diff_command.md 의 "정상적인 차이 (무시 가능)" 영역:

controls 수 차이: HWPX에서 SectionDef 등이 별도 처리됨

→ 현재 ir-diff 는 controls 수 차이를 "무시 가능 영역" 으로 분류하고 있어, 본 결함 영역 (HWPX 의 SectionDef 가 정합 안 됨 + 표의 page_break attr 결함) 이 무시 영역에 포함되어 검출되지 않음.

본 환경 결정적 증거 — pi=0 영역의 controls 차이가 결함의 origin

영역 HWP5 (samples/aift.hwp) HWPX (samples/hwpx/aift.hwpx) ir-diff 검출
pi=0 controls 수 4 (구역정의 + 단정의 + 표 + 쪽번호위치) 3 (단정의 + 표 + 쪽번호위치) controls: A=3 vs B=4 (단지 수 차이만, 어떤 control 인지 알 수 없음)
표 쪽나눔 RowBreak (0x04000006) CellBreak (0x00000000) 미검출
표 셀 영역 h=15432, w=47624, paras=1 동일 (정합) ❌ 비교 안 함

→ 본 결함 영역은 표 영역의 본질적 차이 인데도 ir-diff 는 paragraph 영역의 차이만 보고 표 영역은 보지 않음.

보강 영역 — 우선순위 영역

본질 #1: 표 (Table) 속성 비교

  • page_break attr (RowBreak / CellBreak)
  • treat_as_char / wrap (TopAndBottom / Square / 등)
  • row_count / col_count + size (HWPUNIT)
  • outer_margin + padding + cell_spacing
  • repeat_header

본질 #2: 셀 (Cell) 속성 비교

  • is_header
  • row_span / col_span
  • border_fill_id
  • paragraphs
  • text 영역 (셀 내부 paragraph 의 text content)
  • outer_margin + padding

본질 #3: paragraph line_segs 범위 비교

  • vpos / lh / th / bl / ls 영역 (현재 line_segs 비교는 일부만)
  • tag 영역 (line tag)
  • 이미지 / 표가 점유한 line vs paragraph line 영역 식별

본질 #4: controls 의 식별 가능 단위 비교

  • 단지 갯수가 아닌, 각 control 의 type / index / 핵심 속성 비교
  • HWPX 의 SectionDef 영역 처리 정합 점검 (현재 무시 영역으로 분류된 영역)

본질 #5: 다른 control 영역 비교 (Picture / Shape / Equation / Footnote 등)

  • 각 control type 의 핵심 속성 비교 (size / shape_attr / etc.)

영향 범위

본 보강은 다음 영역의 회귀 차단 가드 영역으로 본 환경 영구 자산:

  1. Issue aift.hwp/aift.hwpx 표 조판 영역의 vpos 단위 해석 의심 — 페이지 수 +30 / 표 위 빈 공간 +103mm 부풀음 #652 영역 (HWPX <table> page_break attr 영역) 의 정량 검증 가드
  2. 향후 표 / 셀 / 이미지 / 도형 영역의 HWP5 ↔ HWPX 정합 영역 자동 점검
  3. 외부 사용자 영역 ("hwpx 저장 지원 안 함" 평가) 의 본질 권위 영역

마일스톤

M100 (v1.0.0) — Issue #652 영역 정정 PR 의 회귀 차단 가드 영역으로 동시 처리 권고.

컨트리뷰터 안내

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

진행 시 참고

참고 영역

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions