Skip to content

Linux: digits missing in messages due to invalid font fallbacks #124

@ginbun

Description

@ginbun

Description

On Linux, message text renders incompletely and digits (0–9) often do not appear. Avatar initials may also be blank when no profile image is set.

Steps to reproduce

  1. Run Extera Next on Linux (e.g. CachyOS, KDE/GNOME).
  2. Open a chat with messages containing numbers (timestamps, plain text, ordered lists).
  3. Observe missing digits or incomplete text rendering.
  4. Check avatars for users without a profile photo — initials may not show.

Expected behavior

All message text, including digits, should render correctly using the system font stack. Avatar fallbacks should show the user's initial letter.

Actual behavior

Digits and some text fail to render. Avatar initials may be invisible.

Root cause

Commit 704de7e always sets fontFamilyFallback to SystemFont,Roboto. These fonts are Android-only:

  • SystemFont is loaded only on Android via FontLoader
  • Roboto is not bundled in the app and is not available on Linux by default

When Skia exhausts this invalid fallback list, glyph lookup fails for digits and other characters.

Additionally:

  • fluffy_chat_app.dart attempts to load SystemFont on all platforms
  • Avatar hardcodes RobotoMono, which is also unavailable on Linux

Proposed fix

  • Filter SystemFont and Roboto out of fallbacks on non-Android platforms; return null when the list is empty so fontconfig can take over
  • Load SystemFont only on Android
  • Use theme text styles for avatar initials instead of hardcoded RobotoMono

Affected files

  • lib/config/themes.dart
  • lib/widgets/fluffy_chat_app.dart
  • lib/widgets/avatar.dart

Environment

  • OS: Linux
  • Platform: Flutter desktop

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions