gh-143990: Preserve the size when creating a Font from a named font#153267
Open
serhiy-storchaka wants to merge 1 commit into
Open
gh-143990: Preserve the size when creating a Font from a named font#153267serhiy-storchaka wants to merge 1 commit into
serhiy-storchaka wants to merge 1 commit into
Conversation
…font 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>
987b4c2 to
ae1f4a7
Compare
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.
When a
tkinter.font.Fontis created from another font,Font.__init__expanded it into concrete options with Tcl'sfont actual. For a named font this resolves the configured size, so a size specified in pixels (a negative size) was silently converted to a size in points (gh-143990).font configurereturns the configured options and preserves such a size, but it only accepts a font name, not a font description. So the font is now expanded withfont configurewhen it is a named font, falling back tofont actualwhen it is a font description:Trying
font configurefirst delegates the "is this a named font?" decision to Tcl, which is robust even for font names containing spaces.A font description (a tuple or a string) is still resolved via
font actual, since there is no way to parse it into options otherwise; wrapping it withexists=True(gh-143990, #152025) remains the way to use it without loss of precision.Font.copy()has always been equivalent to constructing aFontfrom the original font (both went throughfont actual), so it is updated to match and now preserves the size too.This is the general form of #143992, which restored the size only for a size given in a tuple.