Skip to content

Blog: build-time SVG and Lottie transcoders (Metal-only on iOS)#5084

Closed
shai-almog wants to merge 1 commit into
masterfrom
blog-svg-lottie-build-time
Closed

Blog: build-time SVG and Lottie transcoders (Metal-only on iOS)#5084
shai-almog wants to merge 1 commit into
masterfrom
blog-svg-lottie-build-time

Conversation

@shai-almog
Copy link
Copy Markdown
Collaborator

Summary

  • Final follow-up post in this series (June 7), covering the build-time SVG and Lottie pipeline that shipped across:
  • Calls out the Metal-only caveat on iOS (the GL ES 2 path does not have the shape coverage); now that Metal is the default this is moot for most apps on their next build.
  • Closes out the post series for this release cycle.

File

  • docs/website/content/blog/svg-lottie-build-time.md — single new file.

Sequencing

Branches off master; intended to publish after the ORM / mapping / binder post (#5083). Front matter date is 2026-06-07.

Test plan

  • Hugo build of docs/website succeeds.
  • Post renders correctly on the blog index and as a standalone page.
  • Header image is generated at /static/blog/svg-lottie-build-time.jpg.

Covers PRs #5042, #5049, and #5066.

PR #5042: the maven/svg-transcoder/ module that parses SVG at build
time and emits a Codename One Image subclass rendering through the
Graphics shape API. SMIL animations honoured. Drop files into
src/main/svg/, the build emits Java, Resources.getImage(name) returns
them.

PR #5049: three iOS Metal and Android rendering fixes that the SVG
screenshot tests exposed:
- Metal setClip(GeneralPath) flattened to a polyline so the stencil
  no longer reads as a triangle fan.
- Metal drawString reads the effective scale from currentTransform
  and picks the right atlas font.
- LinearGradientPaint.paint drops the duplicated translate.

PR #5066: Bodymovin / Lottie JSON files flow through the same
pipeline as SVG. New maven/lottie-transcoder/ lowers each Lottie
file into the existing SVGDocument model; the same JavaCodeGenerator
emits the GeneratedSVGImage subclass; the same SVGRegistry handles
both. No new Image base class, no per-port wiring.

Calls out the Metal-only caveat on iOS (the GL ES 2 path does not
have the shape coverage). Now that Metal is the default this is a
non-issue on most apps.
@shai-almog
Copy link
Copy Markdown
Collaborator Author

Superseded — consolidating the follow-up posts so this release week ships fewer, broader posts. New merged versions in the follow-up PRs to this one.

@shai-almog shai-almog closed this May 29, 2026
@shai-almog shai-almog deleted the blog-svg-lottie-build-time branch May 29, 2026 08:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant