Bug 125835 - @font-face should not affect width of characters outside of its unicode-range
Summary: @font-face should not affect width of characters outside of its unicode-range
Status: RESOLVED CONFIGURATION CHANGED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Text (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: BlinkMergeCandidate
Depends on:
Blocks:
 
Reported: 2013-12-16 22:16 PST by Ryosuke Niwa
Modified: 2022-08-21 13:35 PDT (History)
10 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ryosuke Niwa 2013-12-16 22:16:39 PST
Consider merging https://chromium.googlesource.com/chromium/blink/+/2b5a2a00fa9f32da8e006d8b3eb5123c7472e782

Treat FontFallbackList as variable-pitch if the primary font does not
cover entire unicode range.

This fixes the issue that when @font-face has only one segment and that
segment is fixed-pitch, characters outside that segment were treated
incorrectly as fixed-pitch.
Comment 1 Ahmad Saleem 2022-08-21 09:43:29 PDT
This would be:

https://github.com/WebKit/WebKit/blob/8afe31a018b11741abdf9b4d5bb973d7c1d9ff05/Source/WebCore/platform/graphics/FontRanges.h#L70

https://github.com/WebKit/WebKit/blob/44aedc1a545cb3df9c2e3b1e4359355ba247e18d/Source/WebCore/platform/graphics/FontCascadeFonts.cpp#L128

If yes, let me know - I can try to create a pull request. Not super good but happy to learn and work with someone, who can mentor and coach. Thanks!
Comment 2 Ahmad Saleem 2022-08-21 09:48:07 PDT
Although I don't think anything would be required because if I change the test case from patch to JSFiddle:

Link - https://jsfiddle.net/jgxmopf0/show

All browsers (Safari 15.6.1, Safari Technology Preview 151, Firefox Nightly 105 and Chrome Canary 106) show same this:

@font-face should not affect width of characters outside of its unicode-range

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS document.getElementById('test').offsetWidth is document.getElementById('sans').offsetWidth
PASS successfullyParsed is true

TEST COMPLETE

______

Appreciate if someone else can comment. Thanks!
Comment 3 Alexey Proskuryakov 2022-08-21 13:35:19 PDT
Nice!