Ensure fallback enabled fonts are used. #618
Merged
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.
Description
Makes sure the used fonts are fallback enabled.
Motivation and Context
As reported in #499 (comment) Darklaf has issues with displaying certain character sets. This has been fixed in in darklaf version
2.4.7
.The issue stems from the fact that darklaf uses the native system font instead of the default
Dialog
font. Unlike the logical fonts physical fonts don't fallback to another font if certain characters are unsupported.Because constructs like
new Font(...)
andFont#derive(getAttributes())
either don't produce a fallback enabled font or don't preserve the underlyingFont2D
instance (which is responsible for fallback handling if of typeCompositeFont
) those had to be replaced to ensure all characters are displayed correctly.Font#derive(getAttributes())
was used to produce a nonUIResource
font and has been replaced by subclassingFont
throughNonUIResourceFont
which exposes a constructor that takes aFont
instance and preserves theFont2D
handle.new Font(...)
was replaced byStyleContext#getFont(String,int,int)
which creates aCompositeFont
if necessary. (The result is wrapped usingNonUIResourceFont
because the result may be of typeFontUIResource
).I'm not quite sure whether
JMeterUIDefaults
is the correct/best class to place theFont
factory method though.How Has This Been Tested?
Screenshots (if appropriate):
Types of changes
Checklist: