Title: [215081] trunk
Revision
215081
Author
mmaxfi...@apple.com
Date
2017-04-06 17:59:57 -0700 (Thu, 06 Apr 2017)

Log Message

Make FontWithFeatures test font pass OTS
https://bugs.webkit.org/show_bug.cgi?id=169788

Reviewed by Tim Horton.

Tools:

OTS, or the OpenType Sanitizer, is a check which tells if fonts are properly formed.
Previously, our FontWithFeatures test font did not pass this check. This patch updates
the font to pass the checks. Now, we can use this font on other platforms, and
contribute the font to the W3C for testing the CSS Fonts level 3 spec.

* FontWithFeatures/FontWithFeatures/FontCreator.cpp:
(Generator::appendCFFTable):
(Generator::Feature::operator<):
(Generator::appendGSUBTable):
(Generator::appendOS2Table):
(Generator::appendFormat4CMAPTable):
(Generator::appendHEADTable):
(Generator::appendHHEATable):
(Generator::NameRecord::operator<):
(Generator::appendNameSubtable):
(Generator::appendNAMETable):

LayoutTests:

Updated font to the one which passes the tests.

* css3/resources/FontWithFeatures.otf:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (215080 => 215081)


--- trunk/LayoutTests/ChangeLog	2017-04-07 00:53:31 UTC (rev 215080)
+++ trunk/LayoutTests/ChangeLog	2017-04-07 00:59:57 UTC (rev 215081)
@@ -1,3 +1,14 @@
+2017-04-06  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        Make FontWithFeatures test font pass OTS
+        https://bugs.webkit.org/show_bug.cgi?id=169788
+
+        Reviewed by Tim Horton.
+
+        Updated font to the one which passes the tests.
+
+        * css3/resources/FontWithFeatures.otf:
+
 2017-04-06  Jiewen Tan  <jiewen_...@apple.com>
 
         LayoutTest crypto/subtle/aes-ctr-encrypt-malformed-parameters.html is a flaky failure

Modified: trunk/LayoutTests/css3/resources/FontWithFeatures.otf (215080 => 215081)


--- trunk/LayoutTests/css3/resources/FontWithFeatures.otf	2017-04-07 00:53:31 UTC (rev 215080)
+++ trunk/LayoutTests/css3/resources/FontWithFeatures.otf	2017-04-07 00:59:57 UTC (rev 215081)
@@ -1,5 +1,5 @@
 OTTO
-\x80 CFF Vy\xD6\xEB\xAC"OGSUBä»…."\xFC\xBAOS/2H\xE0Yb'\xB8dcmap\xD5\xAF(jheadeD\xF9(\x886hheag7(\xC0$hmtx\xD4\x86(\xE4\xD4maxpk)\xB8 name\xD9u/\xEA)\xD8|post8T FontWithFeaturesOTF9\x87\x87\x85\xEEFontWithFeaturesOTF	
+\x80 CFF Vy\xD6\xEA\xAC"OGSUB45\xE9"\xFC\xBAOS/2H\xE0Y`'\xB8dcmap\xD5\xB1(lheadeD\xF8(\x886hheah5(\xC0$hmtx\xD4\x86(\xE4\xD4maxpk)\xB8 name\xD7\xF0/w)\xD8|post8T FontWithFeaturesOTF9\x87\x87\xFF\xFF\xFF\xFF\x85\xEEFontWithFeaturesOTF	
 
  !"#$%&'()*+,-./012345I\xA7G\xE7\x87'\xC7g\xA7G\xE7\x87'\xC7	g
 
@@ -8,18 +8,18 @@
 \xC7g\xA7G\xE7\x87'\xC7g\xA7G\xE7\x87'\xC7g\xA7G\xE7\x87'\xC7g\xA7G\xE7 \x87\xFF\xFF\xFF\xFF\xC8\xFF\xC8\xFF\xFFX\xFFX\xFF\xFF\xFF\xFD\xA8\xFF\xFD\xA8\xFF\xFF\xFF\xFF\xFF\xC8\xFF\xF4\xFF2\xFF2\xFF\xFA\xFF\xFF\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFE>\xFF\xFE>\xFF\xFE\xD4\xFF,\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE
 \xFF\xF
 F\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xF
 F\xFEp
 \xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90
 \xFF\xF
 Ep\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xF
 Ep\xF
 F\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE
 \xFF2
 \xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90
 \xFF\x
 90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\x
 FEp\xF
 F\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\x
 FF2\x
 FF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF
 \x90\
 xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp
 \xFF
 \xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\x
 FF\
 xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\
 xFF&
 ;\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x
 90\xFF
 \x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xF
 F2\xF
 F\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE
 \xFF\xF
 Ep\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xF
 Ep\xF
 F\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp\xFF\xFF\xFF\xFF\xF4\xFF&\xFF\x90\xFF\x90\xFF2\xFF\xFF\xCE\xFF\xFEp\xFF\xFEp\xFF\x90\xF
 F\xFEp
 \xFF\xFF\xCE\xFF\xFF\xCE\xFF\xFEp\xFF\x90\xFF\xFEp\xFF\xFEp\xFF\xFF\xCE\xFF2\xFF\x90\xFF\x90\xFF\xFEp\xFF\x90\xFF2\xFF2\xFF\x90\xFF\xFEp
 Z\xD0DFLT\xFF\xFF	
 
-liga\xBCclig\xC2dlig\xC8hlig\xCEcalt\xD4subs\xDAsups\xE0smcp\xE6c2sc\xECpcap\xF2c2pc\xF8unic\xFEtitllnum
-onumpnumtnumfrac"afrc(ordn.zero4hist:jp78@jp83Fjp90Ljp04RsmplXtrad^fwiddpwidjrubyp	
+afrc\xBCc2pc\xC2c2sc\xC8calt\xCEclig\xD4dlig\xDAfrac\xE0fwid\xE6hist\xEChlig\xF2jp04\xF8jp78\xFEjp83jp90
+ligalnumonumordn"pcap(pnum.pwid4ruby:smcp@smplFsubsLsupsRtitlXtnum^traddunicjzerop	
 
 @HPX`hpx\x80\x88\x90\x98\xA0\xA8\xB0\xB8\xC0\xC8\xD0\xD8\xE0\xE8\xF0\xF8 (0\xF8\xFE
-"(.4:@FLRX^djpv|\x82\x88\x8E\x94\x9A\xA0\xA6\xAC	
-
- !\xF4TKBW\xFF\xFFf\xFF\xFC\xFF\xFF \xFF\xFFD
-(AZaz&Zz\xFF\xFFAa\xFF\xFF\xFF\xDA\xFF\xA0^\xF7w`_<\xF5f5\xC8\xC82222222222222222222222222222222222222222222222222225\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF5B&&&&L&r\x98&\x9E\xC44\xE0<6P>\x860\xC42\xF4<&	>b.<\xA0
-2\xDC>@L
-*\x8C*\xB6$\xE0$+"(J*f6\x908\xC6\xFE*6D8z\xB2*\xD0\xFA"\xFE* (Jr *\x90!2\xBA"2\xEC#$$*B%8l&4\xA4'\xD8(*\xF4)4*4R,,\x86-,\xB2/&\xDE0*	14	.24	b34	\x9644	\xCA5:	\xFE6<
+"(.4:@FLRX^djpv|\x82\x88\x8E\x94\x9A\xA0\xA6\xAC
+ !
+	\xF4TKBW\xFF\xFF\xFF\xFFf\xFF\xFC\xFF\xFF \xFF\xFFD
+(AZaz(Zz\xFF\xFFAa\xFF\xFF\xFF\xDA\xFF\xA0\xC3t\xD6_<\xF5\xFF\xFF\xFF\xFFf5\xC8\xC82222222222222222222222222222222222222222222222222225\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF5B&&&&L&r\x98&\x9E\xC44\xE0<6P>\x860\xC42\xF4<&	>b
+2\xA0>\xD2@
+*P*z$\xA4$\xC8\xEC*2*N6x6\xAE8\xE48T*r\x9C"\xA0*\xC2(\xEC *2!2\"2\x8E#$\xC0$*\xE4%8&4F'z(*\x96)4\xC0*4\xF4+"(,,J-,v.<\xA2/&\xDE0*	14	.24	b34	\x9644	\xCA5:	\xFE6<
 87 
 t8*
 \x949.
 \xBE:2
-\xEC;<&8FontWithFeaturesOTFFontWithFeaturesOTFFontWithFeaturesOTFFontWithFeaturesOTF1.0FontWithFeaturesOTFkLigaturesTypekCommonLigaturesOnSelectorkContextualLigaturesOnSelectorkCommonLigaturesOffSelectorkContextualLigaturesOffSelectorkRareLigaturesOnSelectorkRareLigaturesOffSelectorkHistoricalLigaturesOnSelectorkHistoricalLigaturesOffSelectorkHistoricalLigaturesOnSelectorkContextualAlternatesTypekContextualAlternatesOnSelectorkContextualAlternatesOffSelectorkVerticalPosition
 Type
 defaultUnusedSelectorkInferiorsSelectorkSuperiorsSelectorkOrdinalsSelectorkLowerCaseTypedefaultUnusedSelectorkLowerCaseSmallCapsSelectorkLowerCasePetiteCapsSelectorkUpperCaseTypedefaultUnusedSelectorkUpperCaseSmallCapsSelectorkUpperCasePetiteCapsSelectorkLetterCaseTypedefaultUnusedSelector14kStyleOptionsTypedefaultUnusedSelectorkTitlingCapsSelectorkNumberCaseTypedefaultUnusedSelectorkUpperCaseNumbersSelectorkLowerCaseNumbersSelectorkNumberSpacingTypedefaultUnusedSelectorkProportionalNumber
 sSel
 ectorkMonospacedNumbersSelectorkFractionsTypedefaultUnusedSelectorkDiagonalFractionsSelectorkVerticalFractionsSelectorkTypographicExtrasTypekSlashedZeroOnSelectorkCharacterShapeTypedefaultUnusedSelectorkJIS1978CharactersSelectorkJIS1983CharactersSelectorkJIS1990CharactersSelectorkJIS2004CharactersSelectorkSimplifiedCharactersSelectorkTraditionalCharactersSelectorkTextSpacingTypedefaultUnusedSelectorkMonospacedTextSelectorkProportionalTextSelectorkRubyKanaTypekRubyKanaOnSelector
 
\ No newline at end of file
+\xEC;<&8FontWithFeaturesOTFFontWithFeaturesOTFFontWithFeaturesOTFFontWithFeaturesOTF1.0FontWithFeaturesOTFkLigaturesTypekCommonLigaturesOnSelectorkContextualLigaturesOnSelectorkCommonLigaturesOffSelectorkContextualLigaturesOffSelectorkRareLigaturesOnSelectorkRareLigaturesOffSelectorkHistoricalLigaturesOnSelectorkHistoricalLigaturesOffSelectorkContextualAlternatesTypekContextualAlternatesOnSelectorkContextualAlternatesOffSelectorkVerticalPositionTypedefaultUnusedSelectorkInfe
 rior
 sSelectorkSuperiorsSelectorkLowerCaseTypedefaultUnusedSelectorkUpperCaseTypedefaultUnusedSelectorkLowerCaseSmallCapsSelectorkUpperCaseSmallCapsSelectorkLowerCasePetiteCapsSelectorkUpperCasePetiteCapsSelectorkLetterCaseTypedefaultUnusedSelector14kStyleOptionsTypedefaultUnusedSelectorkTitlingCapsSelectorkNumberCaseTypedefaultUnusedSelectorkUpperCaseNumbersSelectorkLowerCaseNumbersSelectorkNumberSpacingTypedefaultUnusedSelectorkProportionalNumbersSelectorkMonospacedNumbersSelectorkFractionsTy
 pede
 faultUnusedSelectorkDiagonalFractionsSelectorkVerticalFractionsSelectorkOrdinalsSelectorkTypographicExtrasTypekSlashedZeroOnSelectorkHistoricalLigaturesOnSelectorkCharacterShapeTypedefaultUnusedSelectorkJIS1978CharactersSelectorkJIS1983CharactersSelectorkJIS1990CharactersSelectorkJIS2004CharactersSelectorkSimplifiedCharactersSelectorkTraditionalCharactersSelectorkTextSpacingTypedefaultUnusedSelectorkMonospacedTextSelectorkProportionalTextSelectorkRubyKanaTypekRubyKanaOnSelector
 
\ No newline at end of file

Modified: trunk/Tools/ChangeLog (215080 => 215081)


--- trunk/Tools/ChangeLog	2017-04-07 00:53:31 UTC (rev 215080)
+++ trunk/Tools/ChangeLog	2017-04-07 00:59:57 UTC (rev 215081)
@@ -1,3 +1,27 @@
+2017-04-06  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        Make FontWithFeatures test font pass OTS
+        https://bugs.webkit.org/show_bug.cgi?id=169788
+
+        Reviewed by Tim Horton.
+
+        OTS, or the OpenType Sanitizer, is a check which tells if fonts are properly formed.
+        Previously, our FontWithFeatures test font did not pass this check. This patch updates
+        the font to pass the checks. Now, we can use this font on other platforms, and
+        contribute the font to the W3C for testing the CSS Fonts level 3 spec.
+
+        * FontWithFeatures/FontWithFeatures/FontCreator.cpp:
+        (Generator::appendCFFTable):
+        (Generator::Feature::operator<):
+        (Generator::appendGSUBTable):
+        (Generator::appendOS2Table):
+        (Generator::appendFormat4CMAPTable):
+        (Generator::appendHEADTable):
+        (Generator::appendHHEATable):
+        (Generator::NameRecord::operator<):
+        (Generator::appendNameSubtable):
+        (Generator::appendNAMETable):
+
 2017-04-06  Alexey Proskuryakov  <a...@apple.com>
 
         Disable flaky WebKit2.ResizeWithHiddenContentDoesNotHang

Modified: trunk/Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp (215080 => 215081)


--- trunk/Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp	2017-04-07 00:53:31 UTC (rev 215080)
+++ trunk/Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp	2017-04-07 00:59:57 UTC (rev 215081)
@@ -612,7 +612,7 @@
         result.push_back(operand32Bit);
         append32(clampTo<int32_t>(0)); // Bounding box x
         result.push_back(operand32Bit);
-        append32(clampTo<int32_t>(0)); // Bounding box y
+        append32(clampTo<int32_t>(-1)); // Bounding box y
         result.push_back(operand32Bit);
         append32(clampTo<int32_t>(unitsPerEm)); // Bounding box max x
         result.push_back(operand32Bit);
@@ -821,9 +821,20 @@
             append16(i); // Features indices
     }
 
+    struct Feature {
+        bool operator<(const Feature& o) const
+        {
+            return tag < o.tag;
+        }
+
+        std::array<char, 5> tag;
+        uint16_t glyphToReplace;
+    };
+
     void appendGSUBTable()
     {
-        std::vector<std::array<char, 5>> features {{"liga"}, {"clig"}, {"dlig"}, {"hlig"}, {"calt"}, {"subs"}, {"sups"}, {"smcp"}, {"c2sc"}, {"pcap"}, {"c2pc"}, {"unic"}, {"titl"}, {"lnum"}, {"onum"}, {"pnum"}, {"tnum"}, {"frac"}, {"afrc"}, {"ordn"}, {"zero"}, {"hist"}, {"jp78"}, {"jp83"}, {"jp90"}, {"jp04"}, {"smpl"}, {"trad"}, {"fwid"}, {"pwid"}, {"ruby"}};
+        std::vector<Feature> features {{{"liga"}, 3}, {{"clig"}, 4}, {{"dlig"}, 5}, {{"hlig"}, 6}, {{"calt"}, 7}, {{"subs"}, 8}, {{"sups"}, 9}, {{"smcp"}, 10}, {{"c2sc"}, 11}, {{"pcap"}, 12}, {{"c2pc"}, 13}, {{"unic"}, 14}, {{"titl"}, 15}, {{"lnum"}, 16}, {{"onum"}, 17}, {{"pnum"}, 18}, {{"tnum"}, 19}, {{"frac"}, 20}, {{"afrc"}, 21}, {{"ordn"}, 22}, {{"zero"}, 23}, {{"hist"}, 24}, {{"jp78"}, 25}, {{"jp83"}, 26}, {{"jp90"}, 27}, {{"jp04"}, 28}, {{"smpl"}, 29}, {{"trad"}, 30}, {{"fwid"}, 31}, {{"pwid"}, 32}, {{"ruby"}, 33}};
+        std::sort(features.begin(), features.end());
         auto tableLocation = result.size();
         auto headerSize = 10;
 
@@ -850,7 +861,7 @@
         append16(features.size()); // FeatureCount
         for (unsigned i = 0; i < features.size(); ++i) {
             auto& code = features[i];
-            append32BitCode(code.data()); // Feature name
+            append32BitCode(code.tag.data()); // Feature name
             append16(featureListSize + featureTableSize * i); // Offset of feature table, relative to beginning of FeatureList table
         }
         assert(featureListLocation + featureListSize == result.size());
@@ -880,7 +891,7 @@
         }
 
         for (unsigned i = 0; i < features.size(); ++i)
-            appendSubstitutionSubtable(subtableRecordLocations[i], 3 + i, 1);
+            appendSubstitutionSubtable(subtableRecordLocations[i], features[i].glyphToReplace, 1);
     }
 
     void appendOS2Table()
@@ -913,10 +924,10 @@
         append16(0); // First unicode index
         append16(0xFFFF); // Last unicode index
         append16(clampTo<int16_t>(unitsPerEm)); // Typographical ascender
-        append16(clampTo<int16_t>(1)); // Typographical descender
+        append16(clampTo<int16_t>(-1)); // Typographical descender
         append16(clampTo<int16_t>(unitsPerEm / 10)); // Typographical line gap
         append16(clampTo<uint16_t>(unitsPerEm)); // Windows-specific ascent
-        append16(clampTo<uint16_t>(1)); // Windows-specific descent
+        append16(clampTo<uint16_t>(0)); // Windows-specific descent
         append32(0xFF10FC07); // Bitmask for supported codepages (Part 1). Report all pages as supported.
         append32(0x0000FFFF); // Bitmask for supported codepages (Part 2). Report all pages as supported.
         append16(clampTo<int16_t>(unitsPerEm / 2)); // x-height
@@ -979,6 +990,7 @@
         // idRangeOffset
         append16(0); // idRangeOffset
         append16(0);
+        append16(0);
 
         // Fonts strive to hold 2^16 glyphs, but with the current encoding scheme, we write 8 bytes per codepoint into this subtable.
         // Because the size of this subtable must be represented as a 16-bit number, we are limiting the number of glyphs we support to 2^13.
@@ -1024,7 +1036,7 @@
         append32(0); // First half of modification date
         append32(0); // Last half of modification date
         append16(clampTo<int16_t>(0)); // bounding box x
-        append16(clampTo<int16_t>(0)); // bounding box y
+        append16(clampTo<int16_t>(-1)); // bounding box y
         append16(clampTo<int16_t>(unitsPerEm)); // bounding box max x
         append16(clampTo<int16_t>(unitsPerEm)); // bounding box max y
         append16(0); // Traits
@@ -1038,7 +1050,7 @@
     {
         append32(0x00010000); // Version
         append16(clampTo<int16_t>(unitsPerEm)); // ascent
-        append16(clampTo<int16_t>(1)); // descent
+        append16(clampTo<int16_t>(-1)); // descent
         // WebKit SVG font rendering has hard coded the line gap to be 1/10th of the font size since 2008 (see r29719).
         append16(clampTo<int16_t>(unitsPerEm / 10)); // line gap
         append16(clampTo<uint16_t>(unitsPerEm)); // advance width max
@@ -1082,15 +1094,25 @@
         append16(0); // No compound glyphs
     }
 
-    void appendNameSubtable(const std::string& s, uint16_t nameIdentifier)
+    struct NameRecord {
+        bool operator<(const NameRecord& o) const
+        {
+            return nameIdentifier < o.nameIdentifier;
+        }
+
+        uint16_t nameIdentifier;
+        std::string value;
+    };
+
+    void appendNameSubtable(const NameRecord& nameRecord)
     {
         append16(0); // Unicode
         append16(3); // Unicode version 2.0 or later
         append16(0); // Language
-        append16(nameIdentifier); // Name identifier
-        append16(s.length() * 2); // Code units get 2 bytes each
+        append16(nameRecord.nameIdentifier); // Name identifier
+        append16(nameRecord.value.length() * 2); // Code units get 2 bytes each
         append16(m_nameOffset); // Offset into name data
-        m_nameOffset += s.size() * 2; // Code units get 2 bytes each
+        m_nameOffset += nameRecord.value.size() * 2; // Code units get 2 bytes each
     }
 
     void append2ByteASCIIString(std::string& s)
@@ -1109,29 +1131,19 @@
         append16(numberOfRecords); // Number of name records in table
         append16(6 + 12 * numberOfRecords); // Offset in bytes to the beginning of name character strings
 
-        appendNameSubtable(familyName, 1); // 1: Font Family.
-        appendNameSubtable(familyName, 2); // 2: Font Subfamily.
-        appendNameSubtable(familyName, 3); // 3: Unique subfamily identification.
-        appendNameSubtable(familyName, 4); // 4: Full name of the font.
-        appendNameSubtable(version, 5); // 5: Version of the name table.
-        appendNameSubtable(familyName, 6); // 6: PostScript name of the font.
+        std::vector<NameRecord> nameRecords = { { 1, familyName }, { 2, familyName }, { 3, familyName }, { 4, familyName }, { 5, version }, { 6, familyName } };
         for (FeatureType& type : featureDescription) {
-            appendNameSubtable(type.name, m_baseStringIndex + type.stringIndex);
+            nameRecords.push_back({ static_cast<uint16_t>(m_baseStringIndex + type.stringIndex), type.name });
             for (FeatureSelector& selector : type.selectors)
-                appendNameSubtable(selector.name, m_baseStringIndex + selector.stringIndex);
+                nameRecords.push_back({ static_cast<uint16_t>(m_baseStringIndex + selector.stringIndex), selector.name });
         }
+        std::sort(nameRecords.begin(), nameRecords.end());
 
-        append2ByteASCIIString(familyName);
-        append2ByteASCIIString(familyName);
-        append2ByteASCIIString(familyName);
-        append2ByteASCIIString(familyName);
-        append2ByteASCIIString(version);
-        append2ByteASCIIString(familyName);
-        for (FeatureType& type : featureDescription) {
-            append2ByteASCIIString(type.name);
-            for (FeatureSelector& selector : type.selectors)
-                append2ByteASCIIString(selector.name);
-        }
+        for (auto& nameRecord : nameRecords)
+            appendNameSubtable(nameRecord);
+
+        for (auto& nameRecord : nameRecords)
+            append2ByteASCIIString(nameRecord.value);
     }
     
     void appendPOSTTable()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to