Summary
As discussed a few weeks ago on the dev call, the Cairo backends are less feature-equivalent to the Agg backends.
For example, Pycairo and cairocffi only expose the "toy" font API, so that we cannot correctly apply libraqm full handling of text, as we can only request a font by name and not an explicit file path. See e.g., #28452 or #32084 for the consequences of the toy font API.
Additionally, there are some inconsistencies with the Agg backend wrt blitting and other extended API (you can try changing the default from Agg to Cairo, and see what fails in the test suite.)
Proposed fix
Some options discussed in the call were:
- Deprecate the Cairo backends, possibly with a soft-deprecation.
- Automatically substitute the Cairo backend by mplcairo if installed
- Add some kind of alias to make using mplcairo simpler.
- Import mplcairo to the code base instead of the original Cairo backends.
Summary
As discussed a few weeks ago on the dev call, the Cairo backends are less feature-equivalent to the Agg backends.
For example, Pycairo and cairocffi only expose the "toy" font API, so that we cannot correctly apply libraqm full handling of text, as we can only request a font by name and not an explicit file path. See e.g., #28452 or #32084 for the consequences of the toy font API.
Additionally, there are some inconsistencies with the Agg backend wrt blitting and other extended API (you can try changing the default from Agg to Cairo, and see what fails in the test suite.)
Proposed fix
Some options discussed in the call were: