Akasia – A libre, metric-compatible alternative to Aptos

sscaryterry1 pts1 comments

bloudraad/akasia: A libre, metric-compatible alternative to Aptos - Codeberg.org

This website requires JavaScript.

bloudraad/akasia

Watch

Star

Fork

You've already forked akasia

Code

Issues

Pull requests

Releases

Activity

A libre, metric-compatible alternative to Aptos

1 commit

1 branch

1 tag

10 MiB

Python

95.1%

Just

3.8%

Dockerfile

1.1%

main

Find a file

HTTPS

Download ZIP<br>Download TAR.GZ<br>Download BUNDLE

Open with VS Code

Open with VSCodium

Open with Intellij IDEA

Jacques Germishuys

1e7dcd8ac8

feat: initial version

2026-06-23 17:15:51 +01:00

.woodpecker

feat: initial version

2026-06-23 17:15:51 +01:00

data

feat: initial version

2026-06-23 17:15:51 +01:00

docs

feat: initial version

2026-06-23 17:15:51 +01:00

scripts

feat: initial version

2026-06-23 17:15:51 +01:00

.gitignore

feat: initial version

2026-06-23 17:15:51 +01:00

ci-base.Dockerfile

feat: initial version

2026-06-23 17:15:51 +01:00

ci-base.Dockerfile.dockerignore

feat: initial version

2026-06-23 17:15:51 +01:00

CLAUDE.md

feat: initial version

2026-06-23 17:15:51 +01:00

FONTLOG.txt

feat: initial version

2026-06-23 17:15:51 +01:00

Justfile

feat: initial version

2026-06-23 17:15:51 +01:00

mise.toml

feat: initial version

2026-06-23 17:15:51 +01:00

OFL.txt

feat: initial version

2026-06-23 17:15:51 +01:00

README.md

feat: initial version

2026-06-23 17:15:51 +01:00

requirements.lock

feat: initial version

2026-06-23 17:15:51 +01:00

requirements.txt

feat: initial version

2026-06-23 17:15:51 +01:00

ROADMAP.md

feat: initial version

2026-06-23 17:15:51 +01:00

README.md

Akasia

A libre, metric-compatible companion to Microsoft Aptos — in the tradition of<br>Carlito for Calibri, Caladea for Cambria, and Arimo for Arial.

What it is

Akasia pairs libre outlines with Aptos's metrics: substitute it for Aptos and a<br>document reflows and paginates identically, yet every outline comes from an<br>OFL-licensed font rather than from Aptos.

It is a composite of eight OFL-1.1 families:

Base — Source Sans 3 (Adobe). Most of the alphabet, where its shapes<br>already sit close to Aptos, stays Source Sans.

Grafts — the 28 letters whose Source Sans shape strays furthest from Aptos<br>are each replaced by the closest-matching donor (Hanken Grotesk, Albert Sans,<br>Figtree, Open Sans, Public Sans, Arimo), weight-matched and re-spaced to sit<br>like the base.

Coverage — Greek, Cyrillic, currency and symbols come from Open Sans, Arimo<br>and Noto Sans Symbols.

The metrics are Aptos's, taken as data: advance widths, per-glyph sidebearings<br>(the lsb : lsb+rsb fraction), kerning pairs and vertical metrics. No Aptos<br>outline is ever copied — that line is the whole legal basis of the face.

The family

Twelve static styles — Light, Regular, SemiBold, Bold, ExtraBold and Black, each<br>with a true italic.

Weight<br>Class<br>Italic

Light<br>300<br>yes

Regular<br>400<br>yes

SemiBold<br>600<br>yes

Bold<br>700<br>yes

ExtraBold<br>800<br>yes

Black<br>900<br>yes

Weights are matched by stem, not by name: the build binary-searches each variable<br>axis for the instance whose I-stem equals Aptos's. Light through ExtraBold fall<br>within the Source Sans axis; Black sits roughly 20 stem-units above it, so the<br>build extrapolates Source Sans's weight model past the axis top — preserving the<br>shape topology — until the stem matches. Italics graft from the donors' italic<br>variable fonts, never by slanting the upright.

Donors and the graft map

Donor<br>Letters<br>Count

Source Sans 3 (base)<br>the rest of the alphabet

Hanken Grotesk<br>C G O U c g h j l m u<br>11

Albert Sans<br>N a s t w

Figtree<br>D K M k r

Open Sans<br>H V W X

Public Sans<br>J Q

Arimo

The map lives in data/graft.json (regenerate with just graft-map) and covers<br>letters only. The rest of the repertoire — Greek, Cyrillic, currency, symbols,<br>box-drawing — is filled by coverage, reaching ~99% of Aptos's codepoints. Eleven<br>currency signs and three dingbats that no audited OFL donor carries fall back to<br>the system font.

Verifying compatibility

Every advance, sidebearing and kern pair equals Aptos's, so a substituted<br>document keeps the same line breaks, the same widows and orphans, and the same<br>page count. The shapes read as a close relative, not a copy.

To see it, just overlay superimposes a built style on Aptos (agreement in<br>black, divergence in colour) and just pagination diffs line breaks page by<br>page. Both need a local copy of Aptos (see Contributing); neither<br>is needed to build or use Akasia.

Install

Download the latest release and<br>install the TTFs:

macOS — open each .ttf and click Install Font, or drop them in ~/Library/Fonts.

Linux — copy them to ~/.local/share/fonts, then run fc-cache -f.

Windows — select all, right-click, Install.

Set your document's font to Akasia. Where Akasia lacks a codepoint, the renderer<br>falls back for that character alone.

Build from source

The build is reproducible from the repository alone — committed metric data<br>(data/), the OFL donors pinned in fetch_sources.py, and the locked...

feat initial version aptos sans akasia

Related Articles