현상
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>로 분기되는 모든 속성
- 고정값 줄간격에서 표/그림과 문단의 병행 배치
- 문서 전체 레이아웃 정확도에 직접 영향
해결 방향
- HWPX 파서에서
<switch>/<case> 요소를 인식, HwpUnitChar 네임스페이스 케이스 우선 적용
- 고정값 줄간격에서 LINE_SEG vpos 기반 절대 배치 구현
현상
HWPX 파서가
<switch>/<case>/<default>네임스페이스 분기를 처리하지 않아, 문단 간격(before/after)과 줄간격이 잘못된 값으로 적용됨. 문서 전체 레이아웃에 영향.재현
samples/tac-img-02.hwpx19페이지paraPr id=215의 spacing이 default 케이스(800/800/3600)로 적용되나, 한컴은 HwpUnitChar 케이스(400/400/1800)를 사용HWPX 구조
고정값(Fixed) 줄간격의 레이아웃 동작
영향 범위
<switch>/<case>로 분기되는 모든 속성해결 방향
<switch>/<case>요소를 인식,HwpUnitChar네임스페이스 케이스 우선 적용