Title: [Bug]: FontManager.addfont doesn't accept pathlib.Path of TTF font · Issue #22582 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: FontManager.addfont doesn't accept pathlib.Path of TTF font · Issue #22582 · matplotlib/matplotlib
X Title: [Bug]: FontManager.addfont doesn't accept pathlib.Path of TTF font · Issue #22582 · matplotlib/matplotlib
Description: Bug summary The FontManager.addfont() method is documented as accepting a path-like, but if a path-like for a .ttf font file is passed it raises TypeError Code for reproduction from pathlib import Path from matplotlib import get_data_pat...
Open Graph Description: Bug summary The FontManager.addfont() method is documented as accepting a path-like, but if a path-like for a .ttf font file is passed it raises TypeError Code for reproduction from pathlib import ...
X Description: Bug summary The FontManager.addfont() method is documented as accepting a path-like, but if a path-like for a .ttf font file is passed it raises TypeError Code for reproduction from pathlib import ...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/22582
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: FontManager.addfont doesn't accept pathlib.Path of TTF font","articleBody":"### Bug summary\r\n\r\nThe [`FontManager.addfont()`](https://github.com/matplotlib/matplotlib/blob/710fce3df95e22701bd68bf6af2c8adbc9d67a79/lib/matplotlib/font_manager.py#L1077-L1094) method is documented as accepting a path-like, but if a path-like for a .ttf font file is passed it raises `TypeError`\r\n\r\n### Code for reproduction\r\n\r\n```python\r\nfrom pathlib import Path\r\nfrom matplotlib import get_data_path, __version__\r\nfrom matplotlib.font_manager import fontManager\r\n\r\npath = Path(get_data_path()) / \"fonts\" / \"ttf\" / \"cmr10.ttf\"\r\n\r\nprint(\"matplotlib\", __version__)\r\nfontManager.addfont(str(path)) # Works\r\nprint(\"str ok\")\r\nfontManager.addfont(path) # TypeError\r\nprint(\"path ok\")\r\n```\r\n\r\n\r\n### Actual outcome\r\n\r\n```\r\nmatplotlib 3.5.1\r\nstr ok\r\nTraceback (most recent call last):\r\n File \"/home/twm/dev/roofs/repro.py\", line 10, in \u003cmodule\u003e\r\n fontManager.addfont(path) # TypeError\r\n File \"/home/twm/dev/roofs/venv/lib/python3.9/site-packages/matplotlib/font_manager.py\", line 1092, in addfont\r\n font = ft2font.FT2Font(path)\r\nTypeError: First argument must be a path or binary-mode file object\r\n```\r\n\r\n### Expected outcome\r\n\r\n```\r\nmatplotlib 3.5.1\r\nstr ok\r\npath ok\r\n```\r\n\r\n### Additional information\r\n\r\nIt looks like the simplest fix would be to convert path-likes to `str` since [`FT2Font` is implemented in C++](https://github.com/matplotlib/matplotlib/blob/9197433d50ed77c37a2d5fcb4e0a3f4b26112c8e/src/ft2font.cpp).\r\n\r\n### Operating system\r\n\r\nUbuntu 20.04\r\n\r\n### Matplotlib Version\r\n\r\n3.5.1\r\n\r\n### Matplotlib Backend\r\n\r\nTkAgg\r\n\r\n### Python version\r\n\r\n3.9.5\r\n\r\n### Jupyter version\r\n\r\nN/A\r\n\r\n### Installation\r\n\r\npip","author":{"url":"https://github.com/twm","@type":"Person","name":"twm"},"datePublished":"2022-03-02T04:00:01.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/22582/matplotlib/issues/22582"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:5d86fcab-e6c1-21ea-5bf4-e0df000c6894 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BFEE:9D184:C271D2:105E463:6A5169F2 |
| html-safe-nonce | 8ad3c31de75bc2318d7694a7c8d126038f0ee6179481643a53bd93ff9680adb4 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRkVFOjlEMTg0OkMyNzFEMjoxMDVFNDYzOjZBNTE2OUYyIiwidmlzaXRvcl9pZCI6IjUwNjQzMDU0MzUyNjcxNzkzOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | fda196294fa21797c6dde08aac1df7ef1b42c5a571b5631d113d4a4ce82424d3 |
| hovercard-subject-tag | issue:1156320360 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/22582/issue_layout |
| twitter:image | https://opengraph.githubassets.com/86f0344ba8bdefd5a57a73e047ac468f79b22c18b133efa0d921f37ff4173285/matplotlib/matplotlib/issues/22582 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/86f0344ba8bdefd5a57a73e047ac468f79b22c18b133efa0d921f37ff4173285/matplotlib/matplotlib/issues/22582 |
| og:image:alt | Bug summary The FontManager.addfont() method is documented as accepting a path-like, but if a path-like for a .ttf font file is passed it raises TypeError Code for reproduction from pathlib import ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | twm |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 60eaaf6d4dbaa817031b556aebd8a0a7eeb81b97 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width