@@ -228,7 +228,8 @@ def make_tex(self, tex, fontsize):
228228%s
229229\pagestyle{empty}
230230\begin{document}
231- \fontsize{%f}{%f}%s
231+ %% The empty hbox ensures that a page is printed even for empty inputs.
232+ \fontsize{%f}{%f}\hbox{}%s
232233\end{document}
233234""" % (self ._get_preamble (), fontsize , fontsize * 1.25 , tex )
234235 with open (texfile , 'wb' ) as fh :
@@ -388,9 +389,16 @@ def make_png(self, tex, fontsize, dpi):
388389 # see get_rgba for a discussion of the background
389390 if not os .path .exists (pngfile ):
390391 dvifile = self .make_dvi (tex , fontsize )
391- self ._run_checked_subprocess (
392- ["dvipng" , "-bg" , "Transparent" , "-D" , str (dpi ),
393- "-T" , "tight" , "-o" , pngfile , dvifile ], tex )
392+ cmd = ["dvipng" , "-bg" , "Transparent" , "-D" , str (dpi ),
393+ "-T" , "tight" , "-o" , pngfile , dvifile ]
394+ # When testing, disable FreeType rendering for reproducibility; but
395+ # dvipng 1.16 has a bug (fixed in f3ff241) that breaks --freetype0
396+ # mode, so for it we keep FreeType enabled; the image will be
397+ # slightly off.
398+ if (getattr (mpl , "_called_from_pytest" , False )
399+ and mpl ._get_executable_info ("dvipng" ).version != "1.16" ):
400+ cmd .insert (1 , "--freetype0" )
401+ self ._run_checked_subprocess (cmd , tex )
394402 return pngfile
395403
396404 def get_grey (self , tex , fontsize = None , dpi = None ):
@@ -443,7 +451,7 @@ def get_text_width_height_descent(self, tex, fontsize, renderer=None):
443451 return width , height + depth , depth
444452
445453 else :
446- # use dviread. It sometimes returns a wrong descent.
454+ # use dviread.
447455 dvifile = self .make_dvi (tex , fontsize )
448456 with dviread .Dvi (dvifile , 72 * dpi_fraction ) as dvi :
449457 page , = dvi
0 commit comments