[cairo] win32 font faces

Adrian Johnson ajohnson at redneon.com
Fri Nov 6 06:33:03 PST 2009

Bug 24849 reports that Inkscape on win32 is creating PDFs with the same 
font embedded multiple times. This is because the win32 font backend is 
not using a hash table of font faces to return an existing face when the 
same font is used.

Attached is a patch that to fix this. The patch doesn't completely solve 
the problem of ensuring each win32 font used is embedded only once. The 

cairo_win32_font_face_create_for_logfontw_hfont ((LOGFONTW *logfont,
                                                          HFONT font);)

which can specify a HFONT object to use. My patch uses both LOGFONT and 
HFONT as the hash table key so creating fonts with the same LOGFONT but 
different HFONT objects will return different font faces. For Inkscape 
the patch fixes the problem as Inkscape only uses 
cairo_win32_font_face_create_for_logfontw ().

Would it be better to filter out duplicate LOGFONTS in 
cairo-scaled-font-subsets.c instead to guarantee fonts will only be 
embedded once?

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-win32-Use-a-font_face-hash-table-provide-unique-font.patch
Url: http://lists.cairographics.org/archives/cairo/attachments/20091107/f8a7c4fb/attachment.txt 

More information about the cairo mailing list