증상
exam_kor.hwp 의 16/27/36번 <보기> / <자료> 글상자에서 본문과 셀 테두리 사이 좌·우 padding이 거의 0으로 표시됨.
원인 (분석)
src/renderer/layout/table_layout.rs:860 shrink_cell_padding_for_overflow 가 양쪽 정렬 한국어 본문의 자연 폭을 과대 추정하여, 정상 padding(=850 HU ≈ 3 mm)을 거의 0까지 축소.
resolve_cell_padding 은 cell.padding(850)을 정상 채택
- 직후
shrink_cell_padding_for_overflow 가 estimate_text_width (음수 letter_spacing 0으로 clamp) 결과로 1.15× 임계 초과 판단
- CharShape
ratio=95% / spacing=-5% 와 HWP가 이미 line_segs로 분배해 둔 자간이 추정에 충분히 반영되지 않음
검증
같은 표 구조 / pad=(850,850,992,708) / aim=false 인데 25번 박스(text_len=639, 8 lines)는 정상, 27번 박스(text_len=681, 9 lines)는 깨짐. 텍스트 분량 차이로 임계 초과 여부만 갈리는 것이 결정적 증거.
수정 방향
- line_segs 가 이미 채워진 정상 IR 케이스에서는 shrink 비활성화 (HWP 가 셀 폭 안에서 자간 분배 완료)
- 임계값 완화 + CharShape effective width 반영
- 최소 padding 1 px 대신 원래의 일정 비율 유지
영향 샘플
- samples/exam_kor.hwp 페이지 6 (16번), 페이지 9 (27번), 페이지 17 (36번)
증상
exam_kor.hwp의 16/27/36번<보기>/<자료>글상자에서 본문과 셀 테두리 사이 좌·우 padding이 거의 0으로 표시됨.원인 (분석)
src/renderer/layout/table_layout.rs:860 shrink_cell_padding_for_overflow가 양쪽 정렬 한국어 본문의 자연 폭을 과대 추정하여, 정상 padding(=850 HU ≈ 3 mm)을 거의 0까지 축소.resolve_cell_padding은 cell.padding(850)을 정상 채택shrink_cell_padding_for_overflow가estimate_text_width(음수 letter_spacing 0으로 clamp) 결과로 1.15× 임계 초과 판단ratio=95%/spacing=-5%와 HWP가 이미 line_segs로 분배해 둔 자간이 추정에 충분히 반영되지 않음검증
같은 표 구조 / pad=(850,850,992,708) / aim=false 인데 25번 박스(text_len=639, 8 lines)는 정상, 27번 박스(text_len=681, 9 lines)는 깨짐. 텍스트 분량 차이로 임계 초과 여부만 갈리는 것이 결정적 증거.
수정 방향
영향 샘플