Skip to content

표 셀 내 긴 숫자 텍스트가 음수 자간(letter_spacing)으로 인해 글자 겹침 및 셀 폭 미사용 현상 #229

@planet6897

Description

@planet6897

현상

표 셀의 CharShape에 음수 letter_spacing(예: -24%)이 지정된 긴 숫자 텍스트(예: "65,063,026,600")를 렌더링할 때 두 가지 문제가 동시에 발생합니다.

  1. 글자 겹침: 음수 자간이 글리프 폭보다 크게 적용되어 인접 글자가 심하게 겹쳐 판독 불가
  2. 셀 폭 미사용: 압축된 텍스트가 셀 가용 폭의 절반 수준만 차지하여 넓은 여백 발생

재현 방법

  1. 첨부 파일 표-텍스트.hwpx (표 1개, 3행 8열, 숫자 셀 letter_spacing=-24%)
  2. 환경: SVG export (rhwp export-svg 표-텍스트.hwpx --embed-fonts)
  3. 페이지: 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions