Migration: bundled fonts split out in v1.8.0
June 18, 2026 · View on GitHub
In v1.8.0 the curated Google font binaries that used to ship inside the
graph-compose jar moved into a separate, independently-versioned artifact:
| Artifact | Coordinate | Version line |
|---|---|---|
| Engine (lean) | io.github.demchaav:graph-compose | 1.8.x |
| Bundled fonts | io.github.demchaav:graph-compose-fonts | own line, from 1.0.0 |
| Batteries-included aggregate | io.github.demchaav:graph-compose-bundle | tracks the engine |
Why
The fonts were ~18 MB and were re-shipped on every engine release (and
duplicated again inside the -sources.jar), even though the font set changes
very rarely. Splitting them out keeps the engine artifact small, stops an engine
upgrade from re-downloading fonts, and lets the fonts release on their own
cadence.
What stays the same
- The public
FontNameconstants (FontName.LATO,FontName.POPPINS, …) and theDefaultFontscatalog are unchanged — your code compiles and links without edits (source- and binary-compatible). - The classpath resource layout (
fonts/google/{family}/{file}.ttf) is preserved byte-for-byte, so oncegraph-compose-fontsis on the classpath the bundled families resolve exactly as before. - Standard-14 PDF fonts (Helvetica, Times, Courier) are built into PDF and need no artifact at all.
What you need to do
Pick one:
Option A — keep using the bundled fonts (most common)
Add the fonts artifact next to the engine:
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-fonts</artifactId>
<version>1.0.0</version>
</dependency>
dependencies {
implementation("io.github.demchaav:graph-compose:1.8.0")
implementation("io.github.demchaav:graph-compose-fonts:1.0.0")
}
You now pin the two independently: bumping the engine does not change your fonts version, and vice-versa.
Option B — one coordinate, batteries included
Depend on the bundle, which pulls a compatible engine + fonts pair:
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-bundle</artifactId>
<version>1.8.0</version>
</dependency>
Option C — standard-14 only / your own fonts
If you only render with the standard-14 families or register your own fonts via
FontFamilyDefinition, you need neither extra artifact. Requesting a bundled
Google family without graph-compose-fonts on the classpath fails fast with an
IllegalArgumentException that names the missing dependency.
Notes
graph-compose-fontscarries its own version line and ships on afonts-v*git tag, separate from the engine'sv*releases.- The font binaries remain under the SIL Open Font License (each family bundles
its
OFL.txt).