Task #1068: HWPX treat_as_char 표 LINE_SEG lh 보정 over-inflation 정정 — 본문 하단 overflow 해소 (closes #1068)#1069
Open
planet6897 wants to merge 1 commit into
Open
Conversation
Contributor
Author
PR #1093 (Task #1046) 와의 영역 중복 분석본 PR(Task #1068, lh over-inflation 정정) 후속 작업으로 PR #1093 (Task #1046, 측정 통일 B) 재제출 (closes #1046) 을 진행하던 중, 본 PR 타깃 파일이 #1093 만으로도 사실상 해소됨을 확인했습니다. 측정 (현
|
| 적용본 | samples/2. 인공지능(AI) 기반 재정통합시스템 구축 용역 제안요청서.hwpx |
|---|---|
| baseline | 12 lines / 107 px |
| #1093 만 적용 (#1046, 본 PR 미적용) | 1 line / 29 px |
본 PR 의 직접 타깃이었던 pi=567 839px overflow 는 #1093 만으로도 해소되며, 잔여 1/29px 는 in-scope 외 마이너 측정 드리프트 (#1049 영역) 입니다.
두 PR 의 의미 차이
- 본 PR (Task #1068: HWPX treat_as_char 표 LINE_SEG lh 보정 over-inflation 정정 — 본문 하단 overflow 해소 (closes #1068) #1069 / Task 거의 한 페이지 크기 treat_as_char 표 분할 시 새 페이지 미이월 → 본문 하단 overflow #1068): HWPX TAC 표의
LINE_SEG.lhover-inflation 근본 원인 정정 (document.rspost-처리 보정 게이트 추가). parser/IR 정합 측면 fix. - PR Task #1046: 본문 하단 overflow 정합 — 측정 통일(B) [#1048 rebase 재제출] (closes #1046) #1093 (Task 측정 통일 — 페이지네이터 cut/추정 높이 ↔ 렌더러 height (본문 하단 overflow 잔여, #1022 후속) #1046): typeset 측정 통일 + trailing overflow 오검출 정정. 본문 하단 overflow 증상 흡수.
같은 파일 overflow 를 두 PR 이 다른 메커니즘으로 해소합니다. 본 PR 은 lh 값 자체를 정정하므로 dump/round-trip/향후 lh 의존 로직 정합 측면에서 별개 가치가 있으나, 본문 overflow 시각 해소 목적만 본다면 #1093 가 흡수합니다.
다른 본 세션 PR 영향 (참고)
| PR | 타깃 | #1093 적용 시 |
|---|---|---|
| #1069 (본 PR) | 제안요청서.hwpx | 12/107→1/29 (거의 해소) |
| #1083 (#1073 중첩 표) | kps-ai.hwp | 10/849→2/763 (758px 그대로) |
| #1084 (#1079 그림 pushdown) | pr-149.hwp | 1/110 (불변) |
| #1091 (#1082 다단 미주) | 3-09/10/11월 | 거의 불변 |
다른 3 PR 은 각각 다른 메커니즘 — #1093 으로 대체 불가.
머지 판단 (메인테이너)
- (가) 본 PR 머지 — lh IR 정정 보존 + Task #1046: 본문 하단 overflow 정합 — 측정 통일(B) [#1048 rebase 재제출] (closes #1046) #1093 와 함께 적용 시 더 깨끗 (1/29 → 0 가능). 두 PR 동시 머지 시 충돌 가능성 검토 필요 (둘 다 본문 하단 overflow 영역).
- (나) 본 PR close — overflow 시각만 본다면 Task #1046: 본문 하단 overflow 정합 — 측정 통일(B) [#1048 rebase 재제출] (closes #1046) #1093 가 충분. lh IR 정정은 후속 별도 처리.
본 PR 의 변경 영역(document_core/commands/document.rs:283 first_mut() 가드) 은 #1093 의 변경 영역(typeset.rs measurement / layout.rs overflow 판정 / rendering.rs paginate_pass) 과 파일이 겹치지 않아 자동 충돌은 없습니다. 메인테이너 판단에 맡깁니다.
1800ca3 to
6c731a5
Compare
…on 정정 (closes edwardkim#1068) ## 증상 거의 한 페이지 크기의 treat_as_char 표가 제목줄과 같은 문단에 있을 때, 표 줄이 본문 하단 아래로 통째로 그려져 ~839px overflow. ## 근본 원인 `document_core/commands/document.rs` 의 HWPX TAC 표 LINE_SEG lh 보정이 무조건 `first_mut()`(제목줄)을 표 높이로 확대했다. 표가 둘째 줄 이후에 있는 문단(제목줄 + 표줄)에서 제목줄 lh 가 표 높이로 오염(예: vertsize 2200 → 63234)되어, 렌더러의 lh 기반 표 줄 탐지(place_table_with_text)가 제목줄을 표 줄로 오매칭 → 표 줄이 post-text 로 포함되어 Table item 과 이중 그리기 → overflow. HWPX XML 원본(linesegarray vertsize) 대조로 제목줄의 원래 높이가 표 높이가 아님을 확정. ## 수정 이미 표 높이를 담은 LINE_SEG 가 있으면(한컴이 저장한 실제 linesegarray — 표 줄 seg 의 vertsize 가 표 높이) 보정을 생략한다. linesegarray 가 없어 기본 lh=100 단일 seg 만 합성된 경우에만 첫 seg 를 표 높이로 확대 (기존 의도 보존). 라우팅·렌더러 미변경. ## 검증 - 타깃 문서 표줄 overflow 839px → 해소. - 전수 sweep(samples hwp/hwpx): overflow 라인/픽셀 합 회귀 0 (소폭 개선, tac-img-02 / aift 개선). - golden SVG 8/8, cargo test --release lib 1324 passed, clippy/fmt clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6c731a5 to
7c893a7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
증상
거의 한 페이지 크기의
treat_as_char표가 제목줄과 같은 문단에 있을 때, 표 줄이 본문 하단 아래로 통째로 그려져 약 839px overflow 발생 (#1068).근본 원인
src/document_core/commands/document.rs의 HWPX TAC 표LINE_SEG.lh보정이 무조건first_mut()(제목줄) 을 표 높이로 확대했다.표가 둘째 줄 이후에 있는 문단(제목줄 + 표줄)에서 제목줄의
lh가 표 높이로 오염(예:vertsize2200 → 63234)되어, 렌더러의lh기반 표 줄 탐지(place_table_with_text)가 제목줄을 표 줄로 오매칭 → 표 줄이 post-text 로 포함되어PageItem::Table과 이중 그리기 → overflow.HWPX XML 원본(
linesegarray의vertsize)을 대조하여 제목줄의 원래 높이가 표 높이가 아님을 확정.수정
이미 표 높이를 담은
LINE_SEG가 있으면(한컴이 저장한 실제linesegarray— 표 줄 seg 의vertsize가 표 높이) 보정을 생략한다.linesegarray가 없어 기본lh=100단일 seg 만 합성된 경우에만 첫 seg 를 표 높이로 확대(기존 의도 보존). 라우팅·렌더러 미변경.검증
cargo test --releaselib 1324 passed, clippy / fmt clean.🤖 Generated with Claude Code