From 025b2f339377b30162e56d28414133d3753b4f4c Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Tue, 6 Oct 2026 14:27:45 +0900 Subject: [PATCH] test(layout): pin how a table set as a character goes to the next page Hancom never splits a table set as a character: one whose line does not end above the body's foot goes on whole to the next page's top, whatever the spacing after it or its page-break setting, and one taller than a page stands at the next page's top, cut. Six Hancom-saved cases pin the page estimate to that. Co-Authored-By: Claude Opus 5.5 --- .../pages_char_table_at_the_page_end_room_0.hwpx | Bin 0 -> 8553 bytes .../pages_char_table_at_the_page_end_room_1.hwpx | Bin 0 -> 8544 bytes .../pages_char_table_fixed_spacing_room_0.hwpx | Bin 0 -> 8608 bytes .../pages_char_table_fixed_spacing_room_1.hwpx | Bin 0 -> 8614 bytes ...table_past_the_page_end_page_break_table.hwpx | Bin 0 -> 8554 bytes .../pages_char_table_taller_than_a_page.hwpx | Bin 0 -> 7925 bytes tests/test_layout_page_estimate.py | 9 +++++++++ 7 files changed, 9 insertions(+) create mode 100644 tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_0.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_1.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_char_table_fixed_spacing_room_0.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_char_table_fixed_spacing_room_1.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_char_table_past_the_page_end_page_break_table.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_char_table_taller_than_a_page.hwpx diff --git a/tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_0.hwpx b/tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_0.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..1ac0d5372952b9dc2951d17640d32b70817f98ec GIT binary patch literal 8553 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 Mu}SlgfdIh&12Z`*fdBvi literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_1.hwpx b/tests/fixtures/hancom_saved/pages_char_table_at_the_page_end_room_1.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..74a14eb9a6fcc940a103032948d12b8d171c4577 GIT binary patch literal 8544 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

;> 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 V9uXRaU|^m>zdq2IghlmK`hPeWMYsR} literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_char_table_fixed_spacing_room_1.hwpx b/tests/fixtures/hancom_saved/pages_char_table_fixed_spacing_room_1.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..51e94e7faf50a791fc16ad60d4682945df761e6b GIT binary patch literal 8614 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%0AuS)U=(j5$JB+YbL)5@MFm(0x1D<>UHL5-~ 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 XSCDxEi$ZX4PhnqoSWLpFcr5)tm-|zo literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_char_table_past_the_page_end_page_break_table.hwpx b/tests/fixtures/hancom_saved/pages_char_table_past_the_page_end_page_break_table.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..fdc4b077f691776afdf8293b0995d6b66aaf0245 GIT binary patch literal 8554 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 PMgIMeKFNmq?&|*mDEsDD literal 0 HcmV?d00001 diff --git a/tests/test_layout_page_estimate.py b/tests/test_layout_page_estimate.py index 933528b2..ceef22ce 100644 --- a/tests/test_layout_page_estimate.py +++ b/tests/test_layout_page_estimate.py @@ -150,6 +150,15 @@ "pages_columns_2_break": 4, # two columns and a column break "pages_footnotes_6": 3, # footnotes at the page foot "pages_table_flow_repeat_header": 3, # a table flowing with the text, header row repeated + # A table set as a character alone in its paragraph (split by cell, header row repeated) whose line ends + # just above the body's foot (65762) or at it: it never splits; one that does not end above the foot goes + # on whole to the next page's top, whatever the spacing after it: + "pages_char_table_at_the_page_end_room_1": 2, # 54400 + 11361: it stays (the spacing past the foot) + "pages_char_table_at_the_page_end_room_0": 2, # 11362 tall: on whole to the next page + "pages_char_table_past_the_page_end_page_break_table": 2, # split by table: the same + "pages_char_table_fixed_spacing_room_1": 1, # fixed spacing (the line after it over it): it stays + "pages_char_table_fixed_spacing_room_0": 2, # on to the next page + "pages_char_table_taller_than_a_page": 3, # 80000: at the next page's top, cut; the text after on the next "pages_table_repeated_header_second_cell_marked": 2, # only its second cell a header cell: repeated "pages_table_flow_multiline_cells": 4, # a flowing table split between cell lines # A cell 20000 wide declared 282 tall (its lines make its row) holding 30 "가" (29160) in 10 pt