Fonts - joneavila/aesthetic GitHub Wiki

Font Selection Considerations

When selecting fonts for applications or themes:

  • Choose fonts that support multiple languages beyond English. Check the muOS translation status for currently supported languages.
  • Prefer fonts with higher weight (e.g., bold variants) as they offer improved legibility and contrast on small displays.
  • Aesthetic uses the following fonts, which have good character support and higher weight options:
    • Cascadia Code (Bold)
    • Inter (Extra Bold)
    • JetBrains Mono (Bold)
    • Nunito (Bold)
    • Retro Pixel (Thick)
  • Always verify font licenses before using them in your theme or project.

Custom Header and Footer Fonts

To set different fonts for header and footer sections:

  1. Create binary font files
  2. Add them to your theme at these locations:
    • font/footer/default.bin
    • font/header/default.bin

For more information, see: muOS Themes > Custom Fonts

Font Freezing

Fonts often include features that can be enabled or disabled, such as character variants. To create a version with specific features enabled or disabled (known as "freezing"), use FontFreeze.

Converting Fonts to Binary Format

Convert font files to the required .bin format using the provided script:

./utils/convert_font_to_binary.sh <path-to-font> [size]

# Example
./utils/convert_font_to_binary.sh assets/fonts/jetbrains_mono/jetbrains_mono_bold.ttf 24

Aesthetic uses three standard font sizes for theme generation: 16 ("Regular"), 24 ("Large"), and 32 ("Extra Large").

Font File Size Optimization

Reduce font file sizes by including only necessary glyphs:

# Install required tools
pip install fonttools

# Create a subset with specified characters only
pyftsubset font.otf --output-file=font-subset.otf --text="abc123"

# Inspect the resulting font
ttx -l font-subset.otf

For more information, see: Fonttools Installation