A Flutter package that enables dynamic loading and usage of Ethiopic (Ge'ez) fonts from the Geez Archive. Provides 150+ font families with full TextStyle and TextTheme support — just like google_fonts, but for Ethiopic typography.
The package dynamically loads and caches professional Ethiopic typography directly from the Geez Archive.
- 🔤 150+ Ethiopic font families from the Geez Archive
- ⚡ Dynamic loading — fonts are fetched at runtime, no bundling needed
- 💾 Automatic caching — fonts are cached to disk after first download
- 🎨 Named static methods —
GeezFonts.benaiah(),GeezFonts.adwa(), etc. - 📖 TextTheme support — apply any font across your entire theme
- 🔍 Font lookup —
GeezFonts.getFont('Adwa')for dynamic font selection - ⚙️ Configurable — disable runtime fetching for bundled-only setups
dart pub add geez_fontsOr add to your pubspec.yaml:
dependencies:
geez_fonts: ^0.1.0import 'package:geez_fonts/geez_fonts.dart';
Text(
'ሰላም ዓለም',
style: GeezFonts.benaiah(fontSize: 24),
)Text(
'ሰላም ዓለም',
style: GeezFonts.adwa(
textStyle: Theme.of(context).textTheme.headlineMedium,
color: Colors.amber,
),
)// Look up a font by name at runtime
final style = GeezFonts.getFont('Brana', fontSize: 18);MaterialApp(
theme: ThemeData(
textTheme: GeezFonts.benaiahTextTheme(),
),
)MaterialApp(
theme: ThemeData(
textTheme: GeezFonts.benaiahTextTheme(
Theme.of(context).textTheme,
),
),
)final allFonts = GeezFonts.asMap();
print(allFonts.keys.toList()); // ['Benaiah', 'Adwa', 'Brana', ...]// Disable runtime font fetching (e.g. for offline-only apps)
GeezFonts.config.allowRuntimeFetching = false;// Ensure fonts are loaded before rendering
await GeezFonts.pendingFonts();Browse all available fonts at geezarchive.com. Every font listed there has a corresponding static method on the GeezFonts class — the method name is derived from the font's slug.
- When you call
GeezFonts.benaiah(), the package returns aTextStyleimmediately with the font family set. - In the background, the font file is fetched from the Geez Archive (or loaded from the local cache).
- Once loaded, it's registered with Flutter's font engine via
FontLoader. - The widget tree rebuilds and the font appears.
- Font files are served by the Geez Archive
- Inspired by google_fonts
BSD 3-Clause — see LICENSE for details.

