현상
표 셀의 CharShape에 음수 letter_spacing(예: -24%)이 지정된 긴 숫자 텍스트(예: "65,063,026,600")를 렌더링할 때 두 가지 문제가 동시에 발생합니다.
- 글자 겹침: 음수 자간이 글리프 폭보다 크게 적용되어 인접 글자가 심하게 겹쳐 판독 불가
- 셀 폭 미사용: 압축된 텍스트가 셀 가용 폭의 절반 수준만 차지하여 넓은 여백 발생
재현 방법
- 첨부 파일
표-텍스트.hwpx (표 1개, 3행 8열, 숫자 셀 letter_spacing=-24%)
- 환경: SVG export (
rhwp export-svg 표-텍스트.hwpx --embed-fonts)
- 페이지: 1 (단일 페이지)
관련 CharShape:
<hh:charPr id="10" height="900" ...>
<hh:spacing hangul="-24" latin="-24" ... />
</hh:charPr>
기대 결과
한컴에서는 숫자가 셀 폭 거의 전체에 걸쳐 균등히 배치되어 겹침 없이 가운데 정렬되어 표시됨 (표-텍스트-hwp.png 참조).
실제 결과
rhwp 수정 전:
- 각 숫자의 advance가 3.72px인데 글리프 폭은 6.6px라 약 3px 씩 겹쳐 렌더됨
- 셀 폭 76px 중 텍스트가 차지하는 시각 폭이 약 40px에 불과
제안 해결 방안
- text_measurement.rs: per-char advance가 글리프 폭의 50% 미만으로 떨어지지 않도록 클램프 (겹침 방지)
- paragraph_layout.rs: 오버플로우 압축 자간도 평균 글자폭의 50% 이상으로 클램프
- table_layout.rs: 셀 텍스트가 가용 폭을 초과하면 좌우 패딩을 최소 1px까지 비례 축소하는 shrink_cell_padding_for_overflow 헬퍼 추가 (자연 폭은
letter_spacing=0 기준 측정)
- paragraph_layout.rs: 표 셀에서 음수 letter_spacing으로 압축된 텍스트가 여전히 available_width보다 좁으면 extra_char_spacing을 양수로 확장해 셀 폭을 100%
채우고, effective_text_width 기반으로 가운데 정렬
환경
- 브라우저: 해당 없음 (네이티브 SVG export)
- OS: Linux 6.17.0-19-generic (Ubuntu)
현상
표 셀의 CharShape에 음수 letter_spacing(예: -24%)이 지정된 긴 숫자 텍스트(예: "65,063,026,600")를 렌더링할 때 두 가지 문제가 동시에 발생합니다.
재현 방법
표-텍스트.hwpx(표 1개, 3행 8열, 숫자 셀 letter_spacing=-24%)rhwp export-svg 표-텍스트.hwpx --embed-fonts)관련 CharShape: