docs: prepare CHANGELOG and MIGRATING for v0.8.0#285
Merged
Conversation
Merged
6 tasks
a7661c8 to
0ccdd3d
Compare
carlos7ags
added a commit
that referenced
this pull request
May 2, 2026
CHANGELOG additions to Unreleased: - Visual changes: <th> behavioural shift from #288 — explicit text-align: left on <th> is now preserved instead of being silently re-centered by the table-cell default heuristic. - Added: text-align: start | end with direction-relative late binding (#288); text-decoration-line: overline (#289); CSS border styles groove/ridge/inset/outset rendered with per-side dark/light modulation (#290). MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section: - <th> default-center heuristic shift (mirror of CHANGELOG entry, framed for upgraders auditing PDF diffs). - border 3D styles now render the bevel — documents that used ridge/groove/inset/outset will see colored modulation instead of a flat solid line. The text-align: start/end addition itself is in CHANGELOG Added but intentionally omitted from MIGRATING Visual changes — the new keywords were rejected pre-fix, so any document that relied on the keyword is opting INTO the new behaviour rather than seeing an existing render shift. text-decoration overline is similarly omitted from MIGRATING — the keyword was silently dropped pre-fix, so adding a visible overline is an opt-in. Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight) are already entered. v0.8.0 is now release-note ready once #285 itself merges.
0ccdd3d to
86d3af1
Compare
carlos7ags
added a commit
that referenced
this pull request
May 3, 2026
CHANGELOG additions to Unreleased: - Visual changes: <th> behavioural shift from #288 — explicit text-align: left on <th> is now preserved instead of being silently re-centered by the table-cell default heuristic. - Added: text-align: start | end with direction-relative late binding (#288); text-decoration-line: overline (#289); CSS border styles groove/ridge/inset/outset rendered with per-side dark/light modulation (#290). MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section: - <th> default-center heuristic shift (mirror of CHANGELOG entry, framed for upgraders auditing PDF diffs). - border 3D styles now render the bevel — documents that used ridge/groove/inset/outset will see colored modulation instead of a flat solid line. The text-align: start/end addition itself is in CHANGELOG Added but intentionally omitted from MIGRATING Visual changes — the new keywords were rejected pre-fix, so any document that relied on the keyword is opting INTO the new behaviour rather than seeing an existing render shift. text-decoration overline is similarly omitted from MIGRATING — the keyword was silently dropped pre-fix, so adding a visible overline is an opt-in. Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight) are already entered. v0.8.0 is now release-note ready once #285 itself merges.
Compiles the v0.7.1..main delta (114 commits, ~40 PRs) into release-ready CHANGELOG entries and updates MIGRATING with the v0.7.x → v0.8.0 upgrade guide. CHANGELOG additions to Unreleased: - Visual changes section: GPOS cursive horizontal placement (#220), CJK paragraphs across page breaks (#246), Unicode NFC normalization at layout entry point (#217) - Changed (breaking): layout.UnitValue no longer comparable with == (#236), in addition to the existing BasePath removal and @font-face resolution change (#85) - Added: font.Fallback (#225), Paragraph.MeasureLines/Height (#238), Paragraph.SplitAfterLine (#253), layout.Anchor + auto-named- destinations (#223), layout.UnitCalc + CalcUnit (#236), Info.Language (#214), PDF/A-3a + PDF/A-4 family (#214), C ABI additions (#214 + #283), CSS :empty / ::placeholder (#215), 8 Indic scripts (#216), GPOS Types 3/5/6 (#218 / #213), body-flow counter(page) (#221), GCPM bookmark properties (#224), the calc shorthand series across 13 properties (#236-#261) - Changed: HTML CSS parser refactored into declarative property registry (#271) - Fixed: GPOS cursive double-counted hmtx + Type 5 3+ component fallback (#220), inline elements + Arabic OriginalText preserved across page splits (#241), font: paren-aware slash detector + column-rule none/hidden zeros width (#270), transform() paren-aware arg extractor (#272), parseAngle/parseNumericVal/parseLineHeight understand calc/min/max/clamp (#274 / #275 / #284), margin auto-flag detector aligned (#263) - Deprecated reminder: the four core direct-field accesses from v0.7.0 carry forward to v0.8.0; removal target stays v1.0 - Tests: hyphenation contract guard (#250) - Documentation: docs/CSS_SUPPORT.md introduced (#271/#273) and extended with Selectors / At-rules / Functions sections (#162/#282) MIGRATING additions for v0.7.x → v0.8.0: - C ABI surface grew from 388 to 393 (+5): folio_document_set_language, FOLIO_PDFA_3A/4/4F/4E (#214), folio_paragraph_measure_lines / measure_height / split_after_line (#283), folio_font_parse_for_language (#283) - layout.UnitValue compile-error break for == comparisons - Visual-change checklist for regression-diffing PDFs - Asset-resolution side-effects from #229 (URLPolicy uniformity, absolute system font path with BaseFS=nil, FallbackFontPath programmatic-only carve-out)
CHANGELOG: - Visual changes: standard PDF-14 fonts now round weight ≥ 600 to Bold per CSS Fonts L4 §5.2. Pre-fix, font-weight: 600 against Helvetica picked Regular (the binary parser collapsed everything < 700 to "normal"); post-fix it picks Helvetica-Bold. Visible shift for documents that wrote 600 expecting Regular. - Added: numeric font-weight ladder + nearest-weight @font-face matching (CSS Fonts L4 §3.1 + §5.2). computedStyle.FontWeight promoted to int over 100..900; resolveFontPair walks the spec's per-window algorithm (ascending toward 500 first for [400, 500], descending then ascending for < 400, ascending then descending for > 500). Closes the issue where 4 Inter weights declared via @font-face silently picked Regular for any document writing font-weight: 600. MIGRATING: - Visual changes section gains a bullet for the standard-font rounding shift, with the same explanation framed for upgraders.
CHANGELOG additions to Unreleased: - Visual changes: <th> behavioural shift from #288 — explicit text-align: left on <th> is now preserved instead of being silently re-centered by the table-cell default heuristic. - Added: text-align: start | end with direction-relative late binding (#288); text-decoration-line: overline (#289); CSS border styles groove/ridge/inset/outset rendered with per-side dark/light modulation (#290). MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section: - <th> default-center heuristic shift (mirror of CHANGELOG entry, framed for upgraders auditing PDF diffs). - border 3D styles now render the bevel — documents that used ridge/groove/inset/outset will see colored modulation instead of a flat solid line. The text-align: start/end addition itself is in CHANGELOG Added but intentionally omitted from MIGRATING Visual changes — the new keywords were rejected pre-fix, so any document that relied on the keyword is opting INTO the new behaviour rather than seeing an existing render shift. text-decoration overline is similarly omitted from MIGRATING — the keyword was silently dropped pre-fix, so adding a visible overline is an opt-in. Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight) are already entered. v0.8.0 is now release-note ready once #285 itself merges.
CSS max-width / max-height / min-width / min-height on <img> (closes #291). Pre-fix the CSS parser stored the values but the converter never threaded them to ImageElement, and ImageElement had no fields to receive them. Post-fix adds cssMax*/cssMin* fields, SetMaxSize/SetMinSize setters, and an aspect-preserving clamp helper applied before object-fit dispatch and after auto- resolution. Container width remains the absolute outer bound for replaced elements per CSS 2.1 §10.4. This is the spec-completeness shape — same as #287 (numeric font-weight), #288 (text-align: start/end), #289 (overline), #290 (border 3D styles): a CSS spec value the parser stored but the consumer-side primitive didn't read.
Adds CHANGELOG entries for #293, #294, #300, #301-#306, #307, #309-#311, #312, #313, #314, #315, and #319 (~25 PRs merged since the previous refresh of this branch). The lazy bg-position resolution in #319 introduces a public breaking change to layout.BackgroundImage.Position ([2]float64 -> [2]layout.ResolvableLength); both CHANGELOG and MIGRATING get a before/after example. MIGRATING also notes the html.ErrURLPolicyDenied message-text change from #313 (var identity unchanged, so errors.Is still works). C ABI export count remains 393; docs/CSS_SUPPORT.md is unchanged by go run ./internal/gen-css-docs/.
86d3af1 to
b2cc61a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Compiles the
v0.7.1..maindelta into release-ready CHANGELOG entries and updates MIGRATING with the v0.7.x -> v0.8.0 upgrade guide. Refreshed 2026-05-30 after rebase onorigin/mainto capture the ~25 PRs merged since the previous push. This is the final docs prep before tagging v0.8.0. No code changes.git rev-list --count v0.7.1..HEAD= 198.Refresh (2026-05-30) — newly catalogued PRs
Added or amended Unreleased entries for:
word-break: break-allhonoured in second paragraph measurement pass (Fixed)examples/(Phase 2 of examples: ship without CI; docs and code drift apart silently #231) (Tests)parseLineHeightcalc paths, closes html: parseLineHeight mishandles dimensionless calc — resolves to wrong multiplier #275 (Tests)breakLongWordspreservesOriginalText+ shaped GIDs across chunks, closes layout: breakLongWords drops Word.OriginalText and Word.GIDs on character-broken chunks #255 (Fixed)<html lang>propagated to@font-faceTTC face selection, closes html: propagate document/element lang attribute to font.ParseFontForLanguage #280 (Added — entry was already on the branch but re-verified)computedStyle, closes html: margin/padding/background-size store as float64 (eager); percent-only values resolve to 0pt #269 (Changed — internal-only, no public-API break)background-position+ gradient stops accept percent-onlycalc()/min()/max()/clamp(), plus html: close review findings on #312 — doc gap + 10 tests #314 (followup doc + tests) and html: reset depth between calc operator scan passes #315 (parseCalcExpr depth-reset) bundled into one Added entry (Added)<pkg>:/<pkg>: <subdomain>:/<pkg>.<Func>:;html.ErrURLPolicyDeniedmessage text changed (Changed; MIGRATING note added because the verbatim message changed)background-positionlazy resolution at draw time, closes html: parseBgPosition doesn't recognize calc() positions; toFrac needs dimension-aware resolution #266. Breaking Go-side API change tolayout.BackgroundImage.Position([2]float64->[2]layout.ResolvableLength); both CHANGELOG (under Changed (breaking)) and MIGRATING get a before / after exampleDependabot bumps merged in the same window (#296, #297, #298, #316, #317) are intentionally not in CHANGELOG per folio convention.
CHANGELOG additions to Unreleased (cumulative across the branch)
html.Options.BasePathremoved (Changes to html.Options #85);@font-faceURLs resolve relative to stylesheet;layout.UnitValueno longer==-comparable (html, layout: fix flex shorthand with calc/min/max basis #236);layout.BackgroundImage.Positionis now[2]layout.ResolvableLength(html: parseBgPosition doesn't recognize calc() positions; toFrac needs dimension-aware resolution #266, html, layout: lazy-resolve background-position at draw time (closes #266) #319)font.Fallback,Paragraph.MeasureLines/Height/SplitAfterLine,layout.Anchor+ auto-named-destinations,layout.UnitCalc,Info.Language), PDF/A-3a / PDF/A-4 family, C ABI growth from 388 to 393, CSS pseudo-classes + pseudo-elements (:empty,::placeholder), Indic shaping for 8 scripts, GPOS Types 3 / 5 / 6, body-flowcounter(page), GCPM bookmark properties, the calc-shorthand series across 13 properties, CFF subsetter, numericfont-weightladder + nearest-weight matching,text-align: start | end,text-decoration-line: overline, 3D border bevel styles,<img>min / max constraints, and thebackground-positioncalc / lazy resolution chainfontpackage dropssfntfor metric reads (font: drop sfnt dependency by parsing head/hhea/maxp/hmtx/OS-2/name from raw bytes (Phase 2 of #248) #260),htmlasset resolution centralized (html: centralize asset resolution behind a single resolveLocalAsset entry point #229), CSS parser registry refactor (html: refactor CSS parser into declarative property registry #271), error-prefix standardization (all: standardize error message prefixes #313),computedStylelazy margin / padding migration (html: margin/padding/background-size store as float64 (eager); percent-only values resolve to 0pt #269 / html: Phase 1 of #269 — sibling *cssLength fields for margin/padding #309 / html: Phase 2 of #269 — migrate consumers to MarginTopAt / PaddingTopAt helpers #310 / html: Phase 4 of #269 - remove legacy float64 margin/padding fields #311)word-break: break-allsecond pass (layout: honor word-break:break-all in measureWords second pass #294),breakLongWordsGID preservation (layout: preserve OriginalText + GIDs across breakLongWords chunks (closes #255) #307), plus SVGsliceclip, TTC dispatch,typ1false-advertise, GPOS Type 5 fallback, and inline-element / Arabic survival across page splitsexamples/cjkPhase 1 (examples: ship without CI; docs and code drift apart silently #231), Phase 2 examples-CI rollout (examples/html-to-pdf: add CI (#231) #301-examples: add CI for merge, import-page, redact (#231) #304), synthetic CJK fixture (font, integration: synthetic CJK font fixture (closes #281) #305),parseLineHeightunit test (html: direct unit test for parseLineHeight (closes #275) #306), hyphenation contract guard forcloneWithWords(layout: lock in cloneWithWords hyphenation contract with a guard test #250)docs/CSS_SUPPORT.mdintroduced (html: refactor CSS parser into declarative property registry #271 / docs: expand CSS_SUPPORT.md with glossary, alignment notes, workarounds #273) and extended with Selectors / At-rules / Functions sections (Document supported CSS properties for user evaluation #162 / docs: add Selectors / At-rules / Functions sections to CSS_SUPPORT.md (closes #162) #282)MIGRATING additions for v0.7.x -> v0.8.0
folio_document_set_language+ 4 PDF/A constants (document: extend PDF/A to A-3a and the PDF/A-4 family #214);folio_paragraph_measure_lines/measure_height/split_after_line(export: add C ABI wrappers for paragraph measure/split + language-aware font parse #283);folio_font_parse_for_language(export: add C ABI wrappers for paragraph measure/split + language-aware font parse #283). Verified viagrep -r "^//export folio_" export/ | wc -l= 393.layout.UnitValueno longer comparable with==— compile error for any out-of-tree consumer doinga == bonUnitValue.layout.BackgroundImage.Positionis now[2]layout.ResolvableLength(was[2]float64); plus new siblingFontSize float64for em / rem resolution. Before / after example included.html.ErrURLPolicyDeniedmessage text changed from"folio/html: ..."to"html: ..."; the exportedvaridentity is unchanged soerrors.Isstill works, but verbatim string comparisons against the old message must be updated.font-weightrounding at 600,<th>honouring explicittext-align: left, 3D border bevel rendering).<img src="https://...svg">and inline-SVG<img>URLs now flow throughURLPolicyuniformly;@font-face url('/abs/system/font.ttf')succeeds withBaseFS: nil;FallbackFontPathretains a documented programmatic-only carve-out.Scope
docs/CSS_SUPPORT.mdis unchanged bygo run ./internal/gen-css-docs/— no commit needed for it.Test plan
go test ./...green onb2cc61a(sanity check; no code changed).grep -r "^//export folio_" export/ | wc -l.go run ./internal/gen-css-docs/produced no diff against the on-diskdocs/CSS_SUPPORT.md.