| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
| const auto load_flags = static_cast<FT_Int32>(flags); | ||
|
|
||
| FT2Font::LanguageType languages; | ||
| if (auto value = std::get_if<FT2Font::LanguageType>(&languages_or_str)) { |
There was a problem hiding this comment.
Actually not really related to this PR, but is there a reason not to use the std::visit(variant, overloaded {...}) pattern? (see example 4 of https://en.cppreference.com/w/cpp/utility/variant/visit2.html, or grep for overloaded in the mplcairo codebase)
Sorry, something went wrong.
There was a problem hiding this comment.
I've not tried std::visit, but at least for std::get_if, one reason why we stuck with it instead of something else is that it wouldn't compile on macOS with the current deployment target we have. It's possible that it's fine now, but I don't believe we've bumped the target in a while.
Sorry, something went wrong.
|
|
||
| .. warning:: | ||
| This API uses the fallback list and is both private and provisional: do not use | ||
| it directly. |
There was a problem hiding this comment.
In the long term it would be nice if mplcairo could directly call this (instead of having to reimplement the whole thing itself as well); but I suspect the issue is the fact that this has to expose FT2Font objects and mplcairo would thus need to also use the same ft2Library instance as matplotlib, which... well I don't really know if that's something matplotlib wants to expose publically. (I'm mostly just thinking aloud here.)
(mplcairo could also just grab the filename of the FT2Font objects and reopen them, which is not too bad with caching, but I'm not sure this would work with variable fonts at least?)
Sorry, something went wrong.
There was a problem hiding this comment.
There would need to be some way to share the FreeType library itself, I think. One issue I had initially was between sharing the internal FreeType structures with another when I accidentally had libraqm link to an external one. I'm not sure how easy this would be, unless we moved to some common provider.
Sorry, something went wrong.
|
I realized tests were not fully enabled here, and found some issues with CharacterTracker, so I've opened #30608 to fix those before this one. |
Sorry, something went wrong.
|
I've expanded the new feature tests to include .eps extension, since that's not there by default, and fixed issues in that format. |
Sorry, something went wrong.
|
I've rebased this and added the image changes for review now that there are no other PR dependencies. Most of the changes are pretty much invisible, as the glyph locations shift by <1/64 of a pixel due to #30000 (comment) Sometimes this causes the rasterization for test comparison to shift a glyph by a whole pixel, since the DPI is rather low, but it's not too noticeable at a normal size. I don't know if we want to round to nearest 1/64th, or just run with this as is. The main ones you should look at are test_text/complex.*, test_text/features.*, and test_text/language.*, which should all be consistent now with the PNG. There are fortunately not too many image changes, but please don't merge with them included, as I'll move them to the other branch before doing so like the other PRs. |
Sorry, something went wrong.
|
Holding off merging in case @QuLogic wants to do image management. |
Sorry, something went wrong.
|
Sorry for not reviewing further, and congrats on getting this in. |
Sorry, something went wrong.
Implement libraqm for vector outputs
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
This PR is a followup to #30000 which did raster backends, now for vector backends. I'm not 100% on the kerning calculation, but the resulting differences are quite small; I think this may because of using a 16.16 value vs a 26.6 creating minor rounding differences.
This is based on #29695 to reduce conflicts.
PR checklist