This repository builds the TrueType font files that the Ankole base image uses. It keeps font conversion and upstream discovery out of the image build.
The repository does not store generated font files in Git. GitHub Releases
contain the generated files, the upstream source manifest, the source licenses,
and SHA256SUMS.
The release workflow runs each Monday at 03:23 UTC. It also runs after a change to the build pipeline and can run on demand.
GitHub disables a scheduled workflow in a public repository after 60 days with no repository activity. After 45 days without a commit, this workflow makes one empty keepalive commit. The commit changes no file and does not create a font release.
The workflow resolves these upstream sources:
| Font | Upstream |
|---|---|
| IBM Plex Sans SC | IBM/plex and the latest @ibm/plex-sans-sc package version |
| IBMPlexMonoSCHalf | WuLaNaLashi/IBM-Plex-Mono-SC default branch |
| ChillJinshuSong | Warren2060/ChillJinshuSong latest release |
| Fluent Emoji Color | tetunori/fluent-emoji-webfont default branch |
The source manifest includes immutable tags or commits. Its digest becomes the release tag. If that release already exists, the workflow stops before it downloads or converts a font. If the source state changes, the workflow:
- Downloads the selected upstream files.
- Converts the ChillJinshuSong OpenType/CFF files to TrueType.
- Restores the source font timestamps so the converted files are reproducible.
- Rejects a file that has CFF outlines, an unexpected weight, or a missing required TrueType table.
- Publishes the TTF files, source licenses,
sources.json, andSHA256SUMSin one immutable release.
Each font stays under its upstream license. Read the license assets in each release before you redistribute the files.
Pin a release tag. Do not use the moving latest release URL in a reproducible
image build. Download SHA256SUMS first, download the listed assets from the
same release, and verify them with sha256sum -c SHA256SUMS.
Use Python 3.13 or a compatible later version:
python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python scripts/release.py resolve --output build/sources.json
python scripts/release.py build --manifest build/sources.json