Diff
Modified: trunk/LayoutTests/ChangeLog (194113 => 194114)
--- trunk/LayoutTests/ChangeLog 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/ChangeLog 2015-12-15 21:55:34 UTC (rev 194114)
@@ -1,3 +1,21 @@
+2015-12-15 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [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-15 Mark Lam <mark....@apple.com>
Polymorphic operand types for DFG and FTL bit operators.
Modified: trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-petite-caps-synthesis.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-petite-caps-synthesis.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-petite-caps-synthesis.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/LayoutTests/css3/font-variant-small-caps-synthesis.html (194113 => 194114)
--- trunk/LayoutTests/css3/font-variant-small-caps-synthesis.html 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/LayoutTests/css3/font-variant-small-caps-synthesis.html 2015-12-15 21:55:34 UTC (rev 194114)
@@ -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: trunk/Source/WebCore/ChangeLog (194113 => 194114)
--- trunk/Source/WebCore/ChangeLog 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/Source/WebCore/ChangeLog 2015-12-15 21:55:34 UTC (rev 194114)
@@ -1,3 +1,26 @@
+2015-12-15 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [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-15 Per Arne Vollan <pe...@outlook.com>
[WinCairo][MediaFoundation] Full screen mode is not supported.
Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm (194113 => 194114)
--- trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm 2015-12-15 21:19:31 UTC (rev 194113)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm 2015-12-15 21:55:34 UTC (rev 194114)
@@ -469,8 +469,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)
@@ -494,15 +527,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));
@@ -520,7 +555,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() };