배경
Task #485 (synam-001.hwp 분할 표 셀 마지막 줄 클립) 정정에서 compute_cell_line_ranges 의 break 조건에 SPLIT_LIMIT_EPSILON = 2.0px 휴리스틱 마진을 도입하여 결함을 해소.
이 epsilon 은 본질적으로 typeset 의 split_end_limit = avail_content 추정과 layout 의 line_h 누적 사이의 미세 어긋남 을 흡수하는 임시방편이다. 본 이슈는 그 구조적 본질을 통일하는 후속 작업.
관련 자료
본질
typeset_layout_drift_analysis.md §근본 해결안 비교 의 A. 단일 모델 통합 안:
typeset advance = height_for_fit (Task 문단 trailing line_spacing 누적 drift — col 1+ 의 본문이 HWP 보다 일찍 다음 페이지로 넘어감 #331 의 1단계)
layout per-paragraph advance = height_for_fit (Task 문단 trailing line_spacing 누적 drift — col 1+ 의 본문이 HWP 보다 일찍 다음 페이지로 넘어감 #331 의 2단계)
vpos correction 의 vpos_end 에서 trail_ls 제외, 또는 양방향 보정 (collapse 방지 검증 포함)
clamp pile 버그 → "stop drawing on overflow" 로 변경 + typeset 에 overflow signal 발행
선행 시도 (Task #331 ) 는 회귀로 revert 되었으나, 단계적 통합 접근으로 재시도 가치 있음.
영향 범위
src/renderer/typeset.rs advance 모델
src/renderer/layout.rs per-paragraph advance + vpos correction
src/renderer/layout/paragraph_layout.rs clamp pile 영역
src/renderer/layout/table_layout.rs compute_cell_line_ranges (Task synam-001.hwp 15페이지 분할 표 셀 마지막 줄 클립핑 (Task #431 잔여) #485 의 epsilon 제거 가능)
src/renderer/height_measurer.rs (정합 검증)
검증 케이스
마일스톤
v1.0.0 (M100) — 조판 엔진 정합성
우선순위
낮음 (현재 epsilon 휴리스틱이 본 결함 해소 + 회귀 없음). 다른 분할 표 결함이 누적되거나 폰트 변경으로 epsilon 부족 케이스 발생 시 우선도 상승.
배경
Task #485 (synam-001.hwp 분할 표 셀 마지막 줄 클립) 정정에서
compute_cell_line_ranges의 break 조건에SPLIT_LIMIT_EPSILON = 2.0px휴리스틱 마진을 도입하여 결함을 해소.이 epsilon 은 본질적으로 typeset 의
split_end_limit = avail_content추정과 layout 의 line_h 누적 사이의 미세 어긋남 을 흡수하는 임시방편이다. 본 이슈는 그 구조적 본질을 통일하는 후속 작업.관련 자료
mydocs/troubleshootings/typeset_layout_drift_analysis.md— Task 문단 trailing line_spacing 누적 drift — col 1+ 의 본문이 HWP 보다 일찍 다음 페이지로 넘어감 #331 revert 회고 (typeset/layout drift 본질 + 단일 모델 통합 제안)mydocs/troubleshootings/typeset_fit_accumulation_drift.md— fit 누적 driftmydocs/report/task_m100_485_report.md§6.2본질
typeset_layout_drift_analysis.md§근본 해결안 비교 의 A. 단일 모델 통합 안:height_for_fit(Task 문단 trailing line_spacing 누적 drift — col 1+ 의 본문이 HWP 보다 일찍 다음 페이지로 넘어감 #331 의 1단계)height_for_fit(Task 문단 trailing line_spacing 누적 drift — col 1+ 의 본문이 HWP 보다 일찍 다음 페이지로 넘어감 #331 의 2단계)vpos_end에서 trail_ls 제외, 또는 양방향 보정 (collapse 방지 검증 포함)선행 시도 (Task #331) 는 회귀로 revert 되었으나, 단계적 통합 접근으로 재시도 가치 있음.
영향 범위
src/renderer/typeset.rsadvance 모델src/renderer/layout.rsper-paragraph advance + vpos correctionsrc/renderer/layout/paragraph_layout.rsclamp pile 영역src/renderer/layout/table_layout.rscompute_cell_line_ranges(Task synam-001.hwp 15페이지 분할 표 셀 마지막 줄 클립핑 (Task #431 잔여) #485 의 epsilon 제거 가능)src/renderer/height_measurer.rs(정합 검증)검증 케이스
samples/synam-001.hwpp15·p20·p21 — Task synam-001.hwp 15페이지 분할 표 셀 마지막 줄 클립핑 (Task #431 잔여) #485 회귀 점검 (epsilon 없이도 클립 미발생)samples/kps-ai.hwpp56/p67/p68/p69/p70/p72/p73 — Task kps-ai p56 외부 표 안 콘텐츠가 표 높이를 초과해 클립 (v0.7.3 대비 회귀) #362 회귀 점검마일스톤
v1.0.0 (M100) — 조판 엔진 정합성
우선순위
낮음 (현재 epsilon 휴리스틱이 본 결함 해소 + 회귀 없음). 다른 분할 표 결함이 누적되거나 폰트 변경으로 epsilon 부족 케이스 발생 시 우선도 상승.