Skip to content

fix(hwp): 셀/글상자/머리말 문단 유실 — 문단 리스트는 LIST_HEADER 의 형제 (0.21.1) - #5

Merged
CocoRoF merged 1 commit into
mainfrom
fix/hwp-sibling-list-paras
Aug 31, 2026
Merged

fix(hwp): 셀/글상자/머리말 문단 유실 — 문단 리스트는 LIST_HEADER 의 형제 (0.21.1)#5
CocoRoF merged 1 commit into
mainfrom
fix/hwp-sibling-list-paras

Conversation

@CocoRoF

@CocoRoF CocoRoF commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

버그

0.20.0 트리 재설계가 셀 문단을 LIST_HEADER 의 자식에서 찾았지만, 실파일 구조는 같은 레벨의 형제다 (pyhwp table.hwp 실측: L2 LIST_HEADER → L2 PARA_HEADER). 실파일의 모든 표 셀/글상자/머리말 텍스트가 유실 — 손조립 픽스처가 한 층 깊어 버그를 가렸다.

수정

_list_paras: 표 60 의 paragraphs 수 필드를 상한으로 형제 PARA_HEADER 수집 + 자식 중첩(이형) 병행 수용. 표 셀/캡션/글상자/머리말 4곳 적용. 픽스처를 실파일 구조로 교정.

검증

pyhwp 실파일 픽스처 36개 전수 스윕: 34 변환 성공 / 암호·배포용 2건 정직 거절 / 실패 0. 표·캡션·머리말 텍스트 추출 및 SVG E2E 확인. 916 passed.

🤖 Generated with Claude Code

실파일에서 문단 리스트의 문단들은 LIST_HEADER 의 자식이 아니라 **같은
레벨의 형제**다 (pyhwp table.hwp 실측: L2 LIST_HEADER 다음 L2
PARA_HEADER). 0.20.0 트리 재설계가 자식만 봐서 실파일의 모든 셀/글상자/
머리말 텍스트가 유실됐다 — 손조립 픽스처가 한 층 깊게 만들어져 있어
버그를 가렸다 (v0.19.0 평면 상태기계는 우연히 실파일을 처리했었다).

수정: _list_paras — LIST_HEADER 의 paragraphs 수 필드(표 60 UINT16 @0)를
상한으로 형제 PARA_HEADER 를 수집하고, 자식 중첩(이형)도 함께 수용.
표 셀/캡션/글상자/머리말·꼬리말 네 곳 모두 적용. 픽스처는 실파일 구조
(형제 + 문단 수 선언)로 교정, 이형 관용 테스트(make_hwp)는 유지.

검증: pyhwp 실파일 픽스처 36개 전수 — 34 변환 성공(암호/배포용 2건 정직
거절, 실패 0), 표 8개짜리 table-caption·sample-5017(표 3+머리말) 텍스트
추출 확인, SVG E2E 3종. 전체 916 passed.
@CocoRoF
CocoRoF merged commit 72e97f6 into main Aug 31, 2026
2 checks passed
@CocoRoF
CocoRoF deleted the fix/hwp-sibling-list-paras branch August 31, 2026 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant