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
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ follow semantic versioning; release dates are ISO 8601.

### Public API

- **`OrangeOps` stands on one page in Word.** It ran to two, and 6 of its 108 lines were
found in Word's rendering; now 99 are, at a median drift of 0.42pt.
- Its headings are Oswald SemiBold, a face whose file does not say it is bold. Word set
"ACHIEVEMENTS" about 1% wider than the page, past its box, and broke it onto a second line, and
three such headings added 51pt. A paragraph of one line now has room for a line three
hundredths wider than its own: it breaks no word, and broken in Word it is a line more.
- Its role bar stands 3.8pt up inside its name's line, by the name's negative bottom margin.
A negative bottom edge — a paragraph's, an image's, a barcode's or a rule's — was dropped;
it now comes out of the space above the next paragraph, its own top edge included, or of the
space owed below where a table or a page break follows. LibreOffice's `NorthlineProposal` gains from it too: lines past
2pt fall from 34 to 6.
- Line by line, no document moves further from the page in Word or LibreOffice.

- **A paragraph breaks its lines where the page does, though Word sets its size to the half
point.** Word states a type size in half points, so `EngineeringResume`'s 7.8pt profile was set
at 8pt and took a line more, and its 6.9pt skills, set at 7pt, broke "SQL" onto a line of its
Expand Down
11 changes: 10 additions & 1 deletion docs/recipes/docx-export.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,13 @@ far as its letters leave room above them, its text seated where the page sets it
can give is not written. Text laid over the flow in text boxes owes no space, so its edges
move nothing.

A negative bottom `margin` or `padding` — a paragraph's, an image's, a barcode's or a rule's —
pulls the next paragraph up into it the same way: it comes out of the space above that
paragraph, its own top edge included, even where the two stand in different containers. What
that space cannot give is not written. Before a table, a page break or the end of a cell it
comes out of the space owed below instead. Layers that overlap on the page take none of it
from one another, as the space between them is measured from their boxes.

A paragraph's or a list's `lineSpacing` — the gap the page puts between two wrapped lines —
goes into the line: Word has one line height for a paragraph and no gap between its lines,
so a paragraph that wraps is written with its lines taller. The page has one gap fewer than
Expand Down Expand Up @@ -294,7 +301,9 @@ them; a reader's new text wraps at that measure. The measure grows by the share
that grows most for its size — pictures and tracking keep their own width — and in a paragraph
of several lines stays a point short of that, unless a line needs the room, so a word the page
broke off by a fraction of a point is not pulled back up. A paragraph of one line is never
narrowed. A centred or right-aligned paragraph keeps
narrowed, and has room for a line three hundredths wider than its own: Word sets a face other
than the page's, or emboldens one whose file does not say it is bold, a little wider, and a
line of one broken in Word is a line more. A centred or right-aligned paragraph keeps
the page's measure, as moving its other edge would move its lines. A list's items, a line pair's
line, text over the flow and a header's or footer's line keep the page's measure too.

Expand Down
67 changes: 34 additions & 33 deletions qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -992,11 +992,11 @@ cv-nordic_clean 0:f87e2f0c02dc 0.11 layoutlint(java21,javaparser,spo
cv-nordic_clean 0:a646f74483b1 0.25 rows,untypedoffsets,implicitpage
cv-nordic_clean 0:6793d28e9783 0.27 chromeforge(java,graphcompose,pa
cv-nordic_clean 0:e3cfea265b3b 0.41 graphcompose:cinematiccovers,pul
cv-orange_ops 0:8157f110feec 81.86 warehouseoperationssupervisor
cv-orange_ops 0:a8acc3a90a7b 81.97 +447700900123
cv-orange_ops 0:e6da1125d5d5 81.97 marcus.bennett@email.com
cv-orange_ops 0:6a3bd39f358d 81.97 birmingham,westmidlands,uk
cv-orange_ops 0:84308bea4540 81.97 linkedin
cv-orange_ops 0:8157f110feec 77.81 warehouseoperationssupervisor
cv-orange_ops 0:a8acc3a90a7b 77.92 +447700900123
cv-orange_ops 0:e6da1125d5d5 77.92 marcus.bennett@email.com
cv-orange_ops 0:6a3bd39f358d 77.92 birmingham,westmidlands,uk
cv-orange_ops 0:84308bea4540 77.92 linkedin
cv-panel 0:8f1010120ed6 -0.40 jordanrivera
cv-panel 0:2d58f0cadc2d 0.12 platformengineer
cv-panel 0:89ff05847e96 0.19 london,uk|+442055551000
Expand Down Expand Up @@ -3837,34 +3837,35 @@ proposal-northline 0:185e8dc84248 -0.10 primarycontact
proposal-northline 0:59d00e0c1b99 -0.27 projectlead
proposal-northline 0:4190fd3a8d72 -0.05 proposalvalidity
proposal-northline 0:56a2e019b8aa -0.22 14days
proposal-northline 0:e2ea93b97611 10.92 strengthenbrand
proposal-northline 0:7d95098b921b 10.42 credibilityandvisual
proposal-northline 0:218e304f8b84 9.92 consistency.
proposal-northline 0:35597cc9803f 10.92 improvewebsite
proposal-northline 0:83f63137756b 10.42 usabilityanddrive
proposal-northline 0:cce9fba37d4e 9.92 meaningfulaction.
proposal-northline 0:59aaadaf0c54 10.92 communicateyour
proposal-northline 0:30193022f687 10.42 valueclearlyacrossall
proposal-northline 0:04b5995c746f 9.92 touchpoints.
proposal-northline 0:b45d848fe1b6 10.92 buildascalabledigital
proposal-northline 0:e8228bfeba0e 10.42 foundationforfuture
proposal-northline 0:1fa35c7a1402 9.92 growth.
proposal-northline 0:bc981abcdf59 9.91 scopeofwork
proposal-northline 0:28450edd9a4f 10.27 discovery&research
proposal-northline 0:155f35b4967f 10.87 stakeholderinterviews,brandaudit
proposal-northline 0:973aeda5fe6d 10.17 insightstoinformstrategy.
proposal-northline 0:12bff3036b66 10.37 visualidentityrefinement
proposal-northline 0:d7ac738462f9 10.97 refinelogosystem,colorpalette,ty
proposal-northline 0:9136e740c370 10.27 cohesive,modernidentity.
proposal-northline 0:fc5134bf5fd1 10.47 websiteux/uidesign
proposal-northline 0:5d58b01c7096 11.07 designaresponsive,accessibility-
proposal-northline 0:5d6068f6a879 10.37 navigationandclearconversionpath
proposal-northline 0:32001e20b2ed 10.57 contentstructure&messaging
proposal-northline 0:b3c948ec3e36 11.17 definesitearchitecture,keymessag
proposal-northline 0:231428fde7aa 10.47 communicatevalueandbuildtrust.
proposal-northline 0:8c7703bb6fb7 10.67 launchsupport
proposal-northline 0:64aa6ccd2e0e 11.27 developerhandoff,qasupport,train
proposal-northline 0:1f71a8d2d1d2 10.57 ensureasmoothlaunch.
proposal-northline 0:265e93f6b9da -0.04 (until8september2026)
proposal-northline 0:e2ea93b97611 0.72 strengthenbrand
proposal-northline 0:7d95098b921b 0.22 credibilityandvisual
proposal-northline 0:218e304f8b84 -0.28 consistency.
proposal-northline 0:35597cc9803f 0.72 improvewebsite
proposal-northline 0:83f63137756b 0.22 usabilityanddrive
proposal-northline 0:cce9fba37d4e -0.28 meaningfulaction.
proposal-northline 0:59aaadaf0c54 0.72 communicateyour
proposal-northline 0:30193022f687 0.22 valueclearlyacrossall
proposal-northline 0:04b5995c746f -0.28 touchpoints.
proposal-northline 0:b45d848fe1b6 0.72 buildascalabledigital
proposal-northline 0:e8228bfeba0e 0.22 foundationforfuture
proposal-northline 0:1fa35c7a1402 -0.28 growth.
proposal-northline 0:bc981abcdf59 -0.29 scopeofwork
proposal-northline 0:28450edd9a4f 0.07 discovery&research
proposal-northline 0:155f35b4967f 0.67 stakeholderinterviews,brandaudit
proposal-northline 0:973aeda5fe6d -0.03 insightstoinformstrategy.
proposal-northline 0:12bff3036b66 0.17 visualidentityrefinement
proposal-northline 0:d7ac738462f9 0.77 refinelogosystem,colorpalette,ty
proposal-northline 0:9136e740c370 0.07 cohesive,modernidentity.
proposal-northline 0:fc5134bf5fd1 0.27 websiteux/uidesign
proposal-northline 0:5d58b01c7096 0.87 designaresponsive,accessibility-
proposal-northline 0:5d6068f6a879 0.17 navigationandclearconversionpath
proposal-northline 0:32001e20b2ed 0.37 contentstructure&messaging
proposal-northline 0:b3c948ec3e36 0.97 definesitearchitecture,keymessag
proposal-northline 0:231428fde7aa 0.27 communicatevalueandbuildtrust.
proposal-northline 0:8c7703bb6fb7 0.47 launchsupport
proposal-northline 0:64aa6ccd2e0e 1.07 developerhandoff,qasupport,train
proposal-northline 0:1f71a8d2d1d2 0.37 ensureasmoothlaunch.
proposal-northline 0:026890c58de9 0.01 northlinestudio|northlinestudio.
proposal-northline 1:5205c2a261bc -0.34 northline
proposal-northline 1:da0daaba4b15 -0.34 studio
Expand Down
4 changes: 2 additions & 2 deletions qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ cv-modern_professional 2 2 61 59 0.12 0.59 5
cv-monogram_sidebar 1 1 53 50 3.57 5.69 50
cv-navy_sidebar 1 1 71 71 2.81 3.03 71
cv-nordic_clean 1 1 63 58 0.20 0.57 0
cv-orange_ops 1 2 108 5 81.97 81.97 5
cv-orange_ops 1 2 108 5 77.92 77.92 5
cv-panel 1 1 79 73 0.35 0.78 0
cv-professional_sidebar 1 1 68 64 2.71 2.90 64
cv-serif_headline 1 1 103 103 0.44 0.88 0
Expand Down Expand Up @@ -59,6 +59,6 @@ letter-timeline_minimal 1 1 15 15 1.32 1.52 0
proposal-editorial 2 2 132 119 43.27 45.18 68
proposal-indigo 1 1 72 70 0.57 27.88 16
proposal-modern 1 1 44 44 0.41 0.75 0
proposal-northline 2 2 132 131 0.78 10.47 34
proposal-northline 2 2 132 132 0.38 1.62 6
receipt-modern 1 1 57 57 0.26 0.29 0
rota-cobalt 1 1 154 151 2.39 3.09 124
103 changes: 98 additions & 5 deletions qa/src/test/resources/docx-fidelity/word-windows-lines.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -987,11 +987,104 @@ cv-nordic_clean 0:a646f74483b1 0.31 rows,untypedoffsets,implicitpage
cv-nordic_clean 0:6793d28e9783 0.43 chromeforge(java,graphcompose,pa
cv-nordic_clean 0:e3cfea265b3b 0.51 graphcompose:cinematiccovers,pul
cv-orange_ops 0:a6c9a7bc3a1d -0.34 marcusbennett
cv-orange_ops 0:8157f110feec 3.80 warehouseoperationssupervisor
cv-orange_ops 0:a8acc3a90a7b 3.95 +447700900123
cv-orange_ops 0:e6da1125d5d5 3.95 marcus.bennett@email.com
cv-orange_ops 0:6a3bd39f358d 3.95 birmingham,westmidlands,uk
cv-orange_ops 0:84308bea4540 3.95 linkedin
cv-orange_ops 0:8157f110feec -0.28 warehouseoperationssupervisor
cv-orange_ops 0:8157f110feec#1 0.21 warehouseoperationssupervisor
cv-orange_ops 0:a8acc3a90a7b -0.01 +447700900123
cv-orange_ops 0:e6da1125d5d5 -0.01 marcus.bennett@email.com
cv-orange_ops 0:6a3bd39f358d -0.01 birmingham,westmidlands,uk
cv-orange_ops 0:84308bea4540 -0.01 linkedin
cv-orange_ops 0:32c1cf49a2fe 0.11 skills
cv-orange_ops 0:8225698c0a01 0.10 warehouseoperationsmanagement
cv-orange_ops 0:fab5b1b3f07b 0.05 teamleadership&development
cv-orange_ops 0:fe67bd8bcb96 0.00 inventorycontrol&accuracy
cv-orange_ops 0:52d5776e1f94 0.06 logistics&freightcoordination
cv-orange_ops 0:40c502892bf5 0.01 orderfulfilment&dispatch
cv-orange_ops 0:16d5a33ecc7e -0.04 kpimonitoring&reporting
cv-orange_ops 0:01fc299910cc 0.02 leanprocessimprovement
cv-orange_ops 0:d52f9933e794 -0.03 health&safetycompliance
cv-orange_ops 0:2513b7af97dd -0.08 wms&erpsystems
cv-orange_ops 0:034e1f3a8777 0.01 problemsolving&decisionmaking
cv-orange_ops 0:115925c1b96b -0.04 stakeholdercommunication
cv-orange_ops 0:6ee18b42fbf1 0.00 achievements
cv-orange_ops 0:8c76fa6dfb6b 0.14 15%productivityincrease
cv-orange_ops 0:5ba0c9469ae2 -0.09 improvedwarehouseproductivity
cv-orange_ops 0:4738b76d6b6a -0.05 by15%throughworkflow
cv-orange_ops 0:449e0d003818 -0.01 redesignandperformance
cv-orange_ops 0:7071b774bee5 0.04 management.
cv-orange_ops 0:93d8df801c78 0.28 99.2%inventoryaccuracy
cv-orange_ops 0:91021a576e54 0.05 maintainedinventoryaccuracy
cv-orange_ops 0:ab234354692f 0.10 above99%for12consecutive
cv-orange_ops 0:6d4b37f38385 0.14 monthsthroughcyclecount
cv-orange_ops 0:95eb3dca6f29 0.21 disciplineandprocesscontrol.
cv-orange_ops 0:6c9aed656984 0.45 zerolosttimeincidents
cv-orange_ops 0:af3bece11942 0.22 ledasafety-firstcultureresulting
cv-orange_ops 0:0be170a927a8 0.27 inzerolosttimeincidentsover24
cv-orange_ops 0:326641f2b791 0.31 monthsacrossoperations.
cv-orange_ops 0:44ad72befc81 0.56 £280kcostsavings
cv-orange_ops 0:ccf85623aab7 0.33 delivered£280kinannualsavings
cv-orange_ops 0:b43687fef93a 0.37 byreducingwaste,lowering
cv-orange_ops 0:c63a4328568d 0.42 overtimeandrenegotiatingcarrier
cv-orange_ops 0:203fe55e82c0 0.46 contracts.
cv-orange_ops 0:68bf0109c6f8 0.54 education
cv-orange_ops 0:c075e52d1429 1.29 bsc(hons)logistics&supplychain
cv-orange_ops 0:288965a1f2c8 0.39 management
cv-orange_ops 0:4e3ad0b9c561 0.57 demontfortuniversity
cv-orange_ops 0:19c022f9ca15 0.61 leicester,uk
cv-orange_ops 0:2920a7fb42fc 0.64 2011–2014
cv-orange_ops 0:e831beb04c00 0.62 certifications
cv-orange_ops 0:7bfe84d02a79 0.61 ioshmanagingsafely
cv-orange_ops 0:a13fc3060cc2 0.56 institutionofoccupationalsafetya
cv-orange_ops 0:cb9792111d09 0.57 leansixsigmayellowbelt
cv-orange_ops 0:da7ec3a3fba6 0.64 theknowledgeacademy–2020
cv-orange_ops 0:8d34b20716e1 0.65 counterbalanceforklifttruckinstr
cv-orange_ops 0:8225f209e334 0.61 rtitb–2019
cv-orange_ops 0:afcc559aff07 0.62 firstaidatwork
cv-orange_ops 0:2eff3c9d0161 0.60 stjohnambulance–2019
cv-orange_ops 0:3c69d6bb4892 0.11 professionalprofile
cv-orange_ops 0:41fad67acd21 0.27 environments.proventrackrecordof
cv-orange_ops 0:360626c9f718 0.34 workexperience
cv-orange_ops 0:03f6d636aa6b 0.40 mar2021–present
cv-orange_ops 0:24c0d4863b50 0.31 expresslinkdistributionltd|birmi
cv-orange_ops 0:873c40886362 0.29 •overseedailywarehouseoperations
cv-orange_ops 0:e789c025e038 0.21 staffacrossinbound,storage,picki
cv-orange_ops 0:005412ac77a3 0.31 •ensuretimelyandaccurateorderful
cv-orange_ops 0:4e9c4aed8e43 0.28 •monitorandmaintaininventoryaccu
cv-orange_ops 0:1509c3cbd20f 0.32 variances.
cv-orange_ops 0:928837818f67 0.42 •analysekpisandoperationaldatato
cv-orange_ops 0:c8a3bdb04f89 0.31 •leadcontinuousimprovementinitia
cv-orange_ops 0:e28f5bf00122 0.47 productivity.
cv-orange_ops 0:bfb9273fea4d 0.37 warehouseteamleader
cv-orange_ops 0:9a8c213939be 0.44 may2017–feb2021
cv-orange_ops 0:df1f256d362d 0.47 midlandgatelogistics|coventry,uk
cv-orange_ops 0:92d5e6992bc1 0.45 •ledateamof25warehouseoperatives
cv-orange_ops 0:ec21a3e83856 0.42 •managedinboundreceipts,putaway,
cv-orange_ops 0:ac1fa66fcf19 0.52 •maintainedaccuratestockrecordsa
cv-orange_ops 0:195624e8565f 0.49 •supportedtheimplementationofane
cv-orange_ops 0:dd2458930e31 0.47 •reducedpickingerrorsby23%throug
cv-orange_ops 0:81219b44ff52 0.46 warehousecoordinator
cv-orange_ops 0:eb5e95e8b64c 0.53 jun2015–apr2017
cv-orange_ops 0:95f3c676853f 0.44 totalsupplysolutions|northampton
cv-orange_ops 0:3e147aae9ba8 0.54 •coordinateddailyoperationsandal
cv-orange_ops 0:b786faa44990 0.51 •monitoredstocklevelsandinitiate
cv-orange_ops 0:9806038f6123 0.49 •assistedwithkpireportingandperf
cv-orange_ops 0:c2ec5b8c794d 0.61 •ensuredcompliancewithcompanypol
cv-orange_ops 0:a691a9aab3fc 0.61 keykpisnapshot(recent12months)
cv-orange_ops 0:b5f6dbae04bd 0.46 15%
cv-orange_ops 0:e918ea42a538 -6.02 99.2%
cv-orange_ops 0:16906b6f3827 -6.02 98.4%
cv-orange_ops 0:bd1b16004d22 0.71 productivity
cv-orange_ops 0:b11a85b296a9 0.71 inventory
cv-orange_ops 0:b1e25044bf23 0.71 on-time
cv-orange_ops 0:05595e942a13 0.71 losttime
cv-orange_ops 0:e20a548f23fa 0.71 increase
cv-orange_ops 0:5879092f86c5 0.71 accuracy
cv-orange_ops 0:b4af39d5b65a 0.71 delivery
cv-orange_ops 0:a6d1765ab64d 0.71 incidents
cv-orange_ops 0:676dfdd56ad2 0.74 additionalinformation
cv-orange_ops 0:0945b35c95a8 0.90 systems:sapewm,manhattanwms,micr
cv-orange_ops 0:44aaa523dc2c 0.92 languages:english(native)
cv-orange_ops 0:724cc536a24c 0.96 drivinglicence:fullukdrivinglice
cv-orange_ops 0:9f0e43069d3f 0.98 interests:strengthtraining,motor
cv-panel 0:8f1010120ed6 0.42 jordanrivera
cv-panel 0:2d58f0cadc2d 0.20 platformengineer
cv-panel 0:89ff05847e96 0.20 london,uk|+442055551000
Expand Down
2 changes: 1 addition & 1 deletion qa/src/test/resources/docx-fidelity/word-windows.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ cv-modern_professional 2 2 61 59 0.20 0.77 5
cv-monogram_sidebar 1 1 53 50 0.79 2.95 17
cv-navy_sidebar 1 1 71 69 0.13 0.22 0
cv-nordic_clean 1 1 63 58 0.22 0.61 0
cv-orange_ops 1 2 108 6 3.95 3.95 5
cv-orange_ops 1 1 108 99 0.42 0.71 2
cv-panel 1 1 79 73 0.43 0.94 0
cv-professional_sidebar 1 1 68 64 0.11 0.27 0
cv-serif_headline 1 1 103 103 0.51 1.05 0
Expand Down
Loading
Loading