Skip to content

다단 col 0 cur_h 가 HWP vpos 대비 ~100px over-advance (exam_kor 섹션 2 페이지 18) #441

@planet6897

Description

@planet6897

증상

samples/exam_kor.hwp 섹션 2 페이지 18 (rhwp Stage 2 기준) 의 col 0 cur_h 가 HWP vpos 보다 약 100 px 앞서서 진행. 결과적으로 pi=11 (작은 paragraph) 이 col 0 에서 split 됨.

페이지 18 단 0: items=17, used=1209.1px (overflow 8px), hwp_used≈1100.0px, diff=+109.1
페이지 18 단 1: items=2,  used=158.8px (pi=11 line 1 + pi=12), diff=-1014.7

PDF 비교: 한컴은 같은 콘텐츠를 더 컴팩트하게 배치 (pi=11 이 col 0 에 정상 포함).

정량 진단

RHWP_TYPESET_DRIFT=1 로 측정한 섹션 2 페이지 18 col 0 진행:

pi=1 col=0  cur_h=115.9
pi=3 col=0  cur_h=658.0   (pi=2 는 Square wrap 표 처리 — drift 출력 누락)
pi=4 col=0  cur_h=844.9   (pi=3 의 advance = 186.9 = vpos_h 와 일치)
...
pi=11 col=0 cur_h=1184.6  (avail=1201.3)

HWP 좌표:

  • pi=1 first_vpos=10525 HU = 140.3 px
  • pi=11 first_vpos=81349 HU = 1084.7 px
  • HWP advance pi=1 → pi=11 = 944.4 px

rhwp advance = 1184.6 - 115.9 = 1068.7 px (HWP 대비 +124.3 px 과대)

추정 원인

pi=2 처리 시 cur_h 누적이 한컴 대비 과대.

pi=2 는 9 lines partial paragraph + Square wrap 3×2 표 (pi=2 ci=0 wrap=Square):

PartialParagraph pi=2 lines=0..9 vpos=19715..34419
Table            pi=2 ci=0 3x2 23.0x198.8px wrap=Square

Square wrap 표는 텍스트가 옆으로 흐르므로 vertical 진행에는 영향 없음. 그러나 typeset 의 표 처리에서 cur_h 가 표 높이를 추가 누적했을 가능성.

또는 partial paragraph 내 line spacing 누적 차이 (paragraph 내부 vs 외부 ls 처리).

디버깅 데이터

# pi=2 처리 트레이스
RHWP_TYPESET_DRIFT=1 RHWP_TYPESET_DRIFT_LINES=1 rhwp export-svg samples/exam_kor.hwp -o /tmp/x 2>&1 | grep -E "pi=2 col=|TYPESET_DRIFT_LINE: pi=2"

# 페이지 18 dump
rhwp dump-pages samples/exam_kor.hwp -p 17

# pi=2 ParaShape / LineSeg
rhwp dump samples/exam_kor.hwp -s 2 -p 2

원하는 동작

  • 섹션 2 페이지 18 col 0 cur_h 가 HWP vpos 와 ±50 px 이내
  • pi=11 이 col 0 에서 split 되지 않음 (FullParagraph)
  • exam_kor.hwp 22 → 21 페이지 (페이지 18+19 통합)

회귀 우려

  • 다른 Square wrap 표 + multi-line partial paragraph 케이스
  • pi=2 같은 큰 partial 처리가 영향받는 모든 다단 문서

관련

마일스톤

v1.0.0 (M100)

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