Skip to content

Commit 149992b

Browse files
committed
Parse {lua,xe}tex-generated dvi in dviread.
1 parent 99a521b commit 149992b

File tree

11 files changed

+287
-214
lines changed

11 files changed

+287
-214
lines changed

lib/matplotlib/backends/backend_pdf.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -940,18 +940,12 @@ def dviFontName(self, dvifont):
940940

941941
tex_font_map = dviread.PsfontsMap(dviread.find_tex_file('pdftex.map'))
942942
psfont = tex_font_map[dvifont.texname]
943-
if psfont.filename is None:
944-
raise ValueError(
945-
"No usable font file found for {} (TeX: {}); "
946-
"the font may lack a Type-1 version"
947-
.format(psfont.psname, dvifont.texname))
948-
949943
pdfname = next(self._internal_font_seq)
950944
_log.debug('Assigning font %s = %s (dvi)', pdfname, dvifont.texname)
951945
self._dviFontInfo[dvifont.texname] = types.SimpleNamespace(
952946
dvifont=dvifont,
953947
pdfname=pdfname,
954-
fontfile=psfont.filename,
948+
fontfile=str(dvifont.path), # raises ValueError if psfont.filename is None.
955949
basefont=psfont.psname,
956950
encodingfile=psfont.encoding,
957951
effects=psfont.effects)
@@ -996,11 +990,11 @@ def _embedTeXFont(self, fontinfo):
996990

997991
# Widths
998992
widthsObject = self.reserveObject('font widths')
999-
tfm = fontinfo.dvifont._tfm
993+
font_metrics = fontinfo.dvifont._metrics
1000994
# convert from TeX's 12.20 representation to 1/1000 text space units.
1001-
widths = [(1000 * metrics.tex_width) >> 20
1002-
if (metrics := tfm.get_metrics(char)) else 0
1003-
for char in range(max(tfm._glyph_metrics, default=-1) + 1)]
995+
widths = [(1000 * glyph_metrics.tex_width) >> 20
996+
if (glyph_metrics := font_metrics.get_metrics(char)) else 0
997+
for char in range(max(font_metrics._glyph_metrics, default=-1) + 1)]
1004998
self.writeObject(widthsObject, widths)
1005999

10061000
# Font dictionary

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy