Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,35 @@ follow semantic versioning; release dates are ISO 8601.

### Public API

- **A `hangingIndent(true)` list's top level takes the page's marker column in DOCX, text
markers too.** The export gave a Word list's levels a stated 9pt column and a list of
paragraphs a space after its marker, and wrapped every item's lines back under its marker:
`Panel`'s skills stood 7.8pt left of the page's on their second lines. The top level of a
list the layout set in a marker column now takes that column, the marker's width and
`markerGap`, as its indent and hanging — a Word list's level, or a tab and a hanging indent
on each item of a list of paragraphs, plain items included — so its text and wrapped lines
stand where the page sets them, a picture marker's included. A marker of text counts as
wide as the page sets it grown to Word's half-point size, and the column is used only where
the gap leaves half a point past that: Word sets it in the page's face where the export
embeds it, or in a standard face set in the same widths; a face the export may not embed is
the reader's editor's to substitute, and may set wider. Such a level names the list's face
and size, which Word draws its marker in: an item at an exact line left it the document's,
and a list set smaller than the body would have had a bullet wider than its column. A list
that nests items, a marker made of runs, a marker the gap does not clear, and a list without
the flag keep the stated columns and the space. `Panel`'s and `SerifHeadline`'s six such
lines now stand within 0.2pt across in both editors; lines more than 2pt off across fall
from 136 to 130 in Word, and in LibreOffice from 102 to 96 on Windows and 388 to 382 on
Linux.
- **A list item whose marker is a picture starts its text where the page does in DOCX.** The
picture — a dot, an icon — was followed by a space, a little over two points where the page
leaves the `markerGap` asked for: `TealPulse`'s skills, highlights and certifications, a
3.2pt dot and a 9.2pt gap, stood 6.3 to 6.7pt left of the page's in both editors, and
`OrangeOps`' 6pt in Word. A top-level item of a `hangingIndent(true)` list whose marker is
the list's and a picture alone is now followed by a tab to a stop the layout's measure past
the item's start — the picture's width and the gap — where the picture, its edges included,
clears that stop, as Word draws a picture at the size it is written; a marker of text, which
Word sets in its own widths, keeps its space. Those lines now stand within 0.1pt across.
clears that stop, as Word draws a picture at the size it is written, and its lines hang
there (the entry above, which also takes a list that nests items out). Those lines now
stand within 0.1pt across.
Lines more than 2pt off across fall from 175 to 136 in Word, from 130 to 102 in LibreOffice
on Windows and from 427 to 388 on Linux. `ListBuilder.hangingIndent` and `markerGap` say what
DOCX now keeps.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -413,19 +413,20 @@ public ListBuilder continuationIndent(String continuationIndent) {
* no marker — contributes no row, so its children hang at the level it would
* have occupied rather than one deeper.</p>
*
* <p><b>Fixed-layout, but for a drawn marker's gap.</b> This is geometry, and
* it applies to the backends that do their own layout — PDF and PPTX. The semantic DOCX
* export writes a Word paragraph per item and lets Word lay it out, so it
* keeps the marker in the item's text: the same paragraphs, the same text,
* the same nesting. Word positions content at absolute indents and has no
* way to be told "start the text one marker width plus a gap from here", and
* sets a text marker in its own widths. Only a top-level item whose marker is
* the list's and a picture alone — a dot, an icon — has its first line's text
* placed where the layout puts it, a tab to the marker's width and the gap past
* the item's start, where the picture with its edges clears that stop: Word
* draws a picture at the size it is written. A document exported
* both ways is otherwise identical, and differs in how its wrapped lines line
* up.</p>
* <p><b>In DOCX, the top level's column.</b> This is geometry, and the
* backends that do their own layout — PDF and PPTX — apply it in full. The
* semantic DOCX export writes a Word paragraph per item and lets Word lay it
* out: the same paragraphs, the same text, the same nesting. Word positions
* content at absolute indents and has no way to be told "start the text one
* marker width plus a gap from here", so the export gives the top level the
* column the layout set its marker in — the marker's width and the gap — as
* the list's indent and hanging, or as a tab and a hanging indent where the
* list is not a Word list. It does so where the gap covers what Word may set
* the marker wider: a picture, its edges included, or text at its size to the
* half point, half a point clear — Word setting it in the page's face where
* the export embeds it, or in a standard face set in the same widths. A list
* that nests items, a marker made of runs, and a marker the gap does not
* clear keep stated columns.</p>
*
* @param hangingIndent whether items use marker/content geometry
* @return this builder
Expand All @@ -446,11 +447,9 @@ public ListBuilder hangingIndent(boolean hangingIndent) {
* <p>Real geometry, never spaces. A markerless item takes no gap at all,
* rather than an unexplained inset.</p>
*
* <p>In the semantic DOCX export, for the reason given on
* {@link #hangingIndent(boolean)}, it places only the first line's text of a
* top-level item whose marker is a picture alone; after a marker of text it is
* a space, rather than an approximation that would render as a different
* number than the one asked for.</p>
* <p>In the semantic DOCX export it sets the top level's marker column, as
* {@link #hangingIndent(boolean)} describes, where it covers what Word may set
* the marker wider; it never becomes characters in the text.</p>
*
* @param markerGap gap in points; {@code 0} is allowed
* @return this builder
Expand Down
Loading
Loading