Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attempts to grab fonts from ${origin}/fonts? #57

Open
josephrocca opened this issue Apr 30, 2024 · 5 comments
Open

Attempts to grab fonts from ${origin}/fonts? #57

josephrocca opened this issue Apr 30, 2024 · 5 comments

Comments

@josephrocca
Copy link

josephrocca commented Apr 30, 2024

Using this example that's linked from the official blog post:

https://jsfiddle.net/gh/get/library/pure/pyodide/pyodide-blog/contents/demos/canvas-renderer-matplotlib/demo-1/

It tries and fails to get https://fiddle.jshell.net/fonts/DejaVuSans.ttf. I tried updating it to the lastest version by replacing the script tag with:

<script src="https://cdn.jsdelivr.net/pyodide/v0.25.1/full/pyodide.js"></script>

and swapping this:

matplotlib.use("module://matplotlib.backends.html5_canvas_backend")

for the newer:

matplotlib.use("module://matplotlib_pyodide.html5_canvas_backend")

But the same issue occurs. I'm guessing this is why the pan/zoom buttons of plots aren't the right size, and don't have any text in them, in the example linked above? (and also in the latest version of Pyodide)

@hoodmane
Copy link
Member

hoodmane commented Apr 30, 2024

Interesting, thanks for the report. Indeed:

_base_fonts_url = "/fonts/"

should probably be changed to:

from pyodide_js._api.config import indexURL

_base_fonts_url = f"{indexURL}/fonts/"

@hoodmane
Copy link
Member

It seems that jsdelivr returns a 403 for this which is another problem.

@hoodmane
Copy link
Member

hoodmane commented May 3, 2024

@MartinKolarik Could you whitelist .ttf files for Pyodide?

@MartinKolarik
Copy link

Should be allowed now! If you run into issues with any specific URL, you can purge the cache via https://www.jsdelivr.com/tools/purge

@hoodmane
Copy link
Member

hoodmane commented May 3, 2024

Thanks! Now if I patch it like this:

import matplotlib_pyodide.html5_canvas_backend
matplotlib_pyodide.html5_canvas_backend._base_fonts_url = f"{indexURL}fonts/"

it successfully downloads the font from:
https://cdn.jsdelivr.net/pyodide/v0.25.1/full/fonts/DejaVuSans.ttf

I cannot tell the difference in the rendered output though. It looks identical to me whether the font download succeeds or fails.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants