feat(theme): user-selectable custom fonts (#19) #55

Merged
makiolaj merged 3 commits from feat/custom-fonts into release/v2.13.0 2026-07-02 08:40:49 +00:00
Showing only changes of commit efca0c86c4 - Show all commits

View File

@@ -1402,6 +1402,23 @@ private fun fontLabel(token: String): String = when (token) {
?: stringResource(R.string.settings_font_system)
}
/**
* MIME types offered to the document picker so it lists only font files. Covers
* the modern `font/` types plus the legacy `application/` font aliases some
* providers still report. Anything that slips through is still validated by
* [de.jeanlucmakiola.calendula.data.fonts.CustomFontStore] before use.
*/
private val FONT_PICKER_MIME_TYPES = arrayOf(
"font/ttf",
"font/otf",
"font/sfnt",
"font/collection",
"application/x-font-ttf",
"application/x-font-otf",
"application/font-sfnt",
"application/vnd.ms-opentype",
)
/**
* Full-screen font chooser for one [FontRole]: the system default, each bundled
* font (previewed in its own face), and "Choose file…" which opens the system
@@ -1466,7 +1483,7 @@ private fun FontPicker(
leadingIcon = if (isCustom) null else Icons.Default.UploadFile,
selected = isCustom,
position = positionOf(rowCount - 1, rowCount),
onClick = { launcher.launch(arrayOf("*/*")) },
onClick = { launcher.launch(FONT_PICKER_MIME_TYPES) },
)
}
}