증상
`samples/21_언어_기출_편집가능본.hwp` 페이지 14 단 1의 paragraph 299(`pi=299 ci=0`) 표("[A]" 박스)가 단 1 본문 안이 아닌 단 0과 단 1 사이의 갭 영역에 그려진다.
측정값:
- 표 위치: x=580.9, w=22.7, h=42.6
- 단 0 영역: x=117.2..542.4 (폭 425.2)
- 단 1 본문 시작: x≈637.6
- 단 사이 갭: x=542.4..595 (52.6px)
- → 표가 단 0 끝 + 38.5px 위치 (= 단 사이 갭 안)
HWP 원본 구조
```
--- 문단 0.299 --- cc=269, text_len=260, controls=1
[PS] margins: left=1704 right=1704 indent=1984 border_fill_id=4
[0] 표: 3행×2열, 셀=5
[common] treat_as_char=false, wrap=어울림, vert=문단(475=1.7mm), horz=문단(54=0.2mm)
[common] size=1699×16550(6.0×58.4mm), valign=Top, halign=Left
[outer_margin] right=3.0mm(850)
셀[2] r=1,c=0 rs=1,cs=2 text="[A]"
```
표는 wrap=어울림(Square), horz=문단 기준 0.2mm, paragraph margin_left=1704 HU(6mm).
기대 동작 (PDF)
표 x = paragraph 시작 + horz_offset = (단 1 시작 + paragraph margin_left) + 0.2mm
≈ 637.6 (paragraph 본문 시작 위치) 부근
실제 동작 (SVG)
표 x = 580.9 — 단 사이 갭 영역. paragraph margin_left가 표 x 좌표 계산에 미반영.
추정 원인
`src/renderer/layout.rs`의 wrap=Square 표 처리에서 paragraph margin_left가 빠진 채 단 시작 또는 직전 인접 단의 우측 끝 좌표 기준으로 표 x를 계산하고 있을 가능성. `is_tac=false` + `tbl_is_square=true` 분기 (`layout.rs:2256-2270`) 검토 필요.
영향 범위
- wrap=Square (어울림 배치) + paragraph indent/margin이 적용된 모든 표
- 시각적으로 본문 영역 밖에 그려져 가독성 저하
- 다단 레이아웃 + 어울림 표 조합에서 특히 두드러짐
우선순위
중 — 시각 회귀이지만 콘텐츠 누락은 아님.
증상
`samples/21_언어_기출_편집가능본.hwp` 페이지 14 단 1의 paragraph 299(`pi=299 ci=0`) 표("[A]" 박스)가 단 1 본문 안이 아닌 단 0과 단 1 사이의 갭 영역에 그려진다.
측정값:
HWP 원본 구조
```
--- 문단 0.299 --- cc=269, text_len=260, controls=1
[PS] margins: left=1704 right=1704 indent=1984 border_fill_id=4
[0] 표: 3행×2열, 셀=5
[common] treat_as_char=false, wrap=어울림, vert=문단(475=1.7mm), horz=문단(54=0.2mm)
[common] size=1699×16550(6.0×58.4mm), valign=Top, halign=Left
[outer_margin] right=3.0mm(850)
셀[2] r=1,c=0 rs=1,cs=2 text="[A]"
```
표는 wrap=어울림(Square), horz=문단 기준 0.2mm, paragraph margin_left=1704 HU(6mm).
기대 동작 (PDF)
표 x = paragraph 시작 + horz_offset = (단 1 시작 + paragraph margin_left) + 0.2mm
≈ 637.6 (paragraph 본문 시작 위치) 부근
실제 동작 (SVG)
표 x = 580.9 — 단 사이 갭 영역. paragraph margin_left가 표 x 좌표 계산에 미반영.
추정 원인
`src/renderer/layout.rs`의 wrap=Square 표 처리에서 paragraph margin_left가 빠진 채 단 시작 또는 직전 인접 단의 우측 끝 좌표 기준으로 표 x를 계산하고 있을 가능성. `is_tac=false` + `tbl_is_square=true` 분기 (`layout.rs:2256-2270`) 검토 필요.
영향 범위
우선순위
중 — 시각 회귀이지만 콘텐츠 누락은 아님.