@@ -207,7 +207,8 @@ def make_tex(self, tex, fontsize):
207207\usepackage[papersize={72in,72in},body={70in,70in},margin={1in,1in}]{geometry}
208208\pagestyle{empty}
209209\begin{document}
210- \fontsize{%f}{%f}%s
210+ %% The empty hbox ensures that a page is printed even for empty inputs.
211+ \fontsize{%f}{%f}\hbox{}%s
211212\end{document}
212213""" % (self ._get_preamble (), fontsize , fontsize * 1.25 , fontcmd % tex ),
213214 encoding = 'utf-8' )
@@ -350,9 +351,16 @@ def make_png(self, tex, fontsize, dpi):
350351 # see get_rgba for a discussion of the background
351352 if not os .path .exists (pngfile ):
352353 dvifile = self .make_dvi (tex , fontsize )
353- self ._run_checked_subprocess (
354- ["dvipng" , "-bg" , "Transparent" , "-D" , str (dpi ),
355- "-T" , "tight" , "-o" , pngfile , dvifile ], tex )
354+ cmd = ["dvipng" , "-bg" , "Transparent" , "-D" , str (dpi ),
355+ "-T" , "tight" , "-o" , pngfile , dvifile ]
356+ # When testing, disable FreeType rendering for reproducibility; but
357+ # dvipng 1.16 has a bug (fixed in f3ff241) that breaks --freetype0
358+ # mode, so for it we keep FreeType enabled; the image will be
359+ # slightly off.
360+ if (getattr (mpl , "_called_from_pytest" , False )
361+ and mpl ._get_executable_info ("dvipng" ).version != "1.16" ):
362+ cmd .insert (1 , "--freetype0" )
363+ self ._run_checked_subprocess (cmd , tex )
356364 return pngfile
357365
358366 def get_grey (self , tex , fontsize = None , dpi = None ):
@@ -403,7 +411,7 @@ def get_text_width_height_descent(self, tex, fontsize, renderer=None):
403411 return width , height + depth , depth
404412
405413 else :
406- # use dviread. It sometimes returns a wrong descent.
414+ # use dviread.
407415 dvifile = self .make_dvi (tex , fontsize )
408416 with dviread .Dvi (dvifile , 72 * dpi_fraction ) as dvi :
409417 page , = dvi
0 commit comments