Title: [194350] branches/safari-601.1.46-branch

Diff

Modified: branches/safari-601.1.46-branch/LayoutTests/ChangeLog (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/ChangeLog	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/ChangeLog	2015-12-21 22:27:59 UTC (rev 194350)
@@ -1,3 +1,25 @@
+2015-12-21  Babak Shafiei  <[email protected]>
+
+        Merge r194114.
+
+    2015-12-15  Myles C. Maxfield  <[email protected]>
+
+            [Font Features] TrueType fonts trigger real features even when synthesis is applied
+            https://bugs.webkit.org/show_bug.cgi?id=152287
+
+            Reviewed by Darin Adler.
+
+            Adding tests.
+
+            * css3/font-variant-petite-caps-synthesis-expected.html:
+            * css3/font-variant-petite-caps-synthesis.html:
+            * css3/font-variant-small-caps-synthesis-expected.html:
+            * css3/font-variant-small-caps-synthesis.html:
+            * css3/font-variant-petite-caps-synthesis-coverage-expected.html:
+            * css3/font-variant-petite-caps-synthesis-coverage.html:
+            * css3/font-variant-small-caps-synthesis-coverage-expected.html:
+            * css3/font-variant-small-caps-synthesis-coverage.html:
+
 2015-12-18  Matthew Hanson  <[email protected]>
 
         Merge r194246. rdar://problem/23824469

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -41,6 +41,23 @@
 <div class="test">AB</div>
 <div class="test">BA</div>
 </div>
+<div style="font-family: testfont; border: solid black 1px; margin: 5px;">
+<div class="test">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span>B</div>
+<div class="test">B<span style="font-size: 14px;">A</span></div>
+<div class="test">AA</div>
+<div class="test">AA</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span>K</div>
+<div class="test">K<span style="font-size: 14px;">A</span></div>
+<div class="test">AB</div>
+<div class="test">BA</div>
+</div>
 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test">A</div>
@@ -54,6 +71,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+</div>
 </body>
 </html>

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -7,6 +7,12 @@
     font-family: "testfontotf";
     src: url("resources/FontWithFeatures.otf") format("opentype");
 }
+@font-face {
+    /* Truetype. "S" responds to smcp; "V" responds to c2sc */
+    /* Truetype. "T" responds to smcp; "W" responds to c2sc */
+    font-family: "testfontttf";
+    src: url("resources/FontWithFeatures.ttf") format("truetype");
+}
 .test {
     font-size: 20px;
     display: inline-block;
@@ -42,6 +48,23 @@
 <div class="test" style="font-variant-caps: petite-caps;">AM</div>
 <div class="test" style="font-variant-caps: petite-caps;">MA</div>
 </div>
+<div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">T</div>
+<div class="test">W</div>
+<div class="test" style="font-variant-caps: petite-caps;">a</div>
+<div class="test" style="font-variant-caps: petite-caps;">T</div>
+<div class="test" style="font-variant-caps: petite-caps;">aT</div>
+<div class="test" style="font-variant-caps: petite-caps;">Ta</div>
+<div class="test" style="font-variant-caps: petite-caps;">AT</div>
+<div class="test" style="font-variant-caps: petite-caps;">TA</div>
+<div class="test" style="font-variant-caps: petite-caps;">W</div>
+<div class="test" style="font-variant-caps: petite-caps;">aW</div>
+<div class="test" style="font-variant-caps: petite-caps;">Wa</div>
+<div class="test" style="font-variant-caps: petite-caps;">AW</div>
+<div class="test" style="font-variant-caps: petite-caps;">WA</div>
+</div>
 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-petite-caps;">a</div>
 <div class="test" style="font-variant-caps: all-petite-caps;">L</div>
@@ -55,6 +78,19 @@
 <div class="test" style="font-variant-caps: all-petite-caps;">AM</div>
 <div class="test" style="font-variant-caps: all-petite-caps;">MA</div>
 </div>
+<div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-petite-caps;">a</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">T</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">aT</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">Ta</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">AT</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">TA</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">W</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">aW</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">Wa</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">AW</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">WA</div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -41,6 +41,23 @@
 <div class="test">AB</div>
 <div class="test">BA</div>
 </div>
+<div style="font-family: testfont; border: solid black 1px; margin: 5px;">
+<div class="test">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span>B</div>
+<div class="test">B<span style="font-size: 14px;">A</span></div>
+<div class="test">AA</div>
+<div class="test">AA</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span>K</div>
+<div class="test">K<span style="font-size: 14px;">A</span></div>
+<div class="test">AB</div>
+<div class="test">BA</div>
+</div>
 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">B</span></div>
@@ -54,6 +71,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-petite-caps-synthesis.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -7,6 +7,12 @@
     font-family: "testfontotf";
     src: url("resources/FontWithFeatures.otf") format("opentype");
 }
+@font-face {
+    /* Truetype. "S" responds to smcp; "V" responds to c2sc */
+    /* Truetype. "T" responds to smcp; "W" responds to c2sc */
+    font-family: "testfontttf";
+    src: url("resources/FontWithFeatures.ttf") format("truetype");
+}
 .test {
     font-size: 20px;
     display: inline-block;
@@ -42,6 +48,23 @@
 <div class="test" style="font-variant-caps: petite-caps;">AM</div>
 <div class="test" style="font-variant-caps: petite-caps;">MA</div>
 </div>
+<div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">T</div>
+<div class="test">W</div>
+<div class="test" style="font-variant-caps: petite-caps;">a</div>
+<div class="test" style="font-variant-caps: petite-caps;">T</div>
+<div class="test" style="font-variant-caps: petite-caps;">aT</div>
+<div class="test" style="font-variant-caps: petite-caps;">Ta</div>
+<div class="test" style="font-variant-caps: petite-caps;">AT</div>
+<div class="test" style="font-variant-caps: petite-caps;">TA</div>
+<div class="test" style="font-variant-caps: petite-caps;">W</div>
+<div class="test" style="font-variant-caps: petite-caps;">aW</div>
+<div class="test" style="font-variant-caps: petite-caps;">Wa</div>
+<div class="test" style="font-variant-caps: petite-caps;">AW</div>
+<div class="test" style="font-variant-caps: petite-caps;">WA</div>
+</div>
 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-petite-caps;">a</div>
 <div class="test" style="font-variant-caps: all-petite-caps;">L</div>
@@ -55,6 +78,19 @@
 <div class="test" style="font-variant-caps: all-petite-caps;">AM</div>
 <div class="test" style="font-variant-caps: all-petite-caps;">MA</div>
 </div>
+<div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-petite-caps;">a</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">T</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">aT</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">Ta</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">AT</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">TA</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">W</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">aW</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">Wa</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">AW</div>
+<div class="test" style="font-variant-caps: all-petite-caps;">WA</div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -41,6 +41,23 @@
 <div class="test">AB</div>
 <div class="test">BA</div>
 </div>
+<div style="font-family: testfont; border: solid black 1px; margin: 5px;">
+<div class="test">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span>B</div>
+<div class="test">B<span style="font-size: 14px;">A</span></div>
+<div class="test">AA</div>
+<div class="test">AA</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span>K</div>
+<div class="test">K<span style="font-size: 14px;">A</span></div>
+<div class="test">AB</div>
+<div class="test">BA</div>
+</div>
 <div style="font-family: testfont; border: solid red 1px; margin: 5px;">
 <div class="test"style="">AB</div>
 <div class="test">B</div>
@@ -60,6 +77,25 @@
 <div class="test">A<span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">A</span>A</div>
 </div>
+<div style="font-family: testfont; border: solid red 1px; margin: 5px;">
+<div class="test"style="">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">A</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test">AA</div>
+<div class="test">AA</div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A<span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span>A</div>
+</div>
 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test">A</div>
@@ -73,6 +109,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+</div>
 <div style="font-family: testfont; border: solid green 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test">A</div>
@@ -86,6 +135,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid green 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+</div>
 </body>
 </html>

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -9,10 +9,20 @@
     src: url("resources/FontWithFeatures.otf") format("opentype");
 }
 @font-face {
+    /* Truetype. "S" responds to smcp; "V" responds to c2sc */
+    font-family: "testfontttf";
+    src: url("resources/FontWithFeatures.ttf") format("truetype");
+}
+@font-face {
     /* Opentype. "f" responds to smcp; "g" responds to c2sc */
     font-family: "testfontlowercasesmallcapsotf";
     src: url("resources/FontWithFeaturesLowercaseSmallCaps.otf") format("opentype");
 }
+@font-face {
+    /* Truetype. "r" responds to smcp; "u" responds to c2sc */
+    font-family: "testfontlowercasesmallcapsttf";
+    src: url("resources/FontWithFeaturesLowercaseSmallCaps.ttf") format("truetype");
+}
 .test {
     font-size: 20px;
     display: inline-block;
@@ -48,6 +58,23 @@
 <div class="test" style="font-variant-caps: small-caps;">AK</div>
 <div class="test" style="font-variant-caps: small-caps;">KA</div>
 </div>
+<div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">S</div>
+<div class="test">V</div>
+<div class="test" style="font-variant-caps: small-caps;">a</div>
+<div class="test" style="font-variant-caps: small-caps;">S</div>
+<div class="test" style="font-variant-caps: small-caps;">aS</div>
+<div class="test" style="font-variant-caps: small-caps;">Sa</div>
+<div class="test" style="font-variant-caps: small-caps;">AS</div>
+<div class="test" style="font-variant-caps: small-caps;">SA</div>
+<div class="test" style="font-variant-caps: small-caps;">V</div>
+<div class="test" style="font-variant-caps: small-caps;">aV</div>
+<div class="test" style="font-variant-caps: small-caps;">Va</div>
+<div class="test" style="font-variant-caps: small-caps;">AV</div>
+<div class="test" style="font-variant-caps: small-caps;">VA</div>
+</div>
 <div style="font-family: testfontlowercasesmallcapsotf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test">AB</div>
 <div class="test">a</div>
@@ -67,6 +94,25 @@
 <div class="test" style="font-variant-caps: small-caps;">Ag</div>
 <div class="test" style="font-variant-caps: small-caps;">gA</div>
 </div>
+<div style="font-family: testfontlowercasesmallcapsttf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">r</div>
+<div class="test">u</div>
+<div class="test">R</div>
+<div class="test">U</div>
+<div class="test" style="font-variant-caps: small-caps;">a</div>
+<div class="test" style="font-variant-caps: small-caps;">r</div>
+<div class="test" style="font-variant-caps: small-caps;">ar</div>
+<div class="test" style="font-variant-caps: small-caps;">ra</div>
+<div class="test" style="font-variant-caps: small-caps;">Ar</div>
+<div class="test" style="font-variant-caps: small-caps;">rA</div>
+<div class="test" style="font-variant-caps: small-caps;">u</div>
+<div class="test" style="font-variant-caps: small-caps;">au</div>
+<div class="test" style="font-variant-caps: small-caps;">ua</div>
+<div class="test" style="font-variant-caps: small-caps;">Au</div>
+<div class="test" style="font-variant-caps: small-caps;">uA</div>
+</div>
 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-small-caps;">a</div>
 <div class="test" style="font-variant-caps: all-small-caps;">J</div>
@@ -80,6 +126,19 @@
 <div class="test" style="font-variant-caps: all-small-caps;">AK</div>
 <div class="test" style="font-variant-caps: all-small-caps;">KA</div>
 </div>
+<div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-small-caps;">a</div>
+<div class="test" style="font-variant-caps: all-small-caps;">S</div>
+<div class="test" style="font-variant-caps: all-small-caps;">aS</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Sa</div>
+<div class="test" style="font-variant-caps: all-small-caps;">AS</div>
+<div class="test" style="font-variant-caps: all-small-caps;">SA</div>
+<div class="test" style="font-variant-caps: all-small-caps;">V</div>
+<div class="test" style="font-variant-caps: all-small-caps;">aV</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Va</div>
+<div class="test" style="font-variant-caps: all-small-caps;">AV</div>
+<div class="test" style="font-variant-caps: all-small-caps;">VA</div>
+</div>
 <div style="font-family: testfontlowercasesmallcapsotf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-small-caps;">a</div>
 <div class="test" style="font-variant-caps: all-small-caps;">f</div>
@@ -91,8 +150,21 @@
 <div class="test" style="font-variant-caps: all-small-caps;">ag</div>
 <div class="test" style="font-variant-caps: all-small-caps;">ga</div>
 <div class="test" style="font-variant-caps: all-small-caps;">Ag</div>
-<div class="test" style="font-variant-caps: all-small-caps;">gA</div
+<div class="test" style="font-variant-caps: all-small-caps;">gA</div>
 </div>
+<div style="font-family: testfontlowercasesmallcapsttf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-small-caps;">a</div>
+<div class="test" style="font-variant-caps: all-small-caps;">r</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ar</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ra</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Ar</div>
+<div class="test" style="font-variant-caps: all-small-caps;">rA</div>
+<div class="test" style="font-variant-caps: all-small-caps;">u</div>
+<div class="test" style="font-variant-caps: all-small-caps;">au</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ua</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Au</div>
+<div class="test" style="font-variant-caps: all-small-caps;">uA</div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -41,6 +41,23 @@
 <div class="test">AB</div>
 <div class="test">BA</div>
 </div>
+<div style="font-family: testfont; border: solid black 1px; margin: 5px;">
+<div class="test">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test">A</div>
+<div class="test"><span style="font-size: 14px;">A</span>B</div>
+<div class="test">B<span style="font-size: 14px;">A</span></div>
+<div class="test">AA</div>
+<div class="test">AA</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span>K</div>
+<div class="test">K<span style="font-size: 14px;">A</span></div>
+<div class="test">AB</div>
+<div class="test">BA</div>
+</div>
 <div style="font-family: testfont; border: solid red 1px; margin: 5px;">
 <div class="test"style="">AB</div>
 <div class="test">B</div>
@@ -60,6 +77,25 @@
 <div class="test">A<span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">A</span>A</div>
 </div>
+<div style="font-family: testfont; border: solid red 1px; margin: 5px;">
+<div class="test"style="">AB</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">B</div>
+<div class="test">A</div>
+<div class="test">B</div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A<span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span>A</div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test">A<span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span>A</div>
+</div>
 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">B</span></div>
@@ -73,6 +109,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid blue 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+</div>
 <div style="font-family: testfont; border: solid green 1px; margin: 5px;">
 <div class="test"><span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">B</span></div>
@@ -86,6 +135,19 @@
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
 </div>
+<div style="font-family: testfont; border: solid green 1px; margin: 5px;">
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
+<div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div>
+<div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis.html (194349 => 194350)


--- branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis.html	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/LayoutTests/css3/font-variant-small-caps-synthesis.html	2015-12-21 22:27:59 UTC (rev 194350)
@@ -9,10 +9,20 @@
     src: url("resources/FontWithFeatures.otf") format("opentype");
 }
 @font-face {
+    /* Truetype. "S" responds to smcp; "V" responds to c2sc */
+    font-family: "testfontttf";
+    src: url("resources/FontWithFeatures.ttf") format("truetype");
+}
+@font-face {
     /* Opentype. "f" responds to smcp; "g" responds to c2sc */
     font-family: "testfontlowercasesmallcapsotf";
     src: url("resources/FontWithFeaturesLowercaseSmallCaps.otf") format("opentype");
 }
+@font-face {
+    /* Truetype. "r" responds to smcp; "u" responds to c2sc */
+    font-family: "testfontlowercasesmallcapsttf";
+    src: url("resources/FontWithFeaturesLowercaseSmallCaps.ttf") format("truetype");
+}
 .test {
     font-size: 20px;
     display: inline-block;
@@ -48,6 +58,23 @@
 <div class="test" style="font-variant-caps: small-caps;">AK</div>
 <div class="test" style="font-variant-caps: small-caps;">KA</div>
 </div>
+<div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">S</div>
+<div class="test">V</div>
+<div class="test" style="font-variant-caps: small-caps;">a</div>
+<div class="test" style="font-variant-caps: small-caps;">S</div>
+<div class="test" style="font-variant-caps: small-caps;">aS</div>
+<div class="test" style="font-variant-caps: small-caps;">Sa</div>
+<div class="test" style="font-variant-caps: small-caps;">AS</div>
+<div class="test" style="font-variant-caps: small-caps;">SA</div>
+<div class="test" style="font-variant-caps: small-caps;">V</div>
+<div class="test" style="font-variant-caps: small-caps;">aV</div>
+<div class="test" style="font-variant-caps: small-caps;">Va</div>
+<div class="test" style="font-variant-caps: small-caps;">AV</div>
+<div class="test" style="font-variant-caps: small-caps;">VA</div>
+</div>
 <div style="font-family: testfontlowercasesmallcapsotf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test">AB</div>
 <div class="test">a</div>
@@ -67,6 +94,25 @@
 <div class="test" style="font-variant-caps: small-caps;">Ag</div>
 <div class="test" style="font-variant-caps: small-caps;">gA</div>
 </div>
+<div style="font-family: testfontlowercasesmallcapsttf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test">AB</div>
+<div class="test">a</div>
+<div class="test">r</div>
+<div class="test">u</div>
+<div class="test">R</div>
+<div class="test">U</div>
+<div class="test" style="font-variant-caps: small-caps;">a</div>
+<div class="test" style="font-variant-caps: small-caps;">r</div>
+<div class="test" style="font-variant-caps: small-caps;">ar</div>
+<div class="test" style="font-variant-caps: small-caps;">ra</div>
+<div class="test" style="font-variant-caps: small-caps;">Ar</div>
+<div class="test" style="font-variant-caps: small-caps;">rA</div>
+<div class="test" style="font-variant-caps: small-caps;">u</div>
+<div class="test" style="font-variant-caps: small-caps;">au</div>
+<div class="test" style="font-variant-caps: small-caps;">ua</div>
+<div class="test" style="font-variant-caps: small-caps;">Au</div>
+<div class="test" style="font-variant-caps: small-caps;">uA</div>
+</div>
 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-small-caps;">a</div>
 <div class="test" style="font-variant-caps: all-small-caps;">J</div>
@@ -80,6 +126,19 @@
 <div class="test" style="font-variant-caps: all-small-caps;">AK</div>
 <div class="test" style="font-variant-caps: all-small-caps;">KA</div>
 </div>
+<div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-small-caps;">a</div>
+<div class="test" style="font-variant-caps: all-small-caps;">S</div>
+<div class="test" style="font-variant-caps: all-small-caps;">aS</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Sa</div>
+<div class="test" style="font-variant-caps: all-small-caps;">AS</div>
+<div class="test" style="font-variant-caps: all-small-caps;">SA</div>
+<div class="test" style="font-variant-caps: all-small-caps;">V</div>
+<div class="test" style="font-variant-caps: all-small-caps;">aV</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Va</div>
+<div class="test" style="font-variant-caps: all-small-caps;">AV</div>
+<div class="test" style="font-variant-caps: all-small-caps;">VA</div>
+</div>
 <div style="font-family: testfontlowercasesmallcapsotf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';">
 <div class="test" style="font-variant-caps: all-small-caps;">a</div>
 <div class="test" style="font-variant-caps: all-small-caps;">f</div>
@@ -91,8 +150,21 @@
 <div class="test" style="font-variant-caps: all-small-caps;">ag</div>
 <div class="test" style="font-variant-caps: all-small-caps;">ga</div>
 <div class="test" style="font-variant-caps: all-small-caps;">Ag</div>
-<div class="test" style="font-variant-caps: all-small-caps;">gA</div
+<div class="test" style="font-variant-caps: all-small-caps;">gA</div>
 </div>
+<div style="font-family: testfontlowercasesmallcapsttf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';">
+<div class="test" style="font-variant-caps: all-small-caps;">a</div>
+<div class="test" style="font-variant-caps: all-small-caps;">r</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ar</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ra</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Ar</div>
+<div class="test" style="font-variant-caps: all-small-caps;">rA</div>
+<div class="test" style="font-variant-caps: all-small-caps;">u</div>
+<div class="test" style="font-variant-caps: all-small-caps;">au</div>
+<div class="test" style="font-variant-caps: all-small-caps;">ua</div>
+<div class="test" style="font-variant-caps: all-small-caps;">Au</div>
+<div class="test" style="font-variant-caps: all-small-caps;">uA</div>
 </div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: branches/safari-601.1.46-branch/Source/WebCore/ChangeLog (194349 => 194350)


--- branches/safari-601.1.46-branch/Source/WebCore/ChangeLog	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/Source/WebCore/ChangeLog	2015-12-21 22:27:59 UTC (rev 194350)
@@ -1,5 +1,32 @@
 2015-12-21  Babak Shafiei  <[email protected]>
 
+        Merge r194114.
+
+    2015-12-15  Myles C. Maxfield  <[email protected]>
+
+            [Font Features] TrueType fonts trigger real features even when synthesis is applied
+            https://bugs.webkit.org/show_bug.cgi?id=152287
+
+            Reviewed by Darin Adler.
+
+            When using a font feature that is synthesizable, and synthesis is triggered,
+            we should make sure to turn off the original font feature. Otherwise, the
+            feature will be applied twice on top of itself.
+
+            This worked for OpenType fonts, but not for TrueType fonts.
+
+            Tests: css3/font-variant-petite-caps-synthesis.html
+                   css3/font-variant-small-caps-synthesis.html
+                   css3/font-variant-petite-caps-synthesis-coverage.html
+                   css3/font-variant-small-caps-synthesis-coverage.html
+
+            * platform/graphics/cocoa/FontCocoa.mm:
+            (WebCore::defaultSelectorForTrueTypeFeature):
+            (WebCore::removedFeature):
+            (WebCore::createCTFontWithoutSynthesizableFeatures):
+
+2015-12-21  Babak Shafiei  <[email protected]>
+
         Merge r188802.
 
     2015-08-21  Myles C. Maxfield  <[email protected]>

Modified: branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm (194349 => 194350)


--- branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm	2015-12-21 22:25:57 UTC (rev 194349)
+++ branches/safari-601.1.46-branch/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm	2015-12-21 22:27:59 UTC (rev 194350)
@@ -502,8 +502,41 @@
     return std::make_pair(rawType, rawSelector);
 }
 
-static inline RetainPtr<CFDictionaryRef> removedFeature(CFDictionaryRef feature)
+static inline CFNumberRef defaultSelectorForTrueTypeFeature(int key, CTFontRef font)
 {
+    RetainPtr<CFArrayRef> features = adoptCF(CTFontCopyFeatures(font));
+    CFIndex featureCount = CFArrayGetCount(features.get());
+    for (CFIndex i = 0; i < featureCount; ++i) {
+        CFDictionaryRef featureType = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(features.get(), i));
+        CFNumberRef featureKey = static_cast<CFNumberRef>(CFDictionaryGetValue(featureType, kCTFontFeatureTypeIdentifierKey));
+        if (!featureKey)
+            continue;
+        int rawFeatureKey;
+        CFNumberGetValue(featureKey, kCFNumberIntType, &rawFeatureKey);
+        if (rawFeatureKey != key)
+            continue;
+
+        CFArrayRef featureSelectors = static_cast<CFArrayRef>(CFDictionaryGetValue(featureType, kCTFontFeatureTypeSelectorsKey));
+        if (!featureSelectors)
+            continue;
+        CFIndex selectorsCount = CFArrayGetCount(featureSelectors);
+        for (CFIndex j = 0; j < selectorsCount; ++j) {
+            CFDictionaryRef featureSelector = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(featureSelectors, j));
+            CFNumberRef isDefault = static_cast<CFNumberRef>(CFDictionaryGetValue(featureSelector, kCTFontFeatureSelectorDefaultKey));
+            if (!isDefault)
+                continue;
+            int rawIsDefault;
+            CFNumberGetValue(isDefault, kCFNumberIntType, &rawIsDefault);
+            if (!rawIsDefault)
+                continue;
+            return static_cast<CFNumberRef>(CFDictionaryGetValue(featureSelector, kCTFontFeatureSelectorIdentifierKey));
+        }
+    }
+    return nullptr;
+}
+
+static inline RetainPtr<CFDictionaryRef> removedFeature(CFDictionaryRef feature, CTFontRef font)
+{
     bool isOpenType = isOpenTypeFeature(feature);
     bool isTrueType = isTrueTypeFeature(feature);
     if (!isOpenType && !isTrueType)
@@ -527,15 +560,17 @@
     if (isTrueType) {
         auto trueTypeFeaturePair = trueTypeFeature(feature);
         if (trueTypeFeaturePair.first == kLowerCaseType && (trueTypeFeaturePair.second == kLowerCaseSmallCapsSelector || trueTypeFeaturePair.second == kLowerCasePetiteCapsSelector)) {
-            int rawSelector = kDefaultLowerCaseSelector;
-            RetainPtr<CFNumberRef> selector = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &rawSelector));
             CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey));
-            CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, selector.get());
+            if (CFNumberRef defaultSelector = defaultSelectorForTrueTypeFeature(kLowerCaseType, font))
+                CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, defaultSelector);
+            else
+                CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureSelectorIdentifierKey));
         } else if (trueTypeFeaturePair.first == kUpperCaseType && (trueTypeFeaturePair.second == kUpperCaseSmallCapsSelector || trueTypeFeaturePair.second == kUpperCasePetiteCapsSelector)) {
-            int rawSelector = kDefaultUpperCaseSelector;
-            RetainPtr<CFNumberRef> selector = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &rawSelector));
             CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey));
-            CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, selector.get());
+            if (CFNumberRef defaultSelector = defaultSelectorForTrueTypeFeature(kUpperCaseType, font))
+                CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, defaultSelector);
+            else
+                CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureSelectorIdentifierKey));
         } else {
             CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey));
             CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureSelectorIdentifierKey));
@@ -553,7 +588,7 @@
     RetainPtr<CFMutableArrayRef> newFeatures = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, featureCount, &kCFTypeArrayCallBacks));
     for (CFIndex i = 0; i < featureCount; ++i) {
         CFDictionaryRef feature = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(features.get(), i));
-        CFArrayAppendValue(newFeatures.get(), removedFeature(feature).get());
+        CFArrayAppendValue(newFeatures.get(), removedFeature(feature, font).get());
     }
     CFTypeRef keys[] = { kCTFontFeatureSettingsAttribute };
     CFTypeRef values[] = { newFeatures.get() };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to