Skip to content

feat(subtitles): add selectable accessible font families - #606

Merged
ProdigyV21 merged 2 commits into
ProdigyV21:mainfrom
Saelon600:feat/subtitle-font-selection
Aug 26, 2026
Merged

feat(subtitles): add selectable accessible font families#606
ProdigyV21 merged 2 commits into
ProdigyV21:mainfrom
Saelon600:feat/subtitle-font-selection

Conversation

@Saelon600

@Saelon600 Saelon600 commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • Adds selectable subtitle fonts: System, Noto Sans, Atkinson Hyperlegible, Lexend, Roboto Condensed, Nunito Sans, Quicksand, Rubik, and Varela Round.
  • Bundles the eight open-licensed font families and their SIL Open Font License texts.
  • Adds the font control to TV/D-pad and mobile subtitle settings.
  • Stores the choice per profile and includes it in the existing cloud settings snapshot.
  • Applies font, colour, style, size, and embedded-style preferences through one Media3 subtitle styling path during both PlayerView creation and Compose updates.

Behaviour

  • Unknown or removed stored values safely fall back to System.
  • Bold and Background styles request the bold face of the selected family; Normal uses regular weight.
  • With Stylized Subtitles enabled, ASS/SSA embedded styling remains enabled and the selected font is the fallback for plain cues, except when a custom (non-System) font is selected, in which case the custom font overrides embedded ASS/SSA typefaces so the change is visibly applied during playback.
  • With Stylized Subtitles disabled, the selected font is applied uniformly.

Fonts and licensing

  • Noto Sans, Atkinson Hyperlegible, Lexend, Roboto Condensed, Nunito Sans, Quicksand, Rubik, Varela Round — all SIL Open Font License 1.1
  • Font files and licence texts are sourced from the official google/fonts repository.

Testing

  • Focused SubtitleFontOptionTest: fallback, complete cycle order, stored-value round trips, previous-from-System wraps to Varela Round, and custom font overrides embedded ASS/SSA styling.
  • Full :app:testSideloadDebugUnitTest suite.
  • :app:compileSideloadDebugKotlin.
  • :app:assembleSideloadDebug.
  • APK inspection confirms all font and OFL assets are packaged.
  • git diff --check and added-line security scan.

Scope

Android subtitle rendering/settings only. No backend, app-version, IPTV, catalog, or unrelated player-behaviour changes.

Bundle Noto Sans, Atkinson Hyperlegible, Lexend, and Roboto Condensed alongside the System font. Add profile-scoped TV/mobile settings, cloud snapshot persistence, safe fallback handling, and unified Media3 subtitle styling that preserves embedded ASS/SSA styles when enabled.
@github-actions github-actions Bot added the area: android Changes to the Android app or Gradle build label Aug 24, 2026
@Saelon600

Copy link
Copy Markdown
Author

Closing for local testing first. I will only reopen or submit this change after explicit approval.

@Saelon600 Saelon600 closed this Aug 24, 2026
Add Nunito Sans, Quicksand, Rubik, and Varela Round. Make bundled font choices override embedded ASS/SSA typefaces so changes are visible during playback, preserve embedded styling for System, and prepare tester version 1.10.14/code 326.
@Saelon600 Saelon600 reopened this Aug 25, 2026
@ProdigyV21
ProdigyV21 merged commit 4a0375c into ProdigyV21:main Aug 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: android Changes to the Android app or Gradle build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants