Skip to content

aift.hwp/aift.hwpx 표 조판 영역의 vpos 단위 해석 의심 — 페이지 수 +30 / 표 위 빈 공간 +103mm 부풀음 #652

@edwardkim

Description

@edwardkim

발견 영역

PR #601 검토 영역에서 작업지시자가 발견하신 본 환경 표 조판 결함 영역.

원본 영역: PR #601 (Task #594 복수 제목행 정정) 의 시각 발현 영역 점검 중 samples/aift.hwp 47 페이지 (page_num=41) 의 표 조판 붕괴 현상 발견.

정량 증거

1. 페이지 수 차이 (한컴 vs 본 환경)

영역 페이지 수
한컴 정합 (작업지시자 측정) 47
본 환경 samples/aift.hwp (HWP5) 77 (+30)
본 환경 samples/hwpx/aift.hwpx (한컴 2020 변환본) 74 (+27)

→ 본 환경 페이지네이션이 한컴 정합 대비 +30 페이지 부풀음. HWPX 변환본도 동일 영역.

2. 47 페이지 (page_num=41) vpos 영역 분석 (dump-pages -p 46 samples/aift.hwp)

=== 페이지 47 (global_idx=46, section=2, page_num=41) ===
  body_area: x=75.6 y=75.6 w=642.5 h=971.4
  단 0 (items=10, used=893.1px)
    FullParagraph  pi=576  h=17.3 (sb=0.0 lines=17.3 sa=0.0)  vpos=0  \"(빈)\"
    FullParagraph  pi=577  h=17.3 (sb=0.0 lines=17.3 sa=0.0)  vpos=2080  \"   [주관기관 : 기업명1]  ※ 주관/공동기관 중 기업만 작성\"
    FullParagraph  pi=578  h=14.7 (sb=0.0 lines=14.7 sa=0.0)  vpos=4160  \"(빈)\"
    PartialParagraph  pi=579  lines=0..1  vpos=33421
    Table          pi=579 ci=0  5x2  638.4x362.1px  wrap=TopAndBottom tac=false  vpos=33421
    FullParagraph  pi=580  h=17.3 (sb=0.0 lines=17.3 sa=0.0)  vpos=35501
    Table          pi=581 ci=0  5x2  642.2x320.4px  wrap=TopAndBottom tac=false  vpos=37581
    FullParagraph  pi=582  h=17.3 (sb=0.0 lines=17.3 sa=0.0)  vpos=63517
    FullParagraph  pi=583  h=17.3 (sb=0.0 lines=17.3 sa=0.0)  vpos=65597
    PartialTable   pi=584 ci=0  rows=0..2  cont=false  5x2  vpos=67677

vpos 차이 분석:

  • pi=578 끝 (vpos=4160 + h=14.7px ≈ 4160 + 4160 HU) → pi=579 시작 (vpos=33421) 차이: 약 +29,261 HU (≈ +103mm ≈ +389px) ⚠️
  • pi=581 끝 (vpos=37581 + 표 영역) → pi=582 시작 (vpos=63517) 차이: 약 +25,936 HU (≈ +91mm) ⚠️

→ 표 위 빈 공간 vpos 영역이 비정상적으로 큼.

3. 시각적 결함 영역 (작업지시자 발견)

s2:pi=578 y=131.0 다음에 와야 하는 s2:pi=579 가 그 사이에 빈 공간이 너무 큰 이유와 s2:pi=579 다음 표 2개가 또 오버랩까지 되는 조판 붕괴현상

→ pi=579 표와 pi=581 표가 시각적 오버랩 발생 (작업지시자 디버그 오버레이 시각 검증).

4. aift.hwpx 첫 페이지 영역 분석

=== 페이지 1 (global_idx=0, section=0, page_num=1) ===
  단 0 (items=2, used=455.4px, hwp_used≈236.4px, diff=+219.0px)
    Table          pi=0 ci=1  1x1  635.0x205.8px  wrap=TopAndBottom tac=true  vpos=0..16630
    PartialParagraph  pi=0  lines=0..2  vpos=0..16630

hwp_used (HWP 의 사용 영역) 236.4px vs 본 환경 측정 455.4px → +219px (약 92% 부풀음).

5. 단위 해석 자체는 정합 — 결함은 vpos 영역

pi=579 표 size 점검:

  • IR: 47879 × 27155 HU
  • mm 변환: 168.9mm × 95.8mm (HU/283.46)
  • px 변환 (DPI 96): 638.4 × 362.1 (mm × 3.78)
  • 본 환경 측정: 638.4 × 362.1 ✅ 정합

→ HU → mm → px 단위 변환은 정합. 결함은 vpos / paragraph 누적 y / 표 영역 위 빈 공간 처리 영역.

가설 영역

  1. 표 wrap=TopAndBottom 의 위쪽 여백 영역 부풀음 — 표 위에 vpos=33421 처럼 큰 영역이 누적되는 본질 미파악
  2. pi=579 의 PartialParagraph (lines=0..1) + Table 동일 vpos=33421 — partial paragraph 의 추가 line 영역이 vpos 부풀림 가능성
  3. hwp_used 측정 영역 (HWP 의 권위 영역) 과 본 환경 measure_paragraph 차이 영역 — paragraph 높이 측정 결함

재현 방법

# 1. dump-pages 로 vpos 차이 확인
./target/release/rhwp dump-pages samples/aift.hwp -p 46

# 2. 디버그 오버레이로 시각 확인
./target/release/rhwp export-svg samples/aift.hwp -p 46 --debug-overlay --show-control-codes -o /tmp/p47/

# 3. aift.hwpx 첫 페이지 hwp_used 차이
./target/release/rhwp dump-pages samples/hwpx/aift.hwpx -p 0

영향 범위

  • 페이지네이션 결함 — 한컴 정합 대비 +30 페이지 부풀음
  • 시각적 표 오버랩 (47 페이지의 pi=579 / pi=581 영역)
  • 사용자 사용성 영역 (실제 페이지 번호 vs 본 환경 표시 페이지 차이)
  • HWP5 + HWPX 양쪽 동일 발현 영역 (parser 영역 아닌 layout 영역 결함)

환경

마일스톤

M100 (v1.0.0) — 본질 페이지네이션 영역 결함으로 v1.0.0 진입 전 우선 처리 권고.

컨트리뷰터 안내

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

진행 시 참고

  • 한컴 (한컴오피스 2010 / 2020 / 2022) 의 페이지네이션 + 표 조판 동작이 권위 기준 (reference_authoritative_hancom)
  • 본 결함은 표 wrap=TopAndBottom 영역의 pi/vpos 누적 처리 추정 — src/renderer/layout/ 영역 검토 권장
  • HWP5/HWPX 양쪽 동일 발현 → renderer 영역 결함 (parser 영역 아님)
  • dump-pages + --debug-overlay 결합으로 시각 검증 권장

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions