| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
I don't remember the exact semantics of _get_glyph off the top of my head, but from a quick look at it, did you mean "returns" instead of "expects" (emphasis mine in the quote above)? |
Sorry, something went wrong.
Right yes. In fact, I meant that its callers expect the character codes (they use FT2Font.load_char, not FT2Font.load_glyph), though I actually found an unrelated bug there: 6c7b9d0 that I tacked on to #29816. |
Sorry, something went wrong.
|
After a bit of checking, I've found that for 12pt@100dpi, the multi-sized glyphs are 20, 30, 40, and 50 pixels, with regular text size being 16.671875 pixels (if available). So the text in the tests should look for an interior of 8.915625, 18.320833333333333, 25.156041666666667, 32.16734375, 42.03599479166666, which should hit all sizes of glyphs. Also, removed the regular sized braces {} because they seem to be the same glyph as the first 'big' size. |
Sorry, something went wrong.
|
I like the new implementation a lot, it's very clear (well, relative to the complexity of the task).
|
Sorry, something went wrong.
There was a problem hiding this comment.
I guess it would be OK to test only one of the output formats, as we only care that the right glyphs are selected?
Sorry, something went wrong.
Do we have anything for that yet? There's lightweight_math_tests, but it only checks DejaVu Sans, which is not the font we really want to check here. |
Sorry, something went wrong.
|
There's svgastext? |
Sorry, something went wrong.
|
Since FreeType and the related PRs are merged in the text-overhaul branch, I've rebased this PR onto it. I've also moved the tests to svgastext. Image changes are in a separate last commit so they can be stripped before merging. |
Sorry, something went wrong.
| fig = plt.figure(figsize=(5.25, 0.75)) | ||
| fig.patch.set(visible=False) # Minimize image size. | ||
| fig.text(0.5, 0.5, text, | ||
| fig.text(0.5, 0.5, text, fontsize=16, |
There was a problem hiding this comment.
Note, I increased the size here because the existing test with dashes is quite small when converted to PNG (maybe half a pixel high, which is antialiased to two grey pixels).
Sorry, something went wrong.
If the larger glyphs for an auto-sized character in `cmex10` uses a character that is in the `latex_to_bakoma` table, then it will be mapped an extra time into `cmr10` (usually). Thus we end up with a large version of a "normal" character, such as an exclamation point. Instead map these glyphs through the `latex_to_bakoma` table by using their glyph names as "commands". This ensures they don't get double-mapped to the wrong font and fixes the following issues: - slash (/) uses a comma at the larger sizes - right parenthesis uses an exclamation point at the largest size - left and right braces use parentheses at the largest size - right floor uses a percentage sign at the largest size - left ceiling uses an ampersand at the largest size Also, drop the regular size braces, as they are the same as the first `big`-sized version.
|
Rebased without test images (which were moved to the text-overhaul-figures branch) in preparation for merging. |
Sorry, something went wrong.
Fix auto-sized glyphs with BaKoMa fonts
This includes images changes for the following pull requests / commits: * [Fix center of rotation with rotation_mode='anchor'](matplotlib#29199) (c44db77) * [Remove ttconv backwards-compatibility code](matplotlib#30145) (8caff88) * [Remove kerning_factor from tests](matplotlib#29816) (7b4d725) * [Set text hinting to defaults](matplotlib#29816) (8255ae2) * [Update FreeType to 2.13.3](matplotlib#29816) (89c054d) * [Implement text shaping with libraqm](matplotlib#30000) (b0ded3a, 9813523) * [Add language parameter to Text objects](matplotlib#29794) (7ce8eae) * [Fix auto-sized glyphs with BaKoMa fonts](matplotlib#29936) (3ba2c13) * [pdf: Improve text with characters outside embedded font limits](matplotlib#30512) (b70fb88, 6cedcf7) * [Prepare `CharacterTracker` for advanced font features](matplotlib#30608) (8274e17, 70dc388, df670cf, ed5e074) * [Add font feature API to Text](matplotlib#29695) (972a688) * [Fix spacing in r"$\max f$"](matplotlib#30715) (4a99a83) * [Implement libraqm for vector outputs](matplotlib#30607) (bd17cd4) * [Drop the FT2Font intermediate buffer](matplotlib#30059) (9d7d7b4) * [Rasterize dvi files without dvipng](matplotlib#30039) (7627118) * [Update bundled FreeType and HarfBuzz libraries](matplotlib#30938) (a161658, 9619bcc) * [Fix positioning of wide mathtext accents](matplotlib#31069) (c2fa7ba) * [Refactor RendererAgg.draw_{mathtext,text,tex} to use same base algorithm](matplotlib#31085) (931bcf3) * [Implement TeX's fraction and script alignment](matplotlib#31046) (94ff452, 4bfa0f9, 1cd8510) * [Fix confusion between text height and ascent in metrics calculations](matplotlib#31107) (60f2310) * [mathtext: Fetch quad width & axis height from font metrics](matplotlib#31110) (692df3f, 383028b) * [mathtext: add mathnormal and distinguish between normal and italic family](matplotlib#31121) (a6913f3) * [ENH: Ignore empty text for tightbbox](matplotlib#31285) (d772043) * [Drop axis_artist tickdir image compat, due to text-overhaul merge](matplotlib#31281) (2057583) * [text: Use font metrics to determine line heights](matplotlib#31291) (3ab6a27, d961462, 97f4943) * [ps/pdf: Override font height metrics to support AFM files](matplotlib#31371) (e0913d4) * [TST: Cleanup back-compat code in tests touched by text overhaul](matplotlib#31295) (7c33379) * [TST: Set tests touched by text overhaul to mpl20 style](matplotlib#31300) (41c4d8d)
| Back | FazBrowse Home | New Git URL |
PR summary
If the larger glyphs for an auto-sized character in cmex10 uses a character that is in the latex_to_bakoma table, then it will be mapped an extra time into cmr10 (usually). Thus we end up with a large version of a "normal" character, such as an exclamation point.
Instead map these glyphs through the latex_to_bakoma table by using their glyph names as "commands". This ensures they don't get double-mapped to the wrong font and fixes the following issues:
It also found the missing [ size, so it and the corresponding ] are now available again (causing the one test image change.)
In the future, it may make sense to only use the glyph names (using FT2Font.get_name_index instead of FT2Font.get_char_index), and not have a mapping to character codes in our code. Unfortunately, TruetypeFonts._get_glyph expects a font+character code, so this would be a much larger refactor than this bugfix.
I'm turning the above images into tests, but I'm finding that characters that have a "regular" glyph may not be able to select the smallest "big" glyph, because it's actually smaller that the regular one. I'm not yet sure if that's a bug in the selection logic from AutoHeightChar or whether regular glyphs shouldn't count. Since I'll be adding some test images, this PR can wait until after the FreeType 2.13 change.
Fixes #5210 (and #18740 and #29886)
PR checklist