Title: [266118] trunk
Revision
266118
Author
mmaxfi...@apple.com
Date
2020-08-25 09:03:00 -0700 (Tue, 25 Aug 2020)

Log Message

Fonts lie about being monospaced
https://bugs.webkit.org/show_bug.cgi?id=162546
<rdar://problem/28494654>

Reviewed by Darin Adler.

Source/WebCore:

When a font reports itself to be monospace, we use this as a
signal that we can perform width computations by assuming all
characters have the same width as the space character. However,
some fonts erroneously claim to be monospaced. We can't know
this ahead of time without measuring a bunch of characters at
font load time, which would be too slow, so even though the
optimization would be nice there is no practical way to do it
correctly. Firefox and Chrome both do not use this signal, so
therefore they both correctly render these fonts. We should
ignore this bit in the font as well. Also, CJK fonts generally
do not have this bit set (because they usually have at least
one character which is not fullwidth) so this isn't a concern
there.

Our Page Load Test shows this is not a performance regression.

Tests: fast/text/font-erroneous-monospace.html
       fast/text/font-monospaced-lie.html

* rendering/RenderText.cpp:
(WebCore::RenderText::widthFromCache const):

LayoutTests:

Add two tests for fonts which claim to be monospaced but actually aren't.

* fast/text/font-erroneous-monospace-expected.html: Added.
* fast/text/font-erroneous-monospace.html: Added.
* fast/text/font-monospaced-lie-expected.txt: Added.
* fast/text/font-monospaced-lie.html: Added.
* fast/text/line-break-after-question-mark-expected.txt:
* fast/text/line-break-after-question-mark.html:
* fast/text/resources/Ahem-fixed-pitch.ttf: Added.
* fast/text/resources/AhemErroneousMonospace.ttf: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (266117 => 266118)


--- trunk/LayoutTests/ChangeLog	2020-08-25 15:58:40 UTC (rev 266117)
+++ trunk/LayoutTests/ChangeLog	2020-08-25 16:03:00 UTC (rev 266118)
@@ -1,3 +1,22 @@
+2020-08-25  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        Fonts lie about being monospaced
+        https://bugs.webkit.org/show_bug.cgi?id=162546
+        <rdar://problem/28494654>
+
+        Reviewed by Darin Adler.
+
+        Add two tests for fonts which claim to be monospaced but actually aren't.
+
+        * fast/text/font-erroneous-monospace-expected.html: Added.
+        * fast/text/font-erroneous-monospace.html: Added.
+        * fast/text/font-monospaced-lie-expected.txt: Added.
+        * fast/text/font-monospaced-lie.html: Added.
+        * fast/text/line-break-after-question-mark-expected.txt:
+        * fast/text/line-break-after-question-mark.html:
+        * fast/text/resources/Ahem-fixed-pitch.ttf: Added.
+        * fast/text/resources/AhemErroneousMonospace.ttf: Added.
+
 2020-08-25  Youenn Fablet  <you...@apple.com>
 
         Add support for MediaRecorder bitrate options

Added: trunk/LayoutTests/fast/text/font-erroneous-monospace-expected.html (0 => 266118)


--- trunk/LayoutTests/fast/text/font-erroneous-monospace-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/text/font-erroneous-monospace-expected.html	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+@font-face {
+    font-family: "WebFontAhem";
+    src: url("../../resources/Ahem.ttf") format("truetype");
+}
+</style>
+</head>
+<body>
+The test passes if there is no red shown below.
+<div><span style="font: 50px 'WebFontAhem'; -webkit-font-smoothing: none;">aaaa</span></div>
+</body>
+</html>

Added: trunk/LayoutTests/fast/text/font-erroneous-monospace.html (0 => 266118)


--- trunk/LayoutTests/fast/text/font-erroneous-monospace.html	                        (rev 0)
+++ trunk/LayoutTests/fast/text/font-erroneous-monospace.html	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+@font-face {
+    font-family: "AhemErroneousMonospace";
+    src: url("resources/AhemErroneousMonospace.ttf") format("truetype");
+}
+</style>
+</head>
+<body>
+The test passes if there is no red shown below.
+<div><span style="font: 50px 'AhemErroneousMonospace'; background: red; -webkit-font-smoothing: none;">aaaa</span></div>
+</body>
+</html>

Added: trunk/LayoutTests/fast/text/font-monospaced-lie-expected.txt (0 => 266118)


--- trunk/LayoutTests/fast/text/font-monospaced-lie-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/text/font-monospaced-lie-expected.txt	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,5 @@
+PASS 180 is >= document.getElementById('target').offsetWidth
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Hello World

Added: trunk/LayoutTests/fast/text/font-monospaced-lie.html (0 => 266118)


--- trunk/LayoutTests/fast/text/font-monospaced-lie.html	                        (rev 0)
+++ trunk/LayoutTests/fast/text/font-monospaced-lie.html	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<style>
+@font-face {
+    font-family: "WebFont";
+    src: url("resources/Ahem-fixed-pitch.ttf") format("truetype");
+}
+</style>
+</head>
+<body>
+<div style="font: 24px 'WebFont';"><span id="target"><span>Hello</span> <span>World</span></span></div>
+<script>
+window.jsTestIsAsync = true;
+document.fonts.values().next().value.load().then(function() {
+    shouldBeGreaterThanOrEqual("180", "document.getElementById('target').offsetWidth");
+    finishJSTest();
+}, function() {
+    finishJSTest();
+});
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/fast/text/line-break-after-question-mark-expected.txt (266117 => 266118)


--- trunk/LayoutTests/fast/text/line-break-after-question-mark-expected.txt	2020-08-25 15:58:40 UTC (rev 266117)
+++ trunk/LayoutTests/fast/text/line-break-after-question-mark-expected.txt	2020-08-25 16:03:00 UTC (rev 266118)
@@ -9,7 +9,6 @@
 PASS allowsBreakBefore(36) is true
 PASS allowsBreakBefore(37) is true
 PASS allowsBreakBefore(38) is true
-PASS allowsBreakBefore(39) is false
 PASS allowsBreakBefore(40) is true
 PASS allowsBreakBefore(41) is false
 PASS allowsBreakBefore(42) is true
@@ -97,7 +96,6 @@
 PASS allowsBreakBefore(124) is true
 PASS allowsBreakBefore(125) is false
 PASS allowsBreakBefore(126) is true
-PASS allowsBreakBefore(127) is true
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/fast/text/line-break-after-question-mark.html (266117 => 266118)


--- trunk/LayoutTests/fast/text/line-break-after-question-mark.html	2020-08-25 15:58:40 UTC (rev 266117)
+++ trunk/LayoutTests/fast/text/line-break-after-question-mark.html	2020-08-25 16:03:00 UTC (rev 266118)
@@ -20,8 +20,11 @@
 
 var unallowedBreaks = [0x21, 0x22, 0x27, 0x29, 0x2c, 0x2e, 0x2f, 0x3a, 0x3b, 0x3f, 0x5d, 0x7d];
 
-for (var i = 33; i < 128; ++i)
+for (var i = 0x21; i < 0x27; ++i)
     shouldBe("allowsBreakBefore(" + i + ")", unallowedBreaks.indexOf(i) >= 0 ? "false" : "true");
+// Ahem doesn't support U+0027
+for (var i = 0x28; i < 0x7F; ++i)
+    shouldBe("allowsBreakBefore(" + i + ")", unallowedBreaks.indexOf(i) >= 0 ? "false" : "true");
 
 document.body.removeChild(div);
 </script>

Added: trunk/LayoutTests/fast/text/resources/Ahem-fixed-pitch.ttf (0 => 266118)


--- trunk/LayoutTests/fast/text/resources/Ahem-fixed-pitch.ttf	                        (rev 0)
+++ trunk/LayoutTests/fast/text/resources/Ahem-fixed-pitch.ttf	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,44 @@
+\x800OS/2sf\xF8\xBC`cmap9\x96U\xEEgasp	(glyfנ\xA9A8\xA8head\xDBP͵ \xE06hhea
+7!$hmtx_\xC2+!<Xloca\xBEԸ7%\x94.maxp	'\xC4 name\xB8)\xC6'\xE4)\xA2postc\xA1[$Q\x88\xD6\x90\xBC\x8A\x8F\xBC\x8A\xC52\x80\xAF HW3C @ \xFE\xFF \xFF8 \xC8\xFF\xFC\xFF\xFF   \xF8::&~\xA0\xA1\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCF\xD0\xD1\xD2\xD4\xD5\xD6\xD7\xD8\xD9\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEB\xEC\xED\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFC\xFD\xFE\xFF1Sx\x92\xC6\xC7\xC9\xDA\xDB\xDC\xDD\x94\xA5\xA7\xA9\xBC
 \xC0   +      " & 0 : D!"!&"""""""""+"H"`"e"\xF2%\xCA00NNN	N]N\x8CN\x94Qk
 QmSAV\xD7V\xDBWg(j*l4pk~\xB5\x91\xD1\xF0\xFE\xFF\xFF\xFF (\xA0\xA1\xA2\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xD0\xD1\xD2\xD3\xD5\xD6\xD7\xD8\xD9\xDA\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEC\xED\xEE\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFD\xFE\xFF1Rx\x92\xC6\xC7\xC9\xD8\xDB\xDC\xDD\x94\xA5\xA7\xA9\xBC\xC0  	         & 0 9 D!"!&"""""""""+"H"`"d"\xF2%\xCA00NNN	N]N\x8CN\x94QkQmSAV\xD7V\xDBWg(j*l4pk~\xB5\x91\xD1\xF0\xFE\xFF\xFF\xFF\xFF\xE3\xFF\xE2\xFF\xF9\xFF\xF4\xFF\xE0\xFF\xFD\xFF\xE9\xFF\xDD\xFF\xE2\xFF\xDF\xFF\xE6\xFF\xEC\xFF\xEA
 \xFF\xD9\xFF\xD1\xFF\xDC\xFF\xD5\xFF\xDA\xFF\xCF\xFF\xEB+\xFF\xD7\xFF\xDD+\xFF\xD
 5\xFF\xDA\xFF\xE4\xFF\xE1\xFF\xD8\xFF\x9D\xFF\xC5\xFF\x9C\xFF\xDF\xFF\x9B\xFF\xDA\xFF\xDB\xFF\xDF\xFF\xDB\xFF\xEE\xFF\x94\xFF\xDC\xFF\xD9\xFF\xC7\xFF\x90\xFF\xEE\xFF\xB4\xFF\xD8\xFF\xD5\xFF\x8B\xFF\xE3\xFF\xE4\xFF\xA7\xFF\x89\xFF\x87\xFF\x88\xFF\x89\xFF\x87\xFF\x88\xFF\xAC\xFF\x87\xFF\x88\xFF\x86\xFF\x87\xFF\x88\xFF\x86\xFF\x87\xFF\xCF\xFF\x86\xFF\x87\xFF\x85\xFF\x86\xFF\x87\xFF\x85\xFF\xA8\xFF\x9B\xFF\x85\xFF\x83\xFF\x84\xFF\xC4\xFF\xC5\xFF\xA1\xFF\x81\xFF|\xFFX\xFF?\xFD\xED\xFD\xF5\xFD\xEC\xFD\xDE\xFD\xE0\xFD\xD8\xFD\xDD\xFD>\xFDo\xFDk\xFD*\xFC\xD3\xFD\xE0\xF4\xE0\xF2\xE0\xF3\xDF\xFF\xE0\xC2\xE0\x85\xE0\xBD\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1߭\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xD5޲މ\xDE\xCD\xDE\xCA޾ޥފއ\xDD\xFB\xDB$\xD0\xFE\xD1\xB3\xB3\xB2\xFA\xB2\xAC\xB2v\xB2q\xAF\x9D\xAF\x99\xADɪ5\xAA)\xA9\xF2\x99\xE7\x96\xE9\x94ڐ\xA2\x82`o?\xEF\xF6
 
 \xFF\xFF}k 3!%!!}\xEE\xFD\x8F\xF4\xFE \xFC\xE0}&\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8,
  !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\
 xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, 
 !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC
 \xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!
 ,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF
 8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8\xE81!!\xE8\xFC\xC8\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD
 4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xE8 !!\xE8\xFC \xFC\xE0\xFF8, 
 !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC
 \xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!
 ,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8
 , !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4
  \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, 
 !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC
 \xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xF
 E\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8,
  !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC
 \xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !
 !,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF
 8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\x
 D4 \xFC\xFF8, !!,\xFE\xD4 \xFC\xFF8, !!,\xFE\xD4 \xFC\x90\xE8X!!\xE8\xFCX\xC8\x90\xE8X!!\xE8\xFCX\xC8\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\x80\xF9b\xDC_<\xF5	\xE8\xB3o_Y\xC4ݫ$\xFF8\xE8  \xFF8\xE8\xE8\xE8}\xE8\xE8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\xE8,
 ,,,,,,,,,,,,,,,,\xE8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 ,,,,,\xE8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\xF4\xE8M\xFA\xA7\xC8d\xE8,,,,,,,,,,,,,,,,,\xE8\xE8\xE8\xC8\xE8\xC8!.;HUbo|\x89\x96\xA3\xB0\xBD\xCA\xD7\xE4\xF1\xFE%2?LYfs\x80\x8D\x9A\xA7\xB4\xC1\xCE\xDB\xE8
 \xF5)6CP]jw\x84\x91\x9E\xAB\xB8\xC5\xD2\xDF\xEC\xF9 -:GTan{\x88\x95\xA2\xAF\xBC\xC9\xD6\xE3\xF0\xFD
+#0=JWdq~\x8B\x98\xA5\xB2\xBF\xCC\xD9\xE6\xF3+'4AN[hu\x82\x8F\x9C\xA9\xB6\xC3\xD0\xDD\xEA\xF7+8ER_ly\x86\x93\xA0\xAD\xBA\xC7\xD4\xE1\xEE\xFB"/<IVcp}\x8A\x97\xA4\xA4\xB1\xBE\xCB\xD8\xE5\xF2\xFF&3@MZgt\x81\x8E\x9B\xA8\xB5\xC2\xCF\xDC\xE9\xF6				*	7	D	Q	^	k	x	\x85	\x92	\x9F	\xAC	\xB9	\xC6	\xD3	\xE0	\xED	\xFA
+
+
+!
+.
+;
+H
+U
+b
+o
+|
+\x89
+\x96
+\xA3
+\xB0
+\xBD
+\xCA
+\xD7
+\xE4
+\xF1
+\xFE%2?LYfs\x80\x8D\x9A\xA7\xB4\xC1\xCE\xDB\xE8\xF5)6CCCCCCCCCCCCCP]jw\x84\x91\x9E\xAB\xB8\xC5\xD2\xDF\xEC\xF9+++ +-+:+G+T$\xB6\xF0\xF0\xF8"(0H
+hP$\xB8R\xDC\xF8.&*1BFR
+VV)h\x91\x95\x9C	\xF0\xA0	\x90	\x98	"\xA6	\xC8	\xD0	\xE8	
+h\xF0	$'X	R'|	'\xCE	'\xD6	'\xE4The Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50AhemThe 
 Ahem font was developed by Todd Fahrner and Myles C. Maxfield to help test writers develop predictable tests. The units per em is 1000, the advance is 800, and 
 the descent is 200, thereby making the em square exactly square. The glyphs for most characters is simply a box which fills this square. The codepoints mapped to this full square with a full advance are the following ranges: U+20-U+26, U+28-U+6F, U+71-U+7E, U+A0-U+C8, U+CA-U+FF, U+131, U+152-U+153, U+178, U+192, U+2C6-U+2C7, U+2C9,
  U+2D8-U+2DD, U+394, U+3A5, U+3A7, U+3A9, U+3BC, U+3C0, U+2013-U+2014, U+2018-U+201A, U+201C-U+201E, U+2020-U+2022, U+2026, U+2030, U+2039-U+203A, U+2044, U+2122, U+2
 126, U+2202, U+2206, U+220F, U+2211-U+2212, U+2219-U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-U+2265, U+22F2, U+25CA, U+3007, U+4E00, U+4E03, U+4E09, U+4E5D, U+4E8C, U+4E94, U+516B, U+516D, U+5341, U+56D7, U+56DB, U+571F, U+6728, U+6C34, U+706B, U+91D1, U+F000-U+F002. The codepoints which are mapped to something else are the f
 ollowing: " " (U+20): No path but full advance; "p" (U+70): Path has 0 ascent but full descent; "\xC9" (U+C9): Path has 0 descent but full ascent; Non-br
 eaking space (U+A0): No path but full advance; Zero-width non-breaking space (U+FEFF): No path and 0 advance; En space (U+2002): No path and half advance; Em space (U+2003): No path but full advance; Three-per-em space (U+2004): No path and one third advance; Four-per-em space (U+2005): No path and one quarter advance; Six-per-em 
 space (U+2006): No path and one sixth advance; Thin space (U+2009): No path and one fifth advance; Hair space (U+200A): No path and one tenth advance; Zero width spac
 e (U+200B): No path and no advance; Ideographic space (U+3000): No path but full advance; Zero width non-joiner (U+200C): No path and no advance; Zero width joiner (U+200D): No path and no advance; Greek capital letter Chi (U+3A7): Thin horizontal stripe and full advance; "j*" (U+6A2A): Thin horizontal stripe and full advance; Gr
 eek capital letter Upsilon (U+3A5): Thin vertical stripe and full advance; "~\xB5" (U+7EB5): Thin vertical stripe and full advance.http://www.w3c.orghttp://dev.w
 3.org/CSS/fonts/ahem/COPYING
+The Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50Ahemhttp://www.w3c.orghttp://dev.w3.org/CSS/fonts/ahem/COPYING
+AhemRegularAhemThe Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50AhemThe Ahem font was developed by 
 Todd Fahrner and Myles C. Maxfield to help test writers develop predictable tests. The units per em is 1000, the advance is 800, and the descent is 200, thereby mak
 ing the em square exactly square. The glyphs for most characters is simply a box which fills this square. The codepoints mapped to this full square with a full advance are the following ranges: U+20-U+26, U+28-U+6F, U+71-U+7E, U+A0-U+C8, U+CA-U+FF, U+131, U+152-U+153, U+178, U+192, U+2C6-U+2C7, U+2C9, U+2D8-U+2DD, U+394, U+3A5, U+
 3A7, U+3A9, U+3BC, U+3C0, U+2013-U+2014, U+2018-U+201A, U+201C-U+201E, U+2020-U+2022, U+2026, U+2030, U+2039-U+203A, U+2044, U+2122, U+2126, U+2202, U+2206, U+220F, U
 +2211-U+2212, U+2219-U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-U+2265, U+22F2, U+25CA, U+3007, U+4E00, U+4E03, U+4E09, U+4E5D, U+4E8C, U+4E94, U+516B, U+516D, U+5341, U+56D7, U+56DB, U+571F, U+6728, U+6C34, U+706B, U+91D1, U+F000-U+F002. The codepoints which are mapped to something else are the following: " " (U+20): No pa
 th but full advance; "p" (U+70): Path has 0 ascent but full descent; "\xC9" (U+C9): Path has 0 descent but full ascent; Non-breaking space (U+A0): No path b
 ut full advance; Zero-width non-breaking space (U+FEFF): No path and 0 advance; En space (U+2002): No path and half advance; Em space (U+2003): No path but full advance; Three-per-em space (U+2004): No path and one third advance; Four-per-em space (U+2005): No path and one quarter advance; Six-per-em space (U+2006): No path and one
  sixth advance; Thin space (U+2009): No path and one fifth advance; Hair space (U+200A): No path and one tenth advance; Zero width space (U+200B): No path and no adva
 nce; Ideographic space (U+3000): No path but full advance; Zero width non-joiner (U+200C): No path and no advance; Zero width joiner (U+200D): No path and no advance; Greek capital letter Chi (U+3A7): Thin horizontal stripe and full advance; "j*" (U+6A2A): Thin horizontal stripe and full advance; Greek capital letter Upsilon (U+
 3A5): Thin vertical stripe and full advance; "~\xB5" (U+7EB5): Thin vertical stripe and full advance.http://www.w3c.orghttp://dev.w3.org/CSS/fonts/ahem/COPYING
+AhemRegularAhem\xFF{	+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x83\x84\x85\x86\x88\x89\x8A\x8B\x8D\x8E\x90\x91\x93\x96\x97\x9D\x9E\xA0\xA1\xA2\xA3\xA4\xA9\xAA\xAC\xAD\xAE\xAF\xB6\xB7\xB8\xBA\xBD\xC3\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xB0\xB1\xBB\xA
 6\xA8\x9F\x9B\xB2\xB3\xC4\xB4\xB5\xC5\x82\xC2\x87\xAB\xC6\xBE\xBF\xBC\x8C\x98\x9A\x99\xA5\x92\x9C\x8F\x94\x95\xA7\xB9\xD2\xC0\xC1	
++ !"#$%&'(NULLglyph243glyph204glyph205HTDELuniFEFFuni2002uni2003uni2004uni2005uni2006uni2009uni200Auni200Buni3000	afii61664afii301uni4E00uni4E8Cuni4E09uni56DBuni4E94uni516Duni4E03uni516Buni4E5Duni5341uni3007uni56D7uni706Buni6C34uni6728uni91D1uni571Funi03A7uni6A2Auni03A5uni7EB5
\ No newline at end of file

Added: trunk/LayoutTests/fast/text/resources/AhemErroneousMonospace.ttf (0 => 266118)


--- trunk/LayoutTests/fast/text/resources/AhemErroneousMonospace.ttf	                        (rev 0)
+++ trunk/LayoutTests/fast/text/resources/AhemErroneousMonospace.ttf	2020-08-25 16:03:00 UTC (rev 266118)
@@ -0,0 +1,47 @@
+\x800OS/2sf\xF8\xBC`cmapED\xB4l$gasp	@glyf P\xF6head\xDBP͵!H6hhea
+"!\x80$hmtx(\xA6\x9D!\xA4dloca\xCCB\xD3&4maxp	(< nameѰ+(\,.post@\xF5\x91\xF2T\x8C\x9D\xD6\x90\xBC\x8A\x8F\xBC\x8A\xC52\x80\xAF HW3C @ \xFE\xFF \xFF8 \xC8\xFF\xFC\xFF\xFF   @@&~\xA0\xA1\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCF\xD0\xD1\xD2\xD4\xD5\xD6\xD7\xD8\xD9\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEB\xEC\xED\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFC\xFD\xFE\xFF1Sx\x92\xC6\xC7\xC9\xDA\xDB\xDC\xDD\x94\xA5\xA7
 \xA9\xBC\xC0   +      " & 0 : D!"!&"""""""""+"H"`"e"\xF2%\xCA00NNN	N]N\x
 8CN\x94QkQmSAV\xD7V\xDBWg(j*jkl4pk~&~1~\xB5\x91\xD1\xF0\xFE\xFF\xFF\xFF (\xA0\xA1\xA2\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xD0\xD1\xD2\xD3\xD5\xD6\xD7\xD8\xD9\xDA\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEC\xED\xEE\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFD\xFE\xFF1Rx\x92\xC6\xC7\xC9\xD8\xDB\xDC\xDD\x94\xA5\xA7\xA9\xBC\xC0  	         & 0 9 D!"!&"""""""""+"H"`"d"\xF2%\xCA00NNN	N]N\x8CN\x94QkQmSAV\xD7V\xDBWg(j*jkl4pk~&~1~\xB5\x91\xD1\xF0\xFE\xFF\xFF\xFF\xFF\xE3\xFF\xE2\xFF\xF9\xFF\xF4\xFF\xE0\xFF\xFD\xFF\xE9\xFF\xDD\xFF\xE2\xFF\x
 DF\xFF\xE6\xFF\xEC\xFF\xEA\xFF\xD9\xFF\xD1\xFF\xDC\xFF\xD5\xFF\xDA\xFF\xCF\xFF\xEB+\
 xFF\xD7\xFF\xDD+\xFF\xD5\xFF\xDA\xFF\xE4\xFF\xE1\xFF\xD8\xFF\x9D\xFF\xC5\xFF\x9C\xFF\xDF\xFF\x9B\xFF\xDA\xFF\xDB\xFF\xDF\xFF\xDB\xFF\xEE\xFF\x94\xFF\xDC\xFF\xD9\xFF\xC7\xFF\x90\xFF\xEE\xFF\xB4\xFF\xD8\xFF\xD5\xFF\x8B\xFF\xE3\xFF\xE4\xFF\xA7\xFF\x89\xFF\x87\xFF\x88\xFF\x89\xFF\x87\xFF\x88\xFF\xAC\xFF\x87\xFF\x88\xFF\x86\xFF\x87\xFF\x88\xFF\x86\xFF\x87\xFF\xCF\xFF\x86\xFF\x87\xFF\x85\xFF\x86\xFF\x87\xFF\x85\xFF\xA8\xFF\x9B\xFF\x85\xFF\x83\xFF\x84\xFF\xC4\xFF\xC5\xFF\xA1\xFF\x81\xFF|\xFFX\xFF?\xFD\xED\xFD\xF5\xFD\xEC\xFD\xDE\xFD\xE0\xFD\xD8\xFD\xDD\xFD>\xFDp\xFDk\xFD*\xFC\xD3\xFD\xE0\xF4\xE0\xF2\xE0\xF3\xDF\xFF\xE0\xC2\xE0\x85\xE0\xBD\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1߭\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xD5޲މ\xDE\xCD\xDE\xCA޾ޥފއ\xDD\xFB\xDB$\xD0\xFE\xD1\xB3\xB3\xB2\xFA\xB2\xAC\xB2v\xB2q\xAF\x9D\xAF\x99\xADɪ5\xAA)\xA9\xF2\x99\xE7\x96閩\x94ڐ\xA2\x82\xF1\x82\xE7\x82ao?\xEF\xF6
 
 \xFF\xFF}k 3!%!!}\xEE\xFD\x8F\xF4\xFE \xFC\xE0}&\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 
 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\x
 FF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 
 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 
 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE
 8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xF
 C \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE81!!\xE8\xFC\xC8\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC
 \xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\x
 FF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xE8 !!\xE8\xFC \xFC\xE0\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8
  !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 
 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE
 8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xF
 C \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC
 \xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC
 \xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8
  !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 
 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!
 \xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\
 xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC
 \xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC
 \xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8
 \xE8 !!\xE8\xFC \xFC\x90\xE8X!!\xE8\xFCX\xC8\x90\xE8X!!\xE8\xFCX\xC8\x90\xE8
 X!!\xE8\xFCX\xC8\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\xC8\xFF8\x90 3#\xC8\xC8\xC8 \xFC\x80\xF6d\x82\xF8_<\xF5	\xE8\xB3o_Y\xC4ݫ$\xFF8\xE8  \xFF8\xD0\xE8\xE8}\xE8\xD0\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8
 \xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8
 \xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8
 \xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\
 xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xF4\xE8M\xFA\xA7\xC8d\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xC8\xE8\xC8\xE8\xC8\xE8\xC8!.;HUbo|\x89\x96\xA3\xB0\xBD\xCA\xD7\xE4\xF1\xFE%2?LYfs\x80\x8D\x9A\xA7\xB4\xC1\xCE\xDB\xE8\xF5)6CP]jw\x84\x91\x9E\xAB\xB8\xC5\xD2\xDF\xEC\xF9 -:GTan{\x88\x95\xA2\xAF\xBC\xC9\xD6\xE3\xF0\xFD
+#0=JWdq~\x8B\x98\xA5\xB2\xBF\xCC\xD9\xE6\xF3+'4AN[hu\x82\x8F\x9C\xA9\xB6\xC3\xD0\xDD\xEA\xF7+8ER_ly\x86\x93\xA0\xAD\xBA\xC7\xD4\xE1\xEE\xFB"/<IVcp}\x8A\x97\xA4\xA4\xB1\xBE\xCB\xD8\xE5\xF2\xFF&3@MZgt\x81\x8E\x9B\xA8\xB5\xC2\xCF\xDC\xE9\xF6				*	7	D	Q	^	k	x	\x85	\x92	\x9F	\xAC	\xB9	\xC6	\xD3	\xE0	\xED	\xFA
+
+
+!
+.
+;
+H
+U
+b
+o
+|
+\x89
+\x96
+\xA3
+\xB0
+\xBD
+\xCA
+\xD7
+\xE4
+\xF1
+\xFE%2?LYfs\x80\x8D\x9A\xA7\xB4\xC1\xCE\xDB\xE8\xF5)6CCCCCCCCCCCCCP]jw\x84\x91\x9E\xAB\xB8\xC5\xD2\xDF\xEC\xF9+++ +-+:+G+T+a+n+{$\xB6\xF0\xF0\xF8"(0H
+\xAEP$\xFER"\xF8tlpw\x88\x8C\x98
+\x9C\x9C)\xAE\xD7\xDB\xE2	\xF0\xE6	\xD6	\xDE	"\xEC			.	
+\xAE6	$)\xE4	R*	*Z	*b	*pThe Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50AhemThe Ah
 em font was developed by Todd Fahrner and Myles C. Maxfield to help test writers develop predictable tests. The units per em is 1000, the advance is 800, and the
  descent is 200, thereby making the em square exactly square. The glyphs for most characters is simply a box which fills this square. The codepoints mapped to this full square with a full advance are the following ranges: U+20-U+26, U+28-U+6F, U+71-U+7E, U+A0-U+C8, U+CA-U+FF, U+131, U+152-U+153, U+178, U+192, U+2C6-U+2C7, U+2C9, U+
 2D8-U+2DD, U+394, U+3A5, U+3A7, U+3A9, U+3BC, U+3C0, U+2013-U+2014, U+2018-U+201A, U+201C-U+201E, U+2020-U+2022, U+2026, U+2030, U+2039-U+203A, U+2044, U+2122, U+2126
 , U+2202, U+2206, U+220F, U+2211-U+2212, U+2219-U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-U+2265, U+22F2, U+25CA, U+3007, U+4E00, U+4E03, U+4E09, U+4E5D, U+4E8C, U+4E94, U+516B, U+516D, U+5341, U+56D7, U+56DB, U+571F, U+6728, U+6C34, U+706B, U+91D1, U+F000-U+F002. The codepoints which are mapped to something else are the foll
 owing: " " (U+20): No path but full advance; "p" (U+70): Path has 0 ascent but full descent; "\xC9" (U+C9): Path has 0 descent but full ascent; Non-break
 ing space (U+A0): No path but full advance; Zero-width non-breaking space (U+FEFF): No path and 0 advance; En space (U+2002): No path and half advance; Em space (U+2003): No path but full advance; Three-per-em space (U+2004): No path and one third advance; Four-per-em space (U+2005): No path and one quarter advance; Six-per-em spa
 ce (U+2006): No path and one sixth advance; Thin space (U+2009): No path and one fifth advance; Hair space (U+200A): No path and one tenth advance; Zero width space (
 U+200B): No path and no advance; Ideographic space (U+3000): No path but full advance; Zero width non-joiner (U+200C): No path and no advance; Zero width joiner (U+200D): No path and no advance; Greek capital letter Chi (U+3A7): Thin horizontal stripe and full advance; "j*" (U+6A2A): Thin horizontal stripe and full advance; "jk&qu
 ot; (U+6A6B): Thin horizontal stripe and full advance; Greek capital letter Upsilon (U+3A5): Thin vertical stripe and full advance; "~\xB5" (U+7EB5): Thin vertic
 al stripe and full advance;  "~&" (U+7E26): Thin vertical stripe and full advance;  "~1" (U+7E31): Thin vertical stripe and full advance.http://www.w3c.orghttp://dev.w3.org/CSS/fonts/ahem/COPYING
+The Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50Ahemhttp://www.w3c.orghttp://dev.w3.org/CSS/fonts/ahem/COPYING
+AhemRegularAhemThe Ahem font belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcodeAhemRegularVersion 1.50 AhemAhemVersion 1.50AhemThe Ahem font was developed by 
 Todd Fahrner and Myles C. Maxfield to help test writers develop predictable tests. The units per em is 1000, the advance is 800, and the descent is 200, thereby mak
 ing the em square exactly square. The glyphs for most characters is simply a box which fills this square. The codepoints mapped to this full square with a full advance are the following ranges: U+20-U+26, U+28-U+6F, U+71-U+7E, U+A0-U+C8, U+CA-U+FF, U+131, U+152-U+153, U+178, U+192, U+2C6-U+2C7, U+2C9, U+2D8-U+2DD, U+394, U+3A5, U+
 3A7, U+3A9, U+3BC, U+3C0, U+2013-U+2014, U+2018-U+201A, U+201C-U+201E, U+2020-U+2022, U+2026, U+2030, U+2039-U+203A, U+2044, U+2122, U+2126, U+2202, U+2206, U+220F, U
 +2211-U+2212, U+2219-U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-U+2265, U+22F2, U+25CA, U+3007, U+4E00, U+4E03, U+4E09, U+4E5D, U+4E8C, U+4E94, U+516B, U+516D, U+5341, U+56D7, U+56DB, U+571F, U+6728, U+6C34, U+706B, U+91D1, U+F000-U+F002. The codepoints which are mapped to something else are the following: " " (U+20): No pa
 th but full advance; "p" (U+70): Path has 0 ascent but full descent; "\xC9" (U+C9): Path has 0 descent but full ascent; Non-breaking space (U+A0): No path b
 ut full advance; Zero-width non-breaking space (U+FEFF): No path and 0 advance; En space (U+2002): No path and half advance; Em space (U+2003): No path but full advance; Three-per-em space (U+2004): No path and one third advance; Four-per-em space (U+2005): No path and one quarter advance; Six-per-em space (U+2006): No path and one
  sixth advance; Thin space (U+2009): No path and one fifth advance; Hair space (U+200A): No path and one tenth advance; Zero width space (U+200B): No path and no adva
 nce; Ideographic space (U+3000): No path but full advance; Zero width non-joiner (U+200C): No path and no advance; Zero width joiner (U+200D): No path and no advance; Greek capital letter Chi (U+3A7): Thin horizontal stripe and full advance; "j*" (U+6A2A): Thin horizontal stripe and full advance; "jk" (U+6A6B): Thin horizontal
  stripe and full advance; Greek capital letter Upsilon (U+3A5): Thin vertical stripe and full advance; "~\xB5" (U+7EB5): Thin vertical stripe and full advance; 
  "~&" (U+7E26): Thin vertical stripe and full advance;  "~1" (U+7E31): Thin vertical stripe and full advance.http://www.w3c.orghttp://dev.w3.org/CSS/fonts/ahem/COPYING
+AhemRegularAhem\xFF{	+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x83\x84\x85\x86\x88\x89\x8A\x8B\x8D\x8E\x90\x91\x93\x96\x97\x9D\x9E\xA0\xA1\xA2\xA3\xA4\xA9\xAA\xAC\xAD\xAE\xAF\xB6\xB7\xB8\xBA\xBD\xC3\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xB0\xB1\xBB\xA
 6\xA8\x9F\x9B\xB2\xB3\xC4\xB4\xB5\xC5\x82\xC2\x87\xAB\xC6\xBE\xBF\xBC\x8C\x98\x9A\x99\xA5\x92\x9C\x8F\x94\x95\xA7\xB9\xD2\xC0\xC1	
++ !"#$%&'()*+NULLglyph243glyph204glyph205HTDELuniFEFFuni2002uni2003uni2004uni2005uni2006uni2009uni200Auni200Buni3000	afii61664afii301uni4E00uni4E8Cuni4E09uni56DBuni4E94uni516Duni4E03uni516Buni4E5Duni5341uni3007uni56D7uni706Buni6C34uni6728uni91D1uni571Funi03A7uni6A2Auni6A6Buni03A5uni7EB5uni7E26uni7E31
\ No newline at end of file

Modified: trunk/Source/WebCore/ChangeLog (266117 => 266118)


--- trunk/Source/WebCore/ChangeLog	2020-08-25 15:58:40 UTC (rev 266117)
+++ trunk/Source/WebCore/ChangeLog	2020-08-25 16:03:00 UTC (rev 266118)
@@ -1,3 +1,33 @@
+2020-08-25  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        Fonts lie about being monospaced
+        https://bugs.webkit.org/show_bug.cgi?id=162546
+        <rdar://problem/28494654>
+
+        Reviewed by Darin Adler.
+
+        When a font reports itself to be monospace, we use this as a
+        signal that we can perform width computations by assuming all
+        characters have the same width as the space character. However,
+        some fonts erroneously claim to be monospaced. We can't know
+        this ahead of time without measuring a bunch of characters at
+        font load time, which would be too slow, so even though the
+        optimization would be nice there is no practical way to do it
+        correctly. Firefox and Chrome both do not use this signal, so
+        therefore they both correctly render these fonts. We should
+        ignore this bit in the font as well. Also, CJK fonts generally
+        do not have this bit set (because they usually have at least
+        one character which is not fullwidth) so this isn't a concern
+        there.
+
+        Our Page Load Test shows this is not a performance regression.
+
+        Tests: fast/text/font-erroneous-monospace.html
+               fast/text/font-monospaced-lie.html
+
+        * rendering/RenderText.cpp:
+        (WebCore::RenderText::widthFromCache const):
+
 2020-08-25  Youenn Fablet  <you...@apple.com>
 
         Add support for MediaRecorder bitrate options

Modified: trunk/Source/WebCore/rendering/RenderText.cpp (266117 => 266118)


--- trunk/Source/WebCore/rendering/RenderText.cpp	2020-08-25 15:58:40 UTC (rev 266117)
+++ trunk/Source/WebCore/rendering/RenderText.cpp	2020-08-25 16:03:00 UTC (rev 266118)
@@ -487,36 +487,6 @@
             return combineText.combinedTextWidth(f);
     }
 
-    if (f.isFixedPitch() && f.fontDescription().variantSettings().isAllNormal() && m_isAllASCII && (!glyphOverflow || !glyphOverflow->computeBounds)) {
-        float monospaceCharacterWidth = f.spaceWidth();
-        float w = 0;
-        bool isSpace;
-        for (unsigned i = start; i < start + len; i++) {
-            char c = text()[i];
-            if (c <= ' ') {
-                if (c == ' ' || c == '\n') {
-                    w += monospaceCharacterWidth;
-                    isSpace = true;
-                } else if (c == '\t') {
-                    if (style.collapseWhiteSpace()) {
-                        w += monospaceCharacterWidth;
-                        isSpace = true;
-                    } else {
-                        w += f.tabWidth(style.tabSize(), xPos + w);
-                        isSpace = false;
-                    }
-                } else
-                    isSpace = false;
-            } else {
-                w += monospaceCharacterWidth;
-                isSpace = false;
-            }
-            if (isSpace && i > start)
-                w += f.wordSpacing();
-        }
-        return w;
-    }
-
     TextRun run = RenderBlock::constructTextRun(*this, start, len, style);
     run.setCharacterScanForCodePath(!canUseSimpleFontCodePath());
     run.setTabSize(!style.collapseWhiteSpace(), style.tabSize());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to