Work around combining characters being handled as 0-width automatically by some browsers #885
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 PR fixes a problem where some accents are misplaced. Combining accents like U+0302 are handled in some fonts by making zero-width characters that have negative left bearing (so they extend to the left over the character that precedes them). Modern browser will position combining characters automatically, whether they are zero-width or not (and they do vertical positioning so that accents are placed over both lower-case and capital letters properly).
MathJax expects the browser to respect the widths of the characters in the font, so when the browser makes it zero-width automatically, MathJax misplaces the accent. This PR makes sure that the accents are properly placed regardless of whether the character is zero-width or not, and regardless of whether the browser forces zero-width for ones that are non-zero in the font itself. This is done by setting the width of the
<mjx-c>
to the expected width of the character (and removing the padding that used to make it that wide), and usingtext-align: right
so that a zero-width character will move to the right and so be placed properly, while a full-width character will be placed in the right place to begin with.