| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
re: adding language to draw_text: the general discussion about extensibility of renderer API applies, i.e.
|
Sorry, something went wrong.
|
Side point regarding allowing list[tuple[str, int, int]] as language setting: this may be a problem if one uses somelanguage[idx:] to set the language from an index up to the end of the string (whose length could technically be modified later, even though it's not clear this necessarily makes much practical sense). Likely you need list[tuple[str, int, int | None]] (and then you may possibly support None (=0) for the start as well). |
Sorry, something went wrong.
|
In the call a couple weeks ago, we decided to drop the new language parameter to draw_text, because that already had a mtext parameter which contained the whole Text object. This would avoid any signature introspection. However, one followup is that Renderer.get_text_width_height_descent would also depend on font features/language settings, and really should get these passed through somehow as well. |
Sorry, something went wrong.
|
|
||
|
|
||
| def layout(string, font, *, kern_mode=Kerning.DEFAULT): | ||
| def layout(string, font, language, *, kern_mode=Kerning.DEFAULT): |
There was a problem hiding this comment.
These params should be kwonly? (throughout most of the PR, I think)
Sorry, something went wrong.
|
|
||
| if (languages.has_value()) { | ||
| for (auto & [lang_str, start, end] : languages.value()) { | ||
| if (!raqm_set_language(rq, lang_str.c_str(), start, end)) { |
There was a problem hiding this comment.
This function actually takes a length, not an end location; I'm not sure which one we should accept (Harfbuzz feature tags use start/end, so maybe that?), but I'll have to update this to the correct naming (the test is setup to match what libraqm says, but the docs say the opposite.)
Sorry, something went wrong.
There was a problem hiding this comment.
start-stop looks normal as API to me?
Sorry, something went wrong.
There was a problem hiding this comment.
I agree and have made that change.
Sorry, something went wrong.
|
Also extended the tests a bit to ensure that the results are as expected and fixed the fallback to the rcParam as well. The test image is extracted to a separate commit as it should not be merged yet. |
Sorry, something went wrong.
| fig.text(0, 0.1, f'English: {char}', fontsize=40, language='en') | ||
| fig.text(1, 0.1, f'Inari Sámi: {char}', fontsize=40, language='smn', |
There was a problem hiding this comment.
Super picky change to match the example ordering to the text ordering:
| fig.text(0, 0.1, f'English: {char}', fontsize=40, language='en') | |
| fig.text(1, 0.1, f'Inari Sámi: {char}', fontsize=40, language='smn', | |
| fig.text(0, 0.1, f'Inari Sámi: {char}', fontsize=40, language='smn') | |
| fig.text(1, 0.1, f'English: {char}', fontsize=40, language='en', |
Sorry, something went wrong.
|
It looks like the appveyor tests hung. |
Sorry, something went wrong.
|
OK, I fixed the doc note, and moved the test image to the text-overhaul-figures branch in preparation for merging. |
Sorry, something went wrong.
Add language parameter to Text objects
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
Along with #29695, this language parameter is an additional setting that may affect text layout. As with the other PR, this is not complete, but rather something to get the API decided upon (and likely will be rebased on raqm PR after it's done.)
There are two parts to the API:
At the moment, for both, I have set these to str | list[tuple[str, int, int]] where the latter denotes a list of (language, start, end)-tuples. However, this was before I found out about the font feature machinery, and it is possible that we may wish to use that syntax instead, at least for API part 1. For part 2, it's a little nicer to have the explicit types, just for passing to the FT2Font extension, but this may not be relevant to other implementations.
PR checklist