Skip to content

DOCX: the plain-body CJK/Latin auto-space rule is unsettled — two native-Word probes disagree #732

Description

@developer0hye

Summary

Two native-Word probes disagree about whether Word inserts the 0.25em CJK/Latin auto-space in
a plain, left-aligned body paragraph, and the disagreement is unresolved. #627 settled the
table-cell rule (Word: never) and left this open; #728 covers only the centred case. This
issue tracks settling the plain-body rule.

The conflicting evidence

#521's one-factor probe (native Word export, ten cases varying one factor at a time) read
the space as present at 2.625pt/10.5pt and 2.375pt/9.5pt in every case tried — plain
paragraph, w:numPr list item, justified paragraph, ListParagraph-styled paragraph, and
table cell alike.

Corpus GT contradicts it in two places, and #627 acted on one of them:

case Word GT office2pdf today
table cell (10_research_report_ko month column, 03_meeting_minutes_ko) flush (−0.056pt) flush since #627
ListParagraph + numPr body item (02 제2조, 03 결정 사항) +0.245em +0.250em — matches
justified body (02, 10) flush flush — matches
centred body (02 date) flush +2.62pt — #728
plain left-aligned body (06_official_letter_ko 붙임 block) flush (−0.06pt) +2.37pt

The 06 paragraph is <w:p><w:pPr><w:spacing w:before="240"/></w:pPr> — no w:jc, no w:numPr,
no w:pStyle, and not inside a w:tc. w:autoSpaceDE/w:autoSpaceDN/w:kinsoku appear in no
package in the corpus, so Word defaults are in force in every case above.

Across all four Korean mocks the gap correlates with ListParagraph+numPr, not with
body-vs-cell — but #521's probe found it in a plain paragraph too, and #627's probe found it in
none of its cases. Something not yet identified (document provenance, a compat setting, the
Word UI language, or a style-inheritance path) discriminates them.

Measured

06_official_letter_ko page 1, 붙임 block, 9.5pt Malgun Gothic, source text 체크리스트 1부.
(no literal space):

Word office2pdf
1 ends / begins 207.939 / 207.882 (flush) 207.963 / 210.307 (+2.344pt = 0.247em)

Two occurrences, each widening its line by ~2.4pt.

Reproduction

cargo run --release -p office2pdf-cli -- tests/golden_mocks/business/sources/docx/06_official_letter_ko.docx -o out.pdf
mutool draw -F trace -o - out.pdf 1   # 1→부 gap 2.34pt; Word draws it flush

Expected

The plain-body rule is settled by a one-factor probe that also explains #521's reading, and the
implementation follows it.

Actual

The body arm keeps #521's reading unconditionally, so plain body paragraphs widen where this
GT shows Word flush. insert_east_asian_auto_space's doc comment records the contradiction and
points here; a_body_paragraph_is_left_exactly_as_it_was pins today's emission (explicitly as
current behaviour, not as correct) so the change is visible when the rule is settled.

Related: #627 #728 #521

Found in: the #627 fix-PR adversarial review (2026-07-31).

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