-
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) — now closed, every child shipped — recorded 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.
- 3-D charts past the reachable camera. The perspective camera is derived and holds across every angle and field of view Word's dialog can state; beyond that — on a hand-edited file only — it clamps to its last good law (#141, #247, closed). Two 3-D residuals are characterised and closed as such rather than fitted: the pie's back-slice sector pinch, where the outline is Word's but a back slice reads a shade large (#166), and the clustered box's multi-category width, which is plot-fit-bound and whose floor outline the raster cannot isolate (#163).
-
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.
- 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.
- Static analysis runs in CI. Semgrep runs on every push and PR with custom threat-model rules — advisory findings to code scanning, plus a diff-aware gate that fails a PR on a new high or critical (#228, closed) — alongside the closed audit register and the deterministic fuzzer that runs on every push (Security).
Gaps are tracked as issues labelled feature (a capability that does not exist yet, as against a defect in one that does). The feature-completeness epic #60 and the charts epic #63 are both closed now — every child shipped — so the open list has come down to the release itself (#61). That list is the truth when this page and it disagree.
Using n8PDF
What it does
How it works
Contributing