Skip to content

Task #1070: HWPX TAC 표 line0 + 본문줄 post-text 표줄 제외 — 본문 하단 overflow 해소 (closes #1070)#1072

Closed
planet6897 wants to merge 1 commit into
edwardkim:develfrom
planet6897:pr/task1070-tac-post-text-overflow
Closed

Task #1070: HWPX TAC 표 line0 + 본문줄 post-text 표줄 제외 — 본문 하단 overflow 해소 (closes #1070)#1072
planet6897 wants to merge 1 commit into
edwardkim:develfrom
planet6897:pr/task1070-tac-post-text-overflow

Conversation

@planet6897
Copy link
Copy Markdown
Contributor

증상

거의 한 페이지 크기 treat_as_char(TAC) 표가 첫 줄에 있고 그 뒤에 본문 줄이 있는 문단에서, 표는 거의 fit하나 후속 본문 텍스트가 표 높이만큼 추가 하강해 편집영역 하단을 348~472px 초과 (#1070).

파일 문단 overflow(전→후)
2025년 기부·답례품…양식.hwpx pi=25 (page2) 472 → 해소(표잔여 5.6)
hwpx/hwpx-h-02.hwpx pi=51 (page2) 348 → 7.4
hwpx/2025년 2분기 해외직접투자 (최종).hwpx pi=51 348 → 7.4

근본 원인

place_table_with_text(typeset.rs)의 post_table_startattr & 0x01(HWP5 TAC 비트)에만 의존. HWPX TAC 표는 비트0=0 → 마지막 elsepost_table_start = pre_end(=0) → 표줄(line0)이 post-text PartialParagraph(0..total_lines) 에 포함 → 후속 본문 줄이 표 높이만큼 하강.

HWP5 TAC(attr&0x01)는 pre_end.max(1) 로 이미 표줄을 제외 → HWPX 한정 갭. (#1068의 lh over-inflation 과는 별개 원인.)

수정

} else if table.attr & 0x01 != 0 {
    pre_table_end_line.max(1)
} else if table.common.treat_as_char && total_lines > pre_table_end_line + 1 {
    // 표줄 다음에 실제 본문 줄이 있는 HWPX TAC 표: 표줄을 post-text 에서 제외
    pre_table_end_line + 1
} else if is_last_table && !is_first_table {
    0
} else {
    pre_table_end_line
};

treat_as_char && total_lines > pre_end + 1(표줄 뒤에 실제 본문 줄) 일 때만 표줄 제외. 단일줄 TAC 표는 불변 — 단순 blanket 확장(|| treat_as_char)은 단일줄 표의 post-text 까지 제거해 mel-001 회귀(검증으로 확정), 정밀 게이트로 회피.

검증

  • 재현 3파일 본문 overflow 해소 (dump-pages lines=0..2 → 1..2, 표줄 제외).
  • 전수 sweep(samples hwp/hwpx): 3057→3043 lines / 382815→376707px (−14/−6108, 회귀 0, hwp3-sample16-hwp5.hwpx 35→15 · aift.hwpx 5→4 · tac-img-02.hwpx 7→6 개선).
  • 회귀 가드 3 신규(tests/issue_1070_tac_table_post_text_overflow.rs — SVG <text> max_y ≤ 페이지 높이) 통과.
  • golden SVG 8/8, cargo test --release lib 1324 passed + 통합 0 failed, clippy/fmt clean.

🤖 Generated with Claude Code

…verflow 해소 (closes edwardkim#1070)

## 증상
거의 한 페이지 크기 treat_as_char(TAC) 표가 첫 줄에 있고 그 뒤에 본문 줄이
있는 문단에서, 표는 거의 fit하나 후속 본문 텍스트가 표 높이만큼 추가 하강해
편집영역 하단을 348~472px 초과.

재현(공개 샘플): 2025년 기부·답례품…양식.hwpx(pi=25 472px),
hwpx/hwpx-h-02.hwpx(pi=51 348px), hwpx/2025년 2분기 해외직접투자(최종).hwpx.

## 근본 원인
place_table_with_text(typeset.rs) 의 post_table_start 가 attr & 0x01(HWP5
TAC 비트)에만 의존 → HWPX TAC 표(비트0=0)는 else 로 떨어져 post_start=0 →
표줄(line0)이 post-text PartialParagraph 에 포함 → 후속 본문 줄이 표 높이만큼
하강. HWP5 TAC 는 pre_end.max(1) 로 이미 표줄 제외 → HWPX 한정 갭.

## 수정
treat_as_char && total_lines > pre_end+1 (표줄 다음에 실제 본문 줄) 일 때만
post_start = pre_end+1 로 표줄 제외(HWP5 정합). 단일줄 TAC 표는 불변 — 단순
blanket(|| treat_as_char) 은 단일줄 표 post-text 까지 제거해 mel-001 회귀.

## 검증
- 재현 3파일 본문 overflow 해소.
- 전수 sweep 3057→3043 lines / 382815→376707px (회귀 0, sample16-hwp5.hwpx
  35→15·aift 5→4·tac-img-02.hwpx 7→6 개선).
- 회귀 가드 3 신규(tests/issue_1070, SVG text max_y ≤ 페이지 높이) 통과.
- golden SVG 8/8, cargo test --release lib 1324 + 통합 0 failed, clippy/fmt clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@edwardkim edwardkim self-requested a review May 22, 2026 06:53
@edwardkim edwardkim added the enhancement New feature or request label May 22, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone May 22, 2026
@edwardkim
Copy link
Copy Markdown
Owner

Cherry-picked into devel as 0facb1b. Maintainer validation completed: cargo fmt --check passed, cargo test --release --lib passed (1335 passed / 0 failed / 6 ignored), issue_1070_tac_table_post_text_overflow passed (3/3), WASM build passed, and visual judgment passed. Closing this PR as integrated via cherry-pick.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants