Skip to content

[m100] Task #479 회귀 — 21_언어_기출 [4~6] 페이지 2 박스 top y header 텍스트에 붙음 (gap 9.54 → 0 px) #552

@planet6897

Description

@planet6897

증상

`samples/21_언어_기출_편집가능본.hwp` 페이지 2 우측 단 [46] passage 박스 top 이 [46] header 텍스트 ("[4~6] 다음 글을 읽고 물음에 답하시오.") 바로 아래에 붙어 있음 (gap=0). PDF 한컴 2010 은 8.73 px gap 보장.

측정값

위치 pre-#479 post-#479 (current) PDF 한컴 2010
[4~6] 박스 top y 233.97 px 224.43 px 175.36 pt
header bottom 224.43 224.43 168.81 pt
gap (header → box top) 9.54 px 0.0 px (regression) 8.73 px

→ pre-#479 가 PDF 정합. Task #479 가 0 으로 만들어 visible 회귀.

원인 (bisect 확정)

커밋 `fa737850` Task #479 ("paragraph 누적에서 trailing line_spacing 제외"):

`paragraph_layout.rs:2545+` 가 본문 paragraph 의 마지막 줄에서 trailing line_spacing 제외:
```rust
} else if is_full_paragraph_end && cell_ctx.is_none() {
// 셀 외부 paragraph 의 마지막 줄 (#479)
y += line_height; // trailing ls 제외
}
```

pi=44 ([4~6] header, 본문 paragraph) 의 마지막 줄에서 trailing ls 9.54 px 제거 → 다음 paragraph (border-start: pi=45 빈 + pi=46 본문 + border_fill_id) 가 9.54 px 위로 이동 → 박스 top 이 header 텍스트 바로 아래.

정합 기준

fix 후보

Task #479 의 "본문 paragraph trailing ls 제외" 가 paragraph border 전환 직전 paragraph 에는 적용 안 되어야 함.

조건 보강:
```rust
} else if is_full_paragraph_end && cell_ctx.is_none()
&& !next_paragraph_starts_border() {
y += line_height;
}
```

또는 다른 형태의 선택적 적용. 광범위 사전 평가 필요.

무회귀 검증 기준

별도 사항 (회귀 아님)

"글상자가 우측으로 밀려있음" — pre-#479 에도 box_left=591.49 (col_left+11.33 px). PDF 기대 box_left=580 (col_left). 850 HU shift 는 pre-existing 결함. 본 issue 와 별도.

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