Title: Font issue: findfonts should differentiate between thin and regular ttf fonts · Issue #8788 · matplotlib/matplotlib · GitHub
Open Graph Title: Font issue: findfonts should differentiate between thin and regular ttf fonts · Issue #8788 · matplotlib/matplotlib
X Title: Font issue: findfonts should differentiate between thin and regular ttf fonts · Issue #8788 · matplotlib/matplotlib
Description: Bug report Bug summary The selection criteria for finding fonts using the algorithm in matplotlib.font_manager.findfonts are incomplete. The problem arises with high-quality TTF fonts that have many different styles, for instance "Helvet...
Open Graph Description: Bug report Bug summary The selection criteria for finding fonts using the algorithm in matplotlib.font_manager.findfonts are incomplete. The problem arises with high-quality TTF fonts that have man...
X Description: Bug report Bug summary The selection criteria for finding fonts using the algorithm in matplotlib.font_manager.findfonts are incomplete. The problem arises with high-quality TTF fonts that have man...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/8788
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Font issue: findfonts should differentiate between thin and regular ttf fonts","articleBody":"### Bug report\r\n\r\n**Bug summary**\r\n\r\nThe selection criteria for finding fonts using the algorithm in ``matplotlib.font_manager.findfonts`` are incomplete. The problem arises with high-quality TTF fonts that have many different styles, for instance \"Helvetica Neue\", or \"Lato\". For instance, the \"Thin\" versions of these fonts are indistinguishable from the \"Regular\" versions by their font weight (both have e.g. a value of 400) such that the font that is returned by findfonts depends on the ordering of the list ``matplotlib.font_manager.fontManager.ttflist``.\r\n\r\nA workaround would be to simply uninstall the unwanted versions of the conflicting fonts from the system. Unfortunately, for the figures that I am trying to create, \"Helvetica Neue\" is mandatory and it is also an OSX system font, thus cannot be disabled.\r\n\r\nI am unsure whether the fonts (for instance) \"HelveticaNeue-Thin.ttf\" and \"HelveticaNeue.ttf\" could be distinguished by adding another font metric to the ``Font`` class. If not, the proposed solution would be to allow selecting fonts in ``matplotlib.rcParams`` by their file name, e.g. setting ``mathtext.rm : \"HelveticaNeue.ttf\"``. This solution would require changing the fontconfig parser in ``matplotlib.fontconfig_pattern.py`` to allow filenames.\r\n\r\n**Code for reproduction**\r\n\r\nThe result of the code below is system-dependent, even when exactly the same font files are installed, because of the ordering of ``matplotlib.font_manager.fontManager.ttflist``.\r\n\r\n```python\r\nimport matplotlib.font_manager as fm\r\np = fm.FontProperties(family = 'Helvetica Neue')\r\nfm.findfont(p)\r\n\r\n--\u003e 'HelveticaNeue.ttf' or 'HelveticaNeue-Thin.ttf'\r\n```\r\n\r\nThe properties of the corresponding Font objects are identical (see ``matplotlib.font_manager.fontManager.ttflist``)\r\n\r\n```python\r\n\u003cFont 'Helvetica Neue' (HelveticaNeue.ttf) normal normal 400 normal\u003e\r\n\u003cFont 'Helvetica Neue' (HelveticaNeue-Thin.ttf) normal normal 400 normal\u003e\r\n```\r\n\r\n\r\n**Actual outcome**\r\n\r\nSee above, system-dependent.\r\n\r\n**Expected outcome**\r\n\r\nFindfonts should be deterministic.\r\n\r\n**Matplotlib version**\r\n * Operating System: OSX, Windows\r\n * Matplotlib Version: 2.0.0\r\n * Python Version: 3.6.1\r\n","author":{"url":"https://github.com/blatts","@type":"Person","name":"blatts"},"datePublished":"2017-06-22T09:00:50.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/8788/matplotlib/issues/8788"}
| 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:8d877e1b-31f7-31f0-b812-ca6f015e2da7 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BF44:186324:619355:81A688:6A52A16C |
| html-safe-nonce | 71c91764a470b9abd4fe6ba34558417379f78cf191765a4e179bbc6b8f5519a2 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRjQ0OjE4NjMyNDo2MTkzNTU6ODFBNjg4OjZBNTJBMTZDIiwidmlzaXRvcl9pZCI6IjQwNzgzMzA3Mjc5MjE1MjUxMDAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | b7577fd926fc9dbd43669db1bedfa5a5748a2b4c621e78e21e90ebfb6ac21274 |
| hovercard-subject-tag | issue:237777284 |
| 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/8788/issue_layout |
| twitter:image | https://opengraph.githubassets.com/05c3ac7e01a4284a2377f4b107234a6d40aeb15357ce6b7e49c6c435f6e8732e/matplotlib/matplotlib/issues/8788 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/05c3ac7e01a4284a2377f4b107234a6d40aeb15357ce6b7e49c6c435f6e8732e/matplotlib/matplotlib/issues/8788 |
| og:image:alt | Bug report Bug summary The selection criteria for finding fonts using the algorithm in matplotlib.font_manager.findfonts are incomplete. The problem arises with high-quality TTF fonts that have man... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | blatts |
| 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 | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width