문제
samples/exam_kor.hwp 14페이지 좌측 단의 (가) 학생 대화 전체는 동일한 border_fill_id=7 (Solid w=1 검정 4면) 을 공유하므로 한컴/PDF 에서는 단일 외곽선 박스 1개로 묶여 렌더링된다. 그러나 rhwp 의 SVG 출력은 4개의 분리된 박스로 쪼개져 그려진다.
원인
paragraph_layout.rs:2516 에서 모든 paragraph 의 border 범위를 para_border_ranges 큐에 push 하는데, 표 셀 안의 단락(인용 따옴표 「」 표시용 3×2 표의 셀들)도 같은 큐에 들어간다. merge 로직(layout.rs:1604) 은 stroke signature 동일성으로 시각 병합하지만:
- 셀 단락의
bf=4 (시그니처 None) 가 끼어들면 본문 그룹 끊김
- 셀 단락의
bf=6 (시그니처 (Solid,1,0) — bf=7 과 동일) 가 본문 그룹에 흡수되어 셀 좌표(x≈533, w=0)로 그룹이 변형됨
결과적으로 본문 대화 22개 문단이 한 그룹으로 못 합쳐지고 4개로 쪼개진다.
검증 데이터
RHWP_DEBUG_BORDER=1 으로 para_border_ranges 출력 시 좌측 단에 43개 항목 중 본문 bf=7 사이에 셀 단락 bf=1/bf=4/bf=6 항목이 다수 끼어듦을 확인.
- border_fill[7] 4면 모두 Solid w=1 (외곽선 정의 정상)
- ParaShape[40] attr1=0x10000080 — 외곽선 게이팅 비트 아님 (level=4 의 일부)
수정 방향
paragraph_layout.rs 에서 cell_ctx 가 있는 단락은 para_border_ranges 에 push 하지 않도록 게이팅 추가. 셀 외곽선은 별도 경로(table_layout)에서 처리되므로 본문 큐와 분리해야 한다.
영향 범위
samples/exam_kor.hwp 14페이지 (와 유사 패턴 페이지들)
- 표 셀 안 단락이 본문과 같은 border_fill_id 를 공유하지 않는 일반 케이스에는 영향 없음
문제
samples/exam_kor.hwp14페이지 좌측 단의 (가) 학생 대화 전체는 동일한border_fill_id=7(Solid w=1 검정 4면) 을 공유하므로 한컴/PDF 에서는 단일 외곽선 박스 1개로 묶여 렌더링된다. 그러나 rhwp 의 SVG 출력은 4개의 분리된 박스로 쪼개져 그려진다.원인
paragraph_layout.rs:2516에서 모든 paragraph 의 border 범위를para_border_ranges큐에 push 하는데, 표 셀 안의 단락(인용 따옴표 「」 표시용 3×2 표의 셀들)도 같은 큐에 들어간다. merge 로직(layout.rs:1604) 은 stroke signature 동일성으로 시각 병합하지만:bf=4(시그니처None) 가 끼어들면 본문 그룹 끊김bf=6(시그니처(Solid,1,0)— bf=7 과 동일) 가 본문 그룹에 흡수되어 셀 좌표(x≈533, w=0)로 그룹이 변형됨결과적으로 본문 대화 22개 문단이 한 그룹으로 못 합쳐지고 4개로 쪼개진다.
검증 데이터
RHWP_DEBUG_BORDER=1으로para_border_ranges출력 시 좌측 단에 43개 항목 중 본문 bf=7 사이에 셀 단락 bf=1/bf=4/bf=6 항목이 다수 끼어듦을 확인.수정 방향
paragraph_layout.rs에서 cell_ctx 가 있는 단락은para_border_ranges에 push 하지 않도록 게이팅 추가. 셀 외곽선은 별도 경로(table_layout)에서 처리되므로 본문 큐와 분리해야 한다.영향 범위
samples/exam_kor.hwp14페이지 (와 유사 패턴 페이지들)