From db216c7bea112909bb1aef1c2947e2c7e7b86348 Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Sat, 3 Oct 2026 01:17:27 +0900 Subject: [PATCH] fix(layout): start a table in a paragraph of spaces on the next page as when alone Hancom lays a table placed top and bottom in a paragraph holding nothing else but spaces on one line out as when the paragraph holds the table alone, when the table does not start at the paragraph's place: the table starts at the next page's top, the paragraph's line stays, and the text after goes on under that line. So for a table set not to split too. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 ++ src/hwpx/layout/pages.py | 8 ++++++++ ...t_then_a_space_starting_on_the_next_page.hwpx | Bin 0 -> 8777 bytes ...e_then_a_space_starting_on_the_next_page.hwpx | Bin 0 -> 8760 bytes ...e_then_nothing_starting_on_the_next_page.hwpx | Bin 0 -> 8769 bytes tests/test_layout_page_estimate.py | 6 ++++++ 6 files changed, 16 insertions(+) create mode 100644 tests/fixtures/hancom_saved/pages_table_not_split_then_a_space_starting_on_the_next_page.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_table_then_a_space_starting_on_the_next_page.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_table_then_nothing_starting_on_the_next_page.hwpx diff --git a/CHANGELOG.md b/CHANGELOG.md index a49e3740..e915bc39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,8 @@ - 한/글은 공백과 머리표·번호도 글로 본다. 그 줄을 개체 아래에 전체 폭으로 두고, 다음 문단은 그 줄 아래에 둔다. - 공백도 머리도 없을 때만 줄을 개체 윗선에 폭 0으로 둔다. - 공백은 본문과 표 칸 모두, 머리표·번호는 본문에서 따른다. + - 공백만 있는 한 줄 문단의 표가 그 자리에서 시작하지 못하면 표 혼자인 문단처럼 놓는다. 표는 다음 쪽 맨 + 위에서 시작하고, 문단 줄은 제자리에 남으며, 뒤 글은 그 줄 아래에 이어진다. 나누지 않게 둔 표도 같다. - 쪽 수 추정(실험, `estimate_pages`)이 줄 캐시 없는 표 칸에서 위아래 배치 표 하나가 든 문단을 지원 밖 (`a nested table`)으로 두던 것을 고친다. 이제 그림·도형처럼 칸이 그 표의 아래 끝(행으로 잰 표 높이와 바깥 여백)까지 닿고, 칸의 다음 줄은 그 아래에서 이어진다. 위로 띄운 표는 문단 윗선에 선다. 그런 행이 쪽을 넘어 줄 사이에서 diff --git a/src/hwpx/layout/pages.py b/src/hwpx/layout/pages.py index b478abe9..d6a71960 100644 --- a/src/hwpx/layout/pages.py +++ b/src/hwpx/layout/pages.py @@ -1108,6 +1108,9 @@ class _Para: hides: bool = False #: its lines are Hancom's own, from the paragraph's valid layout cache kept: bool = False + #: an object anchored in this paragraph holding nothing else but spaces on one line: a table of it starting + #: on the next page goes there as when the paragraph holds it alone, the paragraph's line staying + spaced: bool = False #: the top-and-bottom objects stacked in this paragraph, which holds nothing else (see :func:`_stack`) stack: tuple[_Stacked, ...] = () #: a square-wrapped object anchored here and flowing with the text went past the body's foot: Hancom sets @@ -1905,6 +1908,8 @@ def _paragraph(measure: _Measure, page: _Page, paragraph: Any, wrap: _Wrap | Non paragraph.get("pageBreak") == "1", paragraph.get("columnBreak") == "1", table, notes, cached, anchor, wrap_anchor=around, hides=page.hide_empty and _holds_nothing(runs)) + if anchored is not None and text and not text.strip(" ") and para.lines == 1: + para = replace(para, spaced=True) if reflow and text: again = _Reflow(measure, text, tuple(sizes), None if looks is None else tuple(looks), style, shape) return again.at(para, page.column_width, 0) @@ -2779,6 +2784,9 @@ def _anchored(self, index: int, paras: list[_Para], para: _Para, start: int) -> if anchor.table is not None: table = anchor.table later = _starts_later(table, top + table.above, self.body) + if later and para.spaced and not head.lines: # spaces only: as the table alone in its paragraph + self._flow(replace(para, anchor=None, table=table), table, start) + return if table.mode == "NONE" and not head.lines and top != self.reserved.get(self.frame, 0) + para.prev \ and (later or top + table.above + sum(row.height for row in table.rows) + table.below + tail.height(0) > self.body): # set not to split: it goes on with the line below it diff --git a/tests/fixtures/hancom_saved/pages_table_not_split_then_a_space_starting_on_the_next_page.hwpx b/tests/fixtures/hancom_saved/pages_table_not_split_then_a_space_starting_on_the_next_page.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..7ce672d45945c59624c26bbcd3792ba8a74a72a2 GIT binary patch literal 8777 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 S6ch^N>kElVEs%y#Q2z&x_?fW) literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_table_then_a_space_starting_on_the_next_page.hwpx b/tests/fixtures/hancom_saved/pages_table_then_a_space_starting_on_the_next_page.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..7ca6d0de77dd1cdb0608f152aacb3cdac7aa125b GIT binary patch literal 8760 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