diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py index a5e6253ca387..701aee35f64e 100644 --- a/lib/matplotlib/backends/backend_pdf.py +++ b/lib/matplotlib/backends/backend_pdf.py @@ -1040,8 +1040,9 @@ def embedTTFType42(font, characters, descriptor): for c in characters: ccode = c gind = font.get_char_index(ccode) - glyph = font.load_char(ccode, flags=LOAD_NO_HINTING) - widths.append((ccode, glyph.horiAdvance / 6)) + glyph = font.load_char(ccode, + flags=LOAD_NO_SCALE | LOAD_NO_HINTING) + widths.append((ccode, cvt(glyph.horiAdvance))) if ccode < 65536: cid_to_gid_map[ccode] = unichr(gind) max_ccode = max(ccode, max_ccode) diff --git a/lib/matplotlib/tests/baseline_images/test_text/font_scaling.pdf b/lib/matplotlib/tests/baseline_images/test_text/font_scaling.pdf new file mode 100644 index 000000000000..72b73eb8f8af Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_text/font_scaling.pdf differ diff --git a/lib/matplotlib/tests/test_text.py b/lib/matplotlib/tests/test_text.py index 2eae173340b4..fa35146ac2ac 100644 --- a/lib/matplotlib/tests/test_text.py +++ b/lib/matplotlib/tests/test_text.py @@ -411,3 +411,16 @@ def test_text_size_binding(): matplotlib.rcParams['font.size'] = 100 assert sz1 == fp.get_size_in_points() + + +@image_comparison(baseline_images=['font_scaling'], + extensions=['pdf']) +def test_font_scaling(): + matplotlib.rcParams['pdf.fonttype'] = 42 + fig, ax = plt.subplots(figsize=(6.4, 12.4)) + ax.xaxis.set_major_locator(plt.NullLocator()) + ax.yaxis.set_major_locator(plt.NullLocator()) + ax.set_ylim(-10, 600) + + for i, fs in enumerate(range(4, 43, 2)): + ax.text(0.1, i*30, "{fs} pt font size".format(fs=fs), fontsize=fs)