Skip to content

exam_kor 14p: 본문 외곽선이 셀 단락 leakage 로 4개 박스로 쪼개짐 #463

@planet6897

Description

@planet6897

문제

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 를 공유하지 않는 일반 케이스에는 영향 없음

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions