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:

ArtifactCoordinateVersion line
Engine (lean)io.github.demchaav:graph-compose1.8.x
Bundled fontsio.github.demchaav:graph-compose-fontsown line, from 1.0.0
Batteries-included aggregateio.github.demchaav:graph-compose-bundletracks 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 FontName constants (FontName.LATO, FontName.POPPINS, …) and the DefaultFonts catalog 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 once graph-compose-fonts is 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-fonts carries its own version line and ships on a fonts-v* git tag, separate from the engine's v* releases.
  • The font binaries remain under the SIL Open Font License (each family bundles its OFL.txt).