Skip to content

Conversation

@anntzer
Copy link
Contributor

@anntzer anntzer commented Dec 19, 2017

Otherwise,

rcParams["svg.fonttype"] = "svgfont"; title("foo"); savefig("/tmp/test.svg")

fails (on Py3) with

  File ".../backend_svg.py", line 86, in escape_attrib
    s = s.replace("&", "&")
TypeError: a bytes-like object is required, not 'str'

The encoding of entry 1, 0, 0, 4 in the sfnt table is macroman
(https://www.freetype.org/freetype2/docs/reference/ft2-truetype_tables.html#TT_MAC_ID_XXX).

Note that after the fix is applied, the resulting svg file still appears
to be unopenable by inkscape, so the fix is not complete, but hopefully
a step in the correct direction.


Of course, this suggests that the svg.fonttype = svgfont codepath is untested, which is another problem :p

In practice it appears that the svg font standard isn't that popular or well supported, see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_fonts.

PR Summary

PR Checklist

  • Has Pytest style unit tests
  • Code is PEP 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

Otherwise,

    rcParams["svg.fonttype"] = "svgfont"; title("foo"); savefig("/tmp/test.svg")

fails (on Py3) with

      File ".../backend_svg.py", line 86, in escape_attrib
        s = s.replace("&", "&")
    TypeError: a bytes-like object is required, not 'str'

The encoding of entry 1, 0, 0, 4 in the sfnt table is macroman
(https://www.freetype.org/freetype2/docs/reference/ft2-truetype_tables.html#TT_MAC_ID_XXX).

Note that after the fix is applied, the resulting svg file still appears
to be unopenable by inkscape, so the fix is not complete, but hopefully
a step in the correct direction.
@QuLogic
Copy link
Member

QuLogic commented Dec 19, 2017

Can you use mac_roman instead? Partly because that's the codec name, but mostly because I keep reading it as macro-man.

@anntzer
Copy link
Contributor Author

anntzer commented Dec 19, 2017

done

@tacaswell
Copy link
Member

I have also been reading it as 'macro-man' and puzzling at why they would come up with that name!

@dstansby dstansby merged commit 58ddc36 into matplotlib:master Jan 5, 2018
@anntzer anntzer deleted the svg-font branch January 5, 2018 10:52
@QuLogic QuLogic modified the milestones: needs sorting, v2.2.0 Feb 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants