Skip to content

exam_kor.hwp 14p 우측 단 — Square wrap 표 다음 문단 baseline 누락 (~13px 시프트) #533

@planet6897

Description

@planet6897

증상

samples/exam_kor.hwp 14페이지 우측 단 시작부에 줄간격이 일정하지 않게 보임. pi=50 (Square wrap 인라인 3×2 표 호스트) 직후 pi=51 부터 모든 문단이 baseline (~13.04 px ≈ 978 HU) 만큼 위로 시프트되어 렌더링됨.

측정

```bash
target/release/rhwp export-svg samples/exam_kor.hwp -p 13 -o /tmp/p14
target/release/rhwp dump-pages samples/exam_kor.hwp -p 13
```

문단 vpos(HU) bl(HU) 기대 y (with bl) 관측 y bl 누락 시 y
pi=50 line 0 0 978 224.74 224.69 ✓ 211.70
pi=50 line 1 1838 978 249.24 249.20 ✓ 236.21
pi=50 line 2 3676 978 273.75 273.71 ✓ 260.71
pi=51 line 0 5514 978 298.26 285.44 ✗ 285.22 ★ 일치
pi=51 line 1 7352 978 322.77 309.95 ✗ 309.73 ★ 일치
pi=53 11028 978 371.78 358.96 ✗ 358.74 ★ 일치

→ pi=50 (Square wrap host, layout_partial_paragraph 경로) 은 baseline 포함 정상.
→ pi=51 부터 (layout_paragraph 경로) baseline 누락.

시각 영향

pi=50 line 2 → pi=51 line 0 경계 간격: 11.73 px (정상 24.51 의 절반 미만). 사용자 시야에서 "줄간격이 줄어들었다" 는 인상.

문단 내부 (pi=51 line 0 → line 1) 간격은 24.51 정상. 모든 후속 문단이 baseline 만큼 일관되게 시프트되어 있어 페이지 끝까지 누적은 없으나 pi=50 → pi=51 경계 한 군데에서 시각적 결함 노출.

본질

좌측 단도 동일 패턴: pi=33/37/40/47 (Square wrap host) 직후 문단에서 동일한 11~12 px 좁은 간격 관측. 즉 Square wrap 인라인 표 호스트 직후 문단 일반 케이스에 영향.

추정 원인: vpos 보정 (Task #412/#332 경로) 으로 y_offset 이 `col_area.y + (vpos_end - base) / 75` 로 설정되어 "다음 문단 첫 줄의 top" 위치가 됨. 이후 `layout_composed_paragraph` 의 y_start 가 baseline 포함 좌표로 사용되어야 하는데 top 좌표로 들어와 baseline 보강이 누락되는 것으로 추정.

대조: layout_partial_paragraph (wrap host 전용) 의 wrap_around 경로는 vpos 를 직접 받아 내부에서 baseline 추가하여 정상 렌더.

조사 영역

회귀 위험

vpos 보정 + paragraph y 좌표 의미 변경은 다단/단일단/표분할 상호작용에 광범위 영향. 다음 샘플 회귀 점검 필요:

  • exam_kor (다단 + Square wrap 다수)
  • exam_math_no, exam_kor_math (다단 수식)
  • 단순 단일단 문서

우선순위

M100 — exam_kor 14p 시각 결함의 직접 원인. exam_kor 17p (Issue #528 PUA 옛한글) 와 별개.

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