From 8854930b597318eba898e374e72457587e82460c Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Sun, 18 Oct 2026 06:44:46 +0900 Subject: [PATCH] fix(form_fit): let closing punctuation start a line after a tab Closing punctuation moves down with the character before it but may start a line after a space. Hancom treats a tab as it does a space there: the tab stays on its line and the mark starts the next one. FormFit moved the tab down with the mark. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 ++ src/hwpx/form_fit/measure.py | 5 +++-- .../line_cache_tab_punctuation.hwpx | Bin 0 -> 59039 bytes tests/test_form_fit_hancom_rules.py | 9 +++++++++ tests/test_layout_line_cache.py | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 tests/fixtures/hancom_saved/line_cache_tab_punctuation.hwpx diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d9a4ce9..828229cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,6 +125,8 @@ - FormFit과 쪽 수 추정이 낱말 바로 뒤의 빈칸 두 개를 줄 끝 너머에 매단다. 첫 빈칸이 줄 끝을 넘고 둘째 빈칸이 줄 끝 너머에서 시작해도 둘째까지 그 줄에 남고, 셋째부터 다음 줄로 간다. 한/글이 그렇게 놓는다. 전에는 둘째 빈칸부터 다음 줄로 보내 빈칸이 여러 개 이어진 자리에서 줄이 한 글자 일찍 나뉘었다. +- FormFit과 쪽 수 추정이 탭 바로 뒤의 닫는 문장 부호(`)`·`.`·`!`·`」` 등)로 줄을 시작할 수 있게 한다. 빈칸 뒤처럼 탭은 앞 줄에 + 남고 부호가 다음 줄을 시작한다. 한/글이 그렇게 놓는다. 전에는 탭까지 다음 줄로 보냈다. - FormFit과 쪽 수 추정이 글꼴 폭 표에 없는 가나(히라가나·가타카나)를 그 글꼴의 한글 음절 폭으로 잡는다(함초롬바탕 972, 한컴 고딕 932). 한/글이 그렇게 놓는다. 전에는 전각(1 em)으로 셌다. - 쪽 수 추정(실험, `estimate_pages`)이 탭 정의를 한 번만 읽는다. 전에는 글자 모양을 볼 때마다 머리 정보의 탭 정의 전체를 diff --git a/src/hwpx/form_fit/measure.py b/src/hwpx/form_fit/measure.py index 5a60a170..16ebdf4d 100644 --- a/src/hwpx/form_fit/measure.py +++ b/src/hwpx/form_fit/measure.py @@ -135,7 +135,7 @@ #: The variation selectors and the zero-width joiner: no advance. _ZERO_WIDTH = frozenset("\ufe0e\ufe0f\u200d") #: Closing punctuation that never starts a line right after a character: it -#: moves down with that character. After a space it may start a line. +#: moves down with that character. After a space or a tab it may start a line. _NO_LINE_START = frozenset("!%),.:;?]}¢°’”‰′″℃〉》」』】〕…·、。") #: Opening punctuation that never ends a line. _NO_LINE_END = frozenset("([{‘“〈《「『【〔") @@ -1698,7 +1698,8 @@ def hancom_line_starts( options = [ index for index in breaks if start < index <= end - and (text[index] not in _NO_LINE_START or text[index - 1] in _HANGING_SPACES) + and (text[index] not in _NO_LINE_START or text[index - 1] in _HANGING_SPACES + or text[index - 1] == " ") and text[index - 1] not in _NO_LINE_END ] start = max(options) if options else end diff --git a/tests/fixtures/hancom_saved/line_cache_tab_punctuation.hwpx b/tests/fixtures/hancom_saved/line_cache_tab_punctuation.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..050fad5dac9c483b189e78a9bcee1df03b64dace GIT binary patch literal 59039 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

a1~`c`R|VjD)EWB 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 literal 0 HcmV?d00001 diff --git a/tests/test_form_fit_hancom_rules.py b/tests/test_form_fit_hancom_rules.py index 5183fa79..38dd8746 100644 --- a/tests/test_form_fit_hancom_rules.py +++ b/tests/test_form_fit_hancom_rules.py @@ -547,6 +547,15 @@ def test_closing_punctuation_does_not_start_a_line() -> None: assert hancom_line_starts("가나다라마.", [5000], 10, CHARS) == [0, 4] +def test_closing_punctuation_may_start_a_line_after_a_tab() -> None: + # As after a space: the tab stays on its line and the mark starts the next, where after a character the + # mark moves down with it. + keep = replace(TextStyle(), break_non_latin_word="KEEP_WORD") + assert hancom_line_starts("가나다라 )라마바사", [8200], 10, keep) == [0, 5] + assert hancom_line_starts("가나다라 )라마바사", [4200], 10, keep) == [0, 5, 9] + assert hancom_line_starts("가나다라)라마바사", [4200], 10, keep) == [0, 3, 7] + + def test_latin_words_do_not_break_after_inner_punctuation() -> None: assert hancom_line_starts("aa-bbbb cc", [3000], 10, TextStyle()) == [0, 5] diff --git a/tests/test_layout_line_cache.py b/tests/test_layout_line_cache.py index 1186cb1c..f2060c37 100644 --- a/tests/test_layout_line_cache.py +++ b/tests/test_layout_line_cache.py @@ -18,7 +18,7 @@ HANCOM_LAID_OUT = ["line_cache_tabs.hwpx", "line_cache_line_breaks.hwpx", "line_cache_hanging_indents.hwpx", "line_cache_indents.hwpx", "line_cache_labels.hwpx", "line_cache_mixed_sizes.hwpx", "line_cache_taller_past_a_break.hwpx", "line_cache_table_cells.hwpx", - "line_cache_mixed_faces_tabs.hwpx", "line_cache_space_runs.hwpx"] + "line_cache_mixed_faces_tabs.hwpx", "line_cache_space_runs.hwpx", "line_cache_tab_punctuation.hwpx"] def _body(document: HwpxDocument) -> list: