Task #702: shortcut.hwp 다단 정의 후속 갱신 누락 정정 (closes #702)#710
Open
planet6897 wants to merge 2 commits intoedwardkim:develfrom
Open
Task #702: shortcut.hwp 다단 정의 후속 갱신 누락 정정 (closes #702)#710planet6897 wants to merge 2 commits intoedwardkim:develfrom
planet6897 wants to merge 2 commits intoedwardkim:develfrom
Conversation
) samples/basic/shortcut.hwp (한글 2010 단축키 일람표, A4 가로) 의 SVG 출력이 한글 2022 PDF 정답 (7쪽) 대비 10쪽 (+43%) 으로 폭주하던 결함 정정. ## 본질 정정 (2건) ### 본질 1A — Distribute 다단의 짧은 컬럼 vpos-reset 검출 임계값 src/renderer/typeset.rs:430-446 기존 임계값 `pv > 5000` 은 짧은 Distribute (배분) 컬럼 (예: 지우기 3+3 분배) 에서 마지막 paragraph vpos=3000 < 5000 미달로 column-advance 미발동 → 6항목 1단 적층. ColumnType::Distribute (HWPX BalancedNewspaper) 한정 임계값 `pv > 0` 으로 완화. Normal/단단 분기는 기존 `pv > 5000` 유지 → Task edwardkim#321/edwardkim#418/edwardkim#470 회귀 차단. ### 본질 1B — Page/Column break + 새 ColumnDef 미적용 shortcut.hwp p2 의 파일/미리보기/편집 sections 는 다음 패턴 사용: - [쪽나누기] + 단정의:1단 + 표(header) - [단나누기] + 단정의:2단 배분 기존 코드는 MultiColumn break 만 ColumnDef 적용 → Page/Column break 동반 ColumnDef 무시 → col_count 가 이전 zone 값 유지 → 페이지 분기 폭주. Page/Column break 처리 시 새 ColumnDef 검출 후 zone 재정의 적용: - Column + has_diff_col_def: process_multicolumn_break 호출 - Column + 동일 ColumnDef: 기존 advance_column_or_new_page - Page/Section + has_diff_col_def: force_new_page 후 ColumnDef 적용 (col_count, layout, column_type 갱신) ### 보조 변경 - TypesetState 에 current_zone_column_type: ColumnType 필드 추가 - TypesetState::new 시그니처에 column_type 인자 추가 - process_multicolumn_break 에서 ColumnDef 적용 시 column_type 전파 - typeset_section 에서 초기 column_def.column_type 전달 ## 검증 | 항목 | 수정 전 | 수정 후 | |------|--------|--------| | 페이지 수 | 10 | 8 (PDF 7 +1쪽) | | LAYOUT_OVERFLOW | 다수 (40~60px) | 1건 | | 페이지 1 지우기 | 1단 6항목 | 2단 3+3 ✓ | | 페이지 2 섹션 | 파일 header 만 | 파일+미리보기+편집 ✓ | cargo test --release: 1248+ tests, 0 failed - exam_eng_multicolumn: 14 passed (Task edwardkim#470 회귀 차단) - issue_418: 1 passed (단단 partial-table split 잔재) - svg_snapshot: 7 passed (golden snapshots) - issue_702 (신규): 2 passed (회귀 가드) ## 잔여 결함 → 별도 이슈 분리 - Issue edwardkim#708: pi=94 bare [단나누기] at last col 1쪽 시프트 (fix 시도 시 test_539/test_548/test_exam_math_page_count 회귀 발견 → rollback) - Issue edwardkim#709: 부수 시각 결함 4건 (PUA 글자 / 탭 leader / 바탕쪽 자동번호 / right col 우측 정렬) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CLAUDE.md 하이퍼워터폴 절차 산출물: - mydocs/plans/task_m100_702.md (수행계획서) - mydocs/plans/task_m100_702_impl.md (구현계획서) - mydocs/working/task_m100_702_stage2.md (Stage 2 본질 1 정정 보고) - mydocs/working/task_m100_702_stage3.md (Stage 3 광범위 회귀 + 시각 판정) - mydocs/report/task_m100_702_report.md (최종 결과 보고서) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
samples/basic/shortcut.hwp(한글 2010 단축키 일람표, A4 가로) 의 SVG 출력이 한글 2022 PDF 정답 (pdf/basic/shortcut-2022.pdf, 7쪽) 대비 10쪽 (+43%) 으로 폭주하던 결함 정정.LAYOUT_OVERFLOWRoot cause (2건)
본질 1A — Distribute 다단의 짧은 컬럼 vpos-reset 임계값
src/renderer/typeset.rs:430-446기존 임계값
pv > 5000이 짧은 Distribute (배분) 컬럼 (예: 지우기 3+3 분배, 마지막 paragraph vpos=3000) 에서 미달 → column-advance 미발동 → 6항목 1단 적층.정정:
ColumnType::Distribute(HWPXBalancedNewspaper) 한정 임계값pv > 0으로 완화. Normal/단단 분기는 기존pv > 5000유지.본질 1B — Page/Column break + 새 ColumnDef 미적용
shortcut.hwp p2 의 파일/미리보기/편집 sections 는 다음 패턴 사용:
[쪽나누기] + 단정의:1단 + 표(header)[단나누기] + 단정의:2단 배분기존 코드는
MultiColumnbreak 만 ColumnDef 적용 → Page/Column break 동반 ColumnDef 무시 →col_count가 이전 zone 값 유지 → 페이지 분기 폭주.정정: Page/Column break 처리 시 새 ColumnDef 검출 후 zone 재정의:
Column + has_diff_col_def:process_multicolumn_break호출Column + 동일 ColumnDef: 기존advance_column_or_new_pagePage/Section + has_diff_col_def:force_new_page후 ColumnDef 적용변경 파일
src/renderer/typeset.rs(+50 / -6)ColumnTypeimport +TypesetState.current_zone_column_type필드TypesetState::new시그니처 변경 (column_type 인자)process_multicolumn_break에서 column_type 전파tests/issue_702.rs(신규, 2 회귀 가드)shortcut_distribute_short_column_split: 페이지 수 ≤ 8shortcut_page2_has_three_sections: 페이지 2 SVG 에 파일/편집 헤더 모두 존재mydocs/plans/task_m100_702.md,task_m100_702_impl.mdmydocs/working/task_m100_702_stage2.md,task_m100_702_stage3.mdmydocs/report/task_m100_702_report.md회귀 차단 가드
Normal(NEWSPAPER) 다단은 기존pv > 5000유지 → Task #321/#418/#470 회귀 차단:tests/exam_eng_multicolumn.rs: 14 passedtests/issue_418.rs: 1 passedtests/svg_snapshot.rs: 7 passed (golden snapshots)tests/issue_702.rs: 2 passed (신규 가드)cargo test --release: 1248+ tests, 0 failed잔여 결함 → 별도 이슈 분리
[단나누기]at last col 1쪽 시프트test_539_partial_paragraph_after_overlay_shape,test_548_cell_inline_shape_first_line_indent_p8,test_exam_math_page_count회귀 발견 → rollback다른 열린 PR 과의 관계
src/renderer/typeset.rs를 건드리는 다른 열린 PR (#644, #679, #707) 과 텍스트 충돌 없음 (각각 다른 line 영역, 다른 함수 분기):LAYOUT_DRIFT_SAFETY_PX(다른 메커니즘)typeset_paragraph+ trailing empty 가드 (col_count == 1한정)머지 순서 무관, rebase + cargo test 통과 시 안전.
Test plan
cargo build --release통과cargo test --release: 1248+ passed, 0 failedrhwp dump-pages samples/basic/shortcut.hwp: 페이지 1 지우기 단 5/6 = items=3/3, 페이지 2 = 파일+미리보기+편집 통합rhwp export-svg samples/basic/shortcut.hwp: 8쪽 (수정 전 10쪽),LAYOUT_OVERFLOW1건 (수정 전 다수)🤖 Generated with Claude Code