NEW283388
all font family members downloaded when glyph missing
https://bugs.webkit.org/show_bug.cgi?id=283388
Summary all font family members downloaded when glyph missing
Cameron Beccario
Reported 2024-11-19 16:55:57 PST
Created attachment 473280 [details] document that reproduces the font loading problem using Google Fonts API Steps to reproduce: - Using @font-face at-rules, define a font family F that contains multiple files that differ only by font weight. For example, 100, 400, and 700. Do not specify unicode-range. - Style the document body to have font-weight 400 and font-family F with a generic fallback. - Add some characters to the document body that do not map to any glyphs in F. Expected: The 400 weight file for F is downloaded and then the generic fallback is used. Actual: *All* weights for F are downloaded and then the generic fallback is used. Build Date & Hardware: - MacBook Pro M1 Max, Sonoma 14.6.1 - Release 207 (Safari 18.2, WebKit 19621.1.4.3) Both Chrome and FF download only a single font. It appears that Webkit's font loading algorithm searches for the missing glyph in all members of the font family before trying the next family. This is non-conformant with the CSS3 font matching procedure (https://drafts.csswg.org/css-fonts-3/#font-style-matching): "‘font-weight’ is matched next, so it will always reduce the matching set to a single font face... If no matching face exists or the matched face does not contain a glyph for the character to be rendered, the next family name is selected."
Attachments
document that reproduces the font loading problem using Google Fonts API (1.32 KB, text/html)
2024-11-19 16:55 PST, Cameron Beccario
no flags
screenshot showing rendered webpage and associated network downloads (126.45 KB, image/jpeg)
2024-11-19 16:57 PST, Cameron Beccario
no flags
Cameron Beccario
Comment 1 2024-11-19 16:57:45 PST
Created attachment 473281 [details] screenshot showing rendered webpage and associated network downloads
Radar WebKit Bug Importer
Comment 3 2024-11-26 16:56:15 PST
Note You need to log in before you can comment on or make changes to this bug.