증상
`samples/exam_science.hwp` 1쪽 상단 외곽 1×1 표 cell[0]의 4번째 paragraph (p[3]) 내부에 배치된 3 개의 인라인 sub-table (성명 1×2, 수험 번호 1×10, 제 [ ] 선택)이 cell halign=Center 임에도 cell 좌측에 붙어 출력됨.
SVG 실측 (Task #568 fix 후, byte-identical)
`output/svg/exam_science_after_dbg/exam_science_001.svg`:
- 외곽 1×1 표 cell 폭 ≈ 887 px (본문 폭 전체)
- 성명 sub-table 첫 글리프 "성" : x=86.39
- 수험 번호 sub-table 첫 글리프 "수" : x=252.72
- 제 [ ] 선택 sub-table 첫 글리프 "제" : x=594.96
- 마지막 글리프 "택" : x=684.99
3 개 sub-table 합산 점유 폭 ≈ 600 px. cell halign=Center 라면 잔여 ≈250 px 가 좌우로 균등 (~125 px 씩) 분배되어야 하나, 현재 모두 우측에 ~250 px 잔존 → 좌측 0 px / 우측 250 px.
IR 데이터 (rhwp dump -s 0 -p 0)
```
[6] 표: 1행×1열, 셀=1, padding=(0,0,0,0)
[6] [common] size=66472×13322, valign=Top, halign=Center
[6] 셀[0] paras=4
[6] p[0] ps_id=21 ctrls=1 "2025학년도 ..."
[6] p[1] ps_id=22 ctrls=0 "과학탐구 영역(화학Ⅰ)"
[6] p[2] ps_id=27 ctrls=1 (사각형)
[6] p[3] ps_id=24 ctrls=3 text=" " (3 sub-tables)
[6] p[3] 내부표: 1행×2열 (성명)
[6] p[3] 내부표: 1행×10열 (수험 번호)
[6] p[3] 내부표: 1행×?열 (제 [ ] 선택)
```
p[3] 단락에 3 sub-table 이 인라인 + halign=Center 가 cell 또는 paragraph 에 적용되어야 한다.
본질 추정
`paragraph_layout.rs::layout_composed_paragraph` 또는 `layout_inline_table_paragraph` 의 인라인 sub-table 시퀀스 배치 로직이 cell halign / paragraph alignment 를 무시하고 좌단부터 배치. Center alignment 시 sub-table 시퀀스의 시작 x 를 `(cell_inner_width - sum_table_widths) / 2` 로 보정해야 함.
우선순위
수능 시험지 헤더의 시각 정렬 — 1 페이지 상단 한정. M100 milestone 후순위.
참고
증상
`samples/exam_science.hwp` 1쪽 상단 외곽 1×1 표 cell[0]의 4번째 paragraph (p[3]) 내부에 배치된 3 개의 인라인 sub-table (성명 1×2, 수험 번호 1×10, 제 [ ] 선택)이 cell halign=Center 임에도 cell 좌측에 붙어 출력됨.
SVG 실측 (Task #568 fix 후, byte-identical)
`output/svg/exam_science_after_dbg/exam_science_001.svg`:
3 개 sub-table 합산 점유 폭 ≈ 600 px. cell halign=Center 라면 잔여 ≈250 px 가 좌우로 균등 (~125 px 씩) 분배되어야 하나, 현재 모두 우측에 ~250 px 잔존 → 좌측 0 px / 우측 250 px.
IR 데이터 (rhwp dump -s 0 -p 0)
```
[6] 표: 1행×1열, 셀=1, padding=(0,0,0,0)
[6] [common] size=66472×13322, valign=Top, halign=Center
[6] 셀[0] paras=4
[6] p[0] ps_id=21 ctrls=1 "2025학년도 ..."
[6] p[1] ps_id=22 ctrls=0 "과학탐구 영역(화학Ⅰ)"
[6] p[2] ps_id=27 ctrls=1 (사각형)
[6] p[3] ps_id=24 ctrls=3 text=" " (3 sub-tables)
[6] p[3] 내부표: 1행×2열 (성명)
[6] p[3] 내부표: 1행×10열 (수험 번호)
[6] p[3] 내부표: 1행×?열 (제 [ ] 선택)
```
p[3] 단락에 3 sub-table 이 인라인 + halign=Center 가 cell 또는 paragraph 에 적용되어야 한다.
본질 추정
`paragraph_layout.rs::layout_composed_paragraph` 또는 `layout_inline_table_paragraph` 의 인라인 sub-table 시퀀스 배치 로직이 cell halign / paragraph alignment 를 무시하고 좌단부터 배치. Center alignment 시 sub-table 시퀀스의 시작 x 를 `(cell_inner_width - sum_table_widths) / 2` 로 보정해야 함.
우선순위
수능 시험지 헤더의 시각 정렬 — 1 페이지 상단 한정. M100 milestone 후순위.
참고