|
15 | 15 | import babeldoc.pdfminer.pdfinterp |
16 | 16 | from babeldoc.format.pdf.babelpdf.base14 import get_base14_bbox |
17 | 17 | from babeldoc.format.pdf.babelpdf.cidfont import get_cidfont_bbox |
| 18 | +from babeldoc.format.pdf.babelpdf.cidfont import get_glyph_bbox |
18 | 19 | from babeldoc.format.pdf.babelpdf.encoding import WinAnsiEncoding |
19 | 20 | from babeldoc.format.pdf.babelpdf.encoding import get_type1_encoding |
| 21 | +from babeldoc.format.pdf.babelpdf.type3 import get_type3_bbox |
20 | 22 | from babeldoc.format.pdf.babelpdf.utils import guarded_bbox |
21 | 23 | from babeldoc.format.pdf.document_il import il_version_1 |
22 | 24 | from babeldoc.format.pdf.document_il.utils import zstd_helper |
@@ -111,23 +113,17 @@ def indirect(obj): |
111 | 113 | return int(obj[1].split(" ")[0]) |
112 | 114 |
|
113 | 115 |
|
114 | | -def get_glyph_cbox(face, g): |
115 | | - face.load_glyph(g, freetype.FT_LOAD_NO_SCALE) |
116 | | - cbox = face.glyph.outline.get_bbox() |
117 | | - return cbox.xMin, cbox.yMin, cbox.xMax, cbox.yMax |
118 | | - |
119 | | - |
120 | 116 | def get_char_cbox(face, idx): |
121 | 117 | g = face.get_char_index(idx) |
122 | | - return get_glyph_cbox(face, g) |
| 118 | + return get_glyph_bbox(face, g) |
123 | 119 |
|
124 | 120 |
|
125 | 121 | def get_name_cbox(face, name): |
126 | 122 | if name: |
127 | 123 | if isinstance(name, str): |
128 | 124 | name = name.encode("utf-8") |
129 | 125 | g = face.get_name_index(name) |
130 | | - return get_glyph_cbox(face, g) |
| 126 | + return get_glyph_bbox(face, g) |
131 | 127 | return (0, 0, 0, 0) |
132 | 128 |
|
133 | 129 |
|
@@ -798,6 +794,8 @@ def parse_font_xobj_id(self, xobj_id: int): |
798 | 794 | bbox_list = get_base14_bbox(obj_val[1:]) |
799 | 795 | if cid_bbox := get_cidfont_bbox(self.mupdf, xobj_id): |
800 | 796 | bbox_list = cid_bbox |
| 797 | + if self.mupdf.xref_get_key(xobj_id, "Subtype")[1] == "/Type3": |
| 798 | + bbox_list = get_type3_bbox(self.mupdf, xobj_id) |
801 | 799 | return bbox_list, cmap |
802 | 800 |
|
803 | 801 | def create_graphic_state( |
|
0 commit comments