Correct score selection in FcFontSetMatchInternal, and some debug utils#4
Open
Artoria2e5 wants to merge 3 commits intomichalsrb:masterfrom
Open
Correct score selection in FcFontSetMatchInternal, and some debug utils#4Artoria2e5 wants to merge 3 commits intomichalsrb:masterfrom
Artoria2e5 wants to merge 3 commits intomichalsrb:masterfrom
Conversation
This commit moves FcBitset's definition to fcint.h and adds debug printing support. Such a function can be used for verbose output.
Two types of debug messages are added at level MATCHV. If the MATCHV debug level is requested, FcFontSetMatchInternal now: 1) Lists all fonts in the sets along with an internal index used for bitsets. This makes 2) meaningful. 2) Prints the enum index of a priority level at the start of a priority-match loop, and the final bitset at its end. In addition, MATCH prints the best pattern at the end like the pre-rewrite version does.
FcFontSetMatchInternal was using the strength of the first element in
deciding which score to use. This is wrong as we should look at the
priority instead.
Instead of building two scores to choose from, we now only use one
score variable and decide whether it should be used for strong, weak,
or both by testing for matcher->{strong,weak} == priority. Doing so
ensures perfect emulation of FcCompare() behavior for each priority.
Fixes michalsrb#2.
A previous version of this commit decided between a strong and a weak
score by testing for matcher->strong == priority. This fix is
incomplete: for priorities that share the same value for strong and
weak, FcCompareValueList would use the smaller of those two when called
by FcCompare as two pointers to "score" coincide; the previous fix does
not similate this feature.
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.
FcFontSetMatchInternal was using the strength of the first element in
deciding which score to use. This is wrong as we should look at the
priority instead.
Instead of building two scores to choose from, we now only use one
score variable and decide whether it should be used for strong, weak,
or both by testing for matcher->{strong,weak} == priority. Doing so
ensures perfect emulation of FcCompare() behavior for each priority.
Fixes #2.