Changeset 194114 in webkit
- Timestamp:
- Dec 15, 2015 1:55:34 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r194113 r194114 1 2015-12-15 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [Font Features] TrueType fonts trigger real features even when synthesis is applied 4 https://bugs.webkit.org/show_bug.cgi?id=152287 5 6 Reviewed by Darin Adler. 7 8 Adding tests. 9 10 * css3/font-variant-petite-caps-synthesis-expected.html: 11 * css3/font-variant-petite-caps-synthesis.html: 12 * css3/font-variant-small-caps-synthesis-expected.html: 13 * css3/font-variant-small-caps-synthesis.html: 14 * css3/font-variant-petite-caps-synthesis-coverage-expected.html: 15 * css3/font-variant-petite-caps-synthesis-coverage.html: 16 * css3/font-variant-small-caps-synthesis-coverage-expected.html: 17 * css3/font-variant-small-caps-synthesis-coverage.html: 18 1 19 2015-12-15 Mark Lam <mark.lam@apple.com> 2 20 -
trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage-expected.html
r193894 r194114 42 42 <div class="test">BA</div> 43 43 </div> 44 <div style="font-family: testfont; border: solid black 1px; margin: 5px;"> 45 <div class="test">AB</div> 46 <div class="test">B</div> 47 <div class="test">B</div> 48 <div class="test">B</div> 49 <div class="test"><span style="font-size: 14px;">A</span></div> 50 <div class="test">A</div> 51 <div class="test"><span style="font-size: 14px;">A</span>B</div> 52 <div class="test">B<span style="font-size: 14px;">A</span></div> 53 <div class="test">AA</div> 54 <div class="test">AA</div> 55 <div class="test">B</div> 56 <div class="test"><span style="font-size: 14px;">A</span>K</div> 57 <div class="test">K<span style="font-size: 14px;">A</span></div> 58 <div class="test">AB</div> 59 <div class="test">BA</div> 60 </div> 61 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 62 <div class="test"><span style="font-size: 14px;">A</span></div> 63 <div class="test">A</div> 64 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 65 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 66 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 67 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 68 <div class="test">A</div> 69 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 70 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 71 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 72 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 73 </div> 44 74 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 45 75 <div class="test"><span style="font-size: 14px;">A</span></div> -
trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-coverage.html
r193894 r194114 7 7 font-family: "testfontotf"; 8 8 src: url("resources/FontWithFeatures.otf") format("opentype"); 9 } 10 @font-face { 11 /* Truetype. "S" responds to smcp; "V" responds to c2sc */ 12 /* Truetype. "T" responds to smcp; "W" responds to c2sc */ 13 font-family: "testfontttf"; 14 src: url("resources/FontWithFeatures.ttf") format("truetype"); 9 15 } 10 16 .test { … … 43 49 <div class="test" style="font-variant-caps: petite-caps;">MA</div> 44 50 </div> 51 <div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';"> 52 <div class="test">AB</div> 53 <div class="test">a</div> 54 <div class="test">T</div> 55 <div class="test">W</div> 56 <div class="test" style="font-variant-caps: petite-caps;">a</div> 57 <div class="test" style="font-variant-caps: petite-caps;">T</div> 58 <div class="test" style="font-variant-caps: petite-caps;">aT</div> 59 <div class="test" style="font-variant-caps: petite-caps;">Ta</div> 60 <div class="test" style="font-variant-caps: petite-caps;">AT</div> 61 <div class="test" style="font-variant-caps: petite-caps;">TA</div> 62 <div class="test" style="font-variant-caps: petite-caps;">W</div> 63 <div class="test" style="font-variant-caps: petite-caps;">aW</div> 64 <div class="test" style="font-variant-caps: petite-caps;">Wa</div> 65 <div class="test" style="font-variant-caps: petite-caps;">AW</div> 66 <div class="test" style="font-variant-caps: petite-caps;">WA</div> 67 </div> 45 68 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 46 69 <div class="test" style="font-variant-caps: all-petite-caps;">a</div> … … 56 79 <div class="test" style="font-variant-caps: all-petite-caps;">MA</div> 57 80 </div> 81 <div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 82 <div class="test" style="font-variant-caps: all-petite-caps;">a</div> 83 <div class="test" style="font-variant-caps: all-petite-caps;">T</div> 84 <div class="test" style="font-variant-caps: all-petite-caps;">aT</div> 85 <div class="test" style="font-variant-caps: all-petite-caps;">Ta</div> 86 <div class="test" style="font-variant-caps: all-petite-caps;">AT</div> 87 <div class="test" style="font-variant-caps: all-petite-caps;">TA</div> 88 <div class="test" style="font-variant-caps: all-petite-caps;">W</div> 89 <div class="test" style="font-variant-caps: all-petite-caps;">aW</div> 90 <div class="test" style="font-variant-caps: all-petite-caps;">Wa</div> 91 <div class="test" style="font-variant-caps: all-petite-caps;">AW</div> 92 <div class="test" style="font-variant-caps: all-petite-caps;">WA</div> 93 </div> 58 94 </div> 59 95 </body> -
trunk/LayoutTests/css3/font-variant-petite-caps-synthesis-expected.html
r193894 r194114 42 42 <div class="test">BA</div> 43 43 </div> 44 <div style="font-family: testfont; border: solid black 1px; margin: 5px;"> 45 <div class="test">AB</div> 46 <div class="test">B</div> 47 <div class="test">B</div> 48 <div class="test">B</div> 49 <div class="test"><span style="font-size: 14px;">A</span></div> 50 <div class="test">A</div> 51 <div class="test"><span style="font-size: 14px;">A</span>B</div> 52 <div class="test">B<span style="font-size: 14px;">A</span></div> 53 <div class="test">AA</div> 54 <div class="test">AA</div> 55 <div class="test">B</div> 56 <div class="test"><span style="font-size: 14px;">A</span>K</div> 57 <div class="test">K<span style="font-size: 14px;">A</span></div> 58 <div class="test">AB</div> 59 <div class="test">BA</div> 60 </div> 61 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 62 <div class="test"><span style="font-size: 14px;">A</span></div> 63 <div class="test"><span style="font-size: 14px;">B</span></div> 64 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 65 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 66 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 67 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 68 <div class="test"><span style="font-size: 14px;">B</span></div> 69 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 70 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 71 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 72 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 73 </div> 44 74 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 45 75 <div class="test"><span style="font-size: 14px;">A</span></div> -
trunk/LayoutTests/css3/font-variant-petite-caps-synthesis.html
r193894 r194114 7 7 font-family: "testfontotf"; 8 8 src: url("resources/FontWithFeatures.otf") format("opentype"); 9 } 10 @font-face { 11 /* Truetype. "S" responds to smcp; "V" responds to c2sc */ 12 /* Truetype. "T" responds to smcp; "W" responds to c2sc */ 13 font-family: "testfontttf"; 14 src: url("resources/FontWithFeatures.ttf") format("truetype"); 9 15 } 10 16 .test { … … 43 49 <div class="test" style="font-variant-caps: petite-caps;">MA</div> 44 50 </div> 51 <div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';"> 52 <div class="test">AB</div> 53 <div class="test">a</div> 54 <div class="test">T</div> 55 <div class="test">W</div> 56 <div class="test" style="font-variant-caps: petite-caps;">a</div> 57 <div class="test" style="font-variant-caps: petite-caps;">T</div> 58 <div class="test" style="font-variant-caps: petite-caps;">aT</div> 59 <div class="test" style="font-variant-caps: petite-caps;">Ta</div> 60 <div class="test" style="font-variant-caps: petite-caps;">AT</div> 61 <div class="test" style="font-variant-caps: petite-caps;">TA</div> 62 <div class="test" style="font-variant-caps: petite-caps;">W</div> 63 <div class="test" style="font-variant-caps: petite-caps;">aW</div> 64 <div class="test" style="font-variant-caps: petite-caps;">Wa</div> 65 <div class="test" style="font-variant-caps: petite-caps;">AW</div> 66 <div class="test" style="font-variant-caps: petite-caps;">WA</div> 67 </div> 45 68 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 46 69 <div class="test" style="font-variant-caps: all-petite-caps;">a</div> … … 56 79 <div class="test" style="font-variant-caps: all-petite-caps;">MA</div> 57 80 </div> 81 <div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 82 <div class="test" style="font-variant-caps: all-petite-caps;">a</div> 83 <div class="test" style="font-variant-caps: all-petite-caps;">T</div> 84 <div class="test" style="font-variant-caps: all-petite-caps;">aT</div> 85 <div class="test" style="font-variant-caps: all-petite-caps;">Ta</div> 86 <div class="test" style="font-variant-caps: all-petite-caps;">AT</div> 87 <div class="test" style="font-variant-caps: all-petite-caps;">TA</div> 88 <div class="test" style="font-variant-caps: all-petite-caps;">W</div> 89 <div class="test" style="font-variant-caps: all-petite-caps;">aW</div> 90 <div class="test" style="font-variant-caps: all-petite-caps;">Wa</div> 91 <div class="test" style="font-variant-caps: all-petite-caps;">AW</div> 92 <div class="test" style="font-variant-caps: all-petite-caps;">WA</div> 93 </div> 58 94 </div> 59 95 </body> -
trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage-expected.html
r193894 r194114 42 42 <div class="test">BA</div> 43 43 </div> 44 <div style="font-family: testfont; border: solid black 1px; margin: 5px;"> 45 <div class="test">AB</div> 46 <div class="test">B</div> 47 <div class="test">B</div> 48 <div class="test">B</div> 49 <div class="test"><span style="font-size: 14px;">A</span></div> 50 <div class="test">A</div> 51 <div class="test"><span style="font-size: 14px;">A</span>B</div> 52 <div class="test">B<span style="font-size: 14px;">A</span></div> 53 <div class="test">AA</div> 54 <div class="test">AA</div> 55 <div class="test">B</div> 56 <div class="test"><span style="font-size: 14px;">A</span>K</div> 57 <div class="test">K<span style="font-size: 14px;">A</span></div> 58 <div class="test">AB</div> 59 <div class="test">BA</div> 60 </div> 44 61 <div style="font-family: testfont; border: solid red 1px; margin: 5px;"> 45 62 <div class="test"style="">AB</div> … … 60 77 <div class="test">A<span style="font-size: 14px;">A</span></div> 61 78 <div class="test"><span style="font-size: 14px;">A</span>A</div> 79 </div> 80 <div style="font-family: testfont; border: solid red 1px; margin: 5px;"> 81 <div class="test"style="">AB</div> 82 <div class="test">B</div> 83 <div class="test">B</div> 84 <div class="test">B</div> 85 <div class="test">A</div> 86 <div class="test">B</div> 87 <div class="test"><span style="font-size: 14px;">A</span></div> 88 <div class="test">A</div> 89 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 90 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 91 <div class="test">AA</div> 92 <div class="test">AA</div> 93 <div class="test"><span style="font-size: 14px;">B</span></div> 94 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 95 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 96 <div class="test">A<span style="font-size: 14px;">B</span></div> 97 <div class="test"><span style="font-size: 14px;">B</span>A</div> 98 </div> 99 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 100 <div class="test"><span style="font-size: 14px;">A</span></div> 101 <div class="test">A</div> 102 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 103 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 104 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 105 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 106 <div class="test">A</div> 107 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 108 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 109 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 110 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 62 111 </div> 63 112 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> … … 87 136 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 88 137 </div> 138 <div style="font-family: testfont; border: solid green 1px; margin: 5px;"> 139 <div class="test"><span style="font-size: 14px;">A</span></div> 140 <div class="test">A</div> 141 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 142 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 143 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 144 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 145 <div class="test">A</div> 146 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 147 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 148 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 149 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 150 </div> 89 151 </div> 90 152 </body> -
trunk/LayoutTests/css3/font-variant-small-caps-synthesis-coverage.html
r193894 r194114 10 10 } 11 11 @font-face { 12 /* Truetype. "S" responds to smcp; "V" responds to c2sc */ 13 font-family: "testfontttf"; 14 src: url("resources/FontWithFeatures.ttf") format("truetype"); 15 } 16 @font-face { 12 17 /* Opentype. "f" responds to smcp; "g" responds to c2sc */ 13 18 font-family: "testfontlowercasesmallcapsotf"; 14 19 src: url("resources/FontWithFeaturesLowercaseSmallCaps.otf") format("opentype"); 20 } 21 @font-face { 22 /* Truetype. "r" responds to smcp; "u" responds to c2sc */ 23 font-family: "testfontlowercasesmallcapsttf"; 24 src: url("resources/FontWithFeaturesLowercaseSmallCaps.ttf") format("truetype"); 15 25 } 16 26 .test { … … 49 59 <div class="test" style="font-variant-caps: small-caps;">KA</div> 50 60 </div> 61 <div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';"> 62 <div class="test">AB</div> 63 <div class="test">a</div> 64 <div class="test">S</div> 65 <div class="test">V</div> 66 <div class="test" style="font-variant-caps: small-caps;">a</div> 67 <div class="test" style="font-variant-caps: small-caps;">S</div> 68 <div class="test" style="font-variant-caps: small-caps;">aS</div> 69 <div class="test" style="font-variant-caps: small-caps;">Sa</div> 70 <div class="test" style="font-variant-caps: small-caps;">AS</div> 71 <div class="test" style="font-variant-caps: small-caps;">SA</div> 72 <div class="test" style="font-variant-caps: small-caps;">V</div> 73 <div class="test" style="font-variant-caps: small-caps;">aV</div> 74 <div class="test" style="font-variant-caps: small-caps;">Va</div> 75 <div class="test" style="font-variant-caps: small-caps;">AV</div> 76 <div class="test" style="font-variant-caps: small-caps;">VA</div> 77 </div> 51 78 <div style="font-family: testfontlowercasesmallcapsotf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';"> 52 79 <div class="test">AB</div> … … 68 95 <div class="test" style="font-variant-caps: small-caps;">gA</div> 69 96 </div> 97 <div style="font-family: testfontlowercasesmallcapsttf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';"> 98 <div class="test">AB</div> 99 <div class="test">a</div> 100 <div class="test">r</div> 101 <div class="test">u</div> 102 <div class="test">R</div> 103 <div class="test">U</div> 104 <div class="test" style="font-variant-caps: small-caps;">a</div> 105 <div class="test" style="font-variant-caps: small-caps;">r</div> 106 <div class="test" style="font-variant-caps: small-caps;">ar</div> 107 <div class="test" style="font-variant-caps: small-caps;">ra</div> 108 <div class="test" style="font-variant-caps: small-caps;">Ar</div> 109 <div class="test" style="font-variant-caps: small-caps;">rA</div> 110 <div class="test" style="font-variant-caps: small-caps;">u</div> 111 <div class="test" style="font-variant-caps: small-caps;">au</div> 112 <div class="test" style="font-variant-caps: small-caps;">ua</div> 113 <div class="test" style="font-variant-caps: small-caps;">Au</div> 114 <div class="test" style="font-variant-caps: small-caps;">uA</div> 115 </div> 70 116 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 71 117 <div class="test" style="font-variant-caps: all-small-caps;">a</div> … … 81 127 <div class="test" style="font-variant-caps: all-small-caps;">KA</div> 82 128 </div> 129 <div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 130 <div class="test" style="font-variant-caps: all-small-caps;">a</div> 131 <div class="test" style="font-variant-caps: all-small-caps;">S</div> 132 <div class="test" style="font-variant-caps: all-small-caps;">aS</div> 133 <div class="test" style="font-variant-caps: all-small-caps;">Sa</div> 134 <div class="test" style="font-variant-caps: all-small-caps;">AS</div> 135 <div class="test" style="font-variant-caps: all-small-caps;">SA</div> 136 <div class="test" style="font-variant-caps: all-small-caps;">V</div> 137 <div class="test" style="font-variant-caps: all-small-caps;">aV</div> 138 <div class="test" style="font-variant-caps: all-small-caps;">Va</div> 139 <div class="test" style="font-variant-caps: all-small-caps;">AV</div> 140 <div class="test" style="font-variant-caps: all-small-caps;">VA</div> 141 </div> 83 142 <div style="font-family: testfontlowercasesmallcapsotf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';"> 84 143 <div class="test" style="font-variant-caps: all-small-caps;">a</div> … … 92 151 <div class="test" style="font-variant-caps: all-small-caps;">ga</div> 93 152 <div class="test" style="font-variant-caps: all-small-caps;">Ag</div> 94 <div class="test" style="font-variant-caps: all-small-caps;">gA</div 153 <div class="test" style="font-variant-caps: all-small-caps;">gA</div> 154 </div> 155 <div style="font-family: testfontlowercasesmallcapsttf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';"> 156 <div class="test" style="font-variant-caps: all-small-caps;">a</div> 157 <div class="test" style="font-variant-caps: all-small-caps;">r</div> 158 <div class="test" style="font-variant-caps: all-small-caps;">ar</div> 159 <div class="test" style="font-variant-caps: all-small-caps;">ra</div> 160 <div class="test" style="font-variant-caps: all-small-caps;">Ar</div> 161 <div class="test" style="font-variant-caps: all-small-caps;">rA</div> 162 <div class="test" style="font-variant-caps: all-small-caps;">u</div> 163 <div class="test" style="font-variant-caps: all-small-caps;">au</div> 164 <div class="test" style="font-variant-caps: all-small-caps;">ua</div> 165 <div class="test" style="font-variant-caps: all-small-caps;">Au</div> 166 <div class="test" style="font-variant-caps: all-small-caps;">uA</div> 95 167 </div> 96 168 </div> -
trunk/LayoutTests/css3/font-variant-small-caps-synthesis-expected.html
r193894 r194114 42 42 <div class="test">BA</div> 43 43 </div> 44 <div style="font-family: testfont; border: solid black 1px; margin: 5px;"> 45 <div class="test">AB</div> 46 <div class="test">B</div> 47 <div class="test">B</div> 48 <div class="test">B</div> 49 <div class="test"><span style="font-size: 14px;">A</span></div> 50 <div class="test">A</div> 51 <div class="test"><span style="font-size: 14px;">A</span>B</div> 52 <div class="test">B<span style="font-size: 14px;">A</span></div> 53 <div class="test">AA</div> 54 <div class="test">AA</div> 55 <div class="test">B</div> 56 <div class="test"><span style="font-size: 14px;">A</span>K</div> 57 <div class="test">K<span style="font-size: 14px;">A</span></div> 58 <div class="test">AB</div> 59 <div class="test">BA</div> 60 </div> 44 61 <div style="font-family: testfont; border: solid red 1px; margin: 5px;"> 45 62 <div class="test"style="">AB</div> … … 60 77 <div class="test">A<span style="font-size: 14px;">A</span></div> 61 78 <div class="test"><span style="font-size: 14px;">A</span>A</div> 79 </div> 80 <div style="font-family: testfont; border: solid red 1px; margin: 5px;"> 81 <div class="test"style="">AB</div> 82 <div class="test">B</div> 83 <div class="test">B</div> 84 <div class="test">B</div> 85 <div class="test">A</div> 86 <div class="test">B</div> 87 <div class="test"><span style="font-size: 14px;">A</span></div> 88 <div class="test"><span style="font-size: 14px;">A</span></div> 89 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 90 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 91 <div class="test">A<span style="font-size: 14px;">A</span></div> 92 <div class="test"><span style="font-size: 14px;">A</span>A</div> 93 <div class="test"><span style="font-size: 14px;">B</span></div> 94 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 95 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 96 <div class="test">A<span style="font-size: 14px;">B</span></div> 97 <div class="test"><span style="font-size: 14px;">B</span>A</div> 98 </div> 99 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> 100 <div class="test"><span style="font-size: 14px;">A</span></div> 101 <div class="test"><span style="font-size: 14px;">B</span></div> 102 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 103 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 104 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 105 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 106 <div class="test"><span style="font-size: 14px;">B</span></div> 107 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 108 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 109 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 110 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 62 111 </div> 63 112 <div style="font-family: testfont; border: solid blue 1px; margin: 5px;"> … … 87 136 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 88 137 </div> 138 <div style="font-family: testfont; border: solid green 1px; margin: 5px;"> 139 <div class="test"><span style="font-size: 14px;">A</span></div> 140 <div class="test"><span style="font-size: 14px;">A</span></div> 141 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 142 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 143 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 144 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">A</span></div> 145 <div class="test"><span style="font-size: 14px;">B</span></div> 146 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 147 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 148 <div class="test"><span style="font-size: 14px;">A</span><span style="font-size: 14px;">B</span></div> 149 <div class="test"><span style="font-size: 14px;">B</span><span style="font-size: 14px;">A</span></div> 150 </div> 89 151 </div> 90 152 </body> -
trunk/LayoutTests/css3/font-variant-small-caps-synthesis.html
r193894 r194114 10 10 } 11 11 @font-face { 12 /* Truetype. "S" responds to smcp; "V" responds to c2sc */ 13 font-family: "testfontttf"; 14 src: url("resources/FontWithFeatures.ttf") format("truetype"); 15 } 16 @font-face { 12 17 /* Opentype. "f" responds to smcp; "g" responds to c2sc */ 13 18 font-family: "testfontlowercasesmallcapsotf"; 14 19 src: url("resources/FontWithFeaturesLowercaseSmallCaps.otf") format("opentype"); 20 } 21 @font-face { 22 /* Truetype. "r" responds to smcp; "u" responds to c2sc */ 23 font-family: "testfontlowercasesmallcapsttf"; 24 src: url("resources/FontWithFeaturesLowercaseSmallCaps.ttf") format("truetype"); 15 25 } 16 26 .test { … … 49 59 <div class="test" style="font-variant-caps: small-caps;">KA</div> 50 60 </div> 61 <div style="font-family: testfontttf; border: solid black 1px; margin: 5px; font-feature-settings: 'ntrl';"> 62 <div class="test">AB</div> 63 <div class="test">a</div> 64 <div class="test">S</div> 65 <div class="test">V</div> 66 <div class="test" style="font-variant-caps: small-caps;">a</div> 67 <div class="test" style="font-variant-caps: small-caps;">S</div> 68 <div class="test" style="font-variant-caps: small-caps;">aS</div> 69 <div class="test" style="font-variant-caps: small-caps;">Sa</div> 70 <div class="test" style="font-variant-caps: small-caps;">AS</div> 71 <div class="test" style="font-variant-caps: small-caps;">SA</div> 72 <div class="test" style="font-variant-caps: small-caps;">V</div> 73 <div class="test" style="font-variant-caps: small-caps;">aV</div> 74 <div class="test" style="font-variant-caps: small-caps;">Va</div> 75 <div class="test" style="font-variant-caps: small-caps;">AV</div> 76 <div class="test" style="font-variant-caps: small-caps;">VA</div> 77 </div> 51 78 <div style="font-family: testfontlowercasesmallcapsotf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';"> 52 79 <div class="test">AB</div> … … 68 95 <div class="test" style="font-variant-caps: small-caps;">gA</div> 69 96 </div> 97 <div style="font-family: testfontlowercasesmallcapsttf; border: solid red 1px; margin: 5px; font-feature-settings: 'ntrl';"> 98 <div class="test">AB</div> 99 <div class="test">a</div> 100 <div class="test">r</div> 101 <div class="test">u</div> 102 <div class="test">R</div> 103 <div class="test">U</div> 104 <div class="test" style="font-variant-caps: small-caps;">a</div> 105 <div class="test" style="font-variant-caps: small-caps;">r</div> 106 <div class="test" style="font-variant-caps: small-caps;">ar</div> 107 <div class="test" style="font-variant-caps: small-caps;">ra</div> 108 <div class="test" style="font-variant-caps: small-caps;">Ar</div> 109 <div class="test" style="font-variant-caps: small-caps;">rA</div> 110 <div class="test" style="font-variant-caps: small-caps;">u</div> 111 <div class="test" style="font-variant-caps: small-caps;">au</div> 112 <div class="test" style="font-variant-caps: small-caps;">ua</div> 113 <div class="test" style="font-variant-caps: small-caps;">Au</div> 114 <div class="test" style="font-variant-caps: small-caps;">uA</div> 115 </div> 70 116 <div style="font-family: testfontotf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 71 117 <div class="test" style="font-variant-caps: all-small-caps;">a</div> … … 81 127 <div class="test" style="font-variant-caps: all-small-caps;">KA</div> 82 128 </div> 129 <div style="font-family: testfontttf; border: solid blue 1px; margin: 5px; font-feature-settings: 'ntrl';"> 130 <div class="test" style="font-variant-caps: all-small-caps;">a</div> 131 <div class="test" style="font-variant-caps: all-small-caps;">S</div> 132 <div class="test" style="font-variant-caps: all-small-caps;">aS</div> 133 <div class="test" style="font-variant-caps: all-small-caps;">Sa</div> 134 <div class="test" style="font-variant-caps: all-small-caps;">AS</div> 135 <div class="test" style="font-variant-caps: all-small-caps;">SA</div> 136 <div class="test" style="font-variant-caps: all-small-caps;">V</div> 137 <div class="test" style="font-variant-caps: all-small-caps;">aV</div> 138 <div class="test" style="font-variant-caps: all-small-caps;">Va</div> 139 <div class="test" style="font-variant-caps: all-small-caps;">AV</div> 140 <div class="test" style="font-variant-caps: all-small-caps;">VA</div> 141 </div> 83 142 <div style="font-family: testfontlowercasesmallcapsotf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';"> 84 143 <div class="test" style="font-variant-caps: all-small-caps;">a</div> … … 92 151 <div class="test" style="font-variant-caps: all-small-caps;">ga</div> 93 152 <div class="test" style="font-variant-caps: all-small-caps;">Ag</div> 94 <div class="test" style="font-variant-caps: all-small-caps;">gA</div 153 <div class="test" style="font-variant-caps: all-small-caps;">gA</div> 154 </div> 155 <div style="font-family: testfontlowercasesmallcapsttf; border: solid green 1px; margin: 5px; font-feature-settings: 'ntrl';"> 156 <div class="test" style="font-variant-caps: all-small-caps;">a</div> 157 <div class="test" style="font-variant-caps: all-small-caps;">r</div> 158 <div class="test" style="font-variant-caps: all-small-caps;">ar</div> 159 <div class="test" style="font-variant-caps: all-small-caps;">ra</div> 160 <div class="test" style="font-variant-caps: all-small-caps;">Ar</div> 161 <div class="test" style="font-variant-caps: all-small-caps;">rA</div> 162 <div class="test" style="font-variant-caps: all-small-caps;">u</div> 163 <div class="test" style="font-variant-caps: all-small-caps;">au</div> 164 <div class="test" style="font-variant-caps: all-small-caps;">ua</div> 165 <div class="test" style="font-variant-caps: all-small-caps;">Au</div> 166 <div class="test" style="font-variant-caps: all-small-caps;">uA</div> 95 167 </div> 96 168 </div> -
trunk/Source/WebCore/ChangeLog
r194111 r194114 1 2015-12-15 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [Font Features] TrueType fonts trigger real features even when synthesis is applied 4 https://bugs.webkit.org/show_bug.cgi?id=152287 5 6 Reviewed by Darin Adler. 7 8 When using a font feature that is synthesizable, and synthesis is triggered, 9 we should make sure to turn off the original font feature. Otherwise, the 10 feature will be applied twice on top of itself. 11 12 This worked for OpenType fonts, but not for TrueType fonts. 13 14 Tests: css3/font-variant-petite-caps-synthesis.html 15 css3/font-variant-small-caps-synthesis.html 16 css3/font-variant-petite-caps-synthesis-coverage.html 17 css3/font-variant-small-caps-synthesis-coverage.html 18 19 * platform/graphics/cocoa/FontCocoa.mm: 20 (WebCore::defaultSelectorForTrueTypeFeature): 21 (WebCore::removedFeature): 22 (WebCore::createCTFontWithoutSynthesizableFeatures): 23 1 24 2015-12-15 Per Arne Vollan <peavo@outlook.com> 2 25 -
trunk/Source/WebCore/platform/graphics/cocoa/FontCocoa.mm
r193942 r194114 470 470 } 471 471 472 static inline RetainPtr<CFDictionaryRef> removedFeature(CFDictionaryRef feature) 472 static inline CFNumberRef defaultSelectorForTrueTypeFeature(int key, CTFontRef font) 473 { 474 RetainPtr<CFArrayRef> features = adoptCF(CTFontCopyFeatures(font)); 475 CFIndex featureCount = CFArrayGetCount(features.get()); 476 for (CFIndex i = 0; i < featureCount; ++i) { 477 CFDictionaryRef featureType = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(features.get(), i)); 478 CFNumberRef featureKey = static_cast<CFNumberRef>(CFDictionaryGetValue(featureType, kCTFontFeatureTypeIdentifierKey)); 479 if (!featureKey) 480 continue; 481 int rawFeatureKey; 482 CFNumberGetValue(featureKey, kCFNumberIntType, &rawFeatureKey); 483 if (rawFeatureKey != key) 484 continue; 485 486 CFArrayRef featureSelectors = static_cast<CFArrayRef>(CFDictionaryGetValue(featureType, kCTFontFeatureTypeSelectorsKey)); 487 if (!featureSelectors) 488 continue; 489 CFIndex selectorsCount = CFArrayGetCount(featureSelectors); 490 for (CFIndex j = 0; j < selectorsCount; ++j) { 491 CFDictionaryRef featureSelector = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(featureSelectors, j)); 492 CFNumberRef isDefault = static_cast<CFNumberRef>(CFDictionaryGetValue(featureSelector, kCTFontFeatureSelectorDefaultKey)); 493 if (!isDefault) 494 continue; 495 int rawIsDefault; 496 CFNumberGetValue(isDefault, kCFNumberIntType, &rawIsDefault); 497 if (!rawIsDefault) 498 continue; 499 return static_cast<CFNumberRef>(CFDictionaryGetValue(featureSelector, kCTFontFeatureSelectorIdentifierKey)); 500 } 501 } 502 return nullptr; 503 } 504 505 static inline RetainPtr<CFDictionaryRef> removedFeature(CFDictionaryRef feature, CTFontRef font) 473 506 { 474 507 bool isOpenType = isOpenTypeFeature(feature); … … 495 528 auto trueTypeFeaturePair = trueTypeFeature(feature); 496 529 if (trueTypeFeaturePair.first == kLowerCaseType && (trueTypeFeaturePair.second == kLowerCaseSmallCapsSelector || trueTypeFeaturePair.second == kLowerCasePetiteCapsSelector)) { 497 int rawSelector = kDefaultLowerCaseSelector;498 RetainPtr<CFNumberRef> selector = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &rawSelector));499 530 CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey)); 500 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, selector.get()); 531 if (CFNumberRef defaultSelector = defaultSelectorForTrueTypeFeature(kLowerCaseType, font)) 532 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, defaultSelector); 533 else 534 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureSelectorIdentifierKey)); 501 535 } else if (trueTypeFeaturePair.first == kUpperCaseType && (trueTypeFeaturePair.second == kUpperCaseSmallCapsSelector || trueTypeFeaturePair.second == kUpperCasePetiteCapsSelector)) { 502 int rawSelector = kDefaultUpperCaseSelector;503 RetainPtr<CFNumberRef> selector = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &rawSelector));504 536 CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey)); 505 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, selector.get()); 537 if (CFNumberRef defaultSelector = defaultSelectorForTrueTypeFeature(kUpperCaseType, font)) 538 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, defaultSelector); 539 else 540 CFDictionaryAddValue(result.get(), kCTFontFeatureSelectorIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureSelectorIdentifierKey)); 506 541 } else { 507 542 CFDictionaryAddValue(result.get(), kCTFontFeatureTypeIdentifierKey, CFDictionaryGetValue(feature, kCTFontFeatureTypeIdentifierKey)); … … 521 556 for (CFIndex i = 0; i < featureCount; ++i) { 522 557 CFDictionaryRef feature = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(features.get(), i)); 523 CFArrayAppendValue(newFeatures.get(), removedFeature(feature ).get());558 CFArrayAppendValue(newFeatures.get(), removedFeature(feature, font).get()); 524 559 } 525 560 CFTypeRef keys[] = { kCTFontFeatureSettingsAttribute };
Note: See TracChangeset
for help on using the changeset viewer.