-
Notifications
You must be signed in to change notification settings - Fork 0
Known Gaps
What does not work, what is approximated, and what was declined by decision. The scope section of the codebase is kept honest — each gap here is either filed as an issue, held by a test as a known divergence, or written down as a decision with its reason. Check Functionality first: several things that look like gaps are implemented, and the feature-completeness epic (#60) records what was checked and found present.
- Surface charts — declined by decision, not pending (#104). A surface is a mesh over a grid, not a series of points, and shares nothing with the chart family that is drawn. Its page draws the room a 3-D chart stands in (frame, walls, gridlines, axes) and no mesh, rather than passing a 3-D line off as one.
- A chart that cannot be parsed takes its frame with it, so the document reflows where the frame should have held its place (#95, open).
- 3-D charts at deep perspective — the camera laws are measured and hold across the measured range, but where the eye leaves the frustum the laws stop (#141, open). Two further 3-D residuals are bounded rather than pinned (#163, #166).
-
Shapes: paragraphs laid out inside a rotated shape stay upright (the geometry turns, the flowed text does not);
lnSpcReductionshrinks the font but not the leading; pattern fills are declined (Word's own gallery no longer offers one); a shadow's edge is not blurred. -
Shading textures (
horzStripeand its kind) are real hatchings in Word's PDFs, drawn as tiling patterns; here they are drawn as a flat rectangle of the fill — the one stated approximation in the shading work. - EMF raster operations and palettes — declined by decision: the one is a screen idiom a document's picture does not use, and the other matters only to old paletted bitmaps no Office export writes into a metafile.
- A partial-width float whose top clearance reaches back over the previous paragraph's last line would need that line broken again and is not handled (the full-width case is). Only the paragraph immediately before a float is re-laid for a backward-reaching clearance; a clearance deep enough to reach two paragraphs back leaves the further one alone (matching what a real document can hold).
- The AAT attachment kind that names points on the glyph outlines themselves (rather than in a table) is not implemented — no face on the reference machine asks for it.
- The fifth default chart marker onward: Word runs through diamond, square, triangle, cross for the first four series (measured); what it does with a fifth is Excel's old order and was not measured.
-
Word's exact division of near-equal table columns is provably not a fixed proportion of fixed wants — a 36-point sweep shows no single ratio satisfies all measurements. The implemented rule lands 34 of 36, the best any natural ratio does, and
TwoColumnSweepTestsholds the crossing bounds so nobody re-opens this expecting a tidy rule.
These are places where the output differs from Word's on purpose, or where the difference is measured, recorded, and asserted rather than fitted away:
- Watermark text stays text. Word turns the letters into outlines, so its own file holds no searchable watermark; here the word remains selectable text. Word for Mac also draws a watermark in the document's default face whatever face was asked for; here the asked-for face is used.
- Table autofit is an approximation, the one piece that approximates rather than reproduces: Word's algorithm is undocumented, and the implemented minimum/maximum share-out reproduces both measured behaviours and agrees to 0.16pt on the probe — but it is not derived from the real algorithm the way the paragraph rules are.
- SmartArt text blocks sit 3.1pt from Word's — a constant that cannot be attributed (block height vs. first-baseline placement cannot be told apart when Word writes the cache itself), recorded as a known divergence rather than fitted away.
- Chart frames are not clipped, so the outer half of a chart's border — which Word cuts at the frame — remains: about a quarter-point of halo.
- VML shapes with outlines thicker than a point make their line taller in Word and nudge a shape sharing their line; both are measured, neither implemented (out of reach of any ordinary document — Word writes ¾pt outlines), and both are held as known divergences.
- Equation text is selectable but copies in a different order than Word's when a whole line is dragged across — the letters are drawn as a group of their own rather than interleaved with the words around them. (Word's own files map equation glyphs back to nothing at all.)
- Residual grid steps. After all the measured rules, what remains against Word is almost everywhere a single step of the 1/300-inch grid where a rounding falls the other way — about one exact-line baseline in ten, the last step of Word's table-column rounding, and the like. These are measured to the end of what measurement can settle; the tests assert the bounds cross, and they are the answer rather than gaps.
- Not yet on NuGet (#61): the release pipeline exists, has never run for real, and has no API key. Until it does, none of the rest reaches anybody — it is the gap with a claim to going first.
- The full Word comparison runs on one machine. 46 of the 143 comparison fixtures are set in faces Word brings with it; hosted CI skips those and says so out loud. See Validation before trusting a green hosted CI on anything touching font selection or metrics.
- Security hardening is in progress, with an open register — see Security for the honest list, including the absence of a fuzzing corpus (#71).
Gaps are tracked as issues labelled feature (a capability that does not exist yet, as against a defect in one that does) under the feature-completeness epic #60 and the charts epic #63. That list is the truth when this page and it disagree.
Using n8PDF
What it does
How it works
Contributing