Fix double-rendering of partially-selected tokens, causing visual bolding #559
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.
This prior PR added ligature support to RSTA, but had a visual issue that was harder to notice on macOS, but is pretty apparent on Windows. Specifically, when kerning or ligatures were enabled, partially-selected tokens could appear slightly bolded due to them effectively being double-rendered. This results in pixels with < 1 alpha to appear darker than they should.
This PR addresses that issue by never rerendering chars on top of themselves after they are rendered once. This does require our rendering logic for selected text to be more complicated (actually, somewhat similar to what it was before ligature support); however I've also taken the opportunity to share more code between
SyntaxView
andWrappedSyntaxView
here, so the pros outweigh the cons :)