Skip to content

Fix positioning of wide mathtext accents.#31069

Merged
QuLogic merged 1 commit intomatplotlib:text-overhaulfrom
anntzer:wideaccent
Feb 6, 2026
Merged

Fix positioning of wide mathtext accents.#31069
QuLogic merged 1 commit intomatplotlib:text-overhaulfrom
anntzer:wideaccent

Conversation

@anntzer
Copy link
Copy Markdown
Contributor

@anntzer anntzer commented Feb 3, 2026

A wide accent over more than one character should just be centered over
the underlying box. In any case this works better than the current
strategy of shifting by an amount depending on the box's width (which
results in absurdly large shifts for wide boxes).

When positioning over a single character the behavior is different --
TeX uses specific font metrics info for that case, and we can try
rendering as combining characters instead (not done in this PR; see #4561 (comment), #23257, etc.).

See https://tex.stackexchange.com/a/47064 for a description of TeX's behavior.
Closes #19299.
The reference images are included as a separate commit for reference, but I guess they should be stripped before merging, as usual.

figtext(.5, .5, r"$\widebar{foobarbazquux}$") used to give
image
but is now
image

PR summary

PR checklist

@github-project-automation github-project-automation bot moved this to Waiting for other PR in Font and text overhaul Feb 4, 2026
@QuLogic QuLogic moved this from Waiting for other PR to Ready for Review in Font and text overhaul Feb 4, 2026
@QuLogic QuLogic added this to the v3.11.0 milestone Feb 4, 2026
@tacaswell
Copy link
Copy Markdown
Member

Subjectively, I'm not sure that the updated tests look better, but objectively "center over all the letters" seems more correct and matches what TeX does.

@QuLogic
Copy link
Copy Markdown
Member

QuLogic commented Feb 6, 2026

I'll push these images to the upcoming branch and rebase this without them in a minute.

A wide accent over more than one character should just be centered over
the underlying box.  In any case this works better than the current
strategy of shifting by an amount depending on the box's width (which
results in absurdly large shifts for wide boxes).

When positioning over a single character the behavior is different --
TeX uses specific font metrics info for that case, and we can try
rendering as combining characters instead (not done in this PR).
@QuLogic QuLogic merged commit 65fbe95 into matplotlib:text-overhaul Feb 6, 2026
40 of 47 checks passed
@github-project-automation github-project-automation bot moved this from Ready for Review to Done in Font and text overhaul Feb 6, 2026
@anntzer anntzer deleted the wideaccent branch February 6, 2026 07:35
wavebyrd pushed a commit to wavebyrd/matplotlib that referenced this pull request Mar 13, 2026
Fix positioning of wide mathtext accents.
QuLogic added a commit to QuLogic/matplotlib that referenced this pull request Apr 10, 2026
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)
@QuLogic QuLogic mentioned this pull request Apr 10, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants