Skip to content

GSOC 2021 ideas

hannah edited this page Apr 8, 2021 · 5 revisions

Summer of Code project ideas

text/font handling

Matplotlib's font handling is at the core of the library and was among the first code written (and pre-dates some modern font formats). There is room for major improvement on the output side:

  • Change postscript output to use the same mechanism as PDF and SVG, which allows text to be editable after export.
  • Font subsetting in matplotlib. Currently all the PDFs and SVGs generated embed the entire font within them, subsetting is a way to just embed the glyphs required from the font files.

Currently Matplotlib only support using one font at a time, if a given glyph does not exist in that font it will not be rendered even if there are other fonts on the system and known to Matplotlib that do have this glyph.

  • Font fallback in matplotlib. Use the css-font fallback scheme to let user provide a list of (already-present) fonts and render text-first instead of font-first.

user-supplied fonts for mathtext

Typesetting mathtext is a key feature of Matplotlib, however the user has limited control of the font. We propose adding the ability Matplotlib to use user-provided fonts in a more convenient way. There are 2 ways to go about this:

  • (good) Add lualatex/xeetex like backends to work with extended DVI parser
  • (better) Add support to take font paths from user. (this will most probably require a working font-fallback idea, and may be taken as an extended goal for GSoC)

Related issues: #2869

general mathtext work

As with the previous project the ability to typeset math is a key feature of Matplotilb and we have a number of outstanding issues.

related issues: text/mathtext tag

Extensions to pytest-mpl

Image testing is a common tool for testing visualization libraries. Matplotlib has an extensive test harness for this purpose and some of it has been pulled out into a pytest extension, however Matplotlib does not use pytest-mpl. The proposed project is to move all of the functionality from Matplotilb's local test harness to pytest-mpl and have Matplotlib make use of pytest-mpl for running its tests.

related issue: #18168

image interpolation:

  • we currently rely on Agg to do image interpolation and resampling. This has pretty signifcant limitations as Agg only works on numbers between 0 and 1.
  • project would consider re-implemmenting the sampling in python (numpy or using other image manipulation libraries) and/or our own C code.
  • scope:
    • well-defined as we have "working" implimentation to test against.
    • could be partial (i.e. just impliment some of the more popular interpolation routines, and track to those when possible, and the old routines when not

Collaborations with other projects:

ipycanvas backend

Continue implementation of a backend which directly outputs to an html5 canvas.

related issue: ipycanvas/#179

improve integration with geopandas

Read about it on the Geopandas GSOC page