Skip to content

shortcut.hwp 페이지 1 헤더 단일 LINE_SEG TAC 표 후속 spacing 누락 (~38px 압축) #773

@planet6897

Description

@planet6897

본질

samples/basic/shortcut.hwp 페이지 1 의 헤더 표 (pi=1 '커서 이동', pi=29 '지우기') 가 단일 LINE_SEG TAC 1x1 표 + ColumnDef 동반 paragraph. 표 직후 본문 paragraph 사이 spacing 이 PDF 권위(한글 2022) 대비 ~38 px 압축.

Task #770 의 정정 대상 (pi=36 등 다중 LINE_SEG 패턴) 과 영역이 다름. 단일 LINE_SEG 케이스는 Task #770 가드 통과 안 함 (last.vpos > first.vpos 조건 미달).

재현

cargo run --release --bin rhwp -- export-svg samples/basic/shortcut.hwp -p 0 -o /tmp/x

PDF 페이지 1: 헤더 ('커서 이동') ~ 본문 ('빈칸 삽입') 거리 ≈ 60 px.
rhwp 페이지 1: 동일 거리 ≈ 21 px.
→ rhwp 38 px 압축.

IR 분석

pi=1 (페이지 1 '커서 이동' 헤더 — 결함)

[PS] ps_id=2 line=100/Percent spacing: before=0 after=0
ls[0]: vpos=0, lh=2332, ls=0     ← 단일 LINE_SEG (lh=2332 = 31.1 px)
[0] 단정의: 1단, 유형=일반, 간격=10mm
[0]   구분선: type=3, width=1, color=0x000000ff
[1] 표: 1x1, RowBreak, treat_as_char=true
[1]   [outer_margin] left=283 right=283 top=283 bottom=283   (=1mm)

vpos_end = lh = 31.1 px. layout advance 31.1 px. PDF 정합 ~50+ px 필요.

pi=36 (페이지 2 '파일' 헤더 — Task #770 정정 완료)

ls[0]: vpos=0,    lh=1200, ls=0     ← LINE_SEG 2개
ls[1]: vpos=1200, lh=2332, ls=0

vpos_end = 1200 + 2332 = 47.1 px. Task #770 의 3중 가드 (ColumnDef + 다중 LINE_SEG + last.lh > first.lh) 통과 후 advance 정합.

영향 paragraph

페이지 1 의 두 헤더 표:

  • pi=1 ('커서 이동'): 단일 LINE_SEG, ColumnDef + Table
  • pi=29 ('지우기'): 단일 LINE_SEG, ColumnDef + Table

dump-pages 페이지 1:

단 0 (items=1, used=69.1px, hwp_used≈53.1px, diff=+16.0px)  ← pi=0 큰 헤더
단 1 (items=1, used=31.1px, zone_y_offset=69.1)            ← pi=1 표 (단일 LINE_SEG)
단 2 (items=14, ..., zone_y_offset=100.2)                  ← 본문 시작

본문 zone_y_offset = 100.2 = 69.1 + 31.1. 표 직후 즉시 본문. PDF 와 38 px 차이.

Root cause 가설

가설 A: HWP parser 의 LINE_SEG 통합 인코딩

HWP 일부 paragraph 의 LINE_SEG 가 변환 시 다중 → 단일로 통합. pi=1 본질적으로 다중 LINE_SEG 이지만 IR 에서 단일로 인코딩.

가설 B: ColumnDef "간격" 의 미적용

pi=1 의 ColumnDef "간격=10mm (2835 HU = 37.8 px)" 이 단 1단이라 column-gap 으로 사용되지 않음. 이 값이 다단 영역 진입 시 추가 top-spacing 으로 적용되어야 할 가능성 (38 px 정확히 일치).

가설 C: 한컴 PDF 의 디자인 spacing

한컴 2022 PDF 가 단일 LINE_SEG 헤더 paragraph 에도 표 후속 디자인 spacing 추가 (HWPSPEC 외 자체 디자인).

정정 방향 후보

후보 위치 위험
H1: ColumnDef.column_gap 을 단 1단 케이스에서 top-spacing 으로 적용 layout.rs ColumnDef 처리 ColumnDef 의미 변경 → 광범위 회귀
H2: 단일 LINE_SEG TAC 표 + ColumnDef paragraph 에 표 후속 spacing 추가 layout_table_item TAC 분기 가드 식별자 부족 (pi=1 vs 다른 케이스)
H3: HWP parser 의 LINE_SEG 변환 정정 (다중 LINE_SEG 으로 통합 분리) parser/hwp5 본질 영역, 광범위 영향

영향 범위

  • samples/basic/shortcut.hwp 페이지 1 의 pi=1, pi=29 (단일 LINE_SEG 헤더 표)
  • 다른 샘플 중 동일 패턴 (단일 LINE_SEG ColumnDef + 1x1 TAC 표) 가능성

우선순위

Task #768 (PR #772) + Task #770 (PR #771) 머지 후 별도 task 로 진행. 본 결함은 단일 LINE_SEG 케이스로 Task #770 의 영역 확장 또는 별도 메커니즘 필요.

관련 자료

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