From c02e0d00f9f71bab526f9d12ed58028c7c88a585 Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:48:41 +0900 Subject: [PATCH 1/2] feat(form_fit): set tabs on a paragraph's own tab stops FormFit and the page estimate now lay a tab out on the stops of the paragraph's tab definition, as Hancom Office does: - The first stop past the tab whose text can be aligned there comes first: a left stop starts the text there, a right stop ends it there, a centre stop centres it there and a decimal stop puts its last full stop there. The aligned text neither starts before the tab nor passes the line's end; a stop it cannot take is passed over. A left stop past the line's end is taken all the same. - The automatic tab at the end is a right stop at the line's end among the others; the automatic tab of a hanging indent a left stop where its lines start. - Then the default stops. Past a stop it could not take, a tab whose text has no room on the line after the default stop takes no width. - A tab reaching the margin itself no longer fits on the line. Before, such a tab was laid out as a space-class glyph. Hancom-saved fixtures hold paragraphs of all these kinds. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 6 +- src/hwpx/form_fit/measure.py | 98 ++++++++++++++++-- .../pages_tab_stops_own_automatic_right.hwpx | Bin 0 -> 26428 bytes ...ges_tab_stops_own_centre_then_default.hwpx | Bin 0 -> 25344 bytes ...ges_tab_stops_own_decimal_passed_over.hwpx | Bin 0 -> 20868 bytes ...ages_tab_stops_own_left_past_the_line.hwpx | Bin 0 -> 23946 bytes .../pages_tab_stops_own_right_no_room.hwpx | Bin 0 -> 25426 bytes tests/test_form_fit_hancom_rules.py | 38 ++++++- tests/test_layout_page_estimate.py | 14 ++- 9 files changed, 141 insertions(+), 15 deletions(-) create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_automatic_right.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_centre_then_default.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_decimal_passed_over.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_the_line.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_right_no_room.hwpx diff --git a/CHANGELOG.md b/CHANGELOG.md index be13a9b2..0bb9b57c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,7 +84,11 @@ 줄은 문단 왼쪽 여백에서, 첫 줄은 들여쓰기만큼 더 들어가 시작한다(내어쓰기는 둘째 줄부터). - 탭의 앞뒤 어디서나 줄이 바뀔 수 있다. - 전에는 탭을 공백 크기 글자처럼 재서, 탭이 있는 문단의 줄 나눔이 한/글과 달랐다. - - 탭 정의에 자기 탭 위치나 자동 탭이 있는 문단은 전처럼 잰다. + - 탭 정의에 자기 탭 위치가 있으면 그 위치가 먼저다. 탭 뒤 글을 그 위치에 맞출 수 있는(탭 앞에서 시작하지도, 줄 끝을 + 넘지도 않는) 첫 위치로 간다. 왼쪽 위치는 글을 거기서 시작하고, 오른쪽은 거기서 끝내고, 가운데는 거기에 가운데를 + 맞추고, 소수점은 마지막 `.`을 거기에 둔다. 줄 끝을 넘는 왼쪽 위치는 그대로 간다. 오른쪽 끝 자동 탭은 줄 끝의 오른쪽 + 위치로 함께 센다. 그다음은 기본 탭 위치다. 맞출 수 없어 지나친 위치가 있는데 기본 탭 위치에서 글이 줄에 들어가지 + 않으면 탭은 폭이 없다. 내어쓰기 자동 탭은 둘째 줄이 시작하는 곳에 왼쪽 위치를 둔다. - 쪽 수 추정에서 강제 줄 바꿈 다음 줄은 첫 줄이 아니다. 들여쓰기를 빼지 않고 다른 줄의 폭으로 잰다. 전에는 첫 줄 폭으로 재서, 들여쓴 문단에서 줄이 하나 더 생길 수 있었다. - `.hwp`를 열 때 그림의 투명도와 반전을 한/글이 읽는 자리에서 읽는다. 한/글은 그림 레코드의 투명도를 그림 원래 크기 diff --git a/src/hwpx/form_fit/measure.py b/src/hwpx/form_fit/measure.py index ceba4a9c..8334f83a 100644 --- a/src/hwpx/form_fit/measure.py +++ b/src/hwpx/form_fit/measure.py @@ -28,7 +28,7 @@ import math import re import unicodedata -from collections.abc import Collection, Mapping, Sequence +from collections.abc import Callable, Collection, Mapping, Sequence from dataclasses import dataclass, field, replace from fractions import Fraction from functools import lru_cache @@ -1201,8 +1201,10 @@ class TextStyle: only off the others (see :func:`indented_widths`). ``space_before`` (HWPUNIT) is room above the first line; the spacing after the paragraph takes no room in a cell. A tab reaches Hancom's next default tab stop, every ``tab_stop`` HWPUNIT from the column's (a cell's: its text area's) left edge, the line - starting at ``margin_left`` and its indent or label room; ``tab_stop`` 0 (a paragraph whose tab - definition sets stops of its own or automatic tabs) lays a tab out as a space-class glyph. ``hangul_face`` + starting at ``margin_left`` and its indent or label room; ``tab_stop`` 0 lays a tab out as a + space-class glyph. ``tab_stops`` holds the paragraph's own stops, ``(position, kind)`` from that edge + in ascending order, which come first (see :func:`tab_reach`), and ``auto_tab_right`` a right-aligned + stop at the line's end after them; ``auto_tab_left`` a left one where a hanging indent's lines start. ``hangul_face`` and ``glyph_face`` name the faces whose design advances Hangul syllables and the other glyphs take, laid out as Hancom rounds them (see :func:`char_advance`); an empty or unlisted face, or a glyph it does not @@ -1227,6 +1229,9 @@ class TextStyle: head: float = 0.0 head_hangs: bool = False tab_stop: int = _DEFAULT_TAB_STOP + tab_stops: tuple[tuple[int, str], ...] = () + auto_tab_left: bool = False + auto_tab_right: bool = False def _line_origin(style: TextStyle, first: bool) -> float: @@ -1247,6 +1252,48 @@ def _tab_advance(x: float, stop: int) -> float: return (math.floor(x / stop) + 1) * stop - x +def tab_reach(x: float, right: float, style: TextStyle, after: Callable[[bool], float]) -> float | None: + """How far a tab at *x* reaches on a line ending at *right* (both from the column's left edge), or None + when it is laid out as a glyph. *after* gives the width of the text that follows the tab up to the next + tab or the end, or with True up to its last full stop (all of it when it has none). + + The paragraph's own stops come first, the first one past *x* that the text after the tab can take: a + left stop starts the text there, a right stop ends it there, a centre stop centres it there and a + decimal stop puts its last full stop there; a text so aligned does not pass the line's end (a left stop + past it takes the tab there all the same), and a stop whose text would have to start before *x* is + passed over. The automatic tab at the end (``auto_tab_right``) is a right stop at the line's end among + them. Then the default stops; past a stop that could not take the text, a default stop that leaves the + text no room on the line gives the tab no width.""" + + stops = set(style.tab_stops) + if style.auto_tab_left and style.indent < 0: # where the lines of a hanging indent start + stops.add((style.margin_left - style.indent, "LEFT")) + if style.auto_tab_right: # a right stop at the line's end, in its place among the others + stops.add((int(right), "RIGHT")) + passed = False # a stop past x that could not take the text + for position, kind in sorted(stops): + if position <= x: + continue + passed = True + if kind == "RIGHT": + start = position - after(False) + elif kind == "CENTER": + start = position - after(False) / 2 + elif kind == "DECIMAL": + start = position - after(True) + else: + start = position + if kind != "LEFT": + start = min(start, right - after(False)) + if start >= x: + return start - x + if not style.tab_stop: + return None + reach = _tab_advance(x, style.tab_stop) + # past a stop that could not take the text, a default stop that leaves it no room gives the tab none + return 0.0 if passed and x + reach + after(False) > right else reach + + def indented_widths(line: float, style: TextStyle) -> tuple[float, float]: """The room of a paragraph's first line and of its other lines, *line* wide inside its margins: less the first-line indent (a hanging one comes off the other lines) and the label's room. With ``head_hangs`` the @@ -1507,8 +1554,10 @@ def hancom_line_starts( size = font_pt if sizes is None else sizes[end] look = style if styles is None else styles[end] fixed = None if advances is None else advances.get(end) - if fixed is None and ch == "\t" and style.tab_stop: - fixed = _tab_advance(origin + used, style.tab_stop) + if fixed is None and ch == "\t" and (style.tab_stop or style.tab_stops or style.auto_tab_right): + fixed = tab_reach(origin + used, origin + width, style, + lambda point, at=end: _width_after_tab(text, at, font_pt, style, sizes, styles, + advances, point)) advance = char_advance(ch, size, look) if fixed is None else fixed if ch in _HANGING_SPACES: if used >= width and end > start and not full and _spills(ch, text[end - 1]) \ @@ -1529,8 +1578,8 @@ def hancom_line_starts( break shrink = (inner + pending) * space * style.condense / 100.0 last = fixed if fixed is not None else char_advance(ch, size, unspaced if styles is None else _without_spacing(look)) - if used + last - shrink > width and end > start: - break + if (used + last - shrink > width or ch == "\t" and last and used + last >= width) and end > start: + break # a tab reaching the margin itself no longer fits used += advance inner += pending pending = 0 @@ -1555,6 +1604,32 @@ def hancom_line_starts( starts.append(start) +def _width_after_tab( + text: str, + tab: int, + font_pt: float, + style: TextStyle, + sizes: Sequence[float] | None, + styles: Sequence[TextStyle] | None, + advances: Mapping[int, float] | None, + point: bool, +) -> float: + """The width of the text after the tab at *tab* up to the next tab or the end, or with *point* up to + its last full stop (all of it when it has none).""" + + stop = text.find("\t", tab + 1) + stop = len(text) if stop < 0 else stop + if point: + dot = text.rfind(".", tab + 1, stop) + stop = stop if dot < 0 else dot + width = 0.0 + for index in range(tab + 1, stop): + fixed = None if advances is None else advances.get(index) + width += fixed if fixed is not None else char_advance( + text[index], font_pt if sizes is None else sizes[index], style if styles is None else styles[index]) + return width + + def _spills(ch: str, previous: str) -> bool: """Whether the space *ch*, starting at or past the margin after *previous*, begins the next line: a fixed-width space does even right after a word, a space only after another space (the first one after a @@ -2161,13 +2236,12 @@ def text_style_from_refs( scripts=scripts, ) breaks = getattr(prop, "break_setting", None) - tab_stop = _DEFAULT_TAB_STOP try: tabs = root.tab_property(getattr(prop, "tab_pr_id_ref", None)) except Exception: # pragma: no cover - defensive tabs = None - if tabs is not None and (tabs.tab_stops or tabs.auto_tab_left or tabs.auto_tab_right): - tab_stop = 0 # stops of its own, or automatic tabs: not followed + tab_stops = tuple(sorted( + (int(stop.pos), str(stop.type or "LEFT").upper()) for stop in getattr(tabs, "tab_stops", None) or ())) # hp:case carries the HWPUNIT values Hancom lays out with; hp:default doubles them. switch = getattr(prop, "version_switch", None) case = getattr(switch, "case", None) if switch is not None else None @@ -2188,7 +2262,9 @@ def text_style_from_refs( glyph_face=glyph_face, hangul_face=hangul_face, scripts=scripts, - tab_stop=tab_stop, + tab_stops=tab_stops, + auto_tab_left=bool(getattr(tabs, "auto_tab_left", False)), + auto_tab_right=bool(getattr(tabs, "auto_tab_right", False)), ) heading = paragraph_label(root, para_pr_id_ref, label) if heading is None: diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_automatic_right.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_automatic_right.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..8b386bc6cf6f294661851f667023e970e277048c GIT binary patch literal 26428 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 U*mh`}157o5RkH_(ikO)G3tHSyssI20 literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_centre_then_default.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_centre_then_default.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..aa91d052f9823936e66d50e4a4458fe7cb6c2fe4 GIT binary patch literal 25344 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 Dl+X7I literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_decimal_passed_over.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_decimal_passed_over.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..e94f4a6c0a2870df81d3009569959e8b62ed90a8 GIT binary patch literal 20868 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_the_line.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_the_line.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..729adf7ae2a28867adf5f09a0fed5c711350b40d GIT binary patch literal 23946 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 ZxmpZ#=zu)7C6vwxA_7^h3NQqL{sDaH@ALow literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_right_no_room.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_right_no_room.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..0df9de0eb8ef02a08e60184dfe407649c9e28f36 GIT binary patch literal 25426 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/tests/test_form_fit_hancom_rules.py b/tests/test_form_fit_hancom_rules.py index 6dffd2d3..9d8ef963 100644 --- a/tests/test_form_fit_hancom_rules.py +++ b/tests/test_form_fit_hancom_rules.py @@ -40,6 +40,7 @@ indented_widths, label_room, resolve_slot_metrics, + tab_reach, text_style_from_refs, ) @@ -105,10 +106,45 @@ def test_a_tab_reaches_the_next_default_stop_from_the_columns_left_edge() -> Non # A first-line indent moves the first line's text, not the lines after a line break. assert hancom_line_starts("가가가\t가가", [8500], 10, replace(style, indent=1417)) == [0, 4] assert hancom_line_starts("가가가\t가가", [8500], 10, replace(style, indent=1417), continued=True) == [0] - # A paragraph whose tab definition sets stops of its own keeps the tab as a space-class glyph. + # Without default stops (and no stops of its own) a tab is a space-class glyph. assert hancom_line_starts("가가가\t가가", [8500], 10, replace(style, margin_left=1417, tab_stop=0)) == [0] +def test_a_tab_reaches_the_paragraphs_own_stops_first() -> None: + def after(point: bool) -> float: + return 600.0 if point else 1500.0 # "12.5": 600 up to its full stop, 1500 in all + + style = TextStyle(tab_stops=((10000, "LEFT"), (20000, "RIGHT"), (30000, "CENTER"), (35000, "DECIMAL"))) + assert tab_reach(3000, 42520, style, after) == 7000 # a left stop starts the text there + assert tab_reach(12000, 42520, style, after) == 6500 # a right stop ends it there + assert tab_reach(21000, 42520, style, after) == 8250 # a centre stop centres it there + assert tab_reach(31000, 42520, style, after) == 3400 # a decimal stop puts its full stop there + # Past the last stop the default stops. An aligned text does not pass the line's end; a left stop past + # it takes the tab there all the same. + assert tab_reach(36000, 42520, style, after) == 4000 + assert tab_reach(21000, 29000, style, after) == 6500 # the centre stop: "12.5" ends at 29000 + assert tab_reach(3000, 9000, style, after) == 7000 + # The automatic tab at the end is a right stop at the line's end among the others. + assert tab_reach(36000, 42520, replace(style, auto_tab_right=True), after) == 5020 + assert tab_reach(3000, 9000, replace(style, auto_tab_right=True), after) == 4500 + # A stop whose text would have to start before the tab is passed over; past one, a default stop that + # leaves the text no room on the line gives the tab none. + assert tab_reach(19000, 42520, style, after) == 10250 + assert tab_reach(34500, 35500, style, after) == 0 + # The automatic tab of a hanging indent stops where its lines start. + assert tab_reach(1000, 42520, TextStyle(indent=-2000, auto_tab_left=True), after) == 1000 + assert tab_reach(1000, 42520, TextStyle(indent=-2000), after) == 3000 + + +def test_a_tab_reaching_a_right_stop_keeps_the_text_after_it_on_the_line() -> None: + style = TextStyle(tab_stops=((8000, "RIGHT"),)) + # "가가" then a tab to a right stop at 8000: "나나" (2000) ends there, the line 8500 wide; on a line 7900 + # wide the stop is past its end and "나나" ends at the end. On one 3500 wide it no longer fits after "가가". + assert hancom_line_starts("가가\t나나", [8500], 10, style) == [0] + assert hancom_line_starts("가가\t나나", [7900], 10, style) == [0] + assert hancom_line_starts("가가\t나나", [3500], 10, style) == [0, 3] + + def test_each_character_can_take_its_own_size() -> None: style = TextStyle(break_non_latin_word="KEEP_WORD") diff --git a/tests/test_layout_page_estimate.py b/tests/test_layout_page_estimate.py index f3ac879d..b4591d5d 100644 --- a/tests/test_layout_page_estimate.py +++ b/tests/test_layout_page_estimate.py @@ -457,6 +457,16 @@ # taken off it), in runs of several sizes "pages_line_breaks_mixed_sizes_indented": 2, "pages_tabs_breaks_sizes_faces": 1, # tabs, line breaks, sizes and faces together + # Paragraphs with tab stops of their own (left, right, centre, decimal, some past the line's end, with the + # automatic tabs or not) after labels, numbers and words: a tab reaches the first stop past it whose text + # can be aligned there without starting before the tab or passing the line's end (a left stop past it is + # taken all the same), the automatic tab at the end being a right stop there; then the default stops, + # which give the tab no width past a stop it could not take when the text has no room after them. + "pages_tab_stops_own_centre_then_default": 1, + "pages_tab_stops_own_left_past_the_line": 1, + "pages_tab_stops_own_decimal_passed_over": 1, + "pages_tab_stops_own_automatic_right": 1, + "pages_tab_stops_own_right_no_room": 1, "pages_picture_as_character_300_short_then_three_spaces": 1, # a picture 3000 tall: the same "pages_table_cell_table_as_character_300_short_then_three_spaces": 1, # in a cell of a flowing table "pages_table_as_character_then_a_line_break": 1, # a line break after it: an empty line below it @@ -1621,7 +1631,7 @@ def test_a_table_placed_up_from_its_paragraph_in_a_cell_stands_at_the_paragraph_ def test_the_estimate_reads_a_paragraphs_tab_definition() -> None: - # A paragraph whose tab definition sets a stop of its own is not laid out on the default stops. + # A paragraph whose tab definition sets a stop of its own takes it. doc = HwpxDocument.new() paragraph = doc.add_paragraph("가가가\t가가") doc.styles.apply_paragraph_format(paragraphs=[paragraph], tab_stops=[{"pos_mm": 50, "type": "RIGHT"}]) @@ -1630,7 +1640,7 @@ def test_the_estimate_reads_a_paragraphs_tab_definition() -> None: style = page_layout._Measure(root).style(element.get("paraPrIDRef"), ["0"]) - assert style.tab_stop == 0 + assert style.tab_stops == ((14173, "RIGHT"),) def test_the_lines_a_cell_splits_between_add_up_to_its_height() -> None: From 7c2e2e80a2886f6bdd5607ee647259d6449e1145 Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Fri, 16 Oct 2026 14:08:57 +0900 Subject: [PATCH 2/2] fix(form_fit): hold a left stop's text back past a stop passed over Past a stop that could not take the text, a left stop past the line's end, or whose text would pass it, ends the text at the line's end, as Hancom Office lays it out; with no stop passed over, a left stop is still taken where it stands. A tab reaching the margin goes on to the next line even when it takes no width. Two more Hancom-saved fixtures hold such tabs. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 3 ++- src/hwpx/form_fit/measure.py | 10 +++++----- ...s_tab_stops_own_left_past_a_passed_stop.hwpx | Bin 0 -> 27078 bytes .../pages_tab_stops_own_tab_at_the_margin.hwpx | Bin 0 -> 25888 bytes tests/test_layout_page_estimate.py | 4 ++++ 5 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_a_passed_stop.hwpx create mode 100644 tests/fixtures/hancom_saved/pages_tab_stops_own_tab_at_the_margin.hwpx diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bb9b57c..e8596fa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,7 +86,8 @@ - 전에는 탭을 공백 크기 글자처럼 재서, 탭이 있는 문단의 줄 나눔이 한/글과 달랐다. - 탭 정의에 자기 탭 위치가 있으면 그 위치가 먼저다. 탭 뒤 글을 그 위치에 맞출 수 있는(탭 앞에서 시작하지도, 줄 끝을 넘지도 않는) 첫 위치로 간다. 왼쪽 위치는 글을 거기서 시작하고, 오른쪽은 거기서 끝내고, 가운데는 거기에 가운데를 - 맞추고, 소수점은 마지막 `.`을 거기에 둔다. 줄 끝을 넘는 왼쪽 위치는 그대로 간다. 오른쪽 끝 자동 탭은 줄 끝의 오른쪽 + 맞추고, 소수점은 마지막 `.`을 거기에 둔다. 왼쪽 위치는 글이 줄 끝을 넘어도 그대로 가지만, 앞에서 지나친 위치가 있으면 + 글을 줄 끝에서 끝낸다. 줄 끝에 닿은 탭은 다음 줄로 간다. 오른쪽 끝 자동 탭은 줄 끝의 오른쪽 위치로 함께 센다. 그다음은 기본 탭 위치다. 맞출 수 없어 지나친 위치가 있는데 기본 탭 위치에서 글이 줄에 들어가지 않으면 탭은 폭이 없다. 내어쓰기 자동 탭은 둘째 줄이 시작하는 곳에 왼쪽 위치를 둔다. - 쪽 수 추정에서 강제 줄 바꿈 다음 줄은 첫 줄이 아니다. 들여쓰기를 빼지 않고 다른 줄의 폭으로 잰다. 전에는 첫 줄 폭으로 diff --git a/src/hwpx/form_fit/measure.py b/src/hwpx/form_fit/measure.py index 8334f83a..8d8d77e4 100644 --- a/src/hwpx/form_fit/measure.py +++ b/src/hwpx/form_fit/measure.py @@ -1260,8 +1260,8 @@ def tab_reach(x: float, right: float, style: TextStyle, after: Callable[[bool], The paragraph's own stops come first, the first one past *x* that the text after the tab can take: a left stop starts the text there, a right stop ends it there, a centre stop centres it there and a decimal stop puts its last full stop there; a text so aligned does not pass the line's end (a left stop - past it takes the tab there all the same), and a stop whose text would have to start before *x* is - passed over. The automatic tab at the end (``auto_tab_right``) is a right stop at the line's end among + does not hold its text back so, but past a stop already passed over), and a stop whose text would + have to start before *x* is passed over. The automatic tab at the end (``auto_tab_right``) is a right stop at the line's end among them. Then the default stops; past a stop that could not take the text, a default stop that leaves the text no room on the line gives the tab no width.""" @@ -1274,7 +1274,6 @@ def tab_reach(x: float, right: float, style: TextStyle, after: Callable[[bool], for position, kind in sorted(stops): if position <= x: continue - passed = True if kind == "RIGHT": start = position - after(False) elif kind == "CENTER": @@ -1283,10 +1282,11 @@ def tab_reach(x: float, right: float, style: TextStyle, after: Callable[[bool], start = position - after(True) else: start = position - if kind != "LEFT": + if kind != "LEFT" or passed: start = min(start, right - after(False)) if start >= x: return start - x + passed = True if not style.tab_stop: return None reach = _tab_advance(x, style.tab_stop) @@ -1578,7 +1578,7 @@ def hancom_line_starts( break shrink = (inner + pending) * space * style.condense / 100.0 last = fixed if fixed is not None else char_advance(ch, size, unspaced if styles is None else _without_spacing(look)) - if (used + last - shrink > width or ch == "\t" and last and used + last >= width) and end > start: + if (used + last - shrink > width or ch == "\t" and used + last >= width) and end > start: break # a tab reaching the margin itself no longer fits used += advance inner += pending diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_a_passed_stop.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_left_past_a_passed_stop.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..431689a052b3c1eb04ec03fa40dfc0298f95bb2b GIT binary patch literal 27078 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 Q(g6@2nAMhmgdotr0nH@#lK=n! literal 0 HcmV?d00001 diff --git a/tests/fixtures/hancom_saved/pages_tab_stops_own_tab_at_the_margin.hwpx b/tests/fixtures/hancom_saved/pages_tab_stops_own_tab_at_the_margin.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..1a0cbe85f17bff854a8499dd513a52cd8878b041 GIT binary patch literal 25888 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 VW&p;qz2!?-Kxkl8)3Mz<`WL9-#6kc7 literal 0 HcmV?d00001 diff --git a/tests/test_layout_page_estimate.py b/tests/test_layout_page_estimate.py index b4591d5d..b3601c67 100644 --- a/tests/test_layout_page_estimate.py +++ b/tests/test_layout_page_estimate.py @@ -467,6 +467,10 @@ "pages_tab_stops_own_decimal_passed_over": 1, "pages_tab_stops_own_automatic_right": 1, "pages_tab_stops_own_right_no_room": 1, + # ... past a stop it could not take, a left stop past the line's end (or whose text would pass it) ends the + # text at the end; a tab at the line's end goes on to the next line + "pages_tab_stops_own_left_past_a_passed_stop": 1, + "pages_tab_stops_own_tab_at_the_margin": 1, "pages_picture_as_character_300_short_then_three_spaces": 1, # a picture 3000 tall: the same "pages_table_cell_table_as_character_300_short_then_three_spaces": 1, # in a cell of a flowing table "pages_table_as_character_then_a_line_break": 1, # a line break after it: an empty line below it