Improve Default Font Handling with default-fonts metapackages
Summary
This aims to make default fonts easier to update and install for all the variants on Fedora and reduce the maintenance costs for them.
Owner
- Name: Akira TAGOH
- Email: <tagoh AT redhat DOT com>
- Name: Parag Nemade
- Email: <pnemade AT redhat DOT com>
Current status
- Targeted release: Fedora Linux 39
- Last updated: 2023-07-10
- devel thread
- FESCo issue: #3033
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
Currently there are multiple sources to manage what font packages should be installed for a Fedora release and spins, such as comps, langpacks, lorax, workstation-ostree-config, and fedora-kickstarts, which makes it complicated to make default default fonts changes.
New default-fonts metapackages will be added to langpacks, some of which will replace the default font listed in @fonts
, etc. Then going forward those lists of metapackages should only need to be changed quite rarely.
default-fonts
metapackage to pull in:default-fonts-core
metapackage to pull in:default-fonts-core-sans
,default-fonts-core-serif
,default-fonts-core-mono
,default-fonts-core-emoji
,default-fonts-core-math
- Metapackages to pull in the default fonts for Western characters, Emoji, and Math/Symbols
default-fonts-cjk
metapackage to pull in:default-fonts-cjk-sans
- Metapackage to pull in
default-fonts-<language code>
for CJK languages
- Metapackage to pull in
default-fonts-cjk-serif
,default-fonts-cjk-mono
- Metapackages to pull in the default fonts for Chinese, Japanese, and Korean
default-fonts-other
metapackage to pull in:default-fonts-other-sans
- Metapackage to pull in
default-fonts-<language code>
for other (non-CJK) languages
- Metapackage to pull in
default-fonts-other-serif
,default-fonts-other-mono
- Metapackages to pull in the default fonts for other (non-CJK) languages
default-fonts-<language code>
- Metapackages to pull in a default font for a specific language
- This metapackage provides
font(:lang=<language code>)
langpacks-font-<language code>
- Metapackages to pull in default font and extra fonts for a certain languages if any
Feedback
Benefit to Fedora
This Change provides the easier way to manage and install our default fonts on Fedora. In current package sets, langpacks offers non-fonts packages to be installed even though one don't want to install them. After this Change, one doesn't need to install those extra dependencies for the purpose of the font installation.
Scope
- Proposal owners:
- update the fedora-comps @fonts group and workstation-ostree-config to use the new default-fonts packages
- fontconfig package default font dependency to be updated
- optionally update lorax to use the new default fonts (if they no longer need to remove many fonts files since most are now variable fonts anyway), otherwise it can be done for Fedora 40.
- Other developers:
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Community Initiatives:
Upgrade/compatibility impact
Currently installed langpacks packages will pull in the appropriate default-fonts packages when upgrading.
Using default-fonts meta-packages means that users will get upgraded to new default fonts seamlessly going forward.
This should provide a more reliable font experience since default fonts should have higher fontconfig priority.
How To Test
- Install the above meta packages
- See what font packages will be pulled in
We have a copr repo for early testing. You can try to install the updated langpacks if you like.
https://copr.fedorainfracloud.org/coprs/tagoh/langpacks-v4/
User Experience
Users will automatically be moved to any new/changed default system fonts when they upgrade to a newer version of Fedora.
It will be easier for users to remove CJK or non-core fonts from their system if they really want to, or to add them in minimal installations.
Dependencies
No. Updated langpacks still have compatibility on existing dependencies. This Change can be done in langpacks only.
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?)
- Change owners will revert the relevant changes.
- Contingency deadline: Beta freeze
- Blocks release? No
Documentation
None