Skip to content

Releases: suzheng/k2f

v0.3.3

Choose a tag to compare

@suzheng suzheng released this 15 Oct 15:59

[0.3.3] - 2026-10-15

Added

  • CONTENT_OVERFLOW compile warning when text or a child box paints past a fixed or {fr} cell, a clamped stack, or columns. Warning only — pack still succeeds. FONT_SYNTHETIC warns when bold/italic stays synthetic while a same-family Bold/Italic file is embedded and not selected.

Fixed

  • init_package.py --font removes the replaced family's license files and copies a sibling OFL.txt / LICENSE when the new font has one. --font / --add-font fill font_faces for same-family -Bold / -Italic / -BoldItalic filenames next to -Regular.
  • SVG images rasterize at the destination pixel size (the viewer paint scale, and 4 px per pt of the image box for PDF, DOCX, PPTX, and IDML) instead of the SVG file's own pixel size scaled up with nearest-neighbor. Lock hashes are unchanged; reopen or re-export to pick up sharper lines.

v0.3.2

Choose a tag to compare

@suzheng suzheng released this 29 Sep 13:28

[0.3.2] - 2026-09-28

Added

  • Desktop reader: in-app editing, file reload/watch, popover chrome, form fill, discard/save flows, and layout fixes. Packaged preview builds remain on k2f.dev/download.
  • PDF export: effect-slice rasterization for blur, shadows, gradients, and translucent fills (scale 2–4; default 4). Non-effect pages stay vector outlines with text rendering mode 3.

Changed

  • Project status docs: desktop reader listed under Preview; signing/notarization stay on the roadmap.

v0.3.1

Choose a tag to compare

@suzheng suzheng released this 19 Sep 21:28

Patch release focused on DOCX, PPTX, and IDML export fidelity (gallery-tested), plus embedded fonts and host-specific layout fixes.

See CHANGELOG.md for the full list.

v0.3.0

Choose a tag to compare

@suzheng suzheng released this 18 Sep 19:16

[0.3.0] - 2026-09-18

Added

  • Pack/compile/raster reject SVG live text with SVG_TEXT (not IMAGE_SIZE). Still fail-closed; put labels in a K2F text node or convert to <path>.
  • List markers and code blocks use the same package-font coverage fallback as body text.
  • Skill catalog: OFL NotoSerif-Regular.ttf for serif headings or body (--add-font catalog/assets/fonts/NotoSerif-Regular.ttf, then retarget role font_family). Starter stays Roboto-only; no cross-family fallback.
  • k2f export-idml <package> -o <out-dir> — InDesign package ({stem}.idml + Document Fonts/). -o file.zip writes the same tree zipped; --idml-only writes a lone .idml. The IDML ZIP still does not contain TTF bytes. IDML is not a K2F source (IDML_IS_NOT_A_SOURCE).
  • Role/variant image_fit (contain default, or cover center-crop). An image node's own corner_radius clips that bitmap. PPTX/DOCX emit a:srcRect + roundRect; IDML uses FillProportionally + frame corners.

Changed

  • Root layout of grid / overlay / columns / horizontal stack is a compile error (was a silent vertical-flow fallback for horizontal). Nest under a child. Catalog ex_*.json are children — do not replace content/root.json.

Fixed

  • export-docx / export-pptx: lock paint already applied theme emphasis (including emphasis → italic) is not remapped to bold. Overlaying every non-italic intent as bold made true-italic runs export as bold-italic. Empty-paint fallback still bolds default emphasis.
  • list_item with a partial list_style (for example only bullet_glyph) compiles by merging starter defaults. Explicit 0 still wins; schema fields stay optional.

v0.2.4

Choose a tag to compare

@suzheng suzheng released this 11 Sep 08:06

Summary

DOCX/PPTX export fidelity, desktop reader pinch-zoom / copy-all, and web viewer display-scale LOD.

See CHANGELOG.md for the full list.

Packages

  • crates.io: k2f, k2f_sdk, …
  • npm: @openk2f/k2f@0.2.4
  • PyPI: k2f==0.2.4