Published copy. This file is the release copy of
data/FONTS.mdfrom https://github.com/naeyn/de-htr-web. Paths to files that ship in this release have been rewritten to their locations here (training-data/…). Any other repository-relative path —src/…,scripts/…,DECISIONS.md, the raw corpora, the font.ttffiles, anddata/german_wikipedia_lines.txt— refers to the source repository, which is the only place those files exist.
Handwriting fonts for synthetic training data
These fonts are used to render German text for synthetic training data (Tier 3). Every font listed below was individually verified for:
- License — SIL Open Font License 1.1 only (sourced from the Google Fonts
ofl/tree). Personal-use-only fonts are categorically rejected. - German charset — cmap coverage of Ä Ö Ü ä ö ü ß (
U+00C4 U+00D6 U+00DC U+00E4 U+00F6 U+00FC U+00DF) viafontTools.ttLib.TTFont.getBestCmap().
TTF files live in data/fonts/. Matching license texts live in training-data/font-licenses/.
| Font | File | Source URL | License | License file | German glyphs verified (method: fontTools cmap check) | Access date |
|---|---|---|---|---|---|---|
| Caveat | Caveat[wght].ttf |
https://github.com/google/fonts/raw/main/ofl/caveat/Caveat%5Bwght%5D.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Caveat_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Kalam | Kalam-Regular.ttf |
https://github.com/google/fonts/raw/main/ofl/kalam/Kalam-Regular.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Kalam_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Patrick Hand | PatrickHand-Regular.ttf |
https://github.com/google/fonts/raw/main/ofl/patrickhand/PatrickHand-Regular.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Patrick_Hand_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Shadows Into Light | ShadowsIntoLight.ttf |
https://github.com/google/fonts/raw/main/ofl/shadowsintolight/ShadowsIntoLight.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Shadows_Into_Light_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Shadows Into Light Two | ShadowsIntoLightTwo-Regular.ttf |
https://github.com/google/fonts/raw/main/ofl/shadowsintolighttwo/ShadowsIntoLightTwo-Regular.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Shadows_Into_Light_Two_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Indie Flower | IndieFlower-Regular.ttf |
https://github.com/google/fonts/raw/main/ofl/indieflower/IndieFlower-Regular.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Indie_Flower_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Architects Daughter | ArchitectsDaughter-Regular.ttf |
https://github.com/google/fonts/raw/main/ofl/architectsdaughter/ArchitectsDaughter-Regular.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Architects_Daughter_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Reenie Beanie | ReenieBeanie.ttf |
https://github.com/google/fonts/raw/main/ofl/reeniebeanie/ReenieBeanie.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Reenie_Beanie_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Gloria Hallelujah | GloriaHallelujah.ttf |
https://github.com/google/fonts/raw/main/ofl/gloriahallelujah/GloriaHallelujah.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Gloria_Hallelujah_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| La Belle Aurore | LaBelleAurore.ttf |
https://github.com/google/fonts/raw/main/ofl/labelleaurore/LaBelleAurore.ttf | SIL Open Font License 1.1 | training-data/font-licenses/La_Belle_Aurore_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Waiting for the Sunrise | WaitingfortheSunrise.ttf |
https://github.com/google/fonts/raw/main/ofl/waitingforthesunrise/WaitingfortheSunrise.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Waiting_for_the_Sunrise_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
| Covered By Your Grace | CoveredByYourGrace.ttf |
https://github.com/google/fonts/raw/main/ofl/coveredbyyourgrace/CoveredByYourGrace.ttf | SIL Open Font License 1.1 | training-data/font-licenses/Covered_By_Your_Grace_OFL.txt |
PASS (Ä Ö Ü ä ö ü ß) | 2026-07-28 |
Verification
Command (run from repo root on 2026-07-28):
uv run --with fonttools python -c '
from fontTools.ttLib import TTFont
from pathlib import Path
REQUIRED = {
0x00C4: "Ä",
0x00D6: "Ö",
0x00DC: "Ü",
0x00E4: "ä",
0x00F6: "ö",
0x00FC: "ü",
0x00DF: "ß",
}
order = [
"Caveat[wght].ttf",
"Kalam-Regular.ttf",
"PatrickHand-Regular.ttf",
"ShadowsIntoLight.ttf",
"ShadowsIntoLightTwo-Regular.ttf",
"IndieFlower-Regular.ttf",
"ArchitectsDaughter-Regular.ttf",
"ReenieBeanie.ttf",
"GloriaHallelujah.ttf",
"LaBelleAurore.ttf",
"WaitingfortheSunrise.ttf",
"CoveredByYourGrace.ttf",
]
for name in order:
path = Path("data/fonts") / name
font = TTFont(path)
cmap = font.getBestCmap() or {}
cps = set(cmap.keys())
missing = [f"U+{cp:04X} ({ch})" for cp, ch in REQUIRED.items() if cp not in cps]
status = "PASS" if not missing else "FAIL"
miss = ", ".join(missing) if missing else "(none)"
print(f"{status}\t{path.name}\tmissing={miss}")
'
Output:
PASS Caveat[wght].ttf missing=(none)
PASS Kalam-Regular.ttf missing=(none)
PASS PatrickHand-Regular.ttf missing=(none)
PASS ShadowsIntoLight.ttf missing=(none)
PASS ShadowsIntoLightTwo-Regular.ttf missing=(none)
PASS IndieFlower-Regular.ttf missing=(none)
PASS ArchitectsDaughter-Regular.ttf missing=(none)
PASS ReenieBeanie.ttf missing=(none)
PASS GloriaHallelujah.ttf missing=(none)
PASS LaBelleAurore.ttf missing=(none)
PASS WaitingfortheSunrise.ttf missing=(none)
PASS CoveredByYourGrace.ttf missing=(none)
Rejected candidates
| Candidate | Reason |
|---|---|
| Homemade Apple | Not SIL OFL 1.1 — lives under apache/homemadeapple in google/fonts (Apache 2.0) |
| Rock Salt | Not SIL OFL 1.1 — lives under apache/rocksalt in google/fonts (Apache 2.0) |
Additional OFL handwriting candidates that also PASSed the German cmap check but were not needed after the first 12 accepted fonts: Neucha, Bad Script, Marck Script, Sue Ellen Francisco.