From Fedora Project Wiki
(Created page with "<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name. This keeps all change proposals in the same namespace --> = Improve Default Font Handling = {{Change_Proposal_Banner}} == Summary == <!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fed...")
 
(update release note tracker)
 
(36 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->


= Improve Default Font Handling =
= Improve Default Font Handling with default-fonts metapackages =


{{Change_Proposal_Banner}}


== Summary ==
== Summary ==
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". -->
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". -->
This aims to make default fonts easier to update for all the variants on Fedora and reduce the maintenance costs to apply for them.
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 ==
== Owner ==
Line 25: Line 24:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF39]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 32: Line 31:


<!-- Select proper category, default is Self Contained Change -->
<!-- Select proper category, default is Self Contained Change -->
[[Category:SelfContainedChange]]
<!-- [[Category:SelfContainedChange]] -->
<!-- [[Category:SystemWideChange]] -->
[[Category:SystemWideChange]]


* Targeted release: [https://docs.fedoraproject.org/en-US/releases/f39/ Fedora Linux 39]
* Targeted release: [https://docs.fedoraproject.org/en-US/releases/f39/ Fedora Linux 39]
Line 43: Line 42:
ON_QA -> change is fully code complete
ON_QA -> change is fully code complete
-->
-->
* [<will be assigned by the Wrangler> devel thread]
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/6YSJ3FK3IQMSKJK76DGKBR4FXMP37C3T/ devel thread]
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/3033 #3033]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=2233272 #2233272]
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/1007 #1007]


== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
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.
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.
So we want to introduce new meta packages into langpacks and replace a list of font packages with it. We expect to improve such situations by updating langpacks only then.
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-core-sans, default-fonts-core-serif, default-fonts-core-mono, default-fonts-core-emoji, default-fonts-core-math
* `default-fonts` metapackage to pull in:
** Metapackages to pull the default font for Latin characters and emoji
** `default-fonts-core` metapackage to pull in:
* default-fonts-core
*** `default-fonts-core-sans`, `default-fonts-core-serif`, `default-fonts-core-mono`, `default-fonts-core-emoji`, `default-fonts-core-math`
** Metapackage to pull all the default-fonts-core-{sans,serif,mono,emoji} packages
**** Metapackages to pull in the default fonts for Western characters, Emoji, and Math/Symbols
* default-fonts-cjk-sans, default-fonts-cjk-serif, default-fonts-cjk-mono
** `default-fonts-cjk` metapackage to pull in:
** Metapackages to pull the default fonts for CJK
*** `default-fonts-cjk-sans`
* default-fonts-cjk
**** Metapackage to pull in `default-fonts-<language code>` for CJK languages
** Metapackage to pull the default-fonts-cjk-{sans,serif,mono} packages
*** `default-fonts-cjk-serif`, `default-fonts-cjk-mono`
* default-fonts-other-sans, default-fonts-other-serif, default-fonts-other-mono
**** Metapackages to pull in the default fonts for Chinese, Japanese, and Korean
** Metapackages to pull the default fonts for non-CJK languages
** `default-fonts-other` metapackage to pull in:
* default-fonts-other
*** `default-fonts-other-sans`
** Metapackage to pull the default-fonts-other-{sans,serif,mono} packages.
**** Metapackage to pull in `default-fonts-<language code>` for other (non-CJK) languages
* default-fonts-extra-<language code>
*** `default-fonts-other-serif`, `default-fonts-other-mono`
** Metapackages to pull a default font and extra fonts for certain languages if any
**** 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 ==
== Feedback ==
Line 72: Line 76:


== Benefit to Fedora ==
== 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 don't need to install those extra dependencies for the purpose of the font installation.
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.


<!-- What is the benefit to the distribution?  Will the software we generate be improved? How will the process of creating Fedora releases be improved?
<!-- What is the benefit to the distribution?  Will the software we generate be improved? How will the process of creating Fedora releases be improved?
Line 104: Line 108:
== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners:
** update the fedora-comps @fonts group and workstation-ostree-config to use the new default-fonts packages
** update the fedora-comps @fonts group and workstation-ostree-config to use the new default-fonts packages ([https://pagure.io/fedora-comps/pull-request/862 PR])
** fontconfig package default font dependency to be updated
** fontconfig package default font dependency to be updated
** update lorax to pull in default-fonts
** 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: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Line 115: Line 119:
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->


* Policies and guidelines:
* Policies and guidelines: N/A (not needed for this Change)
** Fonts Packaging Policy should be updated to not mention `font(:lang=en)` but instead `default-fonts-core` or so.
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. Please submit a pull request with the proposed changes before submitting your Change proposal. -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. Please submit a pull request with the proposed changes before submitting your Change proposal. -->


Line 126: Line 129:


== Upgrade/compatibility impact ==
== 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.
Using default-fonts meta-packages means that users will get upgraded to new default fonts seamlessly going forward.


Line 149: Line 154:
-->
-->


# Install the above meta packages
You can test this Change on upgrade as well as freshly installed Fedora 39 system
# See what font packages will be pulled in
* If you have installed Fresh F39 system then you will find <code>default-fonts-*</code> packages already installed on your system.
** <pre>$ rpm -qa|grep default-fonts</pre>
You will find almost 64 packages installed on English language installation. These are new packages compared to Fedora 38 package set.
* If you have an existing F38 system then you can test this by upgrading your system to Fedora 39: then you will find one or more <code>default-fonts-*</code> packages getting installed on your system. To demonstrate this with a simple example
** <pre>$ sudo dnf update langpacks-en --releasever=39</pre>
you would find <code>default-fonts-core-sans</code> package getting installed on your system.
 


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Line 171: Line 182:


== Dependencies ==
== Dependencies ==
 
No. Updated langpacks still have compatibility on existing dependencies.  This Change can be done in langpacks only.
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->


Line 179: Line 190:


<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency mechanism: (What to do?  Who will do it?)
** Change owners will revert the relevant changes. <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency deadline: Beta freeze <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this change, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
None
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)


== Release Notes ==
== Release Notes ==

Latest revision as of 23:24, 28 September 2023


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

You can test this Change on upgrade as well as freshly installed Fedora 39 system

  • If you have installed Fresh F39 system then you will find default-fonts-* packages already installed on your system.
    • $ rpm -qa|grep default-fonts

You will find almost 64 packages installed on English language installation. These are new packages compared to Fedora 38 package set.

  • If you have an existing F38 system then you can test this by upgrading your system to Fedora 39: then you will find one or more default-fonts-* packages getting installed on your system. To demonstrate this with a simple example
    • $ sudo dnf update langpacks-en --releasever=39

you would find default-fonts-core-sans package getting installed on your system.


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