[3.15] gh-143990: Preserve the size when creating a Font from a named font (GH-153267)#153323
Merged
serhiy-storchaka merged 3 commits intoJul 8, 2026
Merged
Conversation
…font (pythonGH-153267) tkinter.font.Font now copies the options of a named font (via "font configure") instead of the options resolved by "font actual", which would resolve a size specified in pixels (a negative size) to points. A font description is still resolved, as it cannot be parsed otherwise. Font.copy(), which has always been equivalent to constructing a Font from the original font, is updated to match and now preserves the size too. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit 45010f4)
This was referenced Jul 8, 2026
Drop the assertion in test_create_from_named_font that explicit options override the copied font settings: that behavior was added by pythonGH-152025 and is not in 3.15, where options are ignored when a font is specified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14. |
|
GH-153341 is a backport of this pull request to the 3.14 branch. |
|
GH-153342 is a backport of this pull request to the 3.13 branch. |
serhiy-storchaka
added a commit
that referenced
this pull request
Jul 8, 2026
… font (GH-153267) (GH-153323) (GH-153342) tkinter.font.Font now copies the options of a named font (via "font configure") instead of the options resolved by "font actual", which would resolve a size specified in pixels (a negative size) to points. A font description is still resolved, as it cannot be parsed otherwise. Font.copy(), which has always been equivalent to constructing a Font from the original font, is updated to match and now preserves the size too. (cherry picked from commit 45010f4) (cherry picked from commit a9d4473) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
serhiy-storchaka
added a commit
that referenced
this pull request
Jul 8, 2026
… font (GH-153267) (GH-153323) (GH-153341) tkinter.font.Font now copies the options of a named font (via "font configure") instead of the options resolved by "font actual", which would resolve a size specified in pixels (a negative size) to points. A font description is still resolved, as it cannot be parsed otherwise. Font.copy(), which has always been equivalent to constructing a Font from the original font, is updated to match and now preserves the size too. (cherry picked from commit 45010f4) (cherry picked from commit a9d4473) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Manual backport of GH-153267 to 3.15.
3.15 does not include the font-description wrapping feature from GH-152025, so the change was adapted:
Font.__init__(copy a named font's options withfont configure, falling back tofont actualfor a description that cannot be parsed) and toFont.copy();test_create_from_named_fontand thetest_copychange apply unchanged;test_create_from_descriptiondrops itsexists=True(wrapped-description) cases and their oracle, which rely on the 3.16-only feature, keeping the tuple/string descriptions.🤖 Generated with Claude Code