Skip to content

Commit dfccf1b

Browse files
committedSep 30, 2022
Use faces as fonts dictionary keys
Pango faces are just Pango fonts without the size information, it thus avoids duplication for different sizes. Fortunately, it includes the variant information.
1 parent 4f7c3cf commit dfccf1b

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed
 

‎weasyprint/pdf/stream.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -311,11 +311,12 @@ def set_blend_mode(self, mode):
311311
}))
312312

313313
def add_font(self, pango_font):
314-
hb_font = pango.pango_font_get_hb_font(pango_font)
315-
hb_face = harfbuzz.hb_font_get_face(hb_font)
316-
if pango_font not in self._fonts:
317-
self._fonts[pango_font] = Font(pango_font, hb_face)
318-
return self._fonts[pango_font]
314+
pango_face = pango.pango_font_get_face(pango_font)
315+
if pango_face not in self._fonts:
316+
hb_font = pango.pango_font_get_hb_font(pango_font)
317+
hb_face = harfbuzz.hb_font_get_face(hb_font)
318+
self._fonts[pango_face] = Font(pango_font, hb_face)
319+
return self._fonts[pango_face]
319320

320321
def add_group(self, bounding_box):
321322
states = pydyf.Dictionary()

‎weasyprint/text/ffi.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
typedef ... PangoAttrList;
4545
typedef ... PangoAttrClass;
4646
typedef ... PangoFont;
47+
typedef ... PangoFontFace;
4748
typedef guint PangoGlyph;
4849
typedef gint PangoGlyphUnit;
4950
@@ -257,6 +258,8 @@
257258
PangoFontMetrics * pango_context_get_metrics (
258259
PangoContext *context, const PangoFontDescription *desc,
259260
PangoLanguage *language);
261+
PangoFontMetrics * pango_font_get_metrics (
262+
PangoFont *font, PangoLanguage *language);
260263
void pango_font_metrics_unref (PangoFontMetrics *metrics);
261264
int pango_font_metrics_get_ascent (PangoFontMetrics *metrics);
262265
int pango_font_metrics_get_descent (PangoFontMetrics *metrics);
@@ -268,16 +271,12 @@
268271
PangoFontMetrics *metrics);
269272
int pango_font_metrics_get_strikethrough_position (
270273
PangoFontMetrics *metrics);
271-
272-
void pango_context_set_round_glyph_positions (
273-
PangoContext *context, gboolean round_positions);
274-
275-
PangoFontMetrics * pango_font_get_metrics (
276-
PangoFont *font, PangoLanguage *language);
277-
278274
void pango_font_get_glyph_extents (
279275
PangoFont *font, PangoGlyph glyph, PangoRectangle *ink_rect,
280276
PangoRectangle *logical_rect);
277+
PangoFontFace* pango_font_get_face (PangoFont* font);
278+
void pango_context_set_round_glyph_positions (
279+
PangoContext *context, gboolean round_positions);
281280
282281
PangoAttrList * pango_attr_list_new (void);
283282
void pango_attr_list_unref (PangoAttrList *list);

0 commit comments

Comments
 (0)
Please sign in to comment.