mirror of
https://github.com/servo/servo
synced 2026-04-29 19:07:38 +02:00
Update CSS tests to revision 0698c2aa9ead844b6d7d10eafb096cb1118e13ef
This commit is contained in:
@@ -2,48 +2,48 @@
|
||||
AddCharset Shift_JIS .css
|
||||
</Files>
|
||||
|
||||
<Files "http1.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
<Files "http15.css">
|
||||
AddCharset iso-8859-15 .css
|
||||
</Files>
|
||||
<Files "http8.css">
|
||||
AddCharset utf-8 .css
|
||||
</Files>
|
||||
<Files "charset8.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "charset1.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "charset15.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "none.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom-charset1.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom-charset15.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "illegalcharset.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "http8-charset1.css">
|
||||
AddCharset utf-8 .css
|
||||
</Files>
|
||||
<Files "http1-charset8.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
<Files "http1-bom.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
<Files "http1.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
<Files "http15.css">
|
||||
AddCharset iso-8859-15 .css
|
||||
</Files>
|
||||
<Files "http8.css">
|
||||
AddCharset utf-8 .css
|
||||
</Files>
|
||||
<Files "charset8.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "charset1.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "charset15.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "none.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom-charset1.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "bom-charset15.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "illegalcharset.css">
|
||||
RemoveCharset .css
|
||||
</Files>
|
||||
<Files "http8-charset1.css">
|
||||
AddCharset utf-8 .css
|
||||
</Files>
|
||||
<Files "http1-charset8.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
<Files "http1-bom.css">
|
||||
AddCharset iso-8859-1 .css
|
||||
</Files>
|
||||
|
||||
<Files ~ "^plaintext.css$">
|
||||
ForceType text/plain
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
PNGSUITE
|
||||
----------------
|
||||
|
||||
testset for PNG-(de)coders
|
||||
created by Willem van Schaik
|
||||
------------------------------------
|
||||
|
||||
This is a collection of graphics images created to test the png applications
|
||||
like viewers, converters and editors. All (as far as that is possible)
|
||||
formats supported by the PNG standard are represented.
|
||||
|
||||
The suite consists of the following files:
|
||||
|
||||
- PngSuite.README - this file
|
||||
- PngSuite.LICENSE - the PngSuite is freeware
|
||||
- PngSuite.png - image with PngSuite logo
|
||||
- PngSuite.tgz - archive of all PNG testfiles
|
||||
- PngSuite.zip - same in .zip format for PCs
|
||||
|
||||
|
||||
--------
|
||||
(c) Willem van Schaik
|
||||
willem@schaik.com
|
||||
Calgary, April 2011
|
||||
|
||||
PNGSUITE
|
||||
----------------
|
||||
|
||||
testset for PNG-(de)coders
|
||||
created by Willem van Schaik
|
||||
------------------------------------
|
||||
|
||||
This is a collection of graphics images created to test the png applications
|
||||
like viewers, converters and editors. All (as far as that is possible)
|
||||
formats supported by the PNG standard are represented.
|
||||
|
||||
The suite consists of the following files:
|
||||
|
||||
- PngSuite.README - this file
|
||||
- PngSuite.LICENSE - the PngSuite is freeware
|
||||
- PngSuite.png - image with PngSuite logo
|
||||
- PngSuite.tgz - archive of all PNG testfiles
|
||||
- PngSuite.zip - same in .zip format for PCs
|
||||
|
||||
|
||||
--------
|
||||
(c) Willem van Schaik
|
||||
willem@schaik.com
|
||||
Calgary, April 2011
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ CSS Orientation Test
|
||||
|
||||
Overview
|
||||
----
|
||||
CSS Orientation Test are special-purpose OpenType fonts. This open source project provides all of the source files
|
||||
CSS Orientation Test are special-purpose OpenType fonts. This open source project provides all of the source files
|
||||
that were used to build these OpenType fonts by using the AFDKO *makeotf* tool.
|
||||
|
||||
Getting Involved
|
||||
@@ -15,7 +15,7 @@ Building
|
||||
|
||||
Pre-built font binaries
|
||||
----
|
||||
The installable font resources (font binaries) are not part of the source files.
|
||||
The installable font resources (font binaries) are not part of the source files.
|
||||
They are available at https://github.com/adobe-fonts/css-orientation-test/
|
||||
The latest version of the font binaries is 1.005 (October 2015).
|
||||
|
||||
@@ -23,17 +23,17 @@ The latest version of the font binaries is 1.005 (October 2015).
|
||||
Requirements
|
||||
----
|
||||
|
||||
For building binary font files from source, installation of the
|
||||
[Adobe Font Development Kit for OpenType](http://www.adobe.com/devnet/opentype/afdko.html) (AFDKO)
|
||||
For building binary font files from source, installation of the
|
||||
[Adobe Font Development Kit for OpenType](http://www.adobe.com/devnet/opentype/afdko.html) (AFDKO)
|
||||
is necessary. The AFDKO tools are widely used for font development today, and are part of most font editor applications.
|
||||
|
||||
Building the fonts
|
||||
----
|
||||
|
||||
The key to building OpenType fonts is *makeotf*, which is part of AFDKO. Information and usage instructions can be found
|
||||
The key to building OpenType fonts is *makeotf*, which is part of AFDKO. Information and usage instructions can be found
|
||||
by executing *makeotf -h*.
|
||||
|
||||
In this repository, all necessary files are in place for building the OpenType fonts. For example, build a binary OTF font
|
||||
In this repository, all necessary files are in place for building the OpenType fonts. For example, build a binary OTF font
|
||||
for the full-width version like this, which also includes a post-process for inserting a "stub" 'DSIG' table:
|
||||
|
||||
% makeotf -f cidfont.ps -r -ch UnicodeAll-UTF32-H
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
|
||||
.•˝<EFBFBD>a
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
.•˝<EFBFBD>a
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "windows-1252";
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "windows-1252";
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "shift-JIS";
|
||||
.•½˜a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
.•˝<EFBFBD>a, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "UTF-8";
|
||||
.平和, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "UTF-8";
|
||||
.平和, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
.平和, #div2
|
||||
{
|
||||
color: green;
|
||||
.平和, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "windows-1252";
|
||||
.ñÝ, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "windows-1252";
|
||||
.ñÝ, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "shift-JIS";
|
||||
.麓火曜日靃, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "shift-JIS";
|
||||
.麓火曜日靃, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "ISO-8859-6";
|
||||
.Êå, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "ISO-8859-6";
|
||||
.Êå, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "Big5";
|
||||
.¬P´Á¤»Ê¡, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "Big5";
|
||||
.¬P´Á¤»Ê¡, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "UTF-8";
|
||||
.星期六吽, #div2
|
||||
{
|
||||
color: green;
|
||||
@charset "UTF-8";
|
||||
.星期六吽, #div2
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
ÿî.òÔyiÑ
|
||||
{
|
||||
color: red;
|
||||
ÿî.òÔyiÑ
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
⻦颟鿤몔뜍ഊ††捯汯爺敤㬍
|
||||
<EFBFBD>
|
||||
††捯汯爺敤<EFBFBD>
|
||||
⻦颟鿤몔뜊笊††捯汯爺敤㬊<EFBFBD>
|
||||
<EFBFBD>
|
||||
††捯汯爺敤<EFBFBD>
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "windows-1252";
|
||||
.ƒM‚у”
|
||||
{
|
||||
color: red;
|
||||
@charset "windows-1252";
|
||||
.ƒM‚у”
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "Shift-JIS";
|
||||
.星期二价泌
|
||||
{
|
||||
color: red;
|
||||
@charset "Shift-JIS";
|
||||
.星期二价泌
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
test;
|
||||
@charset "UTF-8";
|
||||
.平和, #div2
|
||||
{
|
||||
color: red;
|
||||
test;
|
||||
@charset "UTF-8";
|
||||
.平和, #div2
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "UTF-16BE";
|
||||
.星期二价泌, #div1
|
||||
{
|
||||
color: green;
|
||||
@charset "UTF-16BE";
|
||||
.星期二价泌, #div1
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
|
||||
@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "windows-1252";@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@charset "windows-1252";@charset "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@CHARSET "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@CHARSET "Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset Shift-JIS;
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@charset Shift-JIS;
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset"Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@charset"Shift-JIS";
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@\63\68\61\72\73\65\74 "Shift-JIS"; /* escaped "charset" */
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@\63\68\61\72\73\65\74 "Shift-JIS"; /* escaped "charset" */
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@\63\68\61\72\73\65\74 "Shift-JIS"; /* escaped "charset" */
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@\63\68\61\72\73\65\74 "Shift-JIS"; /* escaped "charset" */
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@charset "Shift-JIS"
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
@charset "Shift-JIS"
|
||||
.<EFBFBD>¯Šú“ñ˜Á”å
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/* at-rule-green.css */
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
/* at-rule-green.css */
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/* at-rule-red.css */
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
/* at-rule-red.css */
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
@charset "iso-8859-1";
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-1";
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@charset "iso-8859-15";
|
||||
.hello {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15";
|
||||
.hello {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "UTF-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#cascade
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
.cascadered
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
.cascadegreen
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
.cascadegreenimportant
|
||||
{
|
||||
color: green!important;
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#cascade
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
.cascadered
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
.cascadegreen
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
.cascadegreenimportant
|
||||
{
|
||||
color: green!important;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
@charset "xxxunknownEncodingxxx";
|
||||
.hello {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "xxxunknownEncodingxxx";
|
||||
.hello {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "iso-8859-1";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-1";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "iso-8859-15" ;
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15" ;
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
@charset
|
||||
"iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset
|
||||
"iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
@charset "iso-8859-15"
|
||||
dummy { font-family: serif; } /* provides a colon to make the important stuff work */
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15"
|
||||
dummy { font-family: serif; } /* provides a colon to make the important stuff work */
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset 'iso-8859-15';
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset 'iso-8859-15';
|
||||
span {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: #FF0000;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-15";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<title>Woolly le Mouton</title>
|
||||
|
||||
<desc>
|
||||
Woolly is a sheep, originally drawn by Coralie Mercier on 2 March 2000
|
||||
and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
Woolly is a sheep, originally drawn by Coralie Mercier on 2 March 2000
|
||||
and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
5 July 2000.
|
||||
</desc>
|
||||
|
||||
@@ -36,7 +36,7 @@ and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
Attribution-NonCommercial-NoDerivs 3.0 Unported License. Please,
|
||||
contact bert@w3.org or coralie@w3.org for licenses for other
|
||||
usages.
|
||||
|
||||
|
||||
</rdf:li>
|
||||
<rdf:li xml:lang="zxx" rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/"/>
|
||||
</rdf:Bag>
|
||||
|
||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
@@ -3,8 +3,8 @@
|
||||
<title>Woolly le Mouton</title>
|
||||
|
||||
<desc>
|
||||
Woolly is a sheep, originally drawn by Coralie Mercier on 2 March 2000
|
||||
and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
Woolly is a sheep, originally drawn by Coralie Mercier on 2 March 2000
|
||||
and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
5 July 2000.
|
||||
</desc>
|
||||
|
||||
@@ -36,7 +36,7 @@ and scanned and converted to SVG by Bert Bos, between 3 March 2000 and
|
||||
Attribution-NonCommercial-NoDerivs 3.0 Unported License. Please,
|
||||
contact bert@w3.org or coralie@w3.org for licenses for other
|
||||
usages.
|
||||
|
||||
|
||||
</rdf:li>
|
||||
<rdf:li xml:lang="zxx" rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/"/>
|
||||
</rdf:Bag>
|
||||
|
||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
@@ -1,5 +1,5 @@
|
||||
/* eof-green.css */
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
/* eof-green.css */
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
/* This file is autogenerated by makegsubfonts.py */
|
||||
|
||||
/*
|
||||
/*
|
||||
Features defined in gsubtest fonts with associated base
|
||||
codepoints for each feature:
|
||||
|
||||
|
||||
@@ -59,38 +59,38 @@ def makeLookup1():
|
||||
f = open(tempShellSourcePath, "wb")
|
||||
f.write(ttxData)
|
||||
f.close()
|
||||
|
||||
|
||||
# compile the shell
|
||||
shell = TTFont(sfntVersion="OTTO")
|
||||
shell.importXML(tempShellSourcePath)
|
||||
shell.save(shellTempPath)
|
||||
os.remove(tempShellSourcePath)
|
||||
|
||||
|
||||
# load the shell
|
||||
shell = TTFont(shellTempPath)
|
||||
|
||||
|
||||
# grab the PASS and FAIL data
|
||||
hmtx = shell["hmtx"]
|
||||
glyphSet = shell.getGlyphSet()
|
||||
|
||||
|
||||
failGlyph = glyphSet["F"]
|
||||
failGlyph.decompile()
|
||||
failGlyphProgram = list(failGlyph.program)
|
||||
failGlyphMetrics = hmtx["F"]
|
||||
|
||||
|
||||
passGlyph = glyphSet["P"]
|
||||
passGlyph.decompile()
|
||||
passGlyphProgram = list(passGlyph.program)
|
||||
passGlyphMetrics = hmtx["P"]
|
||||
|
||||
|
||||
# grab some tables
|
||||
hmtx = shell["hmtx"]
|
||||
cmap = shell["cmap"]
|
||||
|
||||
|
||||
# start the glyph order
|
||||
existingGlyphs = [".notdef", "space", "F", "P"]
|
||||
glyphOrder = list(existingGlyphs)
|
||||
|
||||
|
||||
# start the CFF
|
||||
cff = shell["CFF "].cff
|
||||
globalSubrs = cff.GlobalSubrs
|
||||
@@ -99,13 +99,13 @@ def makeLookup1():
|
||||
private = topDict.Private
|
||||
charStrings = topDict.CharStrings
|
||||
charStringsIndex = charStrings.charStringsIndex
|
||||
|
||||
|
||||
features = sorted(mapping)
|
||||
|
||||
# build the outline, hmtx and cmap data
|
||||
cp = baseCodepoint
|
||||
for index, tag in enumerate(features):
|
||||
|
||||
|
||||
# tag.pass
|
||||
glyphName = "%s.pass" % tag
|
||||
glyphOrder.append(glyphName)
|
||||
@@ -119,14 +119,14 @@ def makeLookup1():
|
||||
charStrings=charStrings
|
||||
)
|
||||
hmtx[glyphName] = passGlyphMetrics
|
||||
|
||||
|
||||
for table in cmap.tables:
|
||||
if table.format == 4:
|
||||
table.cmap[cp] = glyphName
|
||||
else:
|
||||
raise NotImplementedError, "Unsupported cmap table format: %d" % table.format
|
||||
cp += 1
|
||||
|
||||
|
||||
# tag.fail
|
||||
glyphName = "%s.fail" % tag
|
||||
glyphOrder.append(glyphName)
|
||||
@@ -140,7 +140,7 @@ def makeLookup1():
|
||||
charStrings=charStrings
|
||||
)
|
||||
hmtx[glyphName] = failGlyphMetrics
|
||||
|
||||
|
||||
for table in cmap.tables:
|
||||
if table.format == 4:
|
||||
table.cmap[cp] = glyphName
|
||||
@@ -152,15 +152,15 @@ def makeLookup1():
|
||||
|
||||
# set the glyph order
|
||||
shell.setGlyphOrder(glyphOrder)
|
||||
|
||||
|
||||
# start the GSUB
|
||||
shell["GSUB"] = newTable("GSUB")
|
||||
gsub = shell["GSUB"].table = GSUB()
|
||||
gsub.Version = 1.0
|
||||
|
||||
|
||||
# make a list of all the features we will make
|
||||
featureCount = len(features)
|
||||
|
||||
|
||||
# set up the script list
|
||||
scriptList = gsub.ScriptList = ScriptList()
|
||||
scriptList.ScriptCount = 1
|
||||
@@ -176,7 +176,7 @@ def makeLookup1():
|
||||
defaultLangSys.LookupOrder = None
|
||||
script.LangSysCount = 0
|
||||
script.LangSysRecord = []
|
||||
|
||||
|
||||
# set up the feature list
|
||||
featureList = gsub.FeatureList = FeatureList()
|
||||
featureList.FeatureCount = featureCount
|
||||
@@ -191,7 +191,7 @@ def makeLookup1():
|
||||
feature.FeatureParams = None
|
||||
feature.LookupCount = 1
|
||||
feature.LookupListIndex = [index]
|
||||
|
||||
|
||||
# write the lookups
|
||||
lookupList = gsub.LookupList = LookupList()
|
||||
lookupList.LookupCount = featureCount
|
||||
@@ -213,16 +213,16 @@ def makeLookup1():
|
||||
"%s.fail" % tag : "%s.pass" % tag,
|
||||
}
|
||||
lookup.SubTable.append(subtable)
|
||||
|
||||
|
||||
path = outputPath % 1 + ".otf"
|
||||
if os.path.exists(path):
|
||||
os.remove(path)
|
||||
shell.save(path)
|
||||
|
||||
|
||||
# get rid of the shell
|
||||
if os.path.exists(shellTempPath):
|
||||
os.remove(shellTempPath)
|
||||
|
||||
|
||||
def makeLookup3():
|
||||
# make a variation of the shell TTX data
|
||||
f = open(shellSourcePath)
|
||||
@@ -233,38 +233,38 @@ def makeLookup3():
|
||||
f = open(tempShellSourcePath, "wb")
|
||||
f.write(ttxData)
|
||||
f.close()
|
||||
|
||||
|
||||
# compile the shell
|
||||
shell = TTFont(sfntVersion="OTTO")
|
||||
shell.importXML(tempShellSourcePath)
|
||||
shell.save(shellTempPath)
|
||||
os.remove(tempShellSourcePath)
|
||||
|
||||
|
||||
# load the shell
|
||||
shell = TTFont(shellTempPath)
|
||||
|
||||
|
||||
# grab the PASS and FAIL data
|
||||
hmtx = shell["hmtx"]
|
||||
glyphSet = shell.getGlyphSet()
|
||||
|
||||
|
||||
failGlyph = glyphSet["F"]
|
||||
failGlyph.decompile()
|
||||
failGlyphProgram = list(failGlyph.program)
|
||||
failGlyphMetrics = hmtx["F"]
|
||||
|
||||
|
||||
passGlyph = glyphSet["P"]
|
||||
passGlyph.decompile()
|
||||
passGlyphProgram = list(passGlyph.program)
|
||||
passGlyphMetrics = hmtx["P"]
|
||||
|
||||
|
||||
# grab some tables
|
||||
hmtx = shell["hmtx"]
|
||||
cmap = shell["cmap"]
|
||||
|
||||
|
||||
# start the glyph order
|
||||
existingGlyphs = [".notdef", "space", "F", "P"]
|
||||
glyphOrder = list(existingGlyphs)
|
||||
|
||||
|
||||
# start the CFF
|
||||
cff = shell["CFF "].cff
|
||||
globalSubrs = cff.GlobalSubrs
|
||||
@@ -273,13 +273,13 @@ def makeLookup3():
|
||||
private = topDict.Private
|
||||
charStrings = topDict.CharStrings
|
||||
charStringsIndex = charStrings.charStringsIndex
|
||||
|
||||
|
||||
features = sorted(mapping)
|
||||
|
||||
# build the outline, hmtx and cmap data
|
||||
cp = baseCodepoint
|
||||
for index, tag in enumerate(features):
|
||||
|
||||
|
||||
# tag.pass
|
||||
glyphName = "%s.pass" % tag
|
||||
glyphOrder.append(glyphName)
|
||||
@@ -293,7 +293,7 @@ def makeLookup3():
|
||||
charStrings=charStrings
|
||||
)
|
||||
hmtx[glyphName] = passGlyphMetrics
|
||||
|
||||
|
||||
# tag.fail
|
||||
glyphName = "%s.fail" % tag
|
||||
glyphOrder.append(glyphName)
|
||||
@@ -307,7 +307,7 @@ def makeLookup3():
|
||||
charStrings=charStrings
|
||||
)
|
||||
hmtx[glyphName] = failGlyphMetrics
|
||||
|
||||
|
||||
# tag.default
|
||||
glyphName = "%s.default" % tag
|
||||
glyphOrder.append(glyphName)
|
||||
@@ -321,14 +321,14 @@ def makeLookup3():
|
||||
charStrings=charStrings
|
||||
)
|
||||
hmtx[glyphName] = passGlyphMetrics
|
||||
|
||||
|
||||
for table in cmap.tables:
|
||||
if table.format == 4:
|
||||
table.cmap[cp] = glyphName
|
||||
else:
|
||||
raise NotImplementedError, "Unsupported cmap table format: %d" % table.format
|
||||
cp += 1
|
||||
|
||||
|
||||
# tag.alt1,2,3
|
||||
for i in range(1,4):
|
||||
glyphName = "%s.alt%d" % (tag, i)
|
||||
@@ -349,18 +349,18 @@ def makeLookup3():
|
||||
else:
|
||||
raise NotImplementedError, "Unsupported cmap table format: %d" % table.format
|
||||
cp += 1
|
||||
|
||||
|
||||
# set the glyph order
|
||||
shell.setGlyphOrder(glyphOrder)
|
||||
|
||||
|
||||
# start the GSUB
|
||||
shell["GSUB"] = newTable("GSUB")
|
||||
gsub = shell["GSUB"].table = GSUB()
|
||||
gsub.Version = 1.0
|
||||
|
||||
|
||||
# make a list of all the features we will make
|
||||
featureCount = len(features)
|
||||
|
||||
|
||||
# set up the script list
|
||||
scriptList = gsub.ScriptList = ScriptList()
|
||||
scriptList.ScriptCount = 1
|
||||
@@ -376,7 +376,7 @@ def makeLookup3():
|
||||
defaultLangSys.LookupOrder = None
|
||||
script.LangSysCount = 0
|
||||
script.LangSysRecord = []
|
||||
|
||||
|
||||
# set up the feature list
|
||||
featureList = gsub.FeatureList = FeatureList()
|
||||
featureList.FeatureCount = featureCount
|
||||
@@ -391,7 +391,7 @@ def makeLookup3():
|
||||
feature.FeatureParams = None
|
||||
feature.LookupCount = 1
|
||||
feature.LookupListIndex = [index]
|
||||
|
||||
|
||||
# write the lookups
|
||||
lookupList = gsub.LookupList = LookupList()
|
||||
lookupList.LookupCount = featureCount
|
||||
@@ -415,16 +415,16 @@ def makeLookup3():
|
||||
"%s.alt3" % tag : ["%s.fail" % tag, "%s.fail" % tag, "%s.pass" % tag]
|
||||
}
|
||||
lookup.SubTable.append(subtable)
|
||||
|
||||
|
||||
path = outputPath % 3 + ".otf"
|
||||
if os.path.exists(path):
|
||||
os.remove(path)
|
||||
shell.save(path)
|
||||
|
||||
|
||||
# get rid of the shell
|
||||
if os.path.exists(shellTempPath):
|
||||
os.remove(shellTempPath)
|
||||
|
||||
|
||||
def makeJavascriptData():
|
||||
features = sorted(mapping)
|
||||
outStr = []
|
||||
@@ -459,7 +459,7 @@ def makeJavascriptData():
|
||||
for tag in features:
|
||||
taglist.append("\"%s\": 0x%x" % (tag, cp))
|
||||
cp += 4
|
||||
|
||||
|
||||
outStr.append(textwrap.fill(", ".join(taglist), initial_indent=" ", subsequent_indent=" "))
|
||||
outStr.append("};");
|
||||
outStr.append("");
|
||||
@@ -483,4 +483,4 @@ makeLookup3()
|
||||
# output javascript data
|
||||
|
||||
print "Making javascript data file..."
|
||||
makeJavascriptData()
|
||||
makeJavascriptData()
|
||||
|
||||
@@ -14,7 +14,7 @@ var suite = root.generalParallelTest = {
|
||||
data.fixture = document.getElementById('fixture').cloneNode(true);
|
||||
data.fixture.id = 'test-' + (index++);
|
||||
(document.getElementById('offscreen') || document.body).appendChild(data.fixture);
|
||||
|
||||
|
||||
// data container for #fixture > .container > .transition
|
||||
data.transition = {
|
||||
node: data.fixture.querySelector('.transition'),
|
||||
@@ -34,7 +34,7 @@ var suite = root.generalParallelTest = {
|
||||
return computedStyle(data.container.node, property);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// data container for #fixture > .container > .transition[:before | :after]
|
||||
if (data.pseudo) {
|
||||
data.pseudo = {
|
||||
@@ -92,13 +92,13 @@ var suite = root.generalParallelTest = {
|
||||
if (!options.styles) {
|
||||
options.styles = {};
|
||||
}
|
||||
|
||||
|
||||
Object.keys(styles).forEach(function(key) {
|
||||
var selector = '#' + data.fixture.id
|
||||
// fixture must become #fixture.fixture rather than a child selector
|
||||
+ (key.substring(0, 8) === '.fixture' ? '' : ' ')
|
||||
+ key;
|
||||
|
||||
|
||||
options.styles[selector] = styles[key];
|
||||
});
|
||||
},
|
||||
@@ -109,7 +109,7 @@ var suite = root.generalParallelTest = {
|
||||
suite._getStyleFor(data, 'from');
|
||||
// apply target state
|
||||
suite._addClass(data, 'to', true);
|
||||
// grab current styles: "target state"
|
||||
// grab current styles: "target state"
|
||||
suite._getStyleFor(data, 'to');
|
||||
// remove target state
|
||||
suite._removeClass(data, 'to', true);
|
||||
@@ -157,7 +157,7 @@ var suite = root.generalParallelTest = {
|
||||
var raf = window.requestAnimationFrame || function(callback){
|
||||
setTimeout(callback, 20);
|
||||
};
|
||||
|
||||
|
||||
// flag denoting if the runLoop should continue (true) or exit (false)
|
||||
options._collectValues = true;
|
||||
|
||||
@@ -166,19 +166,19 @@ var suite = root.generalParallelTest = {
|
||||
// test's are done, stop annoying the CPU
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// collect current style for test's elements
|
||||
options.tests.forEach(function(data) {
|
||||
if (!data.property) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
['transition', 'container', 'pseudo'].forEach(function(elem) {
|
||||
var pseudo = null;
|
||||
if (!data[elem] || (elem === 'pseudo' && !data.pseudo)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var current = data[elem].computedStyle(data.property);
|
||||
var values = data[elem].values;
|
||||
var length = values.length;
|
||||
@@ -187,11 +187,11 @@ var suite = root.generalParallelTest = {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// rinse and repeat
|
||||
raf(runLoop);
|
||||
}
|
||||
|
||||
|
||||
runLoop();
|
||||
},
|
||||
// stop requestAnimationFrame runLoop collecting computed values
|
||||
@@ -222,7 +222,7 @@ var suite = root.generalParallelTest = {
|
||||
assert_not_equals(values[1], data[elem].from, "may not be initial value while transitioning on ." + elem);
|
||||
assert_not_equals(values[1], data[elem].to, "may not be target value while transitioning on ." + elem);
|
||||
}
|
||||
|
||||
|
||||
// TODO: first value must be initial, last value must be target
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
//
|
||||
// Simple Helper Functions For Testing CSS
|
||||
//
|
||||
//
|
||||
|
||||
(function(root) {
|
||||
'use strict';
|
||||
@@ -17,7 +17,7 @@ root.setStyle = function(selector, styles) {
|
||||
target.type = "text/css";
|
||||
document.getElementsByTagName('head')[0].appendChild(target);
|
||||
}
|
||||
|
||||
|
||||
var data = [];
|
||||
// single selector/styles
|
||||
if (typeof selector === 'string' && styles !== undefined) {
|
||||
@@ -44,7 +44,7 @@ function serializeStyles(styles) {
|
||||
data.push(prefixedProperty + ":" + styles[property] + ";");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return data.join('\n');
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#htmlPrecedence003
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
*
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
font
|
||||
{
|
||||
text-decoration: underline;
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#htmlPrecedence003
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
*
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
font
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "utf-8";
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@charset "iso-8859-1";
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
@charset "iso-8859-1";
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
div
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
span {
|
||||
background-color: #FF0000;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.ýäè {
|
||||
background-color: #00FF00;
|
||||
font-weight: bold;
|
||||
color: #00FF00;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ var values = {
|
||||
data: ['url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=)', 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==)'],
|
||||
// A hunch, as from the spec:
|
||||
// http://www.w3.org/TR/css3-transitions/#animatable-types
|
||||
// gradient: interpolated via the positions and colors of each stop. They must have the same type (radial or linear) and same number of stops in order to be animated. Note: [CSS3-IMAGES] may extend this definition.
|
||||
// gradient: interpolated via the positions and colors of each stop. They must have the same type (radial or linear) and same number of stops in order to be animated. Note: [CSS3-IMAGES] may extend this definition.
|
||||
gradient: [prefix + 'linear-gradient(top, hsl(0, 80%, 70%), #bada55)', prefix + 'linear-gradient(top, #bada55, hsl(0, 80%, 70%))']
|
||||
};
|
||||
},
|
||||
@@ -171,39 +171,39 @@ var values = {
|
||||
var properties = {
|
||||
'background-color': ['color'],
|
||||
'background-position': ['length', 'percentage'],
|
||||
|
||||
|
||||
'border-top-width': ['length'],
|
||||
'border-right-width': ['length'],
|
||||
'border-bottom-width': ['length'],
|
||||
'border-left-width': ['length'],
|
||||
|
||||
|
||||
'border-top-color': ['color'],
|
||||
'border-right-color': ['color'],
|
||||
'border-bottom-color': ['color'],
|
||||
'border-left-color': ['color'],
|
||||
|
||||
|
||||
'padding-bottom': ['length'],
|
||||
'padding-left': ['length'],
|
||||
'padding-right': ['length'],
|
||||
'padding-top': ['length'],
|
||||
|
||||
|
||||
'margin-bottom': ['length'],
|
||||
'margin-left': ['length'],
|
||||
'margin-right': ['length'],
|
||||
'margin-top': ['length'],
|
||||
|
||||
|
||||
'height': ['length', 'percentage'],
|
||||
'width': ['length', 'percentage'],
|
||||
'min-height': ['length', 'percentage'],
|
||||
'min-width': ['length', 'percentage'],
|
||||
'max-height': ['length', 'percentage'],
|
||||
'max-width': ['length', 'percentage'],
|
||||
|
||||
|
||||
'top': ['length', 'percentage'],
|
||||
'right': ['length', 'percentage'],
|
||||
'bottom': ['length', 'percentage'],
|
||||
'left': ['length', 'percentage'],
|
||||
|
||||
|
||||
'color': ['color'],
|
||||
'font-size': ['length', 'percentage'],
|
||||
'font-weight': ['font-weight'],
|
||||
@@ -214,16 +214,16 @@ var properties = {
|
||||
'word-spacing': ['length', 'percentage'],
|
||||
'text-indent': ['length', 'percentage'],
|
||||
'text-shadow': ['shadow'],
|
||||
|
||||
|
||||
'outline-color': ['color'],
|
||||
// outline-offset <integer> used to be an error in the spec
|
||||
'outline-offset': ['length'],
|
||||
'outline-width': ['length'],
|
||||
|
||||
|
||||
'clip': ['rectangle'],
|
||||
// Note: doesn't seem implemented anywhere
|
||||
'crop': ['rectangle'],
|
||||
|
||||
|
||||
'vertical-align': ['length', 'percentage'],
|
||||
'opacity': ['number[0,1]'],
|
||||
'visibility': ['visibility'],
|
||||
@@ -279,7 +279,7 @@ var unspecified_properties = {
|
||||
'background-image': ['image'],
|
||||
'background-size': ['background-size'],
|
||||
// https://drafts.csswg.org/css3-background/#the-box-shadow
|
||||
// Animatable: yes, except between inner and outer shadows (Transition to/from an absent shadow is a transition to/from ‘0 0 transparent’ or ‘0 0 transparent inset’, as appropriate.)
|
||||
// Animatable: yes, except between inner and outer shadows (Transition to/from an absent shadow is a transition to/from ‘0 0 transparent’ or ‘0 0 transparent inset’, as appropriate.)
|
||||
'box-shadow': ['box-shadow'],
|
||||
'font-size-adjust': ['number'],
|
||||
'font-stretch': ['font-stretch'],
|
||||
@@ -342,7 +342,7 @@ var parent_styles = {
|
||||
// unspecified properties
|
||||
'position': {'position': 'relative', 'width': '100px', 'height': '100px'},
|
||||
// inheritance tests
|
||||
'top': {'width': '100px', 'height': '100px', 'position': 'relative'},
|
||||
'top': {'width': '100px', 'height': '100px', 'position': 'relative'},
|
||||
'right': {'width': '100px', 'height': '100px', 'position': 'relative'},
|
||||
'bottom': {'width': '100px', 'height': '100px', 'position': 'relative'},
|
||||
'left': {'width': '100px', 'height': '100px', 'position': 'relative'}
|
||||
@@ -375,7 +375,7 @@ function assemble(props) {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return tests;
|
||||
}
|
||||
|
||||
@@ -393,23 +393,23 @@ root.getUnspecifiedPropertyTests = function() {
|
||||
|
||||
root.getFontSizeRelativePropertyTests = function() {
|
||||
var accepted = {};
|
||||
|
||||
|
||||
for (var key in properties) {
|
||||
if (!Object.prototype.hasOwnProperty.call(properties, key) || key === "font-size") {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (properties[key].indexOf('length') > -1) {
|
||||
accepted[key] = ['length-em'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return assemble(accepted);
|
||||
};
|
||||
|
||||
root.getAutoPropertyTests = function() {
|
||||
var accepted = {};
|
||||
|
||||
|
||||
for (var i = 0, key; key = properties_auto[i]; i++) {
|
||||
accepted[key] = ['auto'];
|
||||
}
|
||||
@@ -420,17 +420,17 @@ root.getAutoPropertyTests = function() {
|
||||
root.filterPropertyTests = function(tests, names) {
|
||||
var allowed = {};
|
||||
var accepted = [];
|
||||
|
||||
|
||||
if (typeof names === "string") {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
|
||||
if (!(names instanceof RegExp)) {
|
||||
names.forEach(function(name) {
|
||||
allowed[name] = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
tests.forEach(function(test) {
|
||||
if (names instanceof RegExp) {
|
||||
if (!test.name.match(names)) {
|
||||
@@ -439,11 +439,11 @@ root.filterPropertyTests = function(tests, names) {
|
||||
} else if (!allowed[test.name]) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
accepted.push(test);
|
||||
});
|
||||
|
||||
|
||||
return accepted;
|
||||
};
|
||||
|
||||
})(window);
|
||||
})(window);
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
{name: "name of test 2", custom: "data"},
|
||||
// ...
|
||||
],
|
||||
|
||||
|
||||
// number of tests (tests, not test-cases!) to run concurrently
|
||||
testsPerSlice: 100,
|
||||
|
||||
// time in milliseconds a test-run takes
|
||||
duration: 1000,
|
||||
|
||||
|
||||
// test-cases to run for for the test - there must be at least one
|
||||
// each case creates its separate async_test() instance
|
||||
cases: {
|
||||
@@ -33,17 +33,17 @@
|
||||
},
|
||||
// ...
|
||||
}
|
||||
|
||||
|
||||
// all callbacks are optional:
|
||||
|
||||
|
||||
// invoked for individual test before it starts so you can setup the environment
|
||||
// like DOM, CSS, adding event listeners and such
|
||||
setup: function(data, options){},
|
||||
|
||||
|
||||
// invoked after a test ended, so you can clean up the environment
|
||||
// like DOM, CSS, removing event listeners and such
|
||||
teardown: function(data, options){},
|
||||
|
||||
|
||||
// invoked before a batch of tests ("slice") are run concurrently
|
||||
// tests is an array of test data objects
|
||||
sliceStart: function(options, tests)
|
||||
@@ -60,22 +60,22 @@ root.runParallelAsyncHarness = function(options) {
|
||||
if (!options.cases) {
|
||||
throw new Error("Options don't contain test cases!");
|
||||
}
|
||||
|
||||
|
||||
var noop = function(){};
|
||||
|
||||
|
||||
// add a 100ms buffer to the test timeout, just in case
|
||||
var duration = Math.ceil(options.duration + 100);
|
||||
|
||||
|
||||
// names of individual tests
|
||||
var cases = Object.keys(options.cases);
|
||||
|
||||
|
||||
// run tests in a batch of slices
|
||||
// primarily not to overload weak devices (tablets, phones, …)
|
||||
// primarily not to overload weak devices (tablets, phones, …)
|
||||
// with too many tests running simultaneously
|
||||
var iteration = -1;
|
||||
var testPerSlice = options.testsPerSlice || 100;
|
||||
var slices = Math.ceil(options.tests.length / testPerSlice);
|
||||
|
||||
|
||||
// initialize all async test cases
|
||||
// Note: satisfying testharness.js needs to know all async tests before load-event
|
||||
options.tests.forEach(function(data, index) {
|
||||
@@ -84,7 +84,7 @@ root.runParallelAsyncHarness = function(options) {
|
||||
data.cases[name] = async_test(data.name + " / " + name, {timeout: options.timeout || 60000});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function runLoop() {
|
||||
iteration++;
|
||||
if (iteration >= slices) {
|
||||
@@ -92,7 +92,7 @@ root.runParallelAsyncHarness = function(options) {
|
||||
(options.done || noop)(options);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// grab a slice of testss and initialize them
|
||||
var offset = iteration * testPerSlice;
|
||||
var tests = options.tests.slice(offset, offset + testPerSlice);
|
||||
@@ -100,10 +100,10 @@ root.runParallelAsyncHarness = function(options) {
|
||||
(options.setup || noop)(data, options);
|
||||
|
||||
});
|
||||
|
||||
|
||||
// kick off the current slice of tests
|
||||
(options.sliceStart || noop)(options, tests);
|
||||
|
||||
|
||||
// perform individual "start" test-case
|
||||
tests.forEach(function(data) {
|
||||
cases.forEach(function(name) {
|
||||
@@ -112,7 +112,7 @@ root.runParallelAsyncHarness = function(options) {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// conclude test (possibly abort)
|
||||
setTimeout(function() {
|
||||
tests.forEach(function(data) {
|
||||
@@ -129,17 +129,17 @@ root.runParallelAsyncHarness = function(options) {
|
||||
data.cases[name].done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// finish the test for current slice of tests
|
||||
(options.sliceDone || noop)(options, tests);
|
||||
|
||||
|
||||
// next test please, give the browser 50ms to do catch its breath
|
||||
setTimeout(runLoop, 50);
|
||||
}, duration);
|
||||
}
|
||||
|
||||
|
||||
// allow DOMContentLoaded before actually doing something
|
||||
setTimeout(runLoop, 100);
|
||||
};
|
||||
|
||||
})(window);
|
||||
})(window);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#p1
|
||||
{
|
||||
color: green;
|
||||
#p1
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/* bad.css */
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
/* bad.css */
|
||||
div
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
@@ -1,83 +1,83 @@
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#user-stylesheet
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
/* Style rules separated to eliminate grouping issues */
|
||||
#user-stylesheet-001
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-002
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-003
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
#user-stylesheet-004
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
#user-stylesheet-005 span
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-006 > span
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-007 + p
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
*[class=user-stylesheet-008]
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-009
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-010 > *:first-child
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-011:first-line
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-012:link
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-013:visited
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-014:hover
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-015:active
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-016:first-letter
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-017:before
|
||||
{
|
||||
content: "PASS PASS";
|
||||
}
|
||||
#user-stylesheet-018:after
|
||||
{
|
||||
content: "PASS PASS";
|
||||
#user-stylesheet-indication
|
||||
{
|
||||
/* Used by the harness to display and indication there is a user-stylesheet applied */
|
||||
display: block!important;
|
||||
}
|
||||
#user-stylesheet
|
||||
{
|
||||
/* Used by the test to hide the prerequsite */
|
||||
display: none;
|
||||
}
|
||||
/* Style rules separated to eliminate grouping issues */
|
||||
#user-stylesheet-001
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-002
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-003
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
#user-stylesheet-004
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
#user-stylesheet-005 span
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-006 > span
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-007 + p
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
*[class=user-stylesheet-008]
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-009
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-010 > *:first-child
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-011:first-line
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-012:link
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-013:visited
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-014:hover
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-015:active
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-016:first-letter
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
#user-stylesheet-017:before
|
||||
{
|
||||
content: "PASS PASS";
|
||||
}
|
||||
#user-stylesheet-018:after
|
||||
{
|
||||
content: "PASS PASS";
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
//
|
||||
// Vendor-Prefix Helper Functions For Testing CSS
|
||||
//
|
||||
//
|
||||
|
||||
(function(root) {
|
||||
'use strict';
|
||||
@@ -21,7 +21,7 @@ root.addVendorPrefix = function (name) {
|
||||
// property unknown to browser
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
return prefix + name;
|
||||
};
|
||||
|
||||
@@ -32,7 +32,7 @@ root.addValueVendorPrefix = function (property, value) {
|
||||
// property unknown to browser
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
return prefix + value;
|
||||
};
|
||||
|
||||
@@ -41,7 +41,7 @@ root.getVendorPrefix = function(name) {
|
||||
if (prefixCache[name] !== undefined) {
|
||||
return prefixCache[name];
|
||||
}
|
||||
|
||||
|
||||
var elem = document.createElement("div");
|
||||
name = camelCase(name);
|
||||
|
||||
@@ -78,9 +78,9 @@ root.getValueVendorPrefix = function(property, value) {
|
||||
return styles[i];
|
||||
}
|
||||
}
|
||||
document.body.removeChild(elem);
|
||||
document.body.removeChild(elem);
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
})(window);
|
||||
})(window);
|
||||
|
||||
Reference in New Issue
Block a user