Hi Typst community
Many of us use icons in our documents, and Typst Universe already hosts a variety of icon packages — for example:
- fontawesome – Typst Universe
- scienceicons – Typst Universe
- use-tabler-icons – Typst Universe
- tableau-icons – Typst Universe
- octique – Typst Universe
- …and others
These fall into two main categories:
- Font-based: require fonts installed locally (version mismatches can be an issue)
- SVG-based: embed data directly in the package (self-contained)
I’m particularly interested in SVG-based icon packages because they’re dependency-free and easier to manage. But right now, each package has its own structure, API, and build process — which makes switching between icon sets or maintaining them a bit messy.
What if we had unified SVG icon packages?
By “unified,” I mean:
- Consistent function/API
- Shared build tooling and directory structure
- Easy to generate new icon sets from existing sources
This is technically feasible — for example, using the iconify/icon-sets project as a source. I’ve built a PoC script, iconity, that converts Iconify’s JSON sets into Typst-ready SVG files.
But here’s the challenge:
The Iconify collection is huge — it has hundreds of icon sets, and some icon sets generate multi-megabyte SVG data. Typst Universe likely isn’t intended to host that volume or scale.
So I’m wondering, how should large or numerous icon packages be distributed? Or should I just offer a script and let users generate the SVG icon data?