Skip to content

HWPX switch/case 네임스페이스 분기 미처리로 문단 간격/줄간격 오류 #7

@edwardkim

Description

@edwardkim

현상

HWPX 파서가 <switch>/<case>/<default> 네임스페이스 분기를 처리하지 않아, 문단 간격(before/after)과 줄간격이 잘못된 값으로 적용됨. 문서 전체 레이아웃에 영향.

재현

  • 샘플: samples/tac-img-02.hwpx 19페이지
  • paraPr id=215의 spacing이 default 케이스(800/800/3600)로 적용되나, 한컴은 HwpUnitChar 케이스(400/400/1800)를 사용

HWPX 구조

<switch>
  <case required-namespace="http://www.hancom.co.kr/hwpml/2016/HwpUnitChar">
    <margin><prev value="400"/><next value="400"/></margin>
    <lineSpacing type="FIXED" value="1800" unit="HWPUNIT"/>
  </case>
  <default>
    <margin><prev value="800"/><next value="800"/></margin>
    <lineSpacing type="FIXED" value="3600" unit="HWPUNIT"/>
  </default>
</switch>

고정값(Fixed) 줄간격의 레이아웃 동작

  • "글자에 따라" → HwpUnitChar case 값 사용
  • "고정값" → default case 값 사용 (but 현재 파서가 항상 default만 읽음)
  • 고정값 줄간격에서 LINE_SEG vpos는 절대 좌표 — TAC 표 높이와 무관하게 고정 간격 배치
  • TAC 표는 문단 위에 겹쳐서(병행) 렌더링됨, 표 높이만큼 y를 밀어내면 안 됨

영향 범위

  • 문단 간격(before/after), 줄간격, 여백(margin) 등 <switch>/<case>로 분기되는 모든 속성
  • 고정값 줄간격에서 표/그림과 문단의 병행 배치
  • 문서 전체 레이아웃 정확도에 직접 영향

해결 방향

  1. HWPX 파서에서 <switch>/<case> 요소를 인식, HwpUnitChar 네임스페이스 케이스 우선 적용
  2. 고정값 줄간격에서 LINE_SEG vpos 기반 절대 배치 구현

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions