Missing kerning for single-byte strings in PDF · Issue #19581 · matplotlib/matplotlib · GitHub
Skip to content

Missing kerning for single-byte strings in PDF #19581

Description

@sauerburger

Bug report

Bug summary
Kerning is not applied in the PDF output of pure single-byte strings which leads to inconsistencies between PDF and other output formats.

Code for reproduction

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.text(0.1, 0.5, "ATL", size=120)
fig.savefig("atl.pdf")
fig.savefig("atl.png", dpi=300)

Actual outcome
text4900

Expected outcome
I expected that the spacing between A and T is consistent between both formats. Besides this minor visual issues, I use get_window_extent() to place a second text item in bold next to the first one. The space between the two texts varies significantly between output formats. get_window_extent() considers the kerning information, so the space looks correct in PNG but is usually too small in PDF files.

The issue is related to #18282. Here the same issue was fixed for strings with multi-byte chars. I don't see the changes from #18282 in version 3.3.4, but they will not effect the single-byte string case.

Unaware of #18282, I've implemented a fix for the single-byte case. I will open a PR, but you might have other ideas on how to implementation a fix.

Matplotlib version

  • Operating system: Ubuntu 16.04
  • Matplotlib version: 3.3.4
  • Matplotlib backend: TkAgg (but actually PDF?)
  • Python version: 3.7.5
  • Font: DejaVuSans Type 3

I've installed matplotlib in a virtualenv with pip.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions