Skip to content

필드·책갈피나 경계 뒤 용지 기준 글 앞/뒤 개체가 있으면 문단 안 저장 쪽 경계를 버린다 #8124

Closed

Description

@planet6897

증상

저장 문단 안에 쪽 경계(저장 줄 vpos=0 재시작)가 있어도, 그 문단에 아래 제어가 있으면 rhwp 가 저장 쪽 경계를 버리고 문단을 현재 쪽에 통째로 싣는다. 한/글은 저장 경계대로 다음 쪽으로 넘긴다.

  • 경계 앞에 있는 필드 표시(상호참조·하이퍼링크 등)나 책갈피
  • 경계 뒤에 있는, 글자처럼 취급하지 않고 용지·쪽 기준으로 놓인 글 앞으로/글 뒤로 그림·그리기 개체(묶음 포함)

현재 저장 경계를 받아들이는 판정은 문단 제어가 «경계 뒤 각주» 또는 «경계 뒤 문단 기준 그림» 일 때만 통과한다. 필드·책갈피는 폭과 줄 높이가 없어 어느 조각에 있어도 앞 조각의 소유를 바꾸지 않고, 글 앞/뒤 배치 개체는 본문을 밀지 않으므로 기준이 용지·쪽이어도 표시가 놓인 뒤 조각의 쪽에 그려진다.

재현 (합성, 한/글 2020 저장본·Print PDF)

field_float_reset.hwp: 채움 문단 뒤 pi=22 가 하이퍼링크 필드로 시작하고, 저장 경계(2번 줄) 뒤에 용지 기준·글 앞으로 사각형이 있다. 구역 첫 빈 문단이 용지 기준 위아래 배치 개체를 가진다. 대조군 field_float_reset_plain.hwp 는 필드·사각형이 없다.

입력 한/글 2020 Print rhwp devel
field_float_reset 2쪽, 1쪽은 «낱말25» 로 끝나고 2쪽은 «낱말26» 으로 시작 1쪽, pi=22 를 1쪽에 통째로 싣고 본문 아래로 약 68px 넘침
field_float_reset_plain 2쪽, 같은 경계 2쪽, 같은 경계

실물에서도 같은 형태가 있다: 302쪽 공공기관 보고서의 2구역 pi=6(경계 앞 상호참조 필드, 경계 뒤 글 앞으로·용지 기준 묶음 그림)을 한/글은 저장 경계대로 셋째 줄에서 다음 쪽으로 넘기는데 rhwp 는 한 쪽에 싣고, 이 뒤로 쪽 정렬이 한 쪽 어긋난다.

범위

  • 대상: 저장 쪽 경계 수용 판정의 제어 조건.
  • 비대상: 경계 앞 개체, 용지·쪽 기준 위아래 배치 개체, 표 등 다른 제어. 구역 첫 빈 문단의 용지 기준 개체 밴드 계상은 별개 축이다.

Activity

  1. planet6897 commented on Oct 23, 2026

    @planet6897
    ContributorAuthor

    #8130 에서 이 이슈의 판정 수정(7d9a1db86)을 분리했습니다. 이 이슈는 열어 둡니다.

    판정 수정은 devel d9fd85ed5 위 planet6897:fix/8124-stored-reset-field-controls(14080df36)에 보존했습니다. 검출 입력(흐름과 한컴 저장 경계가 갈리는 경우)을 확보하면 PR 로 올리겠습니다.

  2. planet6897 commented on Oct 24, 2026

    @planet6897
    ContributorAuthor

    원인을 찾았습니다. #8189 / PR #8192 로 고칩니다.

    • 실물 증상(「비정규직 목표관리 로드맵」 2구역 pi=6)은 저장 쪽 경계 판정 때문이 아니었습니다. 구역 첫 쪽의 용지 기준 묶음 그림에 위·아래 바깥 여백(1417 HU)과 아래 캡션이 있는데, rhwp 가 도형을 위 여백 없이 그리고 자리차지 밴드에서 캡션을 빼 본문을 26px 위에 두었습니다.
    • 이 두 결함을 고치면 판정 수정 없이도 pi=6 이 저장 경계대로 셋째 줄에서 나뉩니다.
    • 판정 수정(7d9a1db86)은 rhwp 흐름이 한/글과 어긋날 때만 결과를 바꾸는데, 그런 입력은 그 자체로 90% 미만의 배치 결함이라 정당한 검출 fixture 를 만들 수 없었습니다(합성 변형 50여 건을 한/글 2020 으로 저장해 확인). 그래서 판정 수정은 폐기하고, 이 이슈는 fix(renderer): 도형은 바깥 여백 상자 안쪽에 그리고, 쪽·종이 기준 자리차지 밴드는 캡션을 포함한다 (#8189, #8130 위 적층) #8192 병합 시 닫습니다.
  3. planet6897 commented on Oct 24, 2026

    @planet6897
    ContributorAuthor

    devel 에 반영되어 닫습니다

    앞 코멘트대로 이 이슈의 실제 원인은 #8186(구역 첫 빈 문단의 용지 기준 밴드)과 #8189(도형 바깥 여백·밴드 캡션)였고, 판정 수정은 폐기했습니다. #8189 를 닫으려던 #8192 는 #8191 이후 devel 에 같은 내용이 들어가 있어 닫았습니다.

    최신 upstream/devel 9418ed0c7 에 #8192 가 갖고 있던 회귀 검사·표본만 얹어(코드 변경 없이) 실행하면 이 이슈의 경계 판정 검사가 통과합니다.

    회귀 검사 devel 9418ed0c7
    stored_reset_field_float_suffix::section_first_paragraph_starts_below_its_own_paper_band 통과
    stored_reset_field_float_suffix::paragraph_after_section_paper_band_splits_at_stored_line 통과

    용지 기준 밴드가 바르게 계상되면 필드·책갈피 뒤 개체가 있어도 문단이 저장 쪽 경계에서 나뉩니다. 검사·표본은 브랜치 fix/paper-shape-margin-caption-band 에 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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