From Fedora Project Wiki

Revision as of 19:44, 21 August 2023 by Adamwill (talk | contribs) (add tracker bug)


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


Current status

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
      • 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
      • 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-fonts-<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 (PR)
    • 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:
  • 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

  1. Install the above meta packages
  2. 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

Release Notes