Bug 934072 - Part 4: Reftests for complex cjk counter styles. r=jfkthame
authorXidorn Quan <quanxunzhen@gmail.com>
Mon, 02 Dec 2013 12:51:26 -0500
changeset 172995 96a46dfbc2c140f3ea808c1356f37699e8cd13ff
parent 172994 b88dfa4ac80cd7cf0d45243ee7e7b586b7f60a97
child 172996 e5bc60ae5c0a80e86b3da3e232de8ceb2d4614c4
push id3224
push userlsblakk@mozilla.com
push dateTue, 04 Feb 2014 01:06:49 +0000
treeherdermozilla-beta@60c04d0987f1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjfkthame
bugs934072
milestone28.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 934072 - Part 4: Reftests for complex cjk counter styles. r=jfkthame
layout/reftests/counters/counter-cjk-decimal-ref.html
layout/reftests/counters/counter-cjk-decimal.html
layout/reftests/counters/counter-japanese-formal-ref.html
layout/reftests/counters/counter-japanese-formal.html
layout/reftests/counters/counter-japanese-informal-ref.html
layout/reftests/counters/counter-japanese-informal.html
layout/reftests/counters/counter-korean-hangul-formal-ref.html
layout/reftests/counters/counter-korean-hangul-formal.html
layout/reftests/counters/counter-korean-hanja-formal-ref.html
layout/reftests/counters/counter-korean-hanja-formal.html
layout/reftests/counters/counter-korean-hanja-informal-ref.html
layout/reftests/counters/counter-korean-hanja-informal.html
layout/reftests/counters/counter-simp-chinese-formal-ref.html
layout/reftests/counters/counter-simp-chinese-formal.html
layout/reftests/counters/counter-simp-chinese-informal-ref.html
layout/reftests/counters/counter-simp-chinese-informal.html
layout/reftests/counters/counter-suffix-ref.html
layout/reftests/counters/counter-suffix.html
layout/reftests/counters/counter-trad-chinese-formal-ref.html
layout/reftests/counters/counter-trad-chinese-formal.html
layout/reftests/counters/counter-trad-chinese-informal-ref.html
layout/reftests/counters/counter-trad-chinese-informal.html
layout/reftests/counters/reftest.list
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-cjk-decimal-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<div>&#x3007;</div>
+<div>&#x4e00;</div>
+<div>&#x4e8c;</div>
+<div>&#x4e09;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x4e00;&#x3007;</div>
+<div>&#x4e00;&#x4e00;</div>
+<div>&#x4e5d;&#x4e5d;</div>
+<div>&#x4e00;&#x3007;&#x3007;</div>
+<div>&#x516d;&#x3007;&#x3007;&#x4e00;</div>
+<div>&#x4e00;&#x4e8c;&#x4e09;&#x56db;&#x4e94;</div>
+
+<div>-1</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-cjk-decimal.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, cjk-decimal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 12345;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-japanese-formal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x58f1;</div>
+<div>&#x5f10;</div>
+<div>&#x53c2;</div>
+<div>&#x56db;</div>
+<div>&#x4f0d;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x58f1;&#x62fe;</div>
+<div>&#x58f1;&#x767e;</div>
+<div>&#x58f1;&#x9621;</div>
+<div>&#x58f1;&#x842c;</div>
+<div>&#x58f1;&#x62fe;&#x842c;</div>
+<div>&#x58f1;&#x767e;&#x842c;</div>
+<div>&#x58f1;&#x9621;&#x842c;</div>
+<div>&#x58f1;&#x5104;</div>
+<div>&#x58f1;&#x62fe;&#x5104;</div>
+
+<div>&#x58f1;&#x62fe;&#x58f1;</div>
+<div>&#x4e5d;&#x62fe;&#x4e5d;</div>
+<div>&#x58f1;&#x767e;&#x58f1;</div>
+<div>&#x5f10;&#x767e;</div>
+<div>&#x516d;&#x9621;&#x58f1;</div>
+<div>&#x58f1;&#x842c;&#x58f1;</div>
+<div>&#x58f1;&#x842c;&#x58f1;&#x62fe;&#x58f1;</div>
+<div>&#x58f1;&#x842c;&#x58f1;&#x767e;&#x58f1;</div>
+<div>&#x58f1;&#x842c;&#x58f1;&#x9621;&#x58f1;&#x767e;&#x58f1;&#x62fe;&#x58f1;</div>
+<div>&#x58f1;&#x9621;&#x58f1;&#x767e;&#x842c;</div>
+<div>&#x58f1;&#x5104;&#x58f1;&#x842c;&#x58f1;</div>
+<div>&#x58f1;&#x5104;&#x58f1;&#x62fe;&#x58f1;&#x842c;&#x58f1;</div>
+
+<div>&#x30de;&#x30a4;&#x30ca;&#x30b9;&#x58f1;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-japanese-formal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, japanese-formal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-japanese-informal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x3007;</div>
+<div>&#x4e00;</div>
+<div>&#x4e8c;</div>
+<div>&#x4e09;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x5341;</div>
+<div>&#x767e;</div>
+<div>&#x5343;</div>
+<div>&#x4e00;&#x4e07;</div>
+<div>&#x5341;&#x4e07;</div>
+<div>&#x767e;&#x4e07;</div>
+<div>&#x4e00;&#x5343;&#x4e07;</div>
+<div>&#x4e00;&#x5104;</div>
+<div>&#x5341;&#x5104;</div>
+
+<div>&#x5341;&#x4e00;</div>
+<div>&#x4e5d;&#x5341;&#x4e5d;</div>
+<div>&#x767e;&#x4e00;</div>
+<div>&#x4e8c;&#x767e;</div>
+<div>&#x516d;&#x5343;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x767e;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x4e00;&#x5343;&#x767e;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x5343;&#x767e;&#x4e07;</div>
+<div>&#x4e00;&#x5104;&#x4e00;&#x4e07;&#x4e00;</div>
+<div>&#x4e00;&#x5104;&#x5341;&#x4e00;&#x4e07;&#x4e00;</div>
+
+<div>&#x30de;&#x30a4;&#x30ca;&#x30b9;&#x4e00;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-japanese-informal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, japanese-informal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hangul-formal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#xc601;</div>
+<div>&#xc77c;</div>
+<div>&#xc774;</div>
+<div>&#xc0bc;</div>
+<div>&#xc0ac;</div>
+<div>&#xc624;</div>
+<div>&#xc721;</div>
+<div>&#xce60;</div>
+<div>&#xd314;</div>
+<div>&#xad6c;</div>
+
+<div>&#xc77c;&#xc2ed;</div>
+<div>&#xc77c;&#xbc31;</div>
+<div>&#xc77c;&#xcc9c;</div>
+<div>&#xc77c;&#xb9cc;</div>
+<div>&#xc77c;&#xc2ed;&#xb9cc;</div>
+<div>&#xc77c;&#xbc31;&#xb9cc;</div>
+<div>&#xc77c;&#xcc9c;&#xb9cc;</div>
+<div>&#xc77c;&#xc5b5;</div>
+<div>&#xc77c;&#xc2ed;&#xc5b5;</div>
+
+<div>&#xc77c;&#xc2ed;&#xc77c;</div>
+<div>&#xad6c;&#xc2ed;&#xad6c;</div>
+<div>&#xc77c;&#xbc31;&#xc77c;</div>
+<div>&#xc774;&#xbc31;</div>
+<div>&#xc721;&#xcc9c;&#xc77c;</div>
+<div>&#xc77c;&#xb9cc; &#xc77c;</div>
+<div>&#xc77c;&#xb9cc; &#xc77c;&#xc2ed;&#xc77c;</div>
+<div>&#xc77c;&#xb9cc; &#xc77c;&#xbc31;&#xc77c;</div>
+<div>&#xc77c;&#xb9cc; &#xc77c;&#xcc9c;&#xc77c;&#xbc31;&#xc77c;&#xc2ed;&#xc77c;</div>
+<div>&#xc77c;&#xcc9c;&#xc77c;&#xbc31;&#xb9cc;</div>
+<div>&#xc77c;&#xc5b5; &#xc77c;&#xb9cc; &#xc77c;</div>
+<div>&#xc77c;&#xc5b5; &#xc77c;&#xc2ed;&#xc77c;&#xb9cc; &#xc77c;</div>
+
+<div>&#xb9c8;&#xc774;&#xb108;&#xc2a4; &#xc77c;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hangul-formal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, korean-hangul-formal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hanja-formal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x58f9;</div>
+<div>&#x8cb3;</div>
+<div>&#x53c3;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x58f9;&#x62fe;</div>
+<div>&#x58f9;&#x767e;</div>
+<div>&#x58f9;&#x4edf;</div>
+<div>&#x58f9;&#x842c;</div>
+<div>&#x58f9;&#x62fe;&#x842c;</div>
+<div>&#x58f9;&#x767e;&#x842c;</div>
+<div>&#x58f9;&#x4edf;&#x842c;</div>
+<div>&#x58f9;&#x5104;</div>
+<div>&#x58f9;&#x62fe;&#x5104;</div>
+
+<div>&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x4e5d;&#x62fe;&#x4e5d;</div>
+<div>&#x58f9;&#x767e;&#x58f9;</div>
+<div>&#x8cb3;&#x767e;</div>
+<div>&#x516d;&#x4edf;&#x58f9;</div>
+<div>&#x58f9;&#x842c; &#x58f9;</div>
+<div>&#x58f9;&#x842c; &#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x842c; &#x58f9;&#x767e;&#x58f9;</div>
+<div>&#x58f9;&#x842c; &#x58f9;&#x4edf;&#x58f9;&#x767e;&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x4edf;&#x58f9;&#x767e;&#x842c;</div>
+<div>&#x58f9;&#x5104; &#x58f9;&#x842c; &#x58f9;</div>
+<div>&#x58f9;&#x5104; &#x58f9;&#x62fe;&#x58f9;&#x842c; &#x58f9;</div>
+
+<div>&#xb9c8;&#xc774;&#xb108;&#xc2a4; &#x58f9;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hanja-formal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, korean-hanja-formal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hanja-informal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x4e00;</div>
+<div>&#x4e8c;</div>
+<div>&#x4e09;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x5341;</div>
+<div>&#x767e;</div>
+<div>&#x5343;</div>
+<div>&#x842c;</div>
+<div>&#x5341;&#x842c;</div>
+<div>&#x767e;&#x842c;</div>
+<div>&#x5343;&#x842c;</div>
+<div>&#x4e00;&#x5104;</div>
+<div>&#x5341;&#x5104;</div>
+
+<div>&#x5341;&#x4e00;</div>
+<div>&#x4e5d;&#x5341;&#x4e5d;</div>
+<div>&#x767e;&#x4e00;</div>
+<div>&#x4e8c;&#x767e;</div>
+<div>&#x516d;&#x5343;&#x4e00;</div>
+<div>&#x842c; &#x4e00;</div>
+<div>&#x842c; &#x5341;&#x4e00;</div>
+<div>&#x842c; &#x767e;&#x4e00;</div>
+<div>&#x842c; &#x5343;&#x767e;&#x5341;&#x4e00;</div>
+<div>&#x5343;&#x767e;&#x842c;</div>
+<div>&#x4e00;&#x5104; &#x842c; &#x4e00;</div>
+<div>&#x4e00;&#x5104; &#x5341;&#x4e00;&#x842c; &#x4e00;</div>
+
+<div>&#xb9c8;&#xc774;&#xb108;&#xc2a4; &#x4e00;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-korean-hanja-informal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, korean-hanja-informal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-simp-chinese-formal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x58f9;</div>
+<div>&#x8d30;</div>
+<div>&#x53c1;</div>
+<div>&#x8086;</div>
+<div>&#x4f0d;</div>
+<div>&#x9646;</div>
+<div>&#x67d2;</div>
+<div>&#x634c;</div>
+<div>&#x7396;</div>
+
+<div>&#x58f9;&#x62fe;</div>
+<div>&#x58f9;&#x4f70;</div>
+<div>&#x58f9;&#x4edf;</div>
+<div>&#x58f9;&#x4e07;</div>
+<div>&#x58f9;&#x62fe;&#x4e07;</div>
+<div>&#x58f9;&#x4f70;&#x4e07;</div>
+<div>&#x58f9;&#x4edf;&#x4e07;</div>
+<div>&#x58f9;&#x4ebf;</div>
+<div>&#x58f9;&#x62fe;&#x4ebf;</div>
+
+<div>&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x7396;&#x62fe;&#x7396;</div>
+<div>&#x58f9;&#x4f70;&#x96f6;&#x58f9;</div>
+<div>&#x8d30;&#x4f70;</div>
+<div>&#x9646;&#x4edf;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x4e07;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x4e07;&#x96f6;&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x4e07;&#x96f6;&#x58f9;&#x4f70;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x4e07;&#x58f9;&#x4edf;&#x58f9;&#x4f70;&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x4edf;&#x58f9;&#x4f70;&#x4e07;</div>
+<div>&#x58f9;&#x4ebf;&#x96f6;&#x58f9;&#x4e07;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x4ebf;&#x96f6;&#x58f9;&#x62fe;&#x58f9;&#x4e07;&#x96f6;&#x58f9;</div>
+
+<div>&#x8d1f;&#x58f9;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-simp-chinese-formal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, simp-chinese-formal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-simp-chinese-informal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x4e00;</div>
+<div>&#x4e8c;</div>
+<div>&#x4e09;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x5341;</div>
+<div>&#x4e00;&#x767e;</div>
+<div>&#x4e00;&#x5343;</div>
+<div>&#x4e00;&#x4e07;</div>
+<div>&#x5341;&#x4e07;</div>
+<div>&#x4e00;&#x767e;&#x4e07;</div>
+<div>&#x4e00;&#x5343;&#x4e07;</div>
+<div>&#x4e00;&#x4ebf;</div>
+<div>&#x5341;&#x4ebf;</div>
+
+<div>&#x5341;&#x4e00;</div>
+<div>&#x4e5d;&#x5341;&#x4e5d;</div>
+<div>&#x4e00;&#x767e;&#x96f6;&#x4e00;</div>
+<div>&#x4e8c;&#x767e;</div>
+<div>&#x516d;&#x5343;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x96f6;&#x4e00;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x96f6;&#x4e00;&#x767e;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x4e07;&#x4e00;&#x5343;&#x4e00;&#x767e;&#x4e00;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x5343;&#x4e00;&#x767e;&#x4e07;</div>
+<div>&#x4e00;&#x4ebf;&#x96f6;&#x4e00;&#x4e07;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x4ebf;&#x96f6;&#x5341;&#x4e00;&#x4e07;&#x96f6;&#x4e00;</div>
+
+<div>&#x8d1f;&#x4e00;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-simp-chinese-informal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, simp-chinese-informal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-suffix-ref.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<style>
+  p, span { margin: 0; padding: 0; line-height: 150%; }
+  #wrapper { width: 10em; }
+  span {
+    display: inline-block;
+    width: 3em;
+    text-align: end;
+    -moz-box-sizing: border-box;
+  }
+  .def span { -moz-padding-end: 0.5em; }
+  .fix span { -moz-padding-end: 1em; }
+</style>
+<div id="wrapper">
+  <p class="def">
+    <span>1.</span>foo<br>
+    <span>2.</span>bar
+  </p>
+  <p class="def">
+    <span>&#x5d0;.</span>foo<br>
+    <span>&#x5d1;.</span>bar
+  </p>
+  <p>
+    <span>&#x4e00;&#x3001;</span>foo<br>
+    <span>&#x4e8c;&#x3001;</span>bar
+  </p>
+  <p class="def">
+    <span>&#xc77c;,</span>foo<br>
+    <span>&#xc774;,</span>bar
+  </p>
+  <p class="fix">
+    <span>1.</span>foo<br>
+    <span>2.</span>bar
+  </p>
+  <p class="fix">
+    <span>&#x5d0;.</span>foo<br>
+    <span>&#x5d1;.</span>bar
+  </p>
+  <p class="fix">
+    <span>&#x4e00;&#x3001;</span>foo<br>
+    <span>&#x4e8c;&#x3001;</span>bar
+  </p>
+  <p class="fix">
+    <span>&#xc77c;,</span>foo<br>
+    <span>&#xc774;,</span>bar
+  </p>
+  <p class="def" dir="rtl">
+    <span>1.</span>foo<br>
+    <span>2.</span>bar
+  </p>
+  <p class="def" dir="rtl">
+    <span>&#x5d0;.</span>foo<br>
+    <span>&#x5d1;.</span>bar
+  </p>
+  <p class="fix" dir="rtl">
+    <span>1.</span>foo<br>
+    <span>2.</span>bar
+  </p>
+  <p class="fix" dir="rtl">
+    <span>&#x5d0;.</span>foo<br>
+    <span>&#x5d1;.</span>bar
+  </p>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-suffix.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<style>
+  ol, li { margin: 0; padding: 0; line-height: 150%; }
+  #wrapper { width: 10em; }
+  ol { padding: 0 3em; }
+  .dec { list-style-type: decimal; }
+  .heb { list-style-type: hebrew; }
+  .cjk { list-style-type: cjk-decimal; }
+  .kor { list-style-type: korean-hangul-formal; }
+  .spec li::-moz-list-number {
+    -moz-padding-end: 1em;
+  }
+</style>
+<div id="wrapper">
+  <ol class="dec"><li>foo<li>bar</ol>
+  <ol class="heb"><li>foo<li>bar</ol>
+  <ol class="cjk"><li>foo<li>bar</ol>
+  <ol class="kor"><li>foo<li>bar</ol>
+  <ol class="dec spec"><li>foo<li>bar</ol>
+  <ol class="heb spec"><li>foo<li>bar</ol>
+  <ol class="cjk spec"><li>foo<li>bar</ol>
+  <ol class="kor spec"><li>foo<li>bar</ol>
+  <ol class="dec" dir="rtl"><li>foo<li>bar</ol>
+  <ol class="heb" dir="rtl"><li>foo<li>bar</ol>
+  <ol class="dec spec" dir="rtl"><li>foo<li>bar</ol>
+  <ol class="heb spec" dir="rtl"><li>foo<li>bar</ol>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-trad-chinese-formal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x58f9;</div>
+<div>&#x8cb3;</div>
+<div>&#x53c3;</div>
+<div>&#x8086;</div>
+<div>&#x4f0d;</div>
+<div>&#x9678;</div>
+<div>&#x67d2;</div>
+<div>&#x634c;</div>
+<div>&#x7396;</div>
+
+<div>&#x58f9;&#x62fe;</div>
+<div>&#x58f9;&#x4f70;</div>
+<div>&#x58f9;&#x4edf;</div>
+<div>&#x58f9;&#x842c;</div>
+<div>&#x58f9;&#x62fe;&#x842c;</div>
+<div>&#x58f9;&#x4f70;&#x842c;</div>
+<div>&#x58f9;&#x4edf;&#x842c;</div>
+<div>&#x58f9;&#x5104;</div>
+<div>&#x58f9;&#x62fe;&#x5104;</div>
+
+<div>&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x7396;&#x62fe;&#x7396;</div>
+<div>&#x58f9;&#x4f70;&#x96f6;&#x58f9;</div>
+<div>&#x8cb3;&#x4f70;</div>
+<div>&#x9678;&#x4edf;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x842c;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x842c;&#x96f6;&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x842c;&#x96f6;&#x58f9;&#x4f70;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x842c;&#x58f9;&#x4edf;&#x58f9;&#x4f70;&#x58f9;&#x62fe;&#x58f9;</div>
+<div>&#x58f9;&#x4edf;&#x58f9;&#x4f70;&#x842c;</div>
+<div>&#x58f9;&#x5104;&#x96f6;&#x58f9;&#x842c;&#x96f6;&#x58f9;</div>
+<div>&#x58f9;&#x5104;&#x96f6;&#x58f9;&#x62fe;&#x58f9;&#x842c;&#x96f6;&#x58f9;</div>
+
+<div>&#x8ca0;&#x58f9;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-trad-chinese-formal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, trad-chinese-formal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-trad-chinese-informal-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<div>&#x96f6;</div>
+<div>&#x4e00;</div>
+<div>&#x4e8c;</div>
+<div>&#x4e09;</div>
+<div>&#x56db;</div>
+<div>&#x4e94;</div>
+<div>&#x516d;</div>
+<div>&#x4e03;</div>
+<div>&#x516b;</div>
+<div>&#x4e5d;</div>
+
+<div>&#x5341;</div>
+<div>&#x4e00;&#x767e;</div>
+<div>&#x4e00;&#x5343;</div>
+<div>&#x4e00;&#x842c;<div>
+<div>&#x5341;&#x842c;</div>
+<div>&#x4e00;&#x767e;&#x842c;</div>
+<div>&#x4e00;&#x5343;&#x842c;</div>
+<div>&#x4e00;&#x5104;</div>
+<div>&#x5341;&#x5104;</div>
+
+<div>&#x5341;&#x4e00;</div>
+<div>&#x4e5d;&#x5341;&#x4e5d;</div>
+<div>&#x4e00;&#x767e;&#x96f6;&#x4e00;</div>
+<div>&#x4e8c;&#x767e;</div>
+<div>&#x516d;&#x5343;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x842c;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x842c;&#x96f6;&#x4e00;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x842c;&#x96f6;&#x4e00;&#x767e;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x842c;&#x4e00;&#x5343;&#x4e00;&#x767e;&#x4e00;&#x5341;&#x4e00;</div>
+<div>&#x4e00;&#x5343;&#x4e00;&#x767e;&#x842c;</div>
+<div>&#x4e00;&#x5104;&#x96f6;&#x4e00;&#x842c;&#x96f6;&#x4e00;</div>
+<div>&#x4e00;&#x5104;&#x96f6;&#x5341;&#x4e00;&#x842c;&#x96f6;&#x4e00;</div>
+
+<div>&#x8ca0;&#x4e00;</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/counters/counter-trad-chinese-informal.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<style>
+  div::after {
+    content: counter(n, trad-chinese-informal);
+  }
+</style>
+<div style="counter-reset: n 0;"></div>
+<div style="counter-reset: n 1;"></div>
+<div style="counter-reset: n 2;"></div>
+<div style="counter-reset: n 3;"></div>
+<div style="counter-reset: n 4;"></div>
+<div style="counter-reset: n 5;"></div>
+<div style="counter-reset: n 6;"></div>
+<div style="counter-reset: n 7;"></div>
+<div style="counter-reset: n 8;"></div>
+<div style="counter-reset: n 9;"></div>
+
+<div style="counter-reset: n 10;"></div>
+<div style="counter-reset: n 100;"></div>
+<div style="counter-reset: n 1000;"></div>
+<div style="counter-reset: n 10000;"></div>
+<div style="counter-reset: n 100000;"></div>
+<div style="counter-reset: n 1000000;"></div>
+<div style="counter-reset: n 10000000;"></div>
+<div style="counter-reset: n 100000000;"></div>
+<div style="counter-reset: n 1000000000;"></div>
+
+<div style="counter-reset: n 11;"></div>
+<div style="counter-reset: n 99;"></div>
+<div style="counter-reset: n 101;"></div>
+<div style="counter-reset: n 200;"></div>
+<div style="counter-reset: n 6001;"></div>
+<div style="counter-reset: n 10001;"></div>
+<div style="counter-reset: n 10011;"></div>
+<div style="counter-reset: n 10101;"></div>
+<div style="counter-reset: n 11111;"></div>
+<div style="counter-reset: n 11000000;"></div>
+<div style="counter-reset: n 100010001;"></div>
+<div style="counter-reset: n 100110001;"></div>
+
+<div style="counter-reset: n -1;"></div>
--- a/layout/reftests/counters/reftest.list
+++ b/layout/reftests/counters/reftest.list
@@ -63,8 +63,19 @@
 == counter-reset-integer-range.html counter-reset-integer-range-ref.html
 == counter-ua-limits-00.html counter-ua-limits-00-ref.html
 == counter-ua-limits-01.html counter-ua-limits-01-ref.html
 == counter-ua-limits-02.html counter-ua-limits-02-ref.html
 == counter-ua-limits-03.html counter-ua-limits-03-ref.html
 == counter-ua-limits-list-00.html counter-ua-limits-list-00-ref.html
 == counter-ua-limits-list-01.html counter-ua-limits-list-01-ref.html
 == multiple-thai-counters.html multiple-thai-counters-ref.html
+== counter-suffix.html counter-suffix-ref.html
+== counter-cjk-decimal.html counter-cjk-decimal-ref.html
+== counter-japanese-informal.html counter-japanese-informal-ref.html
+== counter-japanese-formal.html counter-japanese-formal-ref.html
+== counter-korean-hangul-formal.html counter-korean-hangul-formal-ref.html
+== counter-korean-hanja-informal.html counter-korean-hanja-informal-ref.html
+== counter-korean-hanja-formal.html counter-korean-hanja-formal-ref.html
+== counter-simp-chinese-informal.html counter-simp-chinese-informal-ref.html
+== counter-simp-chinese-formal.html counter-simp-chinese-formal-ref.html
+== counter-trad-chinese-informal.html counter-trad-chinese-informal-ref.html
+== counter-trad-chinese-formal.html counter-trad-chinese-formal-ref.html