Skip to content

paragraph_layout 줄 위치 vs row_heights 정합 — line_segs 부재 paragraph 마지막 줄 시각 클립 #674

@jangster77

Description

@jangster77

증상

Task #672 (TAC 표 비례 축소 면제) 정정 후에도, line_segs 부재 paragraph 의 마지막 줄이 시각적으로 보이지 않거나 인접 행/셀 영역으로 침범하는 결함.

발현 영역

samples/계획서.hwp 1페이지 표:

  • 셀 [21] r=5, c=1 "목적": 측정값 row_heights[5]=67.76 (3줄 + pad), 한컴은 3줄 정상 표시. 본 환경은 SVG에 3줄 그려졌으나 PNG 변환 시 마지막 줄 미표시 또는 잘림.
  • 셀 [52] r=13, c=3 "특허 취득": 동일 패턴.

진단 결과

Task #672 정정 결과 (확인 완료)

  • height_measurer 측정: row_heights[5] = 67.76 (3줄 + pad, 정확)
  • table_layout cell_h = 67.76, layout 단 recompose_for_cell_width 결과 3줄 분할 ✅
  • paragraph_layout 줄별 y 누적 정상 (379.37, 400.71, 422.04)
  • 줄 2 끝 y = 443.37 = col_area end_y (정확히 일치) ✅
  • SVG에 3줄 baseline 모두 그려짐 (y=395.37/411.37/432.71) ✅

잔존 결함의 본질

paragraph_layout 줄 layout 위치는 col_area.y + line_idx * line_height 로 결정되며, row_heights 와 무관. 측정값을 늘려 cell BoundingBox 를 확장해도 줄 위치는 같음.

마지막 줄 baseline (432.71) + glyph descender 영역이 셀 외곽 BoundingBox (cell_y_end=445.25) 안에 있어야 정상이나, rsvg-convert PNG 변환 또는 web Canvas 렌더링에서 클립 발생.

본질 정정 방향 제안

옵션 A: paragraph_layout 줄 위치 ↔ row_heights 연동

마지막 줄의 baseline 위치를 col_area.h 기반이 아니라 row_heights 기반으로 결정. 측정값 증가 시 줄 위치도 위로 조정되어 모든 줄이 cell 안에 fit.

옵션 B: row_heights 결정 시 baseline + descent 까지 포함

calc_para_lines_height / lines_total 계산 시 마지막 줄에 font_size * 0.5 정도 descent 여유 추가 + paragraph_layout 줄 layout 위치도 동일하게 조정.

옵션 C: cell BoundingBox 확장 (clip 영역만 확장)

cell.clip 영역을 cell_h + descent_buffer 로 확장. 인접 셀 영역 침범 위험 (시각 회귀).

Task #672 와의 관계

마일스톤

M100 (v1.0.0) — 조판 엔진 정합성

권위 자료

의존성

후속 영역

본 결함 정정 후 samples/계획서.hwp 1페이지 표의 모든 셀 콘텐츠가 한컴 정합 표시.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions