summaryrefslogtreecommitdiffstats
path: root/layout/reftests/font-face
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/font-face')
-rw-r--r--layout/reftests/font-face/486974-1.html24
-rw-r--r--layout/reftests/font-face/507960-1-bad-checksums-ttf.html16
-rw-r--r--layout/reftests/font-face/507960-1-bad-checksums-woff.html16
-rw-r--r--layout/reftests/font-face/507960-1-bad-offset-woff.html16
-rw-r--r--layout/reftests/font-face/507960-1-bad-sfnt-version-ttf.html16
-rw-r--r--layout/reftests/font-face/507960-1-bad-sfnt-version-woff.html16
-rw-r--r--layout/reftests/font-face/507960-1-bad-woff-sig.html16
-rw-r--r--layout/reftests/font-face/507960-1-nofont.html11
-rw-r--r--layout/reftests/font-face/507960-1-ref.html16
-rw-r--r--layout/reftests/font-face/507960-1-woff-bad-hint.html16
-rw-r--r--layout/reftests/font-face/507960-1-woff-hint.html16
-rw-r--r--layout/reftests/font-face/507960-1-woff.html16
-rw-r--r--layout/reftests/font-face/534352-1-extra-cmap-sentinel-ref.html12
-rw-r--r--layout/reftests/font-face/534352-1-extra-cmap-sentinel.html19
-rw-r--r--layout/reftests/font-face/CAhem.ttfbin0 -> 13620 bytes
-rw-r--r--layout/reftests/font-face/ahem-metrics-1-ref.html8
-rw-r--r--layout/reftests/font-face/ahem-metrics-1.html8
-rw-r--r--layout/reftests/font-face/bug-1481905-cancel-load-ref.html11
-rw-r--r--layout/reftests/font-face/bug-1481905-cancel-load.html22
-rw-r--r--layout/reftests/font-face/bug-1481905-cancel-load.sjs223
-rw-r--r--layout/reftests/font-face/bug533251-ref.html25
-rw-r--r--layout/reftests/font-face/bug533251.html31
-rw-r--r--layout/reftests/font-face/cjkcisvs-1-ref.html22
-rw-r--r--layout/reftests/font-face/cjkcisvs-1.html22
-rw-r--r--layout/reftests/font-face/color-1-notref.html20
-rw-r--r--layout/reftests/font-face/color-1-ref.html21
-rw-r--r--layout/reftests/font-face/color-1a.html20
-rw-r--r--layout/reftests/font-face/color-1b.html21
-rw-r--r--layout/reftests/font-face/color-2-notref.html20
-rw-r--r--layout/reftests/font-face/color-2-ref.html20
-rw-r--r--layout/reftests/font-face/color-2a.html20
-rw-r--r--layout/reftests/font-face/colrv1-01-ref.html43
-rw-r--r--layout/reftests/font-face/colrv1-01.html16
-rw-r--r--layout/reftests/font-face/colrv1-02.html17
-rw-r--r--layout/reftests/font-face/colrv1-02a-ref.html13
-rw-r--r--layout/reftests/font-face/colrv1-02b-ref.html13
-rw-r--r--layout/reftests/font-face/colrv1-03-ref.html19
-rw-r--r--layout/reftests/font-face/colrv1-03.html23
-rw-r--r--layout/reftests/font-face/colrv1-04-ref.html24
-rw-r--r--layout/reftests/font-face/colrv1-04.html27
-rw-r--r--layout/reftests/font-face/colrv1-05-ref.html89
-rw-r--r--layout/reftests/font-face/colrv1-05.html27
-rw-r--r--layout/reftests/font-face/colrv1-06-ref.html39
-rw-r--r--layout/reftests/font-face/colrv1-06.html42
-rw-r--r--layout/reftests/font-face/colrv1-07-ref.html21
-rw-r--r--layout/reftests/font-face/colrv1-07.html23
-rw-r--r--layout/reftests/font-face/colrv1-08-ref.html44
-rw-r--r--layout/reftests/font-face/colrv1-08.html32
-rw-r--r--layout/reftests/font-face/colrv1-09-ref.html15
-rw-r--r--layout/reftests/font-face/colrv1-09.html15
-rw-r--r--layout/reftests/font-face/cross-iframe-1-inner-1.html26
-rw-r--r--layout/reftests/font-face/cross-iframe-1-inner-2.html26
-rw-r--r--layout/reftests/font-face/cross-iframe-1-ref.html37
-rw-r--r--layout/reftests/font-face/cross-iframe-1.html32
-rw-r--r--layout/reftests/font-face/delete-rule-1-ref.html13
-rw-r--r--layout/reftests/font-face/delete-rule-1.html42
-rw-r--r--layout/reftests/font-face/disable-sheet-1-ref.html13
-rw-r--r--layout/reftests/font-face/disable-sheet-1.html34
-rw-r--r--layout/reftests/font-face/disable-sheet-4-ref.html26
-rw-r--r--layout/reftests/font-face/disable-sheet-4.html44
-rw-r--r--layout/reftests/font-face/disable-sheet-5.html44
-rw-r--r--layout/reftests/font-face/download-1-notref.html18
-rw-r--r--layout/reftests/font-face/download-1.html23
-rw-r--r--layout/reftests/font-face/download-2-big-otf.html23
-rw-r--r--layout/reftests/font-face/download-2-big.html23
-rw-r--r--layout/reftests/font-face/download-2-ref.html23
-rw-r--r--layout/reftests/font-face/download-2.html23
-rw-r--r--layout/reftests/font-face/download-3-notref.html27
-rw-r--r--layout/reftests/font-face/download-3-ref.html38
-rw-r--r--layout/reftests/font-face/download-3.html40
-rw-r--r--layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html35
-rw-r--r--layout/reftests/font-face/dynamic-duplicate-rule-1a.html65
-rw-r--r--layout/reftests/font-face/dynamic-duplicate-rule-1b.html59
-rw-r--r--layout/reftests/font-face/dynamic-duplicate-rule-1c.html85
-rw-r--r--layout/reftests/font-face/enable-sheet-1-ref.html26
-rw-r--r--layout/reftests/font-face/enable-sheet-1.html38
-rw-r--r--layout/reftests/font-face/enable-sheet-2.html47
-rw-r--r--layout/reftests/font-face/enable-sheet-3.html47
-rw-r--r--layout/reftests/font-face/enable-sheet-4-ref.html26
-rw-r--r--layout/reftests/font-face/enable-sheet-4.html46
-rw-r--r--layout/reftests/font-face/enable-sheet-5.html46
-rw-r--r--layout/reftests/font-face/enable-sheet-6.html46
-rw-r--r--layout/reftests/font-face/enable-sheet-7.html46
-rw-r--r--layout/reftests/font-face/ex-unit-1-dynamic.html20
-rw-r--r--layout/reftests/font-face/ex-unit-1-ref.html7
-rw-r--r--layout/reftests/font-face/ex-unit-1.html7
-rw-r--r--layout/reftests/font-face/fallback-to-system-1-ref.html24
-rw-r--r--layout/reftests/font-face/fallback-to-system-1.html31
-rw-r--r--layout/reftests/font-face/font-display-1-ref.html46
-rw-r--r--layout/reftests/font-face/font-display-1.html71
-rw-r--r--layout/reftests/font-face/font-display-2-ref.html46
-rw-r--r--layout/reftests/font-face/font-display-2.html71
-rw-r--r--layout/reftests/font-face/font-error-404-1-ref.html14
-rw-r--r--layout/reftests/font-face/font-error-404-1.html19
-rw-r--r--layout/reftests/font-face/font-error-404-2-ref.html18
-rw-r--r--layout/reftests/font-face/font-error-404-2.html19
-rw-r--r--layout/reftests/font-face/font-familiy-whitespace-1-notref.html9
-rw-r--r--layout/reftests/font-face/font-familiy-whitespace-1-ref.html9
-rw-r--r--layout/reftests/font-face/font-familiy-whitespace-1.html9
-rw-r--r--layout/reftests/font-face/font-redirect.html23
-rw-r--r--layout/reftests/font-face/helveticaneue-ultra-ref.html37
-rw-r--r--layout/reftests/font-face/helveticaneue-ultra.html31
-rw-r--r--layout/reftests/font-face/insert-rule-1-ref.html20
-rw-r--r--layout/reftests/font-face/insert-rule-1a.html30
-rw-r--r--layout/reftests/font-face/insert-rule-1b.html30
-rw-r--r--layout/reftests/font-face/ivs-1-ref.html14
-rw-r--r--layout/reftests/font-face/ivs-1.html14
-rw-r--r--layout/reftests/font-face/load-badchecksum-ref.html32
-rw-r--r--layout/reftests/font-face/load-badchecksum.html32
-rw-r--r--layout/reftests/font-face/load-badfullname-ref.html35
-rw-r--r--layout/reftests/font-face/load-badfullname.html40
-rw-r--r--layout/reftests/font-face/local-1-ref.html23
-rw-r--r--layout/reftests/font-face/local-1.html63
-rw-r--r--layout/reftests/font-face/local-styled-1-ref.html34
-rw-r--r--layout/reftests/font-face/local-styled-1.html52
-rw-r--r--layout/reftests/font-face/media-query-add-1-ref.html23
-rw-r--r--layout/reftests/font-face/media-query-add-1.html27
-rw-r--r--layout/reftests/font-face/media-query-inner-1.html34
-rw-r--r--layout/reftests/font-face/media-query-remove-1-ref.html18
-rw-r--r--layout/reftests/font-face/media-query-remove-1.html27
-rw-r--r--layout/reftests/font-face/meiryo-en-bold.html9
-rw-r--r--layout/reftests/font-face/meiryo-en-bolditalic.html9
-rw-r--r--layout/reftests/font-face/meiryo-en-italic.html9
-rw-r--r--layout/reftests/font-face/meiryo-en-oblique.html9
-rw-r--r--layout/reftests/font-face/meiryo-en.html9
-rw-r--r--layout/reftests/font-face/meiryo-ja-bold.html9
-rw-r--r--layout/reftests/font-face/meiryo-ja-bolditalic.html9
-rw-r--r--layout/reftests/font-face/meiryo-ja-italic.html9
-rw-r--r--layout/reftests/font-face/meiryo-ja-oblique.html9
-rw-r--r--layout/reftests/font-face/meiryo-ja.html9
-rw-r--r--layout/reftests/font-face/missing-names-ref.html32
-rw-r--r--layout/reftests/font-face/missing-names.html40
-rw-r--r--layout/reftests/font-face/multiple-descriptor-1-notref.html14
-rw-r--r--layout/reftests/font-face/multiple-descriptor-1-ref.html24
-rw-r--r--layout/reftests/font-face/multiple-descriptor-1.html26
-rw-r--r--layout/reftests/font-face/multiple-in-family-1-notref.html26
-rw-r--r--layout/reftests/font-face/multiple-in-family-1-ref.html34
-rw-r--r--layout/reftests/font-face/multiple-in-family-1.html31
-rw-r--r--layout/reftests/font-face/multiple-in-family-1b.html33
-rw-r--r--layout/reftests/font-face/name-collision-bad-url-ref.html57
-rw-r--r--layout/reftests/font-face/name-collision-bad-url.html154
-rw-r--r--layout/reftests/font-face/name-collision-ref.html68
-rw-r--r--layout/reftests/font-face/name-collision-with-prefs-font-ref.html29
-rw-r--r--layout/reftests/font-face/name-collision-with-prefs-font.html65
-rw-r--r--layout/reftests/font-face/name-collision.html154
-rw-r--r--layout/reftests/font-face/name-override-1-ref.html23
-rw-r--r--layout/reftests/font-face/name-override-1.html23
-rw-r--r--layout/reftests/font-face/name-override-simple-1-ref.html23
-rw-r--r--layout/reftests/font-face/name-override-simple-1.html23
-rw-r--r--layout/reftests/font-face/order-1-ref.html23
-rw-r--r--layout/reftests/font-face/order-1.html28
-rw-r--r--layout/reftests/font-face/order-2-ref.html28
-rw-r--r--layout/reftests/font-face/order-2.html38
-rw-r--r--layout/reftests/font-face/order-3-ref.html28
-rw-r--r--layout/reftests/font-face/order-3.html38
-rw-r--r--layout/reftests/font-face/prop-order-over-rule-order-1a.html28
-rw-r--r--layout/reftests/font-face/prop-order-over-rule-order-1b.html28
-rw-r--r--layout/reftests/font-face/prop-order-over-rule-order-2a.html28
-rw-r--r--layout/reftests/font-face/prop-order-over-rule-order-2b.html28
-rw-r--r--layout/reftests/font-face/reflow-sanity-1-data.html54
-rw-r--r--layout/reftests/font-face/reflow-sanity-1-ref.html35
-rw-r--r--layout/reftests/font-face/reflow-sanity-1.html54
-rw-r--r--layout/reftests/font-face/reflow-sanity-delay-1-metrics.html54
-rw-r--r--layout/reftests/font-face/reflow-sanity-delay-1a.html54
-rw-r--r--layout/reftests/font-face/reflow-sanity-delay-1b.html54
-rw-r--r--layout/reftests/font-face/reflow-sanity-delay-1c.html54
-rw-r--r--layout/reftests/font-face/reftest.list249
-rw-r--r--layout/reftests/font-face/resize-detector-iframe.html32
-rw-r--r--layout/reftests/font-face/restore-size-detector-iframe.html32
-rw-r--r--layout/reftests/font-face/sheet-set-base-1-ref.html26
-rw-r--r--layout/reftests/font-face/sheet-set-base-1.html34
-rw-r--r--layout/reftests/font-face/sheet-set-switch-1-ref.html28
-rw-r--r--layout/reftests/font-face/sheet-set-switch-1.html49
-rw-r--r--layout/reftests/font-face/src-list-1-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-1.html23
-rw-r--r--layout/reftests/font-face/src-list-2-big-otf.html23
-rw-r--r--layout/reftests/font-face/src-list-2-big-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-2-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-2.html23
-rw-r--r--layout/reftests/font-face/src-list-actual-font-ref.html21
-rw-r--r--layout/reftests/font-face/src-list-data-1.html21
-rw-r--r--layout/reftests/font-face/src-list-data-2.html21
-rw-r--r--layout/reftests/font-face/src-list-data-3.html35
-rw-r--r--layout/reftests/font-face/src-list-data-4.html35
-rw-r--r--layout/reftests/font-face/src-list-data-ref.html21
-rw-r--r--layout/reftests/font-face/src-list-format-1-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-format-1.html23
-rw-r--r--layout/reftests/font-face/src-list-format-2-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-format-2.html23
-rw-r--r--layout/reftests/font-face/src-list-format-3-ref.html23
-rw-r--r--layout/reftests/font-face/src-list-format-4.html24
-rw-r--r--layout/reftests/font-face/src-list-format-5.html24
-rw-r--r--layout/reftests/font-face/src-list-format-7.html23
-rw-r--r--layout/reftests/font-face/src-list-local-fallback-ref.html41
-rw-r--r--layout/reftests/font-face/src-list-local-fallback.html70
-rw-r--r--layout/reftests/font-face/src-list-local-full-quotes.html52
-rw-r--r--layout/reftests/font-face/src-list-local-full-ref.html39
-rw-r--r--layout/reftests/font-face/src-list-local-full.html52
-rw-r--r--layout/reftests/font-face/src-list-local-localized-ref.html378
-rw-r--r--layout/reftests/font-face/src-list-local-localized.html939
-rw-r--r--layout/reftests/font-face/src-list-local-ps.html57
-rw-r--r--layout/reftests/font-face/synthetic-variations-ref.html81
-rw-r--r--layout/reftests/font-face/synthetic-variations.html140
-rw-r--r--layout/reftests/font-face/synthetic-weight-style-ref.html120
-rw-r--r--layout/reftests/font-face/synthetic-weight-style.html165
-rw-r--r--layout/reftests/font-face/underline-offset-change-1-ref.html25
-rw-r--r--layout/reftests/font-face/underline-offset-change-1.html45
-rw-r--r--layout/reftests/font-face/underline-offset-change-2-ref.html25
-rw-r--r--layout/reftests/font-face/underline-offset-change-2.html45
-rw-r--r--layout/reftests/font-face/unicoderange-1-ref.html34
-rw-r--r--layout/reftests/font-face/unicoderange-1.html48
-rw-r--r--layout/reftests/font-face/unicoderange-2-ref.html34
-rw-r--r--layout/reftests/font-face/unicoderange-2.html58
-rw-r--r--layout/reftests/font-face/unicoderange-3-ref.html34
-rw-r--r--layout/reftests/font-face/unicoderange-3.html48
-rw-r--r--layout/reftests/font-face/unicoderange-4-ref.html34
-rw-r--r--layout/reftests/font-face/unicoderange-4.html42
-rw-r--r--layout/reftests/font-face/variation-format-hint-1A-ref.html17
-rw-r--r--layout/reftests/font-face/variation-format-hint-1B-otf-ref.html17
-rw-r--r--layout/reftests/font-face/variation-format-hint-1B-ttf-ref.html17
-rw-r--r--layout/reftests/font-face/variation-format-hint-1B-woff-ref.html17
-rw-r--r--layout/reftests/font-face/variation-format-hint-1B-woff2-ref.html17
-rw-r--r--layout/reftests/font-face/variation-format-hint-1a.html20
-rw-r--r--layout/reftests/font-face/variation-format-hint-1b.html20
-rw-r--r--layout/reftests/font-face/variation-format-hint-1c.html20
-rw-r--r--layout/reftests/font-face/variation-format-hint-1d.html20
-rw-r--r--layout/reftests/font-face/woff2-1-ref.html20
-rw-r--r--layout/reftests/font-face/woff2-1.html20
-rw-r--r--layout/reftests/font-face/woff2-totalsfntsize-ref.html29
-rw-r--r--layout/reftests/font-face/woff2-totalsfntsize.html29
230 files changed, 8948 insertions, 0 deletions
diff --git a/layout/reftests/font-face/486974-1.html b/layout/reftests/font-face/486974-1.html
new file mode 100644
index 0000000000..baee6e756c
--- /dev/null
+++ b/layout/reftests/font-face/486974-1.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA" }
+
+ span { font-style: oblique }
+ </style>
+</head>
+<body>
+
+<p>A<span>A</span></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-checksums-ttf.html b/layout/reftests/font-face/507960-1-bad-checksums-ttf.html
new file mode 100644
index 0000000000..f34497c93e
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-checksums-ttf.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-checksums.ttf);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-checksums-woff.html b/layout/reftests/font-face/507960-1-bad-checksums-woff.html
new file mode 100644
index 0000000000..1dfea48638
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-checksums-woff.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-checksums.woff);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-offset-woff.html b/layout/reftests/font-face/507960-1-bad-offset-woff.html
new file mode 100644
index 0000000000..6c5f7eeffd
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-offset-woff.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-offset.woff);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-sfnt-version-ttf.html b/layout/reftests/font-face/507960-1-bad-sfnt-version-ttf.html
new file mode 100644
index 0000000000..28389c07a5
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-sfnt-version-ttf.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-sfnt-version.ttf);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-sfnt-version-woff.html b/layout/reftests/font-face/507960-1-bad-sfnt-version-woff.html
new file mode 100644
index 0000000000..5163297beb
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-sfnt-version-woff.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-sfnt-version.woff);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-bad-woff-sig.html b/layout/reftests/font-face/507960-1-bad-woff-sig.html
new file mode 100644
index 0000000000..e710abc6f0
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-bad-woff-sig.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge-bad-woff-sig.woff);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-nofont.html b/layout/reftests/font-face/507960-1-nofont.html
new file mode 100644
index 0000000000..2c584a6faa
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-nofont.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<style type="text/css">
+ body {
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-ref.html b/layout/reftests/font-face/507960-1-ref.html
new file mode 100644
index 0000000000..a9694eedbc
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-ref.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge.ttf);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-woff-bad-hint.html b/layout/reftests/font-face/507960-1-woff-bad-hint.html
new file mode 100644
index 0000000000..1d8002da96
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-woff-bad-hint.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge.woff) format("not-woff");
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-woff-hint.html b/layout/reftests/font-face/507960-1-woff-hint.html
new file mode 100644
index 0000000000..a0d84e2300
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-woff-hint.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge.woff) format("woff");
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/507960-1-woff.html b/layout/reftests/font-face/507960-1-woff.html
new file mode 100644
index 0000000000..97bc8a8a86
--- /dev/null
+++ b/layout/reftests/font-face/507960-1-woff.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<style type="text/css">
+ @font-face {
+ font-family: test;
+ src: url(../fonts/DeLarge/DeLarge.woff);
+ }
+ body {
+ font-family: test;
+ }
+</style>
+</head>
+<body>
+ HELLO WORLD
+</body>
+</html>
diff --git a/layout/reftests/font-face/534352-1-extra-cmap-sentinel-ref.html b/layout/reftests/font-face/534352-1-extra-cmap-sentinel-ref.html
new file mode 100644
index 0000000000..d3116800ad
--- /dev/null
+++ b/layout/reftests/font-face/534352-1-extra-cmap-sentinel-ref.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<style type="text/css">
+body {
+ font-family: serif;
+}
+</style>
+</head>
+<body>
+This should NOT be in the default serif font.
+</body>
+</html>
diff --git a/layout/reftests/font-face/534352-1-extra-cmap-sentinel.html b/layout/reftests/font-face/534352-1-extra-cmap-sentinel.html
new file mode 100644
index 0000000000..c0a566bdd0
--- /dev/null
+++ b/layout/reftests/font-face/534352-1-extra-cmap-sentinel.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<!-- font Prototype.ttf (see bug 496573 comment #25 and bug 534352)
+ has a redundant [0xFFFF,0xFFFF] sentinel value in the cmap -->
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(../fonts/Prototype.ttf);
+}
+
+body {
+ font-family: test, serif;
+}
+</style>
+</head>
+<body>
+This should NOT be in the default serif font.
+</body>
+</html>
diff --git a/layout/reftests/font-face/CAhem.ttf b/layout/reftests/font-face/CAhem.ttf
new file mode 100644
index 0000000000..682bb2a484
--- /dev/null
+++ b/layout/reftests/font-face/CAhem.ttf
Binary files differ
diff --git a/layout/reftests/font-face/ahem-metrics-1-ref.html b/layout/reftests/font-face/ahem-metrics-1-ref.html
new file mode 100644
index 0000000000..14eb6b2919
--- /dev/null
+++ b/layout/reftests/font-face/ahem-metrics-1-ref.html
@@ -0,0 +1,8 @@
+<title>Testcase, bug 467084</title>
+<style>
+body { background: white; }
+body > div { background: blue; height: 100px; width: 100px; padding: 5px; }
+body > div > div { background: aqua; height: 100px; width: 100px; }
+</style>
+<div><div></div></div>
+
diff --git a/layout/reftests/font-face/ahem-metrics-1.html b/layout/reftests/font-face/ahem-metrics-1.html
new file mode 100644
index 0000000000..e5a83113be
--- /dev/null
+++ b/layout/reftests/font-face/ahem-metrics-1.html
@@ -0,0 +1,8 @@
+<title>Testcase, bug 467084</title>
+<style>
+html { background: white; }
+@font-face { font-family: "AcidAhemTest"; src: url(../fonts/Ahem.ttf); }
+body { background: blue; height: 100px; width: 100px; padding: 5px; }
+span { color: transparent; background: aqua; font: 100px/1 AcidAhemTest; }
+</style>
+<span>X</span>
diff --git a/layout/reftests/font-face/bug-1481905-cancel-load-ref.html b/layout/reftests/font-face/bug-1481905-cancel-load-ref.html
new file mode 100644
index 0000000000..1cec246760
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<style>
+ @font-face {
+ font-family: test;
+ src: url(../fonts/markA.ttf);
+ }
+</style>
+<div style="font-family: test, serif">ABC</div>
+<div style="font-family: serif">ABC</div>
diff --git a/layout/reftests/font-face/bug-1481905-cancel-load.html b/layout/reftests/font-face/bug-1481905-cancel-load.html
new file mode 100644
index 0000000000..8ca7b750e7
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<style id="A">
+ @font-face {
+ font-family: test;
+ src: url("bug-1481905-cancel-load.sjs");
+ }
+</style>
+<style>
+ @font-face {
+ font-family: test;
+ src: url("bug-1481905-cancel-load.sjs");
+ }
+</style>
+<div style="font-family: test, serif">ABC</div>
+<div style="font-family: serif">ABC</div>
+<script>
+ document.body.offsetTop;
+ document.getElementById("A").remove();
+ document.documentElement.className = "";
+</script>
diff --git a/layout/reftests/font-face/bug-1481905-cancel-load.sjs b/layout/reftests/font-face/bug-1481905-cancel-load.sjs
new file mode 100644
index 0000000000..4e944902de
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load.sjs
@@ -0,0 +1,223 @@
+// Hex dump of the markA font data:
+const markA_data = [
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x80,
+ 0x00, 0x03, 0x00, 0x50, 0x46, 0x46, 0x54, 0x4d,
+ 0x8e, 0x9c, 0x75, 0x19, 0x00, 0x00, 0x06, 0x04,
+ 0x00, 0x00, 0x00, 0x1c, 0x4f, 0x53, 0x2f, 0x32,
+ 0x58, 0xbb, 0x62, 0x4b, 0x00, 0x00, 0x01, 0x58,
+ 0x00, 0x00, 0x00, 0x60, 0x63, 0x6d, 0x61, 0x70,
+ 0x00, 0x77, 0x06, 0xc2, 0x00, 0x00, 0x01, 0xcc,
+ 0x00, 0x00, 0x01, 0x4a, 0x63, 0x76, 0x74, 0x20,
+ 0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x03, 0x18,
+ 0x00, 0x00, 0x00, 0x04, 0x67, 0x61, 0x73, 0x70,
+ 0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x05, 0xfc,
+ 0x00, 0x00, 0x00, 0x08, 0x67, 0x6c, 0x79, 0x66,
+ 0x08, 0x2e, 0x9a, 0x4f, 0x00, 0x00, 0x03, 0x28,
+ 0x00, 0x00, 0x00, 0x8c, 0x68, 0x65, 0x61, 0x64,
+ 0x19, 0x61, 0xba, 0x49, 0x00, 0x00, 0x00, 0xdc,
+ 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61,
+ 0x08, 0x90, 0x05, 0x7e, 0x00, 0x00, 0x01, 0x14,
+ 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78,
+ 0x0c, 0x7d, 0x00, 0x85, 0x00, 0x00, 0x01, 0xb8,
+ 0x00, 0x00, 0x00, 0x14, 0x6c, 0x6f, 0x63, 0x61,
+ 0x00, 0x54, 0x00, 0x9a, 0x00, 0x00, 0x03, 0x1c,
+ 0x00, 0x00, 0x00, 0x0c, 0x6d, 0x61, 0x78, 0x70,
+ 0x00, 0x4a, 0x00, 0x3d, 0x00, 0x00, 0x01, 0x38,
+ 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65,
+ 0x51, 0xbd, 0x5d, 0x1b, 0x00, 0x00, 0x03, 0xb4,
+ 0x00, 0x00, 0x02, 0x19, 0x70, 0x6f, 0x73, 0x74,
+ 0xff, 0xc0, 0x00, 0x58, 0x00, 0x00, 0x05, 0xd0,
+ 0x00, 0x00, 0x00, 0x2c, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0xb3, 0x28, 0x11, 0xef,
+ 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x0b, 0x03, 0xe8,
+ 0x00, 0x00, 0x00, 0x00, 0xda, 0x54, 0xbb, 0x86,
+ 0x00, 0x00, 0x00, 0x00, 0xda, 0x54, 0xbb, 0x86,
+ 0x00, 0x21, 0xff, 0x9c, 0x05, 0x78, 0x02, 0xbc,
+ 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0xbc, 0xff, 0x9c, 0x00, 0x5a, 0x05, 0xdc,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x78, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c,
+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x04, 0xe2, 0x01, 0x90, 0x00, 0x05,
+ 0x00, 0x00, 0x02, 0x8a, 0x02, 0xbc, 0x00, 0x00,
+ 0x00, 0x8c, 0x02, 0x8a, 0x02, 0xbc, 0x00, 0x00,
+ 0x01, 0xe0, 0x00, 0x31, 0x01, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x66, 0x45, 0x64, 0x00, 0x80,
+ 0x00, 0x20, 0x00, 0x41, 0x03, 0x20, 0xff, 0x38,
+ 0x00, 0x5a, 0x02, 0xbc, 0x00, 0x64, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0xbc, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01,
+ 0x01, 0x6c, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x4d, 0x00, 0x00, 0x03, 0xe8, 0x00, 0x00,
+ 0x05, 0xdc, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
+ 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c,
+ 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06,
+ 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x20,
+ 0x00, 0x41, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x41, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xc3,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x00, 0x2a,
+ 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x46,
+ 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x01, 0x2a,
+ 0x02, 0x9a, 0x00, 0x03, 0x00, 0x07, 0x00, 0x2e,
+ 0xb1, 0x01, 0x00, 0x2f, 0x3c, 0xb2, 0x07, 0x04,
+ 0x00, 0xed, 0x32, 0xb1, 0x06, 0x05, 0xdc, 0x3c,
+ 0xb2, 0x03, 0x02, 0x00, 0xed, 0x32, 0x00, 0xb1,
+ 0x03, 0x00, 0x2f, 0x3c, 0xb2, 0x05, 0x04, 0x00,
+ 0xed, 0x32, 0xb2, 0x07, 0x06, 0x01, 0xfc, 0x3c,
+ 0xb2, 0x01, 0x02, 0x00, 0xed, 0x32, 0x33, 0x11,
+ 0x21, 0x11, 0x27, 0x33, 0x11, 0x23, 0x21, 0x01,
+ 0x09, 0xe8, 0xc7, 0xc7, 0x02, 0x9a, 0xfd, 0x66,
+ 0x21, 0x02, 0x58, 0x00, 0x00, 0x03, 0x00, 0x64,
+ 0xff, 0x9c, 0x05, 0x78, 0x02, 0xbc, 0x00, 0x03,
+ 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x35,
+ 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, 0x01, 0x35,
+ 0x21, 0x15, 0x01, 0xf4, 0x01, 0xf4, 0xfd, 0x44,
+ 0x03, 0x84, 0xfb, 0xb4, 0x05, 0x14, 0x01, 0xf4,
+ 0xc8, 0xc8, 0xfe, 0xd4, 0xc8, 0xc8, 0xfe, 0xd4,
+ 0xc8, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+ 0x00, 0xae, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x2b, 0x00, 0x58, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05,
+ 0x00, 0x90, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x07, 0x00, 0xa6, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x21,
+ 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x05, 0x01, 0x20, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x10,
+ 0x01, 0x48, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x05, 0x01, 0x65, 0x00, 0x03,
+ 0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0x56,
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
+ 0x00, 0x01, 0x00, 0x0a, 0x00, 0x84, 0x00, 0x03,
+ 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0e,
+ 0x00, 0x96, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
+ 0x00, 0x03, 0x00, 0x42, 0x00, 0xae, 0x00, 0x03,
+ 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x0a,
+ 0x01, 0x14, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
+ 0x00, 0x05, 0x00, 0x20, 0x01, 0x26, 0x00, 0x03,
+ 0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x0a,
+ 0x01, 0x59, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70,
+ 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67,
+ 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x28,
+ 0x00, 0x63, 0x00, 0x29, 0x00, 0x20, 0x00, 0x32,
+ 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0x00, 0x2d,
+ 0x00, 0x32, 0x00, 0x30, 0x00, 0x32, 0x00, 0x30,
+ 0x00, 0x20, 0x00, 0x4d, 0x00, 0x6f, 0x00, 0x7a,
+ 0x00, 0x69, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x61,
+ 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72,
+ 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61,
+ 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e,
+ 0x00, 0x00, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20,
+ 0x32, 0x30, 0x30, 0x38, 0x2d, 0x32, 0x30, 0x32,
+ 0x30, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
+ 0x61, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x4d,
+ 0x00, 0x61, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x41,
+ 0x00, 0x00, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x00,
+ 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75,
+ 0x00, 0x6c, 0x00, 0x61, 0x00, 0x72, 0x00, 0x00,
+ 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x00,
+ 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74,
+ 0x00, 0x46, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x67,
+ 0x00, 0x65, 0x00, 0x20, 0x00, 0x32, 0x00, 0x2e,
+ 0x00, 0x30, 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20,
+ 0x00, 0x4d, 0x00, 0x61, 0x00, 0x72, 0x00, 0x6b,
+ 0x00, 0x41, 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20,
+ 0x00, 0x32, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x31,
+ 0x00, 0x2d, 0x00, 0x32, 0x00, 0x30, 0x00, 0x32,
+ 0x00, 0x30, 0x00, 0x00, 0x46, 0x6f, 0x6e, 0x74,
+ 0x46, 0x6f, 0x72, 0x67, 0x65, 0x20, 0x32, 0x2e,
+ 0x30, 0x20, 0x3a, 0x20, 0x4d, 0x61, 0x72, 0x6b,
+ 0x41, 0x20, 0x3a, 0x20, 0x32, 0x37, 0x2d, 0x31,
+ 0x2d, 0x32, 0x30, 0x32, 0x30, 0x00, 0x00, 0x4d,
+ 0x00, 0x61, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x41,
+ 0x00, 0x00, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x00,
+ 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73,
+ 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20,
+ 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x2e,
+ 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20,
+ 0x00, 0x00, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x20, 0x30, 0x30, 0x31, 0x2e, 0x30, 0x30,
+ 0x30, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x61, 0x00,
+ 0x72, 0x00, 0x6b, 0x00, 0x41, 0x00, 0x00, 0x4d,
+ 0x61, 0x72, 0x6b, 0x41, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xb5, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
+ 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01,
+ 0xff, 0xff, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf2, 0xfe, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0xda, 0x54, 0xbb, 0x86,
+ 0x00, 0x00, 0x00, 0x00, 0xda, 0x54, 0xbb, 0x86
+];
+
+const BinaryOutputStream =
+ Components.Constructor("@mozilla.org/binaryoutputstream;1",
+ "nsIBinaryOutputStream", "setOutputStream");
+
+var timer;
+function handleRequest(request, response) {
+ response.setStatusLine(request.httpVersion, 200, "OK");
+ response.setHeader("Content-Type", "font/opentype", false);
+ response.processAsync();
+
+ function fontWrite(data) {
+ var stream = new BinaryOutputStream(response.bodyOutputStream);
+ stream.writeByteArray(data);
+ }
+
+ const nsITimer = Components.interfaces.nsITimer;
+
+ timer = Components.classes["@mozilla.org/timer;1"].createInstance(nsITimer);
+ timer.initWithCallback(function() {
+ fontWrite(markA_data);
+ response.finish();
+ }, 100, nsITimer.TYPE_ONE_SHOT);
+}
diff --git a/layout/reftests/font-face/bug533251-ref.html b/layout/reftests/font-face/bug533251-ref.html
new file mode 100644
index 0000000000..205aa119c3
--- /dev/null
+++ b/layout/reftests/font-face/bug533251-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<title>Bug 533251 crashtest</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: test;
+ src: url(../fonts/markA.ttf);
+}
+
+body {
+ background-color: white;
+}
+
+p { font-family: test; }
+
+</style>
+</head>
+<body>
+<p>A</p>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/bug533251.html b/layout/reftests/font-face/bug533251.html
new file mode 100644
index 0000000000..2ff13480c9
--- /dev/null
+++ b/layout/reftests/font-face/bug533251.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML>
+<html lang="ru">
+<head>
+<title>Bug 533251 crashtest</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: test;
+ src: url(../fonts/markA.ttf);
+}
+
+body {
+ background-color: white;
+}
+
+div {
+ font-family: Bongo2020; /* nonexistent font */
+ color: white;
+}
+
+p { font-family: test; }
+
+</style>
+</head>
+<body>
+<p>A</p>
+<div>This shouldn't crash...</div>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/cjkcisvs-1-ref.html b/layout/reftests/font-face/cjkcisvs-1-ref.html
new file mode 100644
index 0000000000..49c384b153
--- /dev/null
+++ b/layout/reftests/font-face/cjkcisvs-1-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><meta charset=utf-8>
+<title>Duplicate encoded quartet</title>
+<style>
+@font-face { font-family: DupEncQuartet; src: url('../fonts/gw1270797.ttf') format("truetype"); }
+th { width: 72pt }
+td { font-size: 72pt; font-family: DupEncQuartet, sans-serif; text-align: center }
+</style>
+<body>
+<table border>
+<caption>Duplicate encoded quartet</caption>
+<tr>
+<th>CJK Compatibility Ideographs</td>
+<th>Adobe-Japan1 IVS</td>
+<th>Hanyo-Denshi IVS</td>
+<th>CJK Compatibility Ideographs Standardized Variant</td>
+</tr>
+<tr>
+<td>&#xE000;</td>
+<td>&#xE000;</td>
+<td>&#xE000;</td>
+<td>&#xE000;</td>
+</tr>
diff --git a/layout/reftests/font-face/cjkcisvs-1.html b/layout/reftests/font-face/cjkcisvs-1.html
new file mode 100644
index 0000000000..e0d63e4917
--- /dev/null
+++ b/layout/reftests/font-face/cjkcisvs-1.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html><meta charset=utf-8>
+<title>Duplicate encoded quartet</title>
+<style>
+@font-face { font-family: DupEncQuartet; src: url('../fonts/gw1270797.ttf') format("truetype"); }
+th { width: 72pt }
+td { font-size: 72pt; font-family: DupEncQuartet, sans-serif; text-align: center }
+</style>
+<body>
+<table border>
+<caption>Duplicate encoded quartet</caption>
+<tr>
+<th>CJK Compatibility Ideographs</td>
+<th>Adobe-Japan1 IVS</td>
+<th>Hanyo-Denshi IVS</td>
+<th>CJK Compatibility Ideographs Standardized Variant</td>
+</tr>
+<tr>
+<td>&#xFA19;</td>
+<td>&#x795E;&#xE0100;</td>
+<td>&#x795E;&#xE0103;</td>
+<td>&#x795E;&#xFE00;</td>
+</tr>
diff --git a/layout/reftests/font-face/color-1-notref.html b/layout/reftests/font-face/color-1-notref.html
new file mode 100644
index 0000000000..85a9e74df5
--- /dev/null
+++ b/layout/reftests/font-face/color-1-notref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: emoji;
+ src: url("../fonts/emoji.ttf");
+}
+
+span {
+ font-family: emoji;
+ font-size: 25pt;
+}
+</style>
+</head>
+<body>
+<span>&#xe000;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-1-ref.html b/layout/reftests/font-face/color-1-ref.html
new file mode 100644
index 0000000000..6c3eaf44b8
--- /dev/null
+++ b/layout/reftests/font-face/color-1-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: emoji;
+ src: url("../fonts/emoji.ttf");
+}
+
+span {
+ font-family: emoji;
+ font-size: 25pt;
+ color: yellow;
+}
+</style>
+</head>
+<body>
+<span>&#xe000;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-1a.html b/layout/reftests/font-face/color-1a.html
new file mode 100644
index 0000000000..28b4034a57
--- /dev/null
+++ b/layout/reftests/font-face/color-1a.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: emojiyellow;
+ src: url("../fonts/emoji-yellow.ttf");
+}
+
+span {
+ font-family: emojiyellow;
+ font-size: 25pt;
+}
+</style>
+</head>
+<body>
+<span>&#xe000;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-1b.html b/layout/reftests/font-face/color-1b.html
new file mode 100644
index 0000000000..8e2eefd2c9
--- /dev/null
+++ b/layout/reftests/font-face/color-1b.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: emojiyellow;
+ src: url("../fonts/emoji-yellow.ttf");
+}
+
+span {
+ font-family: emojiyellow;
+ font-size: 25pt;
+ color: red;
+}
+</style>
+</head>
+<body>
+<span>&#xe000;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-2-notref.html b/layout/reftests/font-face/color-2-notref.html
new file mode 100644
index 0000000000..eeb61944ad
--- /dev/null
+++ b/layout/reftests/font-face/color-2-notref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: colr-unset;
+ src: url("../fonts/colr-unset.ttf");
+}
+
+span {
+ font-family: colr-unset;
+ font-size: 25pt;
+}
+</style>
+</head>
+<body>
+<span>D</span><span>D</span><span>D</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-2-ref.html b/layout/reftests/font-face/color-2-ref.html
new file mode 100644
index 0000000000..0962a70e3e
--- /dev/null
+++ b/layout/reftests/font-face/color-2-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: colr-unset;
+ src: url("../fonts/colr-unset.ttf");
+}
+
+span {
+ font-family: colr-unset;
+ font-size: 25pt;
+}
+</style>
+</head>
+<body>
+<span>A</span><span>B</span><span>C</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/color-2a.html b/layout/reftests/font-face/color-2a.html
new file mode 100644
index 0000000000..3b9b25bcec
--- /dev/null
+++ b/layout/reftests/font-face/color-2a.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8"/>
+<style>
+@font-face {
+ font-family: colr-unset;
+ src: url("../fonts/colr-unset.ttf");
+}
+
+span {
+ font-family: colr-unset;
+ font-size: 25pt;
+}
+</style>
+</head>
+<body>
+<span>A</span><span style="color: #00FF00FF">A</span><span style="color: #0000FFFF">A</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/colrv1-01-ref.html b/layout/reftests/font-face/colrv1-01-ref.html
new file mode 100644
index 0000000000..ef0d0d194a
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-01-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset=utf-8>
+<title>COLRv1 font test: comparing against CSS representation</title>
+<style>
+#ref { font: 0px serif; margin: 10px; padding: 10px; }
+#ref > div { width: 100px; height: 100px; display: inline-block; vertical-align: top; }
+span { display: inline-block; }
+.A { background: rgba(255, 0, 0, 1.0); }
+.B { background: rgba(255, 0, 0, 0.5); }
+.C { background: rgba(255, 0, 0, 0.1); }
+.D { background: linear-gradient(to right, rgb(0, 255, 0), rgb(0, 0, 255)); }
+.E { background: linear-gradient(to right, rgb(0, 255, 0) 25%, rgb(0, 0, 255) 75%); }
+.F { background: linear-gradient(to right, rgb(0, 255, 0) 25%, rgb(0, 0, 255) 75%); }
+.G { background: repeating-linear-gradient(to right, rgb(0, 255, 0) 40%, rgb(0, 0, 255) 60%); }
+.H { background: repeating-linear-gradient(to right, rgb(0, 255, 0) 40%, rgb(0, 0, 255) 60%, rgb(0, 255, 0) 80%); }
+.I { background: repeating-linear-gradient(to bottom, rgb(0, 255, 0) 40%, rgb(0, 0, 255) 60%, rgb(0, 255, 0) 80%); }
+.J { background: radial-gradient(rgb(255, 0, 0), rgb(0, 255, 0), rgb(0, 0, 255) 70.7107%); }
+.K { background: repeating-radial-gradient(rgb(255, 0, 0), rgb(0, 255, 0), rgb(0, 0, 255) 70.7107%); }
+.L { background: repeating-radial-gradient(rgb(255, 0, 0), rgb(0, 255, 0), rgb(0, 0, 255), rgb(0, 255, 0), rgb(255, 0, 0) 70.7107%); }
+.M { background: conic-gradient(rgb(0, 0, 255), rgb(0, 255, 0), rgb(255, 0, 0)); }
+.N { background: conic-gradient(rgb(0, 0, 255), rgb(0, 255, 0), rgb(255, 0, 0), rgb(0, 255, 0), rgb(0, 0, 255)); }
+.O { background: conic-gradient(rgb(255, 0, 0), rgb(0, 255, 0), rgb(0, 0, 255) 25%, rgb(0, 255, 0), rgb(255, 0, 0)); rotate: 0.25turn; }
+.P :nth-child(1) { background: rgb(0, 0, 255); width: 100%; height: 50%; }
+.P :nth-child(2) { background: rgb(255, 0, 0); width: 50%; height: 50%; }
+.P :nth-child(3) { background: rgb(0, 255, 0); width: 50%; height: 50%; }
+.Q { background: rgba(0, 255, 0); }
+.Q :nth-child(1) { background: rgb(255, 0, 0); width: 50%; height: 50%; translate: 50% 50%; rotate: 45deg; }
+.R { background: rgba(0, 0, 255); }
+.R :nth-child(1) { background: rgb(255, 0, 0); width: 50%; height: 50%; translate: 50% 50%; transform: skew(30deg); }
+.S { background: rgba(255, 0, 0); }
+.S :nth-child(1) { background: rgb(0, 255, 0); width: 50%; height: 50%; translate: 50% 50%; transform: skew(0, 30deg); }
+.T { background: rgba(0, 255, 0); }
+.T :nth-child(1) { background: rgb(0, 0, 255); width: 50%; height: 50%; translate: 50% 50%; transform: skew(-20deg, -20deg); }
+</style>
+
+<p>COLRv1 font rendering:</p>
+<div id="ref"><div><span></span><span></span><span></span></div></div>
+
+<script>
+ref.firstChild.classList = window.location.hash.substr(1);
+document.documentElement.classList = "";
+</script>
diff --git a/layout/reftests/font-face/colrv1-01.html b/layout/reftests/font-face/colrv1-01.html
new file mode 100644
index 0000000000..1ac9bc7ebb
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-01.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset=utf-8>
+<title>COLRv1 font test: comparing against CSS representation</title>
+<style>
+@font-face { font-family: CAhem; src: url("CAhem.ttf"); }
+#test { font: 100px/1 CAhem; margin: 10px; padding: 10px; }
+</style>
+
+<p>COLRv1 font rendering:</p>
+<div id="test"></div>
+
+<script>
+test.textContent = window.location.hash.substr(1);
+document.documentElement.classList = "";
+</script>
diff --git a/layout/reftests/font-face/colrv1-02.html b/layout/reftests/font-face/colrv1-02.html
new file mode 100644
index 0000000000..14cee4feb5
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-02.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: using the tech() function</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("../fonts/fira/FiraSansOT-RegularItalic.otf"); /* if tech() is not parsed */
+ src: url("CAhem.ttf") tech(color-COLRv1),
+ url("../fonts/fira/FiraSans-Regular.otf");
+}
+#test { font: 100px/1 CAhem, serif; margin: 10px; padding: 10px; }
+</style>
+
+<!-- This should render using CAhem if COLRv1 is enabled, and FiraSans if disabled.
+ If the tech() function fails to parse at all, we'll get Fira Italic. -->
+<div id="test">ABC</div>
diff --git a/layout/reftests/font-face/colrv1-02a-ref.html b/layout/reftests/font-face/colrv1-02a-ref.html
new file mode 100644
index 0000000000..dbd44cdb50
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-02a-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: using the tech() function</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+#test { font: 100px/1 CAhem, serif; margin: 10px; padding: 10px; }
+</style>
+
+<div id="test">ABC</div>
diff --git a/layout/reftests/font-face/colrv1-02b-ref.html b/layout/reftests/font-face/colrv1-02b-ref.html
new file mode 100644
index 0000000000..2312909ddc
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-02b-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: using the tech() function</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("../fonts/fira/FiraSans-Regular.otf");
+}
+#test { font: 100px/1 CAhem, serif; margin: 10px; padding: 10px; }
+</style>
+
+<div id="test">ABC</div>
diff --git a/layout/reftests/font-face/colrv1-03-ref.html b/layout/reftests/font-face/colrv1-03-ref.html
new file mode 100644
index 0000000000..e64dd664a9
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-03-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial-gradient edge cases</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+#test { font: 128px/1 CAhem, serif; margin: 10px; padding: 10px; }
+</style>
+
+<p>The two glyphs in each row should match:</p>
+<div id="test">
+0 0<br>
+1 1<br>
+2 2<br>
+a a<br>
+c c<br>
diff --git a/layout/reftests/font-face/colrv1-03.html b/layout/reftests/font-face/colrv1-03.html
new file mode 100644
index 0000000000..cb5e1ecaf7
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-03.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial-gradient edge cases</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+#test { font: 128px/1 CAhem, serif; margin: 10px; padding: 10px; }
+#_3a { font-variation-settings: "GRR1" 0; }
+#_3b { font-variation-settings: "GRR1" -100; }
+#_3c { font-variation-settings: "GRR1" -200; }
+#_d { font-variation-settings: "GRR1" -25; }
+</style>
+
+<p>The two glyphs in each row should match:</p>
+<div id="test">
+0 <span id="_3a">3</span><br>
+1 <span id="_3b">3</span><br>
+2 <span id="_3c">3</span><br>
+a b<br>
+c <span id="_d">d</span><br>
diff --git a/layout/reftests/font-face/colrv1-04-ref.html b/layout/reftests/font-face/colrv1-04-ref.html
new file mode 100644
index 0000000000..d24951344e
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-04-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: gradient color-stop edge cases</title>
+<style>
+.ref { margin: 10px; padding: 10px; line-height: 0; }
+span { display: inline-block; width: 100px; height: 100px; }
+.A { background: linear-gradient(to right, rgb(255, 0, 0) 10%, rgb(0, 255, 0), rgb(0, 0, 255) 90%); }
+.B { background: linear-gradient(to right, rgb(255, 0, 0) 30%, rgb(0, 255, 0), rgb(0, 0, 255) 70%); }
+.C { background: linear-gradient(to right, rgb(255, 0, 0) 50%, rgb(0, 0, 255) 50%); }
+.D { background: linear-gradient(to right, rgb(0, 0, 255) 30%, rgb(0, 255, 0), rgb(255, 0, 0) 70%); }
+.E { background: linear-gradient(to right, rgb(0, 0, 255) 10%, rgb(0, 255, 0), rgb(255, 0, 0) 90%); }
+.F { background: repeating-linear-gradient(to right, rgb(255, 0, 0) 10%, rgb(0, 255, 0), rgb(0, 0, 255) 90%); }
+.G { background: repeating-linear-gradient(to right, rgb(255, 0, 0) 30%, rgb(0, 255, 0), rgb(0, 0, 255) 70%); }
+.H { background: transparent; }
+.I { background: repeating-linear-gradient(to right, rgb(0, 0, 255) 30%, rgb(0, 255, 0), rgb(255, 0, 0) 70%); }
+.J { background: repeating-linear-gradient(to right, rgb(0, 0, 255) 10%, rgb(0, 255, 0), rgb(255, 0, 0) 90%); }
+</style>
+
+<p>The middle of the five glyphs should be purely red and blue:</p>
+<div class="ref"><span class=A></span> <span class=B></span> <span class=C></span> <span class=D></span> <span class=E></span></div>
+
+<p>The middle of the five glyphs should not render anything:</p>
+<div class="ref"><span class=F></span> <span class=G></span> <span class=H></span> <span class=I></span> <span class=J></span></div>
diff --git a/layout/reftests/font-face/colrv1-04.html b/layout/reftests/font-face/colrv1-04.html
new file mode 100644
index 0000000000..063a97e7e9
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-04.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: gradient color-stop edge cases</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+.test { margin: 10px; padding: 10px; }
+span { font: 100px/1 CAhem; }
+.a { font-variation-settings: initial; }
+.b { font-variation-settings: "COL1" 0.2, "COL3" -0.2; }
+.c { font-variation-settings: "COL1" 0.4, "COL3" -0.4; }
+.d { font-variation-settings: "COL1" 0.6, "COL3" -0.6; }
+.e { font-variation-settings: "COL1" 0.8, "COL3" -0.8; }
+</style>
+
+<p>The middle of the five glyphs should be purely red and blue:</p>
+<div class="test">
+<span class="a">e</span> <span class="b">e</span> <span class="c">e</span> <span class="d">e</span> <span class="e">e</span><br>
+</div>
+
+<p>The middle of the five glyphs should not render anything:</p>
+<div class="test">
+<span class="a">f</span> <span class="b">f</span> <span class="c">f</span> <span class="d">f</span> <span class="e">f</span><br>
+</div>
diff --git a/layout/reftests/font-face/colrv1-05-ref.html b/layout/reftests/font-face/colrv1-05-ref.html
new file mode 100644
index 0000000000..c58ef650db
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-05-ref.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: compositing operators</title>
+<style>
+.ref { margin: 10px; padding: 10px; line-height: 0; font-size: 0; }
+span { display: inline-block; width: 100px; height: 100px; position: relative; }
+</style>
+
+<p>Some glyphs using PAINT_COMPOSITE:</p>
+<!-- using blocks to imitate the composited layers in CAhem.ttf -->
+<div class="ref">
+ <span class=g>
+ <div style="background: red; width: 70px; height: 70px; position: absolute; top: 0px; left: 0px;"></div>
+ <div style="background: blue; width: 70px; height: 70px; position: absolute; bottom: 0px; right: 0px;"></div>
+ </span>
+ <span class=h>
+ <div style="background: blue; width: 70px; height: 70px; position: absolute; bottom: 0px; right: 0px;"></div>
+ <div style="background: red; width: 40px; height: 40px; position: absolute; top: 30px; left: 30px;"></div>
+ </span>
+ <span class=i>
+ <div style="background: blue; width: 70px; height: 70px; position: absolute; bottom: 0px; right: 0px;"></div>
+ <div style="background: white; width: 40px; height: 40px; position: absolute; top: 30px; left: 30px;"></div>
+ </span>
+ <span class=j>
+ <div style="background: red; width: 40px; height: 40px; position: absolute; top: 30px; left: 30px;"></div>
+ </span>
+ <span class=k>
+ <div style="background: red; width: 70px; height: 70px; position: absolute; top: 0px; left: 0px;"></div>
+ <div style="background: blue; width: 70px; height: 70px; position: absolute; bottom: 0px; right: 0px;"></div>
+ <div style="background: black; width: 40px; height: 40px; position: absolute; top: 30px; left: 30px;"></div>
+ </span>
+ <span class=l>
+ <div style="background: red; width: 70px; height: 70px; position: absolute; top: 0px; left: 0px;"></div>
+ <div style="background: blue; width: 70px; height: 70px; position: absolute; bottom: 0px; right: 0px;"></div>
+ <div style="background: magenta; width: 40px; height: 40px; position: absolute; top: 30px; left: 30px;"></div>
+ </span>
+</div>
+
+<p>And painting them to a canvas element:</p>
+<canvas id=c width=600 height=100></canvas>
+<script>
+ctx = c.getContext("2d");
+
+// glyph "g"
+ctx.fillStyle = "red";
+ctx.fillRect(0, 0, 70, 70);
+ctx.fillStyle = "blue";
+ctx.fillRect(30, 30, 70, 70);
+ctx.translate(100, 0);
+
+// glyph "h"
+ctx.fillStyle = "blue";
+ctx.fillRect(30, 30, 70, 70);
+ctx.fillStyle = "red";
+ctx.fillRect(30, 30, 40, 40);
+ctx.translate(100, 0);
+
+// glyph "i"
+ctx.fillStyle = "blue";
+ctx.fillRect(30, 30, 70, 70);
+ctx.fillStyle = "white";
+ctx.fillRect(30, 30, 40, 40);
+ctx.translate(100, 0);
+
+// glyph "j"
+ctx.fillStyle = "red";
+ctx.fillRect(30, 30, 40, 40);
+ctx.translate(100, 0);
+
+// glyph "k"
+ctx.fillStyle = "red";
+ctx.fillRect(0, 0, 70, 70);
+ctx.fillStyle = "blue";
+ctx.fillRect(30, 30, 70, 70);
+ctx.fillStyle = "black";
+ctx.fillRect(30, 30, 40, 40);
+ctx.translate(100, 0);
+
+// glyph "l"
+ctx.fillStyle = "red";
+ctx.fillRect(0, 0, 70, 70);
+ctx.fillStyle = "blue";
+ctx.fillRect(30, 30, 70, 70);
+ctx.fillStyle = "magenta";
+ctx.fillRect(30, 30, 40, 40);
+ctx.translate(100, 0);
+
+</script>
diff --git a/layout/reftests/font-face/colrv1-05.html b/layout/reftests/font-face/colrv1-05.html
new file mode 100644
index 0000000000..e7716ba874
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-05.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: compositing operators</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+.test { margin: 10px; padding: 10px; }
+span { font: 100px/1 CAhem; }
+</style>
+
+<p>Some glyphs using PAINT_COMPOSITE:</p>
+<div class="test">
+<span>ghijkl</span>
+</div>
+
+<p>And painting them to a canvas element:</p>
+<canvas id=c width=600 height=100></canvas>
+<script>
+document.fonts.load("100px CAhem").then(function () {
+ ctx = c.getContext("2d");
+ ctx.font = "100px CAhem";
+ ctx.fillText("ghijkl", 0, 80);
+});
+</script>
diff --git a/layout/reftests/font-face/colrv1-06-ref.html b/layout/reftests/font-face/colrv1-06-ref.html
new file mode 100644
index 0000000000..87a7160258
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-06-ref.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial gradient variations</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+p { margin: 0; }
+span { font: 120px/1 CAhem; }
+.a { font-variation-settings: "GRX0" 500, "GRR0" 50, "GRX1" 900, "GRR1" 150, "COL1" 0, "COL2" 0.5, "COL3" 1.0; }
+.e1 { font-variation-settings: "GRX0" 700, "GRR0" 100, "GRX1" 1000, "GRR1" 175, "COL1" 2.0, "COL2" 2.0, "COL3" 1.99; }
+.f { font-variation-settings: "GRX0" 500, "GRR0" 50, "GRX1" 900, "GRR1" 150, "COL1" 0.5, "COL2" 1.0, "COL3" 1.5; }
+.g { font-variation-settings: "GRX0" 500, "GRR0" 50, "GRX1" 900, "GRR1" 150, "COL1" 0, "COL2" 1.0, "COL3" 1.0; }
+</style>
+
+<p>All four lines should show the same set of gradients:</p>
+<div>
+ <div><span class=a>@#$</div>
+ <div><span class=a>@#$</div>
+ <div><span class=a>@#$</div>
+ <div><span class=a>@#$</div>
+</div>
+
+<p>Same again, but the leftmost gradient should be solid blue:</p>
+<div>
+ <div><span class=a><span class=e1>@</span>#$</div>
+</div>
+
+<p>And with the gradients shifted a half-cycle to the right:</p>
+<div>
+ <div><span class=f><span class=e1>@</span>#$</div>
+</div>
+
+<p>Left glyph is solid blue; no blue in the repeating gradients:</p>
+<div>
+ <div><span class=g><span class=e1>@</span>#$</div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-06.html b/layout/reftests/font-face/colrv1-06.html
new file mode 100644
index 0000000000..a8c1fabf71
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-06.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial gradient variations</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+p { margin: 0; }
+span { font: 120px/1 CAhem; }
+.a { font-variation-settings: "GRX0" 500, "GRR0" 50, "GRX1" 900, "GRR1" 150, "COL1" 0, "COL2" 0.5, "COL3" 1.0; }
+.b { font-variation-settings: "GRX0" 700, "GRR0" 100, "GRX1" 900, "GRR1" 150, "COL1" -1.0, "COL2" 0.0, "COL3" 1.0; }
+.c { font-variation-settings: "GRX0" 300, "GRR0" 0, "GRX1" 700, "GRR1" 100, "COL1" 0.5, "COL2" 1.0, "COL3" 1.5; }
+.d { font-variation-settings: "GRX0" 100, "GRR0" -50, "GRX1" 900, "GRR1" 150, "COL1" 0.5, "COL2" 0.75, "COL3" 1.0; }
+.e { font-variation-settings: "GRX0" 100, "GRR0" -50, "GRX1" 300, "GRR1" 0, "COL1" -2.0, "COL2" -1.0, "COL3" 0.0; }
+.f { font-variation-settings: "GRX0" 100, "GRR0" -50, "GRX1" 200, "GRR1" -25, "COL1" -2.0, "COL2" 0.0, "COL3" 2.0; }
+.g { font-variation-settings: "GRX0" 100, "GRR0" -50, "GRX1" 300, "GRR1" 0, "COL1" -2.0, "COL2" 0.0, "COL3" 0.0; }
+</style>
+
+<p>All four lines should show the same set of gradients:</p>
+<div>
+ <div><span class=a>@#$</div>
+ <div><span class=b>@#$</div>
+ <div><span class=c>@#$</div>
+ <div><span class=d>@#$</div>
+</div>
+
+<p>Same again, but the leftmost gradient should be solid blue:</p>
+<div>
+ <div><span class=e>@#$</div>
+</div>
+
+<p>And with the gradients shifted a half-cycle to the right:</p>
+<div>
+ <div><span class=f>@#$</div>
+</div>
+
+<p>Left glyph is solid blue; no blue in the repeating gradients:</p>
+<div>
+ <div><span class=g>@#$</div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-07-ref.html b/layout/reftests/font-face/colrv1-07-ref.html
new file mode 100644
index 0000000000..a87e13816e
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-07-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial gradient with degenerate color line</title>
+<style>
+p { margin: 0; }
+div { height: 100px; position: relative; }
+/* Use CSS backgrounds to imitate the expected CAhem glyph rendering.
+ Antialiasing will differ, but otherwise the results should match. */
+span { display: inline-block; height: 40px; position: absolute; overflow: clip; }
+span.bg { width: 100px; top: 30px; background: red; }
+span.a { background: blue; border-radius: 20px; left: 30px; width: 200px; }
+span.b { background: blue; border-radius: 20px; left: 10px; width: 200px; }
+span.c { background: blue; border-radius: 20px; left: 50px; width: 200px; }
+span.d { background: blue; border-radius: 20px; left: 60px; width: 200px; }
+</style>
+
+<div><span class=bg><span class=a></span></span></div>
+<div><span class=bg><span class=b></span></span></div>
+<div><span class=bg><span class=c></span></span></div>
+<div><span class=bg><span class=d></span></span></div>
diff --git a/layout/reftests/font-face/colrv1-07.html b/layout/reftests/font-face/colrv1-07.html
new file mode 100644
index 0000000000..aef4b30dba
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-07.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: radial gradient with degenerate color line</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+p { margin: 0; }
+span { font: 100px/1 CAhem; }
+.a { font-variation-settings: "GRX0" 400, "GRR0" 200, "GRX1" 600, "GRR1" 200, "COL1" 0.5, "COL2" 0.5, "COL3" 0.5; }
+.b { font-variation-settings: "GRX0" 400, "GRR0" 200, "GRX1" 600, "GRR1" 200, "COL1" -0.5, "COL2" -0.5, "COL3" -0.5; }
+.c { font-variation-settings: "GRX0" 400, "GRR0" 200, "GRX1" 600, "GRR1" 200, "COL1" 1.5, "COL2" 1.5, "COL3" 1.5; }
+.d { font-variation-settings: "GRX0" 400, "GRR0" 200, "GRX1" 600, "GRR1" 200, "COL1" 2.0, "COL2" 2.0, "COL3" 2.0; }
+</style>
+
+<div>
+ <div><span class=a>@</div>
+ <div><span class=b>@</div>
+ <div><span class=c>@</div>
+ <div><span class=d>@</div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-08-ref.html b/layout/reftests/font-face/colrv1-08-ref.html
new file mode 100644
index 0000000000..db9f04784d
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-08-ref.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: linear gradient with degenerate color line</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+div div { width: 50px; height: 50px; }
+span { display: inline-block; height: 50px; }
+.blue { background: blue; }
+.red { background: red; }
+div:nth-child(1) .red { width: 0px }
+div:nth-child(1) .blue { width: 50px }
+div:nth-child(2) .red { width: 5px }
+div:nth-child(2) .blue { width: 45px }
+div:nth-child(3) .red { width: 10px }
+div:nth-child(3) .blue { width: 40px }
+div:nth-child(4) .red { width: 15px }
+div:nth-child(4) .blue { width: 35px }
+div:nth-child(5) .red { width: 20px }
+div:nth-child(5) .blue { width: 30px }
+div:nth-child(6) .red { width: 25px }
+div:nth-child(6) .blue { width: 25px }
+div:nth-child(7) .red { width: 30px }
+div:nth-child(7) .blue { width: 20px }
+div:nth-child(8) .red { width: 35px }
+div:nth-child(8) .blue { width: 15px }
+div:nth-child(9) .red { width: 40px }
+div:nth-child(9) .blue { width: 10px }
+</style>
+
+<div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+ <div><span class=red></span><span class=blue></span></div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-08.html b/layout/reftests/font-face/colrv1-08.html
new file mode 100644
index 0000000000..c6eb22a8fd
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-08.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: linear gradient with degenerate color line</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+span { font: 50px/1 CAhem; }
+div:nth-child(1) span { font-variation-settings: "COL1" -2.0, "COL2" -2.0, "COL3" -2.0; }
+div:nth-child(2) span { font-variation-settings: "COL1" -1.5, "COL2" -1.5, "COL3" -1.5; }
+div:nth-child(3) span { font-variation-settings: "COL1" -1.0, "COL2" -1.0, "COL3" -1.0; }
+div:nth-child(4) span { font-variation-settings: "COL1" -0.5, "COL2" -0.5, "COL3" -0.5; }
+div:nth-child(5) span { font-variation-settings: "COL1" 0.0, "COL2" 0.0, "COL3" 0.0; }
+div:nth-child(6) span { font-variation-settings: "COL1" 0.5, "COL2" 0.5, "COL3" 0.5; }
+div:nth-child(7) span { font-variation-settings: "COL1" 1.0, "COL2" 1.0, "COL3" 1.0; }
+div:nth-child(8) span { font-variation-settings: "COL1" 1.5, "COL2" 1.5, "COL3" 1.5; }
+div:nth-child(9) span { font-variation-settings: "COL1" 2.0, "COL2" 2.0, "COL3" 2.0; }
+</style>
+
+<div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+ <div><span>!</div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-09-ref.html b/layout/reftests/font-face/colrv1-09-ref.html
new file mode 100644
index 0000000000..eaf5dda44c
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-09-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: reverse sweep, denormalized color line</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+span { font: 50px/1 CAhem; }
+</style>
+
+<div>
+ <div><span>n</span></div>
+</div>
diff --git a/layout/reftests/font-face/colrv1-09.html b/layout/reftests/font-face/colrv1-09.html
new file mode 100644
index 0000000000..6c7ae6e82e
--- /dev/null
+++ b/layout/reftests/font-face/colrv1-09.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<title>COLRv1 font test: reverse sweep, denormalized color line</title>
+<style>
+@font-face {
+ font-family: CAhem;
+ src: url("CAhem.ttf");
+}
+span { font: 50px/1 CAhem; }
+</style>
+
+<div>
+ <div><span>m</span></div>
+</div>
diff --git a/layout/reftests/font-face/cross-iframe-1-inner-1.html b/layout/reftests/font-face/cross-iframe-1-inner-1.html
new file mode 100644
index 0000000000..b799b7a850
--- /dev/null
+++ b/layout/reftests/font-face/cross-iframe-1-inner-1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ html, body {
+ margin: 0;
+ padding: 0;
+ }
+
+ </style>
+</head>
+<body>
+
+<p><span style="font-family: MarkA">A</span><span style="font-family: MarkB">B</span><span style="font-family: MarkC">C</span></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/cross-iframe-1-inner-2.html b/layout/reftests/font-face/cross-iframe-1-inner-2.html
new file mode 100644
index 0000000000..f0d0345e38
--- /dev/null
+++ b/layout/reftests/font-face/cross-iframe-1-inner-2.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ html, body {
+ margin: 0;
+ padding: 0;
+ }
+
+ </style>
+</head>
+<body>
+
+<p><span style="font-family: MarkA">A</span><span style="font-family: MarkB">B</span><span style="font-family: MarkC">C</span></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/cross-iframe-1-ref.html b/layout/reftests/font-face/cross-iframe-1-ref.html
new file mode 100644
index 0000000000..3bacb4839a
--- /dev/null
+++ b/layout/reftests/font-face/cross-iframe-1-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ div {
+ margin: 0;
+ border: none;
+ padding: 0;
+ position: absolute;
+ left: 0;
+ }
+
+ </style>
+</head>
+<body>
+
+<!-- use nonexistent family to prevent kerning -->
+<p><span style="font-family: Nonexistent1">A</span><span style="font-family: Nonexistent2">B</span><span style="font-family: MarkD">D</span></p>
+
+<div style="top: 4em" src="cross-iframe-1-inner-1.html">
+<p><span style="font-family: MarkD">D</span><span style="font-family: Nonexistent2">B</span><span style="font-family: Nonexistent1">C</span></p>
+</div>
+<div style="top: 7em" src="cross-iframe-1-inner-2.html">
+<p><span>A</span><span style="font-family: MarkD">D</span><span>C</span></p>
+</div>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/cross-iframe-1.html b/layout/reftests/font-face/cross-iframe-1.html
new file mode 100644
index 0000000000..351bca324f
--- /dev/null
+++ b/layout/reftests/font-face/cross-iframe-1.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkC";
+ src: url(../fonts/markC.ttf);
+ }
+
+ iframe {
+ margin: 0;
+ border: none;
+ padding: 0;
+ position: absolute;
+ left: 0;
+ }
+
+ </style>
+</head>
+<body>
+
+<p><span style="font-family: MarkA">A</span><span style="font-family: MarkB">B</span><span style="font-family: MarkC">C</span></p>
+
+<iframe style="top: 4em" src="cross-iframe-1-inner-1.html"></iframe>
+<iframe style="top: 7em" src="cross-iframe-1-inner-2.html"></iframe>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/delete-rule-1-ref.html b/layout/reftests/font-face/delete-rule-1-ref.html
new file mode 100644
index 0000000000..01485efc1c
--- /dev/null
+++ b/layout/reftests/font-face/delete-rule-1-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/delete-rule-1.html b/layout/reftests/font-face/delete-rule-1.html
new file mode 100644
index 0000000000..bc1307488d
--- /dev/null
+++ b/layout/reftests/font-face/delete-rule-1.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ var sheet = document.getElementsByTagName("style")[0].sheet;
+ for (var i = sheet.cssRules.length - 1; i >= 0; --i) {
+ if (sheet.cssRules[i].type == CSSRule.FONT_FACE_RULE) {
+ sheet.deleteRule(i);
+ }
+ }
+
+ document.documentElement.removeAttribute("class");
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/disable-sheet-1-ref.html b/layout/reftests/font-face/disable-sheet-1-ref.html
new file mode 100644
index 0000000000..01485efc1c
--- /dev/null
+++ b/layout/reftests/font-face/disable-sheet-1-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/disable-sheet-1.html b/layout/reftests/font-face/disable-sheet-1.html
new file mode 100644
index 0000000000..916b81f7f5
--- /dev/null
+++ b/layout/reftests/font-face/disable-sheet-1.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ document.getElementsByTagName("style")[0].disabled = true;
+ document.documentElement.removeAttribute("class");
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/disable-sheet-4-ref.html b/layout/reftests/font-face/disable-sheet-4-ref.html
new file mode 100644
index 0000000000..c6b1998903
--- /dev/null
+++ b/layout/reftests/font-face/disable-sheet-4-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/disable-sheet-4.html b/layout/reftests/font-face/disable-sheet-4.html
new file mode 100644
index 0000000000..1885ca6e27
--- /dev/null
+++ b/layout/reftests/font-face/disable-sheet-4.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ // The restore-size-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm();
+
+ document.getElementsByTagName("style")[0].disabled = true;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="restore-size-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/disable-sheet-5.html b/layout/reftests/font-face/disable-sheet-5.html
new file mode 100644
index 0000000000..c9b0bb6e19
--- /dev/null
+++ b/layout/reftests/font-face/disable-sheet-5.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[1].disabled = true;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-1-notref.html b/layout/reftests/font-face/download-1-notref.html
new file mode 100644
index 0000000000..7e6df9c92c
--- /dev/null
+++ b/layout/reftests/font-face/download-1-notref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-1.html b/layout/reftests/font-face/download-1.html
new file mode 100644
index 0000000000..e2fab2c08f
--- /dev/null
+++ b/layout/reftests/font-face/download-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-2-big-otf.html b/layout/reftests/font-face/download-2-big-otf.html
new file mode 100644
index 0000000000..e2a3a757d4
--- /dev/null
+++ b/layout/reftests/font-face/download-2-big-otf.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.otf);
+ }
+
+ body { font-family: "MarkA"; font-size: 50px; }
+
+ </style>
+</head>
+<body>
+
+<p>A</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-2-big.html b/layout/reftests/font-face/download-2-big.html
new file mode 100644
index 0000000000..3f57fd3307
--- /dev/null
+++ b/layout/reftests/font-face/download-2-big.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; font-size: 50px; }
+
+ </style>
+</head>
+<body>
+
+<p>A</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-2-ref.html b/layout/reftests/font-face/download-2-ref.html
new file mode 100644
index 0000000000..2fff8251eb
--- /dev/null
+++ b/layout/reftests/font-face/download-2-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ body { font-family: "MarkB"; }
+
+ </style>
+</head>
+<body>
+
+<p>B</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-2.html b/layout/reftests/font-face/download-2.html
new file mode 100644
index 0000000000..8e09e41600
--- /dev/null
+++ b/layout/reftests/font-face/download-2.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>A</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-3-notref.html b/layout/reftests/font-face/download-3-notref.html
new file mode 100644
index 0000000000..c178dbef5f
--- /dev/null
+++ b/layout/reftests/font-face/download-3-notref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+ body { font-family: "MarkA"; }
+ </style>
+</head>
+<body>
+
+<div id="t" style="visibility:hidden; width: -moz-fit-content">ABC</div>
+<script>
+ document.body.offsetWidth;
+ var n = document.getElementById("t");
+ var w = document.defaultView.getComputedStyle(n).width;
+ var h = document.defaultView.getComputedStyle(n).height;
+ var d = document.createElement("div");
+ d.style.width = w;
+ d.style.height = h;
+ d.style.backgroundColor = "green";
+ n.remove();
+ document.body.appendChild(d);
+</script>
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-3-ref.html b/layout/reftests/font-face/download-3-ref.html
new file mode 100644
index 0000000000..469c667ff4
--- /dev/null
+++ b/layout/reftests/font-face/download-3-ref.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<div id="t" style="visibility:hidden; width: -moz-fit-content">ABC</div>
+<script>
+ // Force a reflow to make sure we start our font download now
+ document.body.offsetWidth;
+ window.addEventListener("load",
+ function() {
+ var n = document.getElementById("t");
+ var w = document.defaultView.getComputedStyle(n).width;
+ var h = document.defaultView.getComputedStyle(n).height;
+ var d = document.createElement("div");
+ d.style.width = w;
+ d.style.height = h;
+ d.style.backgroundColor = "green";
+ n.remove();
+ document.body.appendChild(d);
+ });
+</script>
+</body>
+</html>
diff --git a/layout/reftests/font-face/download-3.html b/layout/reftests/font-face/download-3.html
new file mode 100644
index 0000000000..8a5564ae01
--- /dev/null
+++ b/layout/reftests/font-face/download-3.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" style="display: none">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<div id="t" style="visibility:hidden; width: -moz-fit-content">ABC</div>
+<script>
+ // Make sure to show our stuff as late as we can, so we only get reflows
+ // from onload.
+ window.addEventListener("DOMContentLoaded",
+ function() { document.documentElement.style.display = ""; })
+ window.addEventListener("load",
+ function() {
+ var n = document.getElementById("t");
+ var w = document.defaultView.getComputedStyle(n).width;
+ var h = document.defaultView.getComputedStyle(n).height;
+ var d = document.createElement("div");
+ d.style.width = w;
+ d.style.height = h;
+ d.style.backgroundColor = "green";
+ n.remove();
+ document.body.appendChild(d);
+ });
+</script>
+</body>
+</html>
diff --git a/layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html b/layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html
new file mode 100644
index 0000000000..ce1b30b3ef
--- /dev/null
+++ b/layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8">
+
+<style type="text/css" id="style1">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css">
+body {
+ font-family: serif;
+}
+.test {
+ font-family: foo;
+}
+</style>
+
+</head>
+
+<body>
+<div>
+foo <span class="test">bar</span> baz
+</div>
+</body>
+
+</html>
diff --git a/layout/reftests/font-face/dynamic-duplicate-rule-1a.html b/layout/reftests/font-face/dynamic-duplicate-rule-1a.html
new file mode 100644
index 0000000000..215f09f351
--- /dev/null
+++ b/layout/reftests/font-face/dynamic-duplicate-rule-1a.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+
+<!-- Testcase for bug 879963 regression.
+ We have two <style> elements with identical @font-face rules, which will
+ share a common proxy font entry. When the entry is loaded, the references
+ in both rules must be updated, otherwise text may disappear if the "wrong"
+ (non-updated) rule is subsequently used.
+ By disabling the first style element after the document has loaded (and the
+ user font has been resolved to a real font entry), we can check that the
+ second rule also works as expected.
+ Note that if a platform doesn't have any of the local() fonts listed,
+ the testcase will "pass" harmlessly as a no-op. -->
+
+<style type="text/css" id="style1">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css" id="style2">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css">
+body {
+ font-family: serif;
+}
+.test {
+ font-family: foo;
+}
+</style>
+
+<script type="application/javascript">
+function run() {
+ document.getElementById("style1").disabled = true;
+ document.documentElement.removeAttribute("class");
+}
+</script>
+
+</head>
+
+<body onload="run()">
+<div>
+foo <span class="test">bar</span> baz
+</div>
+</body>
+
+</html>
diff --git a/layout/reftests/font-face/dynamic-duplicate-rule-1b.html b/layout/reftests/font-face/dynamic-duplicate-rule-1b.html
new file mode 100644
index 0000000000..647bf53d91
--- /dev/null
+++ b/layout/reftests/font-face/dynamic-duplicate-rule-1b.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+
+<!-- Testcase for bug 879963 regression.
+ Identical to dynamic-duplicate-rule-1a, except that we disable the
+ second rule (rather than the first), to allow for the possibility of
+ changes in how rules are ordered/searched. -->
+
+<style type="text/css" id="style1">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css" id="style2">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css">
+body {
+ font-family: serif;
+}
+.test {
+ font-family: foo;
+}
+</style>
+
+<script type="application/javascript">
+function run() {
+ document.getElementById("style2").disabled = true;
+ document.documentElement.removeAttribute("class");
+}
+</script>
+
+</head>
+
+<body onload="run()">
+<div>
+foo <span class="test">bar</span> baz
+</div>
+</body>
+
+</html>
diff --git a/layout/reftests/font-face/dynamic-duplicate-rule-1c.html b/layout/reftests/font-face/dynamic-duplicate-rule-1c.html
new file mode 100644
index 0000000000..16fcb3437e
--- /dev/null
+++ b/layout/reftests/font-face/dynamic-duplicate-rule-1c.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+
+<!-- Testcase for bug 879963 regression.
+
+ This test is designed to hit the case where we were adding the same
+ proxy font entry to a family multiple times during user font set updates.
+
+ Note that if a platform doesn't have any of the local() fonts listed,
+ the testcase will "pass" harmlessly as a no-op. -->
+
+<style type="text/css" id="style1">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css" id="style2">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css" id="style3">
+@font-face {
+ font-family: foo;
+ src: local("Arial"),
+ local("DejaVu Sans"),
+ local("Free Sans"),
+ local("Open Sans"),
+ local("Droid Sans"),
+ local("Roboto");
+}
+</style>
+
+<style type="text/css">
+body {
+ font-family: serif;
+}
+.test {
+ font-family: foo;
+}
+</style>
+
+<script type="application/javascript">
+function run() {
+ // Disable one of our three identical style elements.
+ // This will trigger an update of the user font set,
+ // and there will still be two identical rules present.
+ document.getElementById("style3").disabled = true;
+
+ // Now we trigger the use of the 'foo' font family,
+ // so that font loading occurs.
+ // If there are duplicate proxy entries in the family,
+ // and only the first one gets replaced by the real face,
+ // blank text will result.
+ document.getElementById("test").className = "test";
+
+ document.documentElement.removeAttribute("class");
+}
+</script>
+
+</head>
+
+<body onload="run()">
+<div>
+foo <span id="test">bar</span> baz
+</div>
+</body>
+
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-1-ref.html b/layout/reftests/font-face/enable-sheet-1-ref.html
new file mode 100644
index 0000000000..eb0b6405c4
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-1-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-1.html b/layout/reftests/font-face/enable-sheet-1.html
new file mode 100644
index 0000000000..b904e346f8
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-1.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-2.html b/layout/reftests/font-face/enable-sheet-2.html
new file mode 100644
index 0000000000..bd2cfc6d5c
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-2.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ // Allow an intermediate state where we lose the special "B" glyph.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-3.html b/layout/reftests/font-face/enable-sheet-3.html
new file mode 100644
index 0000000000..5dfdbedff6
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-3.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[1].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ // Allow an intermediate state where we lose the special "A" glyph.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[1].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-4-ref.html b/layout/reftests/font-face/enable-sheet-4-ref.html
new file mode 100644
index 0000000000..c6b1998903
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-4-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-4.html b/layout/reftests/font-face/enable-sheet-4.html
new file mode 100644
index 0000000000..3ba7c6e64a
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-4.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The restore-size-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="restore-size-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-5.html b/layout/reftests/font-face/enable-sheet-5.html
new file mode 100644
index 0000000000..357d970039
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-5.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[1].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[1].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-6.html b/layout/reftests/font-face/enable-sheet-6.html
new file mode 100644
index 0000000000..c25b2a33c9
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-6.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/enable-sheet-7.html b/layout/reftests/font-face/enable-sheet-7.html
new file mode 100644
index 0000000000..9e10d673c8
--- /dev/null
+++ b/layout/reftests/font-face/enable-sheet-7.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "One"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[1].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[1].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/ex-unit-1-dynamic.html b/layout/reftests/font-face/ex-unit-1-dynamic.html
new file mode 100644
index 0000000000..93a5e0aa20
--- /dev/null
+++ b/layout/reftests/font-face/ex-unit-1-dynamic.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<title>ex unit with Ahem font</title>
+<style type="text/css">
+html { background: white; }
+body { font-family: Ahhhem; font-size: 50px;
+ height: 2ex; width: 2ex; position: relative;
+ background: blue; }
+</style>
+<script type="application/ecmascript">
+function run() {
+ document.getElementsByTagName("iframe")[0].contentWindow.arm();
+ document.getElementsByTagName("style")[0].sheet.insertRule(
+ '@font-face { font-family: "Ahhhem"; src: url(../fonts/Ahem.ttf); }',
+ 0);
+}
+</script>
+<body onload="setTimeout(run, 20)">
+<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe>
+</body>
diff --git a/layout/reftests/font-face/ex-unit-1-ref.html b/layout/reftests/font-face/ex-unit-1-ref.html
new file mode 100644
index 0000000000..5b25263e3b
--- /dev/null
+++ b/layout/reftests/font-face/ex-unit-1-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML>
+<title>ex unit with Ahem font</title>
+<style type="text/css">
+html { background: white; }
+div { height: 80px; width: 80px; background: blue; }
+</style>
+<div></div>
diff --git a/layout/reftests/font-face/ex-unit-1.html b/layout/reftests/font-face/ex-unit-1.html
new file mode 100644
index 0000000000..d39f101683
--- /dev/null
+++ b/layout/reftests/font-face/ex-unit-1.html
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML>
+<title>ex unit with Ahem font</title>
+<style type="text/css">
+@font-face { font-family: "Ahhhem"; src: url(../fonts/Ahem.ttf); }
+html { background: white; }
+body { font-family: Ahhhem; font-size: 50px; height: 2ex; width: 2ex; background: blue; }
+</style>
diff --git a/layout/reftests/font-face/fallback-to-system-1-ref.html b/layout/reftests/font-face/fallback-to-system-1-ref.html
new file mode 100644
index 0000000000..08aacd5f5e
--- /dev/null
+++ b/layout/reftests/font-face/fallback-to-system-1-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ span {
+ /* to ensure the same vertical positioning of the text */
+ display: inline-block;
+ height: 3em;
+ width: 1em;
+ vertical-align: baseline;
+ }
+
+ </style>
+</head>
+<body>
+
+<p>DEF<span></span></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/fallback-to-system-1.html b/layout/reftests/font-face/fallback-to-system-1.html
new file mode 100644
index 0000000000..5b6af1047b
--- /dev/null
+++ b/layout/reftests/font-face/fallback-to-system-1.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; line-height: 1.5em; }
+
+ span {
+ /* to ensure the same vertical positioning of the text */
+ display: inline-block;
+ height: 3em;
+ width: 1em;
+ vertical-align: baseline;
+ }
+
+ </style>
+</head>
+<body>
+
+<p>DEF<span></span></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-display-1-ref.html b/layout/reftests/font-face/font-display-1-ref.html
new file mode 100644
index 0000000000..73e71fcb85
--- /dev/null
+++ b/layout/reftests/font-face/font-display-1-ref.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>font-display test</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: test1-ref;
+ src: url(../fonts/markA.woff);
+}
+
+div.test {
+ font-size: 600%;
+ line-height: 1.3em;
+ width: 500px;
+}
+
+div.test p {
+ display: inline-block;
+ width: 150px;
+ margin: 0;
+}
+
+.auto { font-family: test1-ref; }
+.block { font-family: test1-ref; }
+.swap { font-family: test1-ref; }
+.fallback { font-family: test1-ref; }
+.optional { font-family: font-that-does-not-exist; }
+
+</style>
+</head>
+
+<body>
+<div class="test">
+<p class="auto">A</p>
+<p class="block">A</p>
+</div>
+<div class="test">
+<p class="swap">A</p>
+<p class="fallback">A</p>
+<p class="optional">A</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-display-1.html b/layout/reftests/font-face/font-display-1.html
new file mode 100644
index 0000000000..6f8c365e65
--- /dev/null
+++ b/layout/reftests/font-face/font-display-1.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>font-display test</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: test1-auto;
+ src: url(../fonts/markA.woff);
+ font-display: auto;
+}
+
+@font-face {
+ font-family: test1-block;
+ src: url(../fonts/markA.woff);
+ font-display: block;
+}
+
+@font-face {
+ font-family: test1-swap;
+ src: url(../fonts/markA.woff);
+ font-display: swap;
+}
+
+@font-face {
+ font-family: test1-fallback;
+ src: url(../fonts/markA.woff);
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: test1-optional;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=2000&test=font-display-1-optional);
+ font-display: optional;
+}
+
+div.test {
+ font-size: 600%;
+ line-height: 1.3em;
+ width: 500px;
+}
+
+div.test p {
+ display: inline-block;
+ width: 150px;
+ margin: 0;
+}
+
+.auto { font-family: test1-auto; }
+.block { font-family: test1-block; }
+.swap { font-family: test1-swap; }
+.fallback { font-family: test1-fallback; }
+.optional { font-family: test1-optional; }
+
+</style>
+</head>
+
+<body>
+<div class="test">
+<p class="auto">A</p>
+<p class="block">A</p>
+</div>
+<div class="test">
+<p class="swap">A</p>
+<p class="fallback">A</p>
+<p class="optional">A</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-display-2-ref.html b/layout/reftests/font-face/font-display-2-ref.html
new file mode 100644
index 0000000000..db45af7bcc
--- /dev/null
+++ b/layout/reftests/font-face/font-display-2-ref.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>font-display test</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: test2-ref;
+ src: url(../fonts/markA.woff);
+}
+
+div.test {
+ font-size: 600%;
+ line-height: 1.3em;
+ width: 500px;
+}
+
+div.test p {
+ display: inline-block;
+ width: 150px;
+ margin: 0;
+}
+
+.auto { font-family: test2-ref; }
+.block { font-family: test2-ref; }
+.swap { font-family: test2-ref; }
+.fallback { font-family: font-that-does-not-exist; }
+.optional { font-family: font-that-does-not-exist; }
+
+</style>
+</head>
+
+<body>
+<div class="test">
+<p class="auto">A</p>
+<p class="block">A</p>
+</div>
+<div class="test">
+<p class="swap">A</p>
+<p class="fallback">A</p>
+<p class="optional">A</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-display-2.html b/layout/reftests/font-face/font-display-2.html
new file mode 100644
index 0000000000..617c6cfc71
--- /dev/null
+++ b/layout/reftests/font-face/font-display-2.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>font-display test</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: test2-auto;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=4500&test=font-display-2-auto);
+ font-display: auto;
+}
+
+@font-face {
+ font-family: test2-block;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=4500&test=font-display-2-block);
+ font-display: block;
+}
+
+@font-face {
+ font-family: test2-swap;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=4500&test=font-display-2-swap);
+ font-display: swap;
+}
+
+@font-face {
+ font-family: test2-fallback;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=4500&test=font-display-2-fallback);
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: test2-optional;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=4500&test=font-display-2-optional);
+ font-display: optional;
+}
+
+div.test {
+ font-size: 600%;
+ line-height: 1.3em;
+ width: 500px;
+}
+
+div.test p {
+ display: inline-block;
+ width: 150px;
+ margin: 0;
+}
+
+.auto { font-family: test2-auto; }
+.block { font-family: test2-block; }
+.swap { font-family: test2-swap; }
+.fallback { font-family: test2-fallback; }
+.optional { font-family: test2-optional; }
+
+</style>
+</head>
+
+<body>
+<div class="test">
+<p class="auto">A</p>
+<p class="block">A</p>
+</div>
+<div class="test">
+<p class="swap">A</p>
+<p class="fallback">A</p>
+<p class="optional">A</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-error-404-1-ref.html b/layout/reftests/font-face/font-error-404-1-ref.html
new file mode 100644
index 0000000000..3c3ee58f5d
--- /dev/null
+++ b/layout/reftests/font-face/font-error-404-1-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+body {
+ font-family: monospace;
+ font-size: 36px;
+}
+</style>
+</head>
+<body>
+Hello world
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-error-404-1.html b/layout/reftests/font-face/font-error-404-1.html
new file mode 100644
index 0000000000..defec9d082
--- /dev/null
+++ b/layout/reftests/font-face/font-error-404-1.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+/* When the font data is returned with a 404 (Not found) status, it should not be used */
+@font-face {
+ font-family: foo;
+ src: url(../fonts/Chunkfive.sjs?statusCode=404&statusReason=Not%20found);
+}
+body {
+ font-family: foo, monospace;
+ font-size: 36px;
+}
+</style>
+</head>
+<body>
+Hello world
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-error-404-2-ref.html b/layout/reftests/font-face/font-error-404-2-ref.html
new file mode 100644
index 0000000000..e63d184531
--- /dev/null
+++ b/layout/reftests/font-face/font-error-404-2-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: foo;
+ src: url(../fonts/Chunkfive.otf);
+}
+body {
+ font-family: foo, monospace;
+ font-size: 36px;
+}
+</style>
+</head>
+<body>
+Hello world
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-error-404-2.html b/layout/reftests/font-face/font-error-404-2.html
new file mode 100644
index 0000000000..18edf1b34e
--- /dev/null
+++ b/layout/reftests/font-face/font-error-404-2.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+/* Chunkfive.sjs with a 200 (OK) status should work identically to Chunkfive.otf */
+@font-face {
+ font-family: foo;
+ src: url(../fonts/Chunkfive.sjs?statusCode=200&statusReason=OK);
+}
+body {
+ font-family: foo, monospace;
+ font-size: 36px;
+}
+</style>
+</head>
+<body>
+Hello world
+</body>
+</html>
diff --git a/layout/reftests/font-face/font-familiy-whitespace-1-notref.html b/layout/reftests/font-face/font-familiy-whitespace-1-notref.html
new file mode 100644
index 0000000000..3e6a46566b
--- /dev/null
+++ b/layout/reftests/font-face/font-familiy-whitespace-1-notref.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<style>
+@font-face {
+ font-family: Awesome font;
+ src: url(../fonts/markA.ttf);
+}
+p { /* Default font */ }
+</style>
+<p>A
diff --git a/layout/reftests/font-face/font-familiy-whitespace-1-ref.html b/layout/reftests/font-face/font-familiy-whitespace-1-ref.html
new file mode 100644
index 0000000000..5baf0ece11
--- /dev/null
+++ b/layout/reftests/font-face/font-familiy-whitespace-1-ref.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<style>
+@font-face {
+ font-family: Awesome font;
+ src: url(../fonts/markA.ttf);
+}
+p { font-family: Awesome font }
+</style>
+<p>A
diff --git a/layout/reftests/font-face/font-familiy-whitespace-1.html b/layout/reftests/font-face/font-familiy-whitespace-1.html
new file mode 100644
index 0000000000..237945b4c7
--- /dev/null
+++ b/layout/reftests/font-face/font-familiy-whitespace-1.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<style>
+@font-face {
+ font-family: Awesome font;
+ src: url(../fonts/markA.ttf);
+}
+p { font-family: Awesome/**/font }
+</style>
+<p>A
diff --git a/layout/reftests/font-face/font-redirect.html b/layout/reftests/font-face/font-redirect.html
new file mode 100644
index 0000000000..5341d07419
--- /dev/null
+++ b/layout/reftests/font-face/font-redirect.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA-redirect.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/helveticaneue-ultra-ref.html b/layout/reftests/font-face/helveticaneue-ultra-ref.html
new file mode 100644
index 0000000000..84c6756674
--- /dev/null
+++ b/layout/reftests/font-face/helveticaneue-ultra-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Helvetica Neue UltraLight</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 60pt;
+}
+
+@font-face {
+ font-family: MyUltralight;
+ src: local(HelveticaNeue-UltraLight);
+ font-weight: 100;
+}
+
+p {
+ font-family: MyUltralight, serif;
+ font-weight: 100;
+}
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p>Lovely lightness!!</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/helveticaneue-ultra.html b/layout/reftests/font-face/helveticaneue-ultra.html
new file mode 100644
index 0000000000..08761543c1
--- /dev/null
+++ b/layout/reftests/font-face/helveticaneue-ultra.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Helvetica Neue UltraLight</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 60pt;
+}
+
+p {
+ font-family: Helvetica Neue, serif;
+ font-weight: 100;
+}
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p>Lovely lightness!!</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/insert-rule-1-ref.html b/layout/reftests/font-face/insert-rule-1-ref.html
new file mode 100644
index 0000000000..df585c222e
--- /dev/null
+++ b/layout/reftests/font-face/insert-rule-1-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ body { font-family: "MarkA", "MarkB"; }
+ @font-face { font-family: "MarkA"; src: url(../fonts/markA.ttf); }
+ @font-face { font-family: "MarkB"; src: url(../fonts/markB.ttf); }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/insert-rule-1a.html b/layout/reftests/font-face/insert-rule-1a.html
new file mode 100644
index 0000000000..6f56229f53
--- /dev/null
+++ b/layout/reftests/font-face/insert-rule-1a.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face { font-family: 'MarkB'; src: url(../fonts/markB.ttf); }
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ var sheet = document.getElementsByTagName("style")[0].sheet;
+ sheet.insertRule("@font-face { font-family: 'MarkA'; src: url(../fonts/markA.ttf); }", sheet.cssRules.length);
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/insert-rule-1b.html b/layout/reftests/font-face/insert-rule-1b.html
new file mode 100644
index 0000000000..0b6e34307f
--- /dev/null
+++ b/layout/reftests/font-face/insert-rule-1b.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ body { font-family: "MarkA", "MarkB"; }
+ @font-face { font-family: 'MarkA'; src: url(../fonts/markA.ttf); }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ var sheet = document.getElementsByTagName("style")[0].sheet;
+ sheet.insertRule("@font-face { font-family: 'MarkB'; src: url(../fonts/markB.ttf); }", 0);
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/ivs-1-ref.html b/layout/reftests/font-face/ivs-1-ref.html
new file mode 100644
index 0000000000..0c71c77f39
--- /dev/null
+++ b/layout/reftests/font-face/ivs-1-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>
+@font-face { font-family: IVSテスト; src: url('../fonts/gw432047.ttf') format("truetype"); }
+body { background: white }
+span { font-size: 72pt; font-family: IVSテスト, serif; border: 1px red solid }
+</style>
+</head>
+<body>
+<span>&#xE000;&#xE001;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/ivs-1.html b/layout/reftests/font-face/ivs-1.html
new file mode 100644
index 0000000000..bdd417731d
--- /dev/null
+++ b/layout/reftests/font-face/ivs-1.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>
+@font-face { font-family: IVSテスト; src: url('../fonts/gw432047.ttf') format("truetype"); }
+body { background: white }
+span { font-size: 72pt; font-family: IVSテスト, serif; border: 1px red solid }
+</style>
+</head>
+<body>
+<span>葛&#xE0100;葛&#xE0101;</span>
+</body>
+</html>
diff --git a/layout/reftests/font-face/load-badchecksum-ref.html b/layout/reftests/font-face/load-badchecksum-ref.html
new file mode 100644
index 0000000000..6e8cac31b0
--- /dev/null
+++ b/layout/reftests/font-face/load-badchecksum-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Checksums for downloadable fonts</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
+ <style type="text/css">
+ body { margin: 50px; font-size: 24px; }
+
+ @font-face {
+ font-family: VeraBadChecksum;
+ src: url(../fonts/VeraBd.ttf);
+ }
+
+ @font-face {
+ font-family: VeraGoodChecksum;
+ src: url(../fonts/VeraBd-validchecksum.ttf);
+ }
+
+ .verabad { font-family: VeraBadChecksum, Futura, sans-serif; }
+ .veragood { font-family: VeraGoodChecksum, Futura, sans-serif; }
+
+ </style>
+
+ <script type="text/javascript">
+ </script>
+
+</head>
+<body>
+<p class="veragood">Fonts load with or without correct head table checksums</p>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/load-badchecksum.html b/layout/reftests/font-face/load-badchecksum.html
new file mode 100644
index 0000000000..22ee060eea
--- /dev/null
+++ b/layout/reftests/font-face/load-badchecksum.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Checksums for downloadable fonts</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
+ <style type="text/css">
+ body { margin: 50px; font-size: 24px; }
+
+ @font-face {
+ font-family: VeraBadChecksum;
+ src: url(../fonts/VeraBd.ttf);
+ }
+
+ @font-face {
+ font-family: VeraGoodChecksum;
+ src: url(../fonts/VeraBd-validchecksum.ttf);
+ }
+
+ .verabad { font-family: VeraBadChecksum, Futura, sans-serif; }
+ .veragood { font-family: VeraGoodChecksum, Futura, sans-serif; }
+
+ </style>
+
+ <script type="text/javascript">
+ </script>
+
+</head>
+<body>
+<p class="verabad">Fonts load with or without correct head table checksums</p>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/load-badfullname-ref.html b/layout/reftests/font-face/load-badfullname-ref.html
new file mode 100644
index 0000000000..c422aacc3c
--- /dev/null
+++ b/layout/reftests/font-face/load-badfullname-ref.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Test of fonts with funky fullnames</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: test;
+ src: url(../fonts/markA.ttf);
+}
+
+body {
+ margin: 50px;
+ font-size: 12pt;
+ font-family: Gill Sans, Futura, sans-serif;
+}
+
+p.test1 { font-size: 48pt; font-family: test, Futura, sans-serif; }
+p.test2 { font-size: 48pt; font-family: test, Futura, sans-serif; }
+
+</style>
+
+</head>
+<body>
+
+<p>Letter A should <strong>not</strong> appear below:</p>
+
+<p class="test1">A</p>
+
+<p class="test2">A</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/load-badfullname.html b/layout/reftests/font-face/load-badfullname.html
new file mode 100644
index 0000000000..0c00694f64
--- /dev/null
+++ b/layout/reftests/font-face/load-badfullname.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Test of fonts with funky fullnames</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: test1;
+ src: url(../fonts/markA-badfullname.ttf);
+}
+
+@font-face {
+ font-family: test2;
+ src: url(../fonts/markA-shortfullname.ttf);
+}
+
+body {
+ margin: 50px;
+ font-size: 12pt;
+ font-family: Gill Sans, Futura, sans-serif;
+}
+
+p.test1 { font-size: 48pt; font-family: test1, Futura, sans-serif; }
+p.test2 { font-size: 48pt; font-family: test2, Futura, sans-serif; }
+
+</style>
+
+</head>
+<body>
+
+<p>Letter A should <strong>not</strong> appear below:</p>
+
+<p class="test1">A</p>
+
+<p class="test2">A</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/local-1-ref.html b/layout/reftests/font-face/local-1-ref.html
new file mode 100644
index 0000000000..7304b52655
--- /dev/null
+++ b/layout/reftests/font-face/local-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <title>test src: local() reference</title>
+ <style type="text/css">
+ body {
+ font-family: Nimbus Sans L, Helvetica, Bitstream Vera Sans,
+ Arial, Liberation Sans, SwissA,
+ Fira Sans OT, Fira Sans, Droid Sans, Roboto, serif;
+ }
+ </style>
+</head>
+<body>
+ <p style="font-weight: normal;">
+ The quick brown fox jumped over the lazy dog
+ </p>
+ <p style="font-weight: bold;">
+ The quick brown fox jumped over the lazy dog
+ </p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/local-1.html b/layout/reftests/font-face/local-1.html
new file mode 100644
index 0000000000..64e4500024
--- /dev/null
+++ b/layout/reftests/font-face/local-1.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <title>test src: local()</title>
+ <!--
+
+ Most systems are expected to have either Linotype's Helvetica or a
+ substitute. These are needed for PostScript or PDF support. MS
+ systems will have Monotype's Arial installed. Systems with
+ ghostscript will normally have Nimbus Sans L. Linux systems without
+ ghostscript may have Adobe's bitmap Helvetica for X11 or Ascender /
+ Red Hat's Liberation Sans.
+
+ The result will be compared with fonts chosen through font-family.
+ Platform aliases (on Windows and Linux) will map family names from
+ one substitute to another, but similar aliasing does not happen with
+ face names in local(). Therefore, all Helvetica substitute fonts
+ are included in the @font-face rules.
+
+ Full names are specified for all fonts for MS Windows and Linux, and
+ PostScript names are included for Mac for all fonts up to
+ Helvetica, which is expected to be on every Mac.
+
+ The generic fallback is chosen to be serif, which is not expected to
+ be the same as any of the local (sans-serif) faces in the @font-face
+ rules, so that it makes failure to reference the local faces more
+ obvious.
+
+ -->
+ <style type="text/css">
+ @font-face {
+ font-family: "Local";
+ src: local(Nimbus Sans L), local(NimbusSansL-Regu),
+ local(Helvetica), local(Bitstream Vera Sans),
+ local(Arial), local(Liberation Sans), local(SwissA),
+ local(Fira Sans OT), local(Fira Sans),
+ local(Droid Sans), local(Roboto);
+ font-weight: 100;
+ }
+ @font-face {
+ font-family: "Local";
+ src: local(Nimbus Sans L Bold), local(NimbusSansL-Bold),
+ local(Helvetica Bold), local(Helvetica-Bold),
+ local(Bitstream Vera Sans Bold),
+ local(Arial Bold), local(Liberation Sans Bold), local(SwissA Bold),
+ local(Fira Sans OT Bold), local(Fira Sans Bold),
+ local(Droid Sans Bold), local(Roboto Bold);
+ font-weight: normal;
+ }
+ body { font-family: Local, serif }
+ </style>
+</head>
+<body>
+ <p style="font-weight: 100">
+ The quick brown fox jumped over the lazy dog
+ </p>
+ <p style="font-weight: normal;">
+ The quick brown fox jumped over the lazy dog
+ </p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/local-styled-1-ref.html b/layout/reftests/font-face/local-styled-1-ref.html
new file mode 100644
index 0000000000..d38f5974a6
--- /dev/null
+++ b/layout/reftests/font-face/local-styled-1-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: local(Nimbus Sans L), local(NimbusSansL-Regu),
+ local(Helvetica), local(Bitstream Vera Sans),
+ local(Arial), local(Liberation Sans), local(SwissA),
+ local(Fira Sans OT), local(Fira Sans),
+ local(Droid Sans), local(Roboto);
+}
+div {
+ font-family: test, serif;
+ margin: 10px;
+}
+</style>
+</head>
+<body>
+<div style="font-family:serif">
+This serif font should NOT be used below.
+</div>
+<hr>
+<div>
+These three lines should all use the same font face.
+</div>
+<div>
+This line should NOT be bold.
+</div>
+<div>
+This line should NOT be italic.
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/local-styled-1.html b/layout/reftests/font-face/local-styled-1.html
new file mode 100644
index 0000000000..155fce8706
--- /dev/null
+++ b/layout/reftests/font-face/local-styled-1.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: local(Nimbus Sans L), local(NimbusSansL-Regu),
+ local(Helvetica), local(Bitstream Vera Sans),
+ local(Arial), local(Liberation Sans), local(SwissA),
+ local(Fira Sans OT), local(Fira Sans),
+ local(Droid Sans), local(Roboto);
+}
+@font-face {
+ font-family: test;
+ font-style: italic;
+ src: local(Nimbus Sans L), local(NimbusSansL-Regu),
+ local(Helvetica), local(Bitstream Vera Sans),
+ local(Arial), local(Liberation Sans), local(SwissA),
+ local(Fira Sans OT), local(Fira Sans),
+ local(Droid Sans), local(Roboto);
+}
+@font-face {
+ font-family: test;
+ font-weight: bold;
+ src: local(Nimbus Sans L), local(NimbusSansL-Regu),
+ local(Helvetica), local(Bitstream Vera Sans),
+ local(Arial), local(Liberation Sans), local(SwissA),
+ local(Fira Sans OT), local(Fira Sans),
+ local(Droid Sans), local(Roboto);
+}
+div {
+ font-family: test, serif;
+ margin: 10px;
+}
+</style>
+</head>
+<body>
+<div style="font-family:serif">
+This serif font should NOT be used below.
+</div>
+<hr>
+<div>
+These three lines should all use the same font face.
+</div>
+<div>
+<b>This line should NOT be bold.</b>
+</div>
+<div>
+<i>This line should NOT be italic.</i>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/media-query-add-1-ref.html b/layout/reftests/font-face/media-query-add-1-ref.html
new file mode 100644
index 0000000000..e2fab2c08f
--- /dev/null
+++ b/layout/reftests/font-face/media-query-add-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/media-query-add-1.html b/layout/reftests/font-face/media-query-add-1.html
new file mode 100644
index 0000000000..3371dff199
--- /dev/null
+++ b/layout/reftests/font-face/media-query-add-1.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ html, body, iframe { margin: 0; padding: 0; border: none; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ var iframe = document.getElementsByTagName("iframe")[0]
+ iframe.contentWindow.arm();
+ iframe.style.width = "300px";
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<iframe style="height: 5em; width: 100px" src="media-query-inner-1.html"></iframe>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/media-query-inner-1.html b/layout/reftests/font-face/media-query-inner-1.html
new file mode 100644
index 0000000000..30310fb05f
--- /dev/null
+++ b/layout/reftests/font-face/media-query-inner-1.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css" media="(min-width: 200px)">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function arm() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm();
+ }
+
+ </script>
+</head>
+<body>
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/media-query-remove-1-ref.html b/layout/reftests/font-face/media-query-remove-1-ref.html
new file mode 100644
index 0000000000..7e6df9c92c
--- /dev/null
+++ b/layout/reftests/font-face/media-query-remove-1-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/media-query-remove-1.html b/layout/reftests/font-face/media-query-remove-1.html
new file mode 100644
index 0000000000..bb1361ffc0
--- /dev/null
+++ b/layout/reftests/font-face/media-query-remove-1.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ html, body, iframe { margin: 0; padding: 0; border: none; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ var iframe = document.getElementsByTagName("iframe")[0]
+ iframe.contentWindow.arm();
+ iframe.style.width = "100px";
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<iframe style="height: 5em; width: 300px" src="media-query-inner-1.html"></iframe>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/meiryo-en-bold.html b/layout/reftests/font-face/meiryo-en-bold.html
new file mode 100644
index 0000000000..5672de37e4
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-en-bold.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "Meiryo"; font-weight: bold; font-style: normal; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-en-bolditalic.html b/layout/reftests/font-face/meiryo-en-bolditalic.html
new file mode 100644
index 0000000000..aaaa1f977b
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-en-bolditalic.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "Meiryo"; font-weight: bold; font-style: italic; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-en-italic.html b/layout/reftests/font-face/meiryo-en-italic.html
new file mode 100644
index 0000000000..5382ffab27
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-en-italic.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "Meiryo"; font-weight: normal; font-style: italic; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-en-oblique.html b/layout/reftests/font-face/meiryo-en-oblique.html
new file mode 100644
index 0000000000..7036a80373
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-en-oblique.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "Meiryo"; font-style: oblique; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-en.html b/layout/reftests/font-face/meiryo-en.html
new file mode 100644
index 0000000000..179ccb1246
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-en.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "Meiryo"; font-weight: normal; font-style: normal; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-ja-bold.html b/layout/reftests/font-face/meiryo-ja-bold.html
new file mode 100644
index 0000000000..752d9b444f
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-ja-bold.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "メイリオ"; font-weight: bold; font-style: normal; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-ja-bolditalic.html b/layout/reftests/font-face/meiryo-ja-bolditalic.html
new file mode 100644
index 0000000000..95084f639e
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-ja-bolditalic.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "メイリオ"; font-weight: bold; font-style: italic; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-ja-italic.html b/layout/reftests/font-face/meiryo-ja-italic.html
new file mode 100644
index 0000000000..6bf1631f01
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-ja-italic.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "メイリオ"; font-weight: normal; font-style: italic; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-ja-oblique.html b/layout/reftests/font-face/meiryo-ja-oblique.html
new file mode 100644
index 0000000000..21b1a022d0
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-ja-oblique.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "メイリオ"; font-style: oblique; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/meiryo-ja.html b/layout/reftests/font-face/meiryo-ja.html
new file mode 100644
index 0000000000..0184415d76
--- /dev/null
+++ b/layout/reftests/font-face/meiryo-ja.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML><html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+body { margin: 50px; font-size: 72pt; }
+#test { font-family: "メイリオ"; font-weight: normal; font-style: normal; }
+</style>
+</head>
+<body><p id="test">魅力的な人</p></body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/missing-names-ref.html b/layout/reftests/font-face/missing-names-ref.html
new file mode 100644
index 0000000000..be9cc92784
--- /dev/null
+++ b/layout/reftests/font-face/missing-names-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Missing name tests</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+}
+
+@font-face { font-family: markA-regular; src: url(../fonts/markA.ttf); }
+
+.markA-regular { font-family: markA-regular; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+<p>These lines should all be the same non-alphabetic character:</p>
+<p class="markA-regular">A</p>
+<p class="markA-regular">A</p>
+<p class="markA-regular">A</p>
+<p class="markA-regular">A</p>
+<p class="markA-regular">A</p>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/missing-names.html b/layout/reftests/font-face/missing-names.html
new file mode 100644
index 0000000000..9cc4a2ac7b
--- /dev/null
+++ b/layout/reftests/font-face/missing-names.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Missing name tests</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+}
+
+@font-face { font-family: markA-regular; src: url(../fonts/markA.ttf); }
+@font-face { font-family: markA-nofamily; src: url(../fonts/markA-nofamily.ttf); }
+@font-face { font-family: markA-nofullname; src: url(../fonts/markA-nofullname.ttf); }
+@font-face { font-family: markA-nostyle; src: url(../fonts/markA-nostyle.ttf); }
+@font-face { font-family: markA-noversion; src: url(../fonts/markA-noversion.ttf); }
+
+.markA-regular { font-family: markA-regular; }
+.markA-nofamily { font-family: markA-nofamily; }
+.markA-nofullname { font-family: markA-nofullname; }
+.markA-noversion { font-family: markA-noversion; }
+.markA-nostyle { font-family: markA-nostyle; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+<p>These lines should all be the same non-alphabetic character:</p>
+<p class="markA-regular">A</p>
+<p class="markA-nofamily">A</p>
+<p class="markA-nofullname">A</p>
+<p class="markA-nostyle">A</p>
+<p class="markA-noversion">A</p>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/multiple-descriptor-1-notref.html b/layout/reftests/font-face/multiple-descriptor-1-notref.html
new file mode 100644
index 0000000000..421007bd4e
--- /dev/null
+++ b/layout/reftests/font-face/multiple-descriptor-1-notref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+
+<p>ABC</p>
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-descriptor-1-ref.html b/layout/reftests/font-face/multiple-descriptor-1-ref.html
new file mode 100644
index 0000000000..e0e4230167
--- /dev/null
+++ b/layout/reftests/font-face/multiple-descriptor-1-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ /* The last descriptor in a given rule wins, per CSS 2.0 */
+
+ @font-face {
+ src: url(../fonts/markA.ttf);
+ font-family: "MarkA";
+ }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+<p style="font-family: MarkA">ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-descriptor-1.html b/layout/reftests/font-face/multiple-descriptor-1.html
new file mode 100644
index 0000000000..0596026d98
--- /dev/null
+++ b/layout/reftests/font-face/multiple-descriptor-1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ /* The last descriptor in a given rule wins, per CSS 2.0 */
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ src: url(../fonts/markA.ttf);
+ font-family: "Two";
+ }
+
+ </style>
+</head>
+<body>
+
+<p style="font-family: One">ABC</p>
+<p style="font-family: Two">ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-in-family-1-notref.html b/layout/reftests/font-face/multiple-in-family-1-notref.html
new file mode 100644
index 0000000000..ec5e8f4da3
--- /dev/null
+++ b/layout/reftests/font-face/multiple-in-family-1-notref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+<p>A</p>
+<p>B</p>
+<p>C</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-in-family-1-ref.html b/layout/reftests/font-face/multiple-in-family-1-ref.html
new file mode 100644
index 0000000000..2e79e70d25
--- /dev/null
+++ b/layout/reftests/font-face/multiple-in-family-1-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ </style>
+</head>
+<body>
+
+<p style="font-family: MarkD">DDC</p>
+<p style="font-family: MarkA">A</p>
+<p style="font-family: MarkB">B</p>
+<p style="font-family: MarkA">C</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-in-family-1.html b/layout/reftests/font-face/multiple-in-family-1.html
new file mode 100644
index 0000000000..0bc5bc8d02
--- /dev/null
+++ b/layout/reftests/font-face/multiple-in-family-1.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+<p>A</p>
+<p>B</p>
+<p>C</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/multiple-in-family-1b.html b/layout/reftests/font-face/multiple-in-family-1b.html
new file mode 100644
index 0000000000..72dd13ebda
--- /dev/null
+++ b/layout/reftests/font-face/multiple-in-family-1b.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ /* This has the @font-face rules in the other order, in case that matters */
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+<p>A</p>
+<p>B</p>
+<p>C</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision-bad-url-ref.html b/layout/reftests/font-face/name-collision-bad-url-ref.html
new file mode 100644
index 0000000000..b77bfc4f19
--- /dev/null
+++ b/layout/reftests/font-face/name-collision-bad-url-ref.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Font name collision test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<!--
+ Font family names in @font-face rules take precedence over locally-available font families,
+ so none of the names of commonly used platform fonts should match against locally available
+ fonts.
+-->
+
+<style type="text/css">
+
+@font-face {
+ font-family: fallback;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+}
+
+body {
+ margin: 50px;
+ font-family: fallback;
+}
+
+table {
+ margin-left: 3em;
+}
+
+table td {
+ font-family: fallback;
+ font-size: 24pt;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>All text below should appear in the same "fallback" font face:</p>
+
+<table>
+<tr class="sample"><td>Sample</td></tr>
+<tr class="arial"><td>Arial</td></tr>
+<tr class="timesnewroman"><td>Times New Roman</td></tr>
+<tr class="couriernew"><td>Courier New</td></tr>
+<tr class="futura"><td>Futura</td></tr>
+<tr class="helvetica"><td>Helvetica</td></tr>
+<tr class="times"><td>Times</td></tr>
+<tr class="courier"><td>Courier</td></tr>
+<tr class="bitstreamverasans"><td>Bitstream Vera Sans</td></tr>
+<tr class="dejavusans"><td>DejaVu Sans</td></tr>
+<tr class="freesans"><td>FreeSans</td></tr>
+</table>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision-bad-url.html b/layout/reftests/font-face/name-collision-bad-url.html
new file mode 100644
index 0000000000..5fc31c1f50
--- /dev/null
+++ b/layout/reftests/font-face/name-collision-bad-url.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Font name collision test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<!--
+ Font family names in @font-face rules take precedence over locally-available font families,
+ so none of the names of commonly used platform fonts should match against locally available
+ fonts.
+-->
+
+<style type="text/css">
+
+@font-face {
+ font-family: fallback;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+}
+
+body {
+ margin: 50px;
+ font-family: fallback;
+}
+
+table {
+ margin-left: 3em;
+}
+
+@font-face {
+ font-family: Sample;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.sample { font-family: Sample, fallback; }
+
+/* Windows */
+
+@font-face {
+ font-family: Arial;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.arial { font-family: Arial, fallback; }
+
+@font-face {
+ font-family: Times New Roman;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.timesnewroman { font-family: Times New Roman, fallback; }
+
+@font-face {
+ font-family: Courier New;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.couriernew { font-family: Courier New, fallback; }
+
+/* Mac OS X */
+
+@font-face {
+ font-family: Futura;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.futura { font-family: Futura, fallback; }
+
+@font-face {
+ font-family: Helvetica;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.helvetica { font-family: Helvetica, fallback; }
+
+@font-face {
+ font-family: Times;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.times { font-family: Times, fallback; }
+
+@font-face {
+ font-family: Courier;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.courier { font-family: Courier, fallback; }
+
+/* Linux */
+
+@font-face {
+ font-family: Bitstream Vera Sans;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.bitstreamverasans { font-family: Bitstream Vera Sans, fallback; }
+
+@font-face {
+ font-family: DejaVu Sans;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.dejavusans { font-family: DejaVu Sans, fallback; }
+
+@font-face {
+ font-family: FreeSans;
+ src: url(../fonts/bogus-dir/bogus-font.ttf);
+ font-weight: 900;
+}
+
+.freesans { font-family: FreeSans, fallback; }
+
+table {
+ font-family: Sample;
+}
+
+table td {
+ font-size: 24pt;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>All text below should appear in the same "fallback" font face:</p>
+
+<table>
+<tr class="sample"><td>Sample</td></tr>
+<tr class="arial"><td>Arial</td></tr>
+<tr class="timesnewroman"><td>Times New Roman</td></tr>
+<tr class="couriernew"><td>Courier New</td></tr>
+<tr class="futura"><td>Futura</td></tr>
+<tr class="helvetica"><td>Helvetica</td></tr>
+<tr class="times"><td>Times</td></tr>
+<tr class="courier"><td>Courier</td></tr>
+<tr class="bitstreamverasans"><td>Bitstream Vera Sans</td></tr>
+<tr class="dejavusans"><td>DejaVu Sans</td></tr>
+<tr class="freesans"><td>FreeSans</td></tr>
+</table>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision-ref.html b/layout/reftests/font-face/name-collision-ref.html
new file mode 100644
index 0000000000..d5f5d4106f
--- /dev/null
+++ b/layout/reftests/font-face/name-collision-ref.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Font name collision test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<!--
+ Font family names in @font-face rules take precedence over locally-available font families,
+ so none of the names of commonly used platform fonts should match against locally available
+ fonts.
+-->
+
+<style type="text/css">
+
+@font-face {
+ font-family: fallback;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+}
+
+body {
+ margin: 50px;
+ font-family: fallback;
+}
+
+table {
+ margin-left: 3em;
+}
+
+@font-face {
+ font-family: Sample;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.sample { font-family: Sample, fallback; }
+
+table {
+ font-family: Sample;
+}
+
+table td {
+ font-size: 24pt;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>All text below should appear in the same extra bold font face:</p>
+
+<table>
+<tr class="sample"><td>Sample</td></tr>
+<tr class="arial"><td>Arial</td></tr>
+<tr class="timesnewroman"><td>Times New Roman</td></tr>
+<tr class="couriernew"><td>Courier New</td></tr>
+<tr class="futura"><td>Futura</td></tr>
+<tr class="helvetica"><td>Helvetica</td></tr>
+<tr class="times"><td>Times</td></tr>
+<tr class="courier"><td>Courier</td></tr>
+<tr class="bitstreamverasans"><td>Bitstream Vera Sans</td></tr>
+<tr class="dejavusans"><td>DejaVu Sans</td></tr>
+<tr class="freesans"><td>FreeSans</td></tr>
+</table>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision-with-prefs-font-ref.html b/layout/reftests/font-face/name-collision-with-prefs-font-ref.html
new file mode 100644
index 0000000000..b1d522f51e
--- /dev/null
+++ b/layout/reftests/font-face/name-collision-with-prefs-font-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Bug 668758 - @font-face disrupts font preferences</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-family: serif;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>
+This should be rendered using the default serif font.
+</p>
+
+<pre>
+And this is preformatted text that ought to be monospaced.
+</pre>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision-with-prefs-font.html b/layout/reftests/font-face/name-collision-with-prefs-font.html
new file mode 100644
index 0000000000..0f90870dea
--- /dev/null
+++ b/layout/reftests/font-face/name-collision-with-prefs-font.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Bug 668758 - @font-face disrupts font preferences</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+/* none of these @font-face declarations should affect the rendering! */
+@font-face {
+ font-family: Times;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Times New Roman;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Tms Rmn;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Droid Serif;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Courier;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Courier New;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+@font-face {
+ font-family: Droid Sans Mono;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+}
+
+body {
+ margin: 50px;
+ font-family: serif;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>
+This should be rendered using the default serif font.
+</p>
+
+<pre>
+And this is preformatted text that ought to be monospaced.
+</pre>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-collision.html b/layout/reftests/font-face/name-collision.html
new file mode 100644
index 0000000000..5bff99d433
--- /dev/null
+++ b/layout/reftests/font-face/name-collision.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Font name collision test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<!--
+ Font family names in @font-face rules take precedence over locally-available font families,
+ so none of the names of commonly used platform fonts should match against locally available
+ fonts.
+-->
+
+<style type="text/css">
+
+@font-face {
+ font-family: fallback;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+}
+
+body {
+ margin: 50px;
+ font-family: fallback;
+}
+
+table {
+ margin-left: 3em;
+}
+
+@font-face {
+ font-family: Sample;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.sample { font-family: Sample, fallback; }
+
+/* Windows */
+
+@font-face {
+ font-family: Arial;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.arial { font-family: Arial, fallback; }
+
+@font-face {
+ font-family: Times New Roman;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.timesnewroman { font-family: Times New Roman, fallback; }
+
+@font-face {
+ font-family: Courier New;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.couriernew { font-family: Courier New, fallback; }
+
+/* Mac OS X */
+
+@font-face {
+ font-family: Futura;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.futura { font-family: Futura, fallback; }
+
+@font-face {
+ font-family: Helvetica;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.helvetica { font-family: Helvetica, fallback; }
+
+@font-face {
+ font-family: Times;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.times { font-family: Times, fallback; }
+
+@font-face {
+ font-family: Courier;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.courier { font-family: Courier, fallback; }
+
+/* Linux */
+
+@font-face {
+ font-family: Bitstream Vera Sans;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.bitstreamverasans { font-family: Bitstream Vera Sans, fallback; }
+
+@font-face {
+ font-family: DejaVu Sans;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.dejavusans { font-family: DejaVu Sans, fallback; }
+
+@font-face {
+ font-family: FreeSans;
+ src: url(../fonts/mplus/mplus-1p-black.ttf);
+ font-weight: 900;
+}
+
+.freesans { font-family: FreeSans, fallback; }
+
+table {
+ font-family: Sample;
+}
+
+table td {
+ font-size: 24pt;
+}
+
+</style>
+
+</head>
+
+<body>
+
+<p>All text below should appear in the same extra bold font face:</p>
+
+<table>
+<tr class="sample"><td>Sample</td></tr>
+<tr class="arial"><td>Arial</td></tr>
+<tr class="timesnewroman"><td>Times New Roman</td></tr>
+<tr class="couriernew"><td>Courier New</td></tr>
+<tr class="futura"><td>Futura</td></tr>
+<tr class="helvetica"><td>Helvetica</td></tr>
+<tr class="times"><td>Times</td></tr>
+<tr class="courier"><td>Courier</td></tr>
+<tr class="bitstreamverasans"><td>Bitstream Vera Sans</td></tr>
+<tr class="dejavusans"><td>DejaVu Sans</td></tr>
+<tr class="freesans"><td>FreeSans</td></tr>
+</table>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-override-1-ref.html b/layout/reftests/font-face/name-override-1-ref.html
new file mode 100644
index 0000000000..839132295d
--- /dev/null
+++ b/layout/reftests/font-face/name-override-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: "MarkD"; }
+
+ </style>
+</head>
+<body>
+
+<p>DBD</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-override-1.html b/layout/reftests/font-face/name-override-1.html
new file mode 100644
index 0000000000..3acdcc13e7
--- /dev/null
+++ b/layout/reftests/font-face/name-override-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Foobar";
+ src: url(../fonts/markA.ttf), url(../fonts/markC.ttf);
+ }
+
+ body { font-family: "Foobar"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-override-simple-1-ref.html b/layout/reftests/font-face/name-override-simple-1-ref.html
new file mode 100644
index 0000000000..86828aa0d2
--- /dev/null
+++ b/layout/reftests/font-face/name-override-simple-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: "MarkD"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABD</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/name-override-simple-1.html b/layout/reftests/font-face/name-override-simple-1.html
new file mode 100644
index 0000000000..cddde019dc
--- /dev/null
+++ b/layout/reftests/font-face/name-override-simple-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Foobar";
+ src: url(../fonts/markC.ttf);
+ }
+
+ body { font-family: "Foobar"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-1-ref.html b/layout/reftests/font-face/order-1-ref.html
new file mode 100644
index 0000000000..e2fab2c08f
--- /dev/null
+++ b/layout/reftests/font-face/order-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-1.html b/layout/reftests/font-face/order-1.html
new file mode 100644
index 0000000000..cca7d18b7c
--- /dev/null
+++ b/layout/reftests/font-face/order-1.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-2-ref.html b/layout/reftests/font-face/order-2-ref.html
new file mode 100644
index 0000000000..704a12014d
--- /dev/null
+++ b/layout/reftests/font-face/order-2-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "MarkD", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-2.html b/layout/reftests/font-face/order-2.html
new file mode 100644
index 0000000000..b6e6ddbb80
--- /dev/null
+++ b/layout/reftests/font-face/order-2.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-3-ref.html b/layout/reftests/font-face/order-3-ref.html
new file mode 100644
index 0000000000..704a12014d
--- /dev/null
+++ b/layout/reftests/font-face/order-3-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "MarkD", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/order-3.html b/layout/reftests/font-face/order-3.html
new file mode 100644
index 0000000000..e481792da1
--- /dev/null
+++ b/layout/reftests/font-face/order-3.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/prop-order-over-rule-order-1a.html b/layout/reftests/font-face/prop-order-over-rule-order-1a.html
new file mode 100644
index 0000000000..9b92535e29
--- /dev/null
+++ b/layout/reftests/font-face/prop-order-over-rule-order-1a.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "MarkA", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/prop-order-over-rule-order-1b.html b/layout/reftests/font-face/prop-order-over-rule-order-1b.html
new file mode 100644
index 0000000000..2d3c8d34e7
--- /dev/null
+++ b/layout/reftests/font-face/prop-order-over-rule-order-1b.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "Mark2A", "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/prop-order-over-rule-order-2a.html b/layout/reftests/font-face/prop-order-over-rule-order-2a.html
new file mode 100644
index 0000000000..e295844789
--- /dev/null
+++ b/layout/reftests/font-face/prop-order-over-rule-order-2a.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "MarkA", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/prop-order-over-rule-order-2b.html b/layout/reftests/font-face/prop-order-over-rule-order-2b.html
new file mode 100644
index 0000000000..6e44aae59e
--- /dev/null
+++ b/layout/reftests/font-face/prop-order-over-rule-order-2b.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: "Mark2A", "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-1-data.html b/layout/reftests/font-face/reflow-sanity-1-data.html
new file mode 100644
index 0000000000..9d9338ad52
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-1-data.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1data;
+ src: url(data:font/opentype;base64,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);
+}
+
+@font-face {
+ font-family: reflow1data;
+ src: url(data:font/opentype;base64,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);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: reflow1data;
+ src: url(data:font/opentype;base64,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);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: reflow1data;
+ src: url(data:font/opentype;base64,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);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: reflow1data;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p>A</p>
+<p style="font-weight: bold">B</p>
+<p style="font-style: italic">C</p>
+<p style="font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-1-ref.html b/layout/reftests/font-face/reflow-sanity-1-ref.html
new file mode 100644
index 0000000000..c173a519b3
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-1-ref.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1ref;
+ src: url(../fonts/markA.ttf);
+}
+
+div#test {
+ font-family: reflow1ref;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p>A</p>
+<p>A</p>
+<p>A</p>
+<p>A</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-1.html b/layout/reftests/font-face/reflow-sanity-1.html
new file mode 100644
index 0000000000..2206483f3f
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-1.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1;
+ src: url(../fonts/markA.ttf);
+}
+
+@font-face {
+ font-family: reflow1;
+ src: url(../fonts/markB.ttf);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: reflow1;
+ src: url(../fonts/markC.ttf);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: reflow1;
+ src: url(../fonts/markD.ttf);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: reflow1;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p>A</p>
+<p style="font-weight: bold">B</p>
+<p style="font-style: italic">C</p>
+<p style="font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-delay-1-metrics.html b/layout/reftests/font-face/reflow-sanity-delay-1-metrics.html
new file mode 100644
index 0000000000..0ea0d88951
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-delay-1-metrics.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1metrics;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=2500&test=delay-1-metrics);
+}
+
+@font-face {
+ font-family: reflow1metrics;
+ src: url(../fonts/markfonts-delay.sjs?font=markB&delay=2200&test=delay-1-metrics);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: reflow1metrics;
+ src: url(../fonts/markfonts-delay.sjs?font=markC&delay=200&test=delay-1-metrics);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: reflow1metrics;
+ src: url(../fonts/markfonts-delay.sjs?font=markD&delay=900&test=delay-1-metrics);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: reflow1metrics;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p style="font-family: reflow1metrics, cursive;">A</p>
+<p style="font-family: reflow1metrics, fantasy; font-weight: bold">B</p>
+<p style="font-family: reflow1metrics, monospace; font-style: italic">C</p>
+<p style="font-family: reflow1metrics, sans-serif; font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-delay-1a.html b/layout/reftests/font-face/reflow-sanity-delay-1a.html
new file mode 100644
index 0000000000..741a14a76f
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-delay-1a.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1a;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=100&test=delay-1a);
+}
+
+@font-face {
+ font-family: reflow1a;
+ src: url(../fonts/markfonts-delay.sjs?font=markB&delay=1000&test=delay-1a);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: reflow1a;
+ src: url(../fonts/markfonts-delay.sjs?font=markC&delay=1500&test=delay-1a);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: reflow1a;
+ src: url(../fonts/markfonts-delay.sjs?font=markD&delay=2000&test=delay-1a);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: reflow1a;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p>A</p>
+<p style="font-weight: bold">B</p>
+<p style="font-style: italic">C</p>
+<p style="font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-delay-1b.html b/layout/reftests/font-face/reflow-sanity-delay-1b.html
new file mode 100644
index 0000000000..f49250c34a
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-delay-1b.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: reflow1b;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=2500&test=delay-1b);
+}
+
+@font-face {
+ font-family: reflow1b;
+ src: url(../fonts/markfonts-delay.sjs?font=markB&delay=500&test=delay-1b);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: reflow1b;
+ src: url(../fonts/markfonts-delay.sjs?font=markC&delay=1100&test=delay-1b);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: reflow1b;
+ src: url(../fonts/markfonts-delay.sjs?font=markD&delay=100&test=delay-1b);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: reflow1b;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p>A</p>
+<p style="font-weight: bold">B</p>
+<p style="font-style: italic">C</p>
+<p style="font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reflow-sanity-delay-1c.html b/layout/reftests/font-face/reflow-sanity-delay-1c.html
new file mode 100644
index 0000000000..dd5e102083
--- /dev/null
+++ b/layout/reftests/font-face/reflow-sanity-delay-1c.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>test @font-face reflow sanity</title>
+<meta charset="utf-8">
+<style>
+body { margin: 20px }
+
+@font-face {
+ font-family: markA;
+ src: url(../fonts/markfonts-delay.sjs?font=markA&delay=2500&test=delay-1c);
+}
+
+@font-face {
+ font-family: markB;
+ src: url(../fonts/markfonts-delay.sjs?font=markB&delay=500&test=delay-1c);
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: markC;
+ src: url(../fonts/markfonts-delay.sjs?font=markC&delay=1100&test=delay-1c);
+ font-style: italic;
+}
+
+@font-face {
+ font-family: markD;
+ src: url(../fonts/markfonts-delay.sjs?font=markD&delay=100&test=delay-1c);
+ font-weight: bold;
+ font-style: italic;
+}
+
+div#test {
+ font-family: markA;
+ font-size: 400%;
+ line-height: 1em;
+}
+
+div#test p {
+ margin: 0;
+ display: inline-block;
+}
+</style>
+</head>
+
+<body>
+<div id=test>
+<p style="font-family: marka, markb, markc, markd;">A</p>
+<p style="font-family: marka, markb, markc, markd; font-weight: bold">B</p>
+<p style="font-family: marka, markb, markc, markd; font-style: italic">C</p>
+<p style="font-family: marka, markb, markc, markd; font-style: italic; font-weight: bold">D</p>
+</div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/reftest.list b/layout/reftests/font-face/reftest.list
new file mode 100644
index 0000000000..920a53a4d0
--- /dev/null
+++ b/layout/reftests/font-face/reftest.list
@@ -0,0 +1,249 @@
+!= download-1.html download-1-notref.html
+== download-2.html download-2-ref.html
+!= download-2.html about:blank
+random-if(winWidget||gtkWidget) == download-2-big.html download-2-big-otf.html # bug 470713
+!= download-2-big-otf.html about:blank
+asserts-if(Android&&!asyncPan,1-8) != download-3-notref.html download-3.html # bug 1019192
+asserts-if(Android,0-8) == download-3-ref.html download-3.html # same bugs as above
+asserts-if(Android,0-8) == fallback-to-system-1.html fallback-to-system-1-ref.html # just delayed assertions from above tests
+== name-override-simple-1.html name-override-simple-1-ref.html
+!= name-override-simple-1.html download-1-notref.html
+fails == name-override-1.html name-override-1-ref.html
+== multiple-descriptor-1.html multiple-descriptor-1-ref.html
+!= multiple-descriptor-1.html multiple-descriptor-1-notref.html
+== src-list-1.html src-list-1-ref.html
+== src-list-2.html src-list-2-ref.html
+random-if(winWidget||gtkWidget) == src-list-2-big-otf.html src-list-2-big-ref.html # bug 470713
+== src-list-format-1.html src-list-format-1-ref.html
+== src-list-format-2.html src-list-format-2-ref.html
+== src-list-format-4.html src-list-format-1-ref.html
+== src-list-format-5.html src-list-format-2-ref.html
+== src-list-format-7.html src-list-format-3-ref.html
+fails-if(Android) == src-list-local-full.html src-list-local-full-ref.html
+fails-if(Android) == src-list-local-full-quotes.html src-list-local-full-ref.html
+== src-list-local-fallback.html src-list-local-fallback-ref.html
+
+# data url tests (these don't need the HTTP server)
+== src-list-data-1.html src-list-data-ref.html
+== src-list-data-2.html src-list-data-ref.html
+== src-list-data-3.html src-list-data-ref.html
+== src-list-data-4.html src-list-data-ref.html
+
+# load with data url vs. font data load
+== src-list-actual-font-ref.html src-list-data-1.html
+
+# localized full fontnames should *not* match, only English ones (need locale-invariant key)
+skip == src-list-local-localized.html src-list-local-localized-ref.html # 486787, 486497
+
+# postscript name lookup
+# fontconfig only supports postscript name lookup from 2.10.92, Android not supported
+fails-if(Android) random-if(gtkWidget) == src-list-local-ps.html src-list-local-full-ref.html
+# Mac-specific test of 100 weight faces
+random-if(!cocoaWidget) == helveticaneue-ultra.html helveticaneue-ultra-ref.html
+
+== order-1.html order-1-ref.html
+== order-2.html order-2-ref.html
+== order-3.html order-3-ref.html
+== multiple-in-family-1.html multiple-in-family-1-ref.html
+== multiple-in-family-1b.html multiple-in-family-1-ref.html
+!= multiple-in-family-1.html multiple-in-family-1-notref.html
+== prop-order-over-rule-order-1a.html prop-order-over-rule-order-2a.html
+== prop-order-over-rule-order-1b.html prop-order-over-rule-order-2b.html
+!= prop-order-over-rule-order-1a.html prop-order-over-rule-order-1b.html
+== cross-iframe-1.html cross-iframe-1-ref.html
+
+# unicode-range
+== unicoderange-1.html unicoderange-1-ref.html
+== unicoderange-2.html unicoderange-2-ref.html
+== unicoderange-3.html unicoderange-3-ref.html
+== unicoderange-4.html unicoderange-4-ref.html
+
+# Dynamic changes
+# we need to skip these because of the bug that's causing order-2.html to fail
+== enable-sheet-1.html enable-sheet-1-ref.html
+skip == enable-sheet-2.html multiple-in-family-1-ref.html
+skip == enable-sheet-3.html multiple-in-family-1-ref.html
+== enable-sheet-4.html enable-sheet-4-ref.html
+== enable-sheet-5.html enable-sheet-4-ref.html
+skip == enable-sheet-6.html multiple-in-family-1-ref.html
+skip == enable-sheet-7.html multiple-in-family-1-ref.html
+== disable-sheet-1.html disable-sheet-1-ref.html
+# We're missing disable-sheet-{2,3,6,7} (analogs to
+# enable-sheet{2,3,6,7}) because I don't know how to detect test
+# completion for those cases.
+== disable-sheet-4.html disable-sheet-4-ref.html
+== disable-sheet-5.html disable-sheet-4-ref.html
+== sheet-set-base-1.html sheet-set-base-1-ref.html
+== sheet-set-switch-1.html sheet-set-switch-1-ref.html
+== insert-rule-1a.html insert-rule-1-ref.html
+== insert-rule-1b.html insert-rule-1-ref.html
+== delete-rule-1.html delete-rule-1-ref.html
+== media-query-add-1.html media-query-add-1-ref.html
+== media-query-remove-1.html media-query-remove-1-ref.html
+!= media-query-add-1-ref.html media-query-remove-1-ref.html
+
+== ahem-metrics-1.html ahem-metrics-1-ref.html
+== ex-unit-1.html ex-unit-1-ref.html
+== ex-unit-1-dynamic.html ex-unit-1-ref.html
+
+== local-1.html local-1-ref.html
+== local-styled-1.html local-styled-1-ref.html
+
+== synthetic-weight-style.html synthetic-weight-style-ref.html
+== synthetic-variations.html synthetic-variations-ref.html
+
+# Leak test
+load 486974-1.html
+
+# compare fonts with and without bad head checksum
+== load-badchecksum.html load-badchecksum-ref.html
+
+# @font-face names take precedence over names of platform fonts (bug 494360)
+== name-collision.html name-collision-ref.html
+== name-collision-bad-url.html name-collision-bad-url-ref.html
+
+== name-collision-with-prefs-font.html name-collision-with-prefs-font-ref.html # bug 668758
+== load-badfullname.html load-badfullname-ref.html
+
+# 507960-1-* : a collection of tests using DeLarge from openfontlibrary.org
+# check that the original DeLarge face (ttf) loads; if this fails,
+# none of the following tests are meaningful
+!= 507960-1-nofont.html 507960-1-ref.html
+# check that the WOFF version loads, with and without a format hint
+== 507960-1-woff.html 507960-1-ref.html
+== 507960-1-woff-hint.html 507960-1-ref.html
+# try damaged fonts that should still load (bad checksums)
+== 507960-1-bad-checksums-ttf.html 507960-1-ref.html
+== 507960-1-bad-checksums-woff.html 507960-1-ref.html
+# try versions that should NOT load (bad offsets, signatures, hint)
+!= 507960-1-bad-sfnt-version-ttf.html 507960-1-ref.html
+!= 507960-1-bad-sfnt-version-woff.html 507960-1-ref.html
+!= 507960-1-bad-woff-sig.html 507960-1-ref.html
+!= 507960-1-bad-offset-woff.html 507960-1-ref.html
+!= 507960-1-woff-bad-hint.html 507960-1-ref.html
+
+# Tests for bug 523717
+== underline-offset-change-1.html underline-offset-change-1-ref.html
+== underline-offset-change-2.html underline-offset-change-2-ref.html
+!= underline-offset-change-1-ref.html underline-offset-change-2-ref.html
+
+!= 534352-1-extra-cmap-sentinel.html 534352-1-extra-cmap-sentinel-ref.html
+== bug533251.html bug533251-ref.html
+
+# Bug 875287
+== font-familiy-whitespace-1.html font-familiy-whitespace-1-ref.html
+!= font-familiy-whitespace-1.html font-familiy-whitespace-1-notref.html
+
+skip-if(Android) == ivs-1.html ivs-1-ref.html # Android bug 1250229
+skip-if(Android) == cjkcisvs-1.html cjkcisvs-1-ref.html # Android bug 1250229, Bug 1392106
+
+== missing-names.html missing-names-ref.html
+
+# Tests for bug 670900 - handling of 404 (not found) error in @font-face URL
+# (using Chunkfive font data returned from a .sjs file)
+HTTP(..) == font-error-404-1.html font-error-404-1-ref.html # HTTP status 404, don't load
+HTTP(..) == font-error-404-2.html font-error-404-2-ref.html # HTTP status 200, load # random on win7, see bug 1786796 comment 9
+HTTP(..) != font-error-404-1.html font-error-404-2.html # sanity-check that the results differ
+
+# Font load redirection
+HTTP(..) == font-redirect.html order-1-ref.html
+
+# Tests for potential regressions from bug 879963
+== dynamic-duplicate-rule-1a.html dynamic-duplicate-rule-1-ref.html
+== dynamic-duplicate-rule-1b.html dynamic-duplicate-rule-1-ref.html
+== dynamic-duplicate-rule-1c.html dynamic-duplicate-rule-1-ref.html
+
+# Test for COLR and CPAL support
+fuzzy-if(OSX,198-198,172-172) == color-1a.html color-1-ref.html
+!= color-1a.html color-1-notref.html
+fuzzy-if(OSX,198-198,172-172) == color-1b.html color-1-ref.html
+== color-2a.html color-2-ref.html
+!= color-2a.html color-2-notref.html
+
+# COLRv1 (enhanced color font) format
+# Comparing COLRv1 glyph rendering to CSS backgrounds we can expect "fuzz" in lots of gradients
+# and along antialiased diagonals, etc., but the differences are barely perceptible to the eye.
+# These are skipped on Win7 because lack of font-variation support means the COLR table
+# in the test font CAhem.ttf will be dropped.
+defaults pref(gfx.font_rendering.colr_v1.enabled,true)
+fuzzy(0-64,0-200) == colrv1-01.html#A colrv1-01-ref.html#A
+fuzzy(0-32,0-200) == colrv1-01.html#B colrv1-01-ref.html#B
+fuzzy(0-8,0-10100) == colrv1-01.html#C colrv1-01-ref.html#C
+fuzzy(0-64,0-600) == colrv1-01.html#D colrv1-01-ref.html#D
+fuzzy(0-64,0-398) == colrv1-01.html#E colrv1-01-ref.html#E
+fuzzy(0-64,0-398) == colrv1-01.html#F colrv1-01-ref.html#F
+fuzzy(0-64,0-596) == colrv1-01.html#G colrv1-01-ref.html#G
+fuzzy(0-64,0-596) == colrv1-01.html#H colrv1-01-ref.html#H
+fuzzy(0-64,0-10100) == colrv1-01.html#I colrv1-01-ref.html#I
+fuzzy(0-64,0-6806) == colrv1-01.html#J colrv1-01-ref.html#J
+fuzzy(0-1,0-748) == colrv1-01.html#K colrv1-01-ref.html#K
+fuzzy(0-67,0-9494) == colrv1-01.html#L colrv1-01-ref.html#L
+fuzzy(0-64,0-3578) == colrv1-01.html#M colrv1-01-ref.html#M
+fuzzy(0-64,0-6116) == colrv1-01.html#N colrv1-01-ref.html#N
+fuzzy(0-80,0-5491) == colrv1-01.html#O colrv1-01-ref.html#O
+fuzzy(0-112,0-300) == colrv1-01.html#P colrv1-01-ref.html#P
+fuzzy(0-149,0-484) == colrv1-01.html#Q colrv1-01-ref.html#Q
+fuzzy(0-214,0-461) == colrv1-01.html#R colrv1-01-ref.html#R
+fuzzy(0-255,0-373) == colrv1-01.html#S colrv1-01-ref.html#S
+fuzzy(0-255,0-290) == colrv1-01.html#T colrv1-01-ref.html#T
+
+fuzzy(0-1,0-1) == colrv1-03.html colrv1-03-ref.html
+fuzzy(0-1,0-1800) fuzzy-if(Android,0-64,0-37100) == colrv1-04.html colrv1-04-ref.html
+fuzzy-if(Android,8-8,1484-1484) == colrv1-05.html colrv1-05-ref.html
+fuzzy(0-1,0-291) == colrv1-06.html colrv1-06-ref.html
+fuzzy(0-128,0-264) == colrv1-07.html colrv1-07-ref.html
+== colrv1-08.html colrv1-08-ref.html
+== colrv1-09.html colrv1-09-ref.html
+defaults
+
+# Check that the tech(color-COLRv1) function responds to whether COLRv1 support is enabled.
+defaults pref(layout.css.font-tech.enabled,true)
+pref(gfx.font_rendering.colr_v1.enabled,true) == colrv1-02.html colrv1-02a-ref.html
+pref(gfx.font_rendering.colr_v1.enabled,false) == colrv1-02.html colrv1-02b-ref.html
+defaults
+
+== woff2-1.html woff2-1-ref.html
+== woff2-totalsfntsize.html woff2-totalsfntsize-ref.html
+
+# sanity tests for reflow behavior with downloadable fonts
+HTTP(..) == reflow-sanity-1.html reflow-sanity-1-ref.html # random on win7, see bug 1786796 comment 9
+HTTP(..) == reflow-sanity-1-data.html reflow-sanity-1-ref.html
+HTTP(..) == reflow-sanity-1.html reflow-sanity-1-data.html
+HTTP(..) == reflow-sanity-delay-1a.html reflow-sanity-1-ref.html
+HTTP(..) == reflow-sanity-delay-1b.html reflow-sanity-1-ref.html
+HTTP(..) == reflow-sanity-delay-1c.html reflow-sanity-1-ref.html
+HTTP(..) == reflow-sanity-delay-1-metrics.html reflow-sanity-1-ref.html
+
+HTTP(..) == bug-1481905-cancel-load.html bug-1481905-cancel-load-ref.html
+
+# font-display, with the timeouts extended so that slow (debug) builds have a better chance to keep up
+pref(gfx.downloadable_fonts.fallback_delay,10000) pref(gfx.downloadable_fonts.fallback_delay_short,1000) HTTP(..) == font-display-1.html font-display-1-ref.html # normal font load (~500ms), bug 1392106
+HTTP(..) == font-display-2.html font-display-2-ref.html # font load takes 4500ms
+
+# Testing hack for Meiryo
+== meiryo-en.html meiryo-ja.html
+== meiryo-en-bold.html meiryo-ja-bold.html
+== meiryo-en-italic.html meiryo-ja-italic.html # Bug 1392106
+== meiryo-en-oblique.html meiryo-ja-oblique.html # Bug 1392106
+== meiryo-en-bolditalic.html meiryo-ja-bolditalic.html # Bug 1392106
+!= meiryo-en-bold.html meiryo-en.html
+!= meiryo-en-italic.html meiryo-en.html
+!= meiryo-en-oblique.html meiryo-en.html
+!= meiryo-en-bolditalic.html meiryo-en.html
+!= meiryo-en-bolditalic.html meiryo-en-bold.html
+
+# test support of variation-font format hints
+defaults pref(layout.css.font-variations.enabled,false)
+== variation-format-hint-1a.html variation-format-hint-1A-ref.html
+== variation-format-hint-1b.html variation-format-hint-1A-ref.html
+== variation-format-hint-1c.html variation-format-hint-1A-ref.html
+== variation-format-hint-1d.html variation-format-hint-1A-ref.html
+defaults pref(layout.css.font-variations.enabled,true)
+# Currently Windows 7 and macOS all fail on
+# treeherder because our OS versions are too old to support variation fonts
+== variation-format-hint-1a.html variation-format-hint-1B-ttf-ref.html
+== variation-format-hint-1b.html variation-format-hint-1B-otf-ref.html
+== variation-format-hint-1c.html variation-format-hint-1B-woff-ref.html
+== variation-format-hint-1d.html variation-format-hint-1B-woff2-ref.html
+
+defaults
diff --git a/layout/reftests/font-face/resize-detector-iframe.html b/layout/reftests/font-face/resize-detector-iframe.html
new file mode 100644
index 0000000000..e0a87413f5
--- /dev/null
+++ b/layout/reftests/font-face/resize-detector-iframe.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Resize-notifying IFRAME</title>
+ <script type="application/ecmascript">
+
+ var gTarget;
+
+ /* the test is done after the next resize */
+ function arm() {
+ gTarget = -1;
+ window.addEventListener("resize", got_resize);
+ }
+
+ /* the test is done after the next resize to wider than the current width */
+ function arm_for_wider() {
+ gTarget = window.innerWidth;
+ window.addEventListener("resize", got_resize);
+ }
+
+ function got_resize() {
+ if (window.innerWidth > gTarget) {
+ // Remove the class="reftest-wait" from the top window
+ window.top.document.documentElement.removeAttribute("class");
+ }
+ }
+
+ </script>
+</head>
+<body>
+</body>
+</html>
diff --git a/layout/reftests/font-face/restore-size-detector-iframe.html b/layout/reftests/font-face/restore-size-detector-iframe.html
new file mode 100644
index 0000000000..ef3daa2f56
--- /dev/null
+++ b/layout/reftests/font-face/restore-size-detector-iframe.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Resize-notifying IFRAME</title>
+ <script type="application/ecmascript">
+
+ var gTarget;
+
+ /*
+ * the test is done after the width becomes narrower (immediately)
+ * and then comes back to the same size. However, the two things
+ * might happen at once.
+ */
+ function arm() {
+ gTarget = window.innerWidth;
+ window.addEventListener("resize", got_resize);
+ setTimeout(got_resize, 200);
+ }
+
+ function got_resize() {
+ if (window.innerWidth == gTarget) {
+ gTarget = -1;
+ // Remove the class="reftest-wait" from the top window
+ window.top.document.documentElement.removeAttribute("class");
+ }
+ }
+
+ </script>
+</head>
+<body>
+</body>
+</html>
diff --git a/layout/reftests/font-face/sheet-set-base-1-ref.html b/layout/reftests/font-face/sheet-set-base-1-ref.html
new file mode 100644
index 0000000000..03109f278e
--- /dev/null
+++ b/layout/reftests/font-face/sheet-set-base-1-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkD"; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/sheet-set-base-1.html b/layout/reftests/font-face/sheet-set-base-1.html
new file mode 100644
index 0000000000..f0b10b3c91
--- /dev/null
+++ b/layout/reftests/font-face/sheet-set-base-1.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css" title="Set A">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css" title="Set B">
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ body { font-family: "MarkA", "MarkB"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/sheet-set-switch-1-ref.html b/layout/reftests/font-face/sheet-set-switch-1-ref.html
new file mode 100644
index 0000000000..86525231a0
--- /dev/null
+++ b/layout/reftests/font-face/sheet-set-switch-1-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2D";
+ src: url(../fonts/mark2D.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkB";
+ src: url(../fonts/markB.ttf);
+ }
+
+ body { font-family: "Mark2D", "MarkB"; }
+
+ </style>
+</head>
+<body>
+
+<p>ADB</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/sheet-set-switch-1.html b/layout/reftests/font-face/sheet-set-switch-1.html
new file mode 100644
index 0000000000..243cd29f4f
--- /dev/null
+++ b/layout/reftests/font-face/sheet-set-switch-1.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css" title="Set A">
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ </style>
+ <style type="text/css" title="Set B">
+
+ @font-face {
+ font-family: "Mark2B";
+ src: url(../fonts/mark2B.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkC";
+ src: url(../fonts/markC.ttf);
+ }
+
+ body { font-family: "MarkA", "Mark2B", "MarkC"; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.selectedStyleSheetSet = "Set B";
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">ABC<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-1-ref.html b/layout/reftests/font-face/src-list-1-ref.html
new file mode 100644
index 0000000000..660046dd14
--- /dev/null
+++ b/layout/reftests/font-face/src-list-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: "MarkD"; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-1.html b/layout/reftests/font-face/src-list-1.html
new file mode 100644
index 0000000000..c968a00314
--- /dev/null
+++ b/layout/reftests/font-face/src-list-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf), url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-2-big-otf.html b/layout/reftests/font-face/src-list-2-big-otf.html
new file mode 100644
index 0000000000..98b4b8ee71
--- /dev/null
+++ b/layout/reftests/font-face/src-list-2-big-otf.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.otf), url(../fonts/markB.otf);
+ }
+
+ body { font-family: "One"; font-size: 50px; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-2-big-ref.html b/layout/reftests/font-face/src-list-2-big-ref.html
new file mode 100644
index 0000000000..ce855b7040
--- /dev/null
+++ b/layout/reftests/font-face/src-list-2-big-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: MarkD; font-size: 50px; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-2-ref.html b/layout/reftests/font-face/src-list-2-ref.html
new file mode 100644
index 0000000000..02316eaace
--- /dev/null
+++ b/layout/reftests/font-face/src-list-2-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: MarkD; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-2.html b/layout/reftests/font-face/src-list-2.html
new file mode 100644
index 0000000000..5cfb307ae1
--- /dev/null
+++ b/layout/reftests/font-face/src-list-2.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf), url(../fonts/markB.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-actual-font-ref.html b/layout/reftests/font-face/src-list-actual-font-ref.html
new file mode 100644
index 0000000000..a12ab9dcd0
--- /dev/null
+++ b/layout/reftests/font-face/src-list-actual-font-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(../fonts/loadtest.ttf);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: test;
+}
+p { margin: 0; padding: 0; }
+</style>
+</head>
+<body>
+<p>FAIL</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-data-1.html b/layout/reftests/font-face/src-list-data-1.html
new file mode 100644
index 0000000000..f313f48697
--- /dev/null
+++ b/layout/reftests/font-face/src-list-data-1.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(data:font/opentype;base64,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AC4AIABDAG8AcAB5AHIAaQBnAGgAdAAgAGkAbgBmAG8AIABwAGUAbgBkAGkAbgBnAC4AbABvAGEAZAB0AGUAcwB0AFIAZQBnAHUAbABhAHIAdwBlAGIAZgBvAG4AdABsAG8AYQBkAHQAZQBzAHQAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAxAEIAYQBzAGUAZAAgAG8AbgAgAEwAZQBhAGcAdQBlACAARwBvAHQAaABpAGMAIABiAHkAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUALAAgAG0AbwBkAGkAZgBpAGUAZAAgAGIAeQAgAEoAbwBoAG4AIABEAGEAZwBnAGUAdAB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgB0AGgAZQBsAGUAYQBnAHUAZQBvAGYAbQBvAHYAZQBhAGIAbABlAHQAeQBwAGUALgBjAG8AbQAvAGwAZQBhAGcAdQBlAC0AZwBvAHQAaABpAGMAQQBsAGwAIABmAG8AbgB0AHMAIABmAHIAbwBtACAAVABoAGUAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUAIABhAHIAZQAgAHMAdQBiAGoAZQBjAHQAIAB0AG8AIAB0AGgAZQAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP9nAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMAhACFAJYAjgCLAQMAigDaAI0AwwDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAoQB/AH4AgACBAOwA7gC6ANcA4gDjALAAsQDkAOUAuwDmAOcA2ADhANsA3ADdAOAA2QDfAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQCyALMAtgC3AMQAtAC1AMUAhwCrARIBEwEUAIwA7wEVARYBFwd1bmkwMEEwB3VuaTAwQUQHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMTAHdW5pMjAxMQpmaWd1cmVkYXNoB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaUUwMDAHdW5pRkIwMQd1bmlGQjAyAAAAAQAB//8ADwAAAAEAAAAAyYlvMQAAAADGp3m3AAAAAMrhKHcAAQAAAAwAAAAWAAAAAgABAAEA3wABAAQAAAABAAAAAAABAAAACgAuADwAAkRGTFQADmxhdG4AGAAEAAAAAP//AAAABAAAAAD//wABAAAAAVRTVDEACAAAAAEAAAABAAQAAQAAAAEACAACAA4ABABEADMANgBWAAEABAAkACkALAAvAAA=);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: test;
+}
+p { margin: 0; padding: 0; }
+</style>
+</head>
+<body>
+<p>FAIL</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-data-2.html b/layout/reftests/font-face/src-list-data-2.html
new file mode 100644
index 0000000000..6b3f6a8f7b
--- /dev/null
+++ b/layout/reftests/font-face/src-list-data-2.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(data:font/opentype,funkyfurryfoo), url(data:font/opentype;base64,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AC4AIABDAG8AcAB5AHIAaQBnAGgAdAAgAGkAbgBmAG8AIABwAGUAbgBkAGkAbgBnAC4AbABvAGEAZAB0AGUAcwB0AFIAZQBnAHUAbABhAHIAdwBlAGIAZgBvAG4AdABsAG8AYQBkAHQAZQBzAHQAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAxAEIAYQBzAGUAZAAgAG8AbgAgAEwAZQBhAGcAdQBlACAARwBvAHQAaABpAGMAIABiAHkAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUALAAgAG0AbwBkAGkAZgBpAGUAZAAgAGIAeQAgAEoAbwBoAG4AIABEAGEAZwBnAGUAdAB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgB0AGgAZQBsAGUAYQBnAHUAZQBvAGYAbQBvAHYAZQBhAGIAbABlAHQAeQBwAGUALgBjAG8AbQAvAGwAZQBhAGcAdQBlAC0AZwBvAHQAaABpAGMAQQBsAGwAIABmAG8AbgB0AHMAIABmAHIAbwBtACAAVABoAGUAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUAIABhAHIAZQAgAHMAdQBiAGoAZQBjAHQAIAB0AG8AIAB0AGgAZQAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP9nAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMAhACFAJYAjgCLAQMAigDaAI0AwwDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAoQB/AH4AgACBAOwA7gC6ANcA4gDjALAAsQDkAOUAuwDmAOcA2ADhANsA3ADdAOAA2QDfAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQCyALMAtgC3AMQAtAC1AMUAhwCrARIBEwEUAIwA7wEVARYBFwd1bmkwMEEwB3VuaTAwQUQHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMTAHdW5pMjAxMQpmaWd1cmVkYXNoB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaUUwMDAHdW5pRkIwMQd1bmlGQjAyAAAAAQAB//8ADwAAAAEAAAAAyYlvMQAAAADGp3m3AAAAAMrhKHcAAQAAAAwAAAAWAAAAAgABAAEA3wABAAQAAAABAAAAAAABAAAACgAuADwAAkRGTFQADmxhdG4AGAAEAAAAAP//AAAABAAAAAD//wABAAAAAVRTVDEACAAAAAEAAAABAAQAAQAAAAEACAACAA4ABABEADMANgBWAAEABAAkACkALAAvAAA=);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: test;
+}
+p { margin: 0; padding: 0; }
+</style>
+</head>
+<body>
+<p>FAIL</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-data-3.html b/layout/reftests/font-face/src-list-data-3.html
new file mode 100644
index 0000000000..5b6b2e4cb0
--- /dev/null
+++ b/layout/reftests/font-face/src-list-data-3.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(data:font/opentype;base64,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AC4AIABDAG8AcAB5AHIAaQBnAGgAdAAgAGkAbgBmAG8AIABwAGUAbgBkAGkAbgBnAC4AbABvAGEAZAB0AGUAcwB0AFIAZQBnAHUAbABhAHIAdwBlAGIAZgBvAG4AdABsAG8AYQBkAHQAZQBzAHQAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAxAEIAYQBzAGUAZAAgAG8AbgAgAEwAZQBhAGcAdQBlACAARwBvAHQAaABpAGMAIABiAHkAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUALAAgAG0AbwBkAGkAZgBpAGUAZAAgAGIAeQAgAEoAbwBoAG4AIABEAGEAZwBnAGUAdAB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgB0AGgAZQBsAGUAYQBnAHUAZQBvAGYAbQBvAHYAZQBhAGIAbABlAHQAeQBwAGUALgBjAG8AbQAvAGwAZQBhAGcAdQBlAC0AZwBvAHQAaABpAGMAQQBsAGwAIABmAG8AbgB0AHMAIABmAHIAbwBtACAAVABoAGUAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUAIABhAHIAZQAgAHMAdQBiAGoAZQBjAHQAIAB0AG8AIAB0AGgAZQAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP9nAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMAhACFAJYAjgCLAQMAigDaAI0AwwDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAoQB/AH4AgACBAOwA7gC6ANcA4gDjALAAsQDkAOUAuwDmAOcA2ADhANsA3ADdAOAA2QDfAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQCyALMAtgC3AMQAtAC1AMUAhwCrARIBEwEUAIwA7wEVARYBFwd1bmkwMEEwB3VuaTAwQUQHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMTAHdW5pMjAxMQpmaWd1cmVkYXNoB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaUUwMDAHdW5pRkIwMQd1bmlGQjAyAAAAAQAB//8ADwAAAAEAAAAAyYlvMQAAAADGp3m3AAAAAMrhKHcAAQAAAAwAAAAWAAAAAgABAAEA3wABAAQAAAABAAAAAAABAAAACgAuADwAAkRGTFQADmxhdG4AGAAEAAAAAP//AAAABAAAAAD//wABAAAAAVRTVDEACAAAAAEAAAABAAQAAQAAAAEACAACAA4ABABEADMANgBWAAEABAAkACkALAAvAAA=);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: serif;
+}
+p { margin: 0; padding: 0; }
+</style>
+<script type="text/javascript">
+function clearwait()
+{
+ window.top.document.documentElement.removeAttribute("class");
+}
+
+function dostuff()
+{
+ var el = document.getElementById("main");
+ el.style.fontFamily = "test";
+ setTimeout(clearwait, 20);
+}
+window.onload = dostuff;
+</script>
+</head>
+<body id="main">
+<p>FAIL</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-data-4.html b/layout/reftests/font-face/src-list-data-4.html
new file mode 100644
index 0000000000..940aaae493
--- /dev/null
+++ b/layout/reftests/font-face/src-list-data-4.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html class="reftest-wait">
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(data:font/opentype,funkyfurryfoo), url(data:font/opentype;base64,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AC4AIABDAG8AcAB5AHIAaQBnAGgAdAAgAGkAbgBmAG8AIABwAGUAbgBkAGkAbgBnAC4AbABvAGEAZAB0AGUAcwB0AFIAZQBnAHUAbABhAHIAdwBlAGIAZgBvAG4AdABsAG8AYQBkAHQAZQBzAHQAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAxAEIAYQBzAGUAZAAgAG8AbgAgAEwAZQBhAGcAdQBlACAARwBvAHQAaABpAGMAIABiAHkAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUALAAgAG0AbwBkAGkAZgBpAGUAZAAgAGIAeQAgAEoAbwBoAG4AIABEAGEAZwBnAGUAdAB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgB0AGgAZQBsAGUAYQBnAHUAZQBvAGYAbQBvAHYAZQBhAGIAbABlAHQAeQBwAGUALgBjAG8AbQAvAGwAZQBhAGcAdQBlAC0AZwBvAHQAaABpAGMAQQBsAGwAIABmAG8AbgB0AHMAIABmAHIAbwBtACAAVABoAGUAIABMAGUAYQBnAHUAZQAgAG8AZgAgAE0AbwB2AGUAYQBiAGwAZQAgAFQAeQBwAGUAIABhAHIAZQAgAHMAdQBiAGoAZQBjAHQAIAB0AG8AIAB0AGgAZQAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP9nAGYAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMAhACFAJYAjgCLAQMAigDaAI0AwwDeAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAoQB/AH4AgACBAOwA7gC6ANcA4gDjALAAsQDkAOUAuwDmAOcA2ADhANsA3ADdAOAA2QDfAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQCyALMAtgC3AMQAtAC1AMUAhwCrARIBEwEUAIwA7wEVARYBFwd1bmkwMEEwB3VuaTAwQUQHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMTAHdW5pMjAxMQpmaWd1cmVkYXNoB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaUUwMDAHdW5pRkIwMQd1bmlGQjAyAAAAAQAB//8ADwAAAAEAAAAAyYlvMQAAAADGp3m3AAAAAMrhKHcAAQAAAAwAAAAWAAAAAgABAAEA3wABAAQAAAABAAAAAAABAAAACgAuADwAAkRGTFQADmxhdG4AGAAEAAAAAP//AAAABAAAAAD//wABAAAAAVRTVDEACAAAAAEAAAABAAQAAQAAAAEACAACAA4ABABEADMANgBWAAEABAAkACkALAAvAAA=);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: serif;
+}
+p { margin: 0; padding: 0; }
+</style>
+<script type="text/javascript">
+function clearwait()
+{
+ window.top.document.documentElement.removeAttribute("class");
+}
+
+function dostuff()
+{
+ var el = document.getElementById("main");
+ el.style.fontFamily = "test";
+ setTimeout(clearwait, 20);
+}
+window.onload = dostuff;
+</script>
+</head>
+<body id="main">
+<p>FAIL</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-data-ref.html b/layout/reftests/font-face/src-list-data-ref.html
new file mode 100644
index 0000000000..e951b27076
--- /dev/null
+++ b/layout/reftests/font-face/src-list-data-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style type="text/css">
+@font-face {
+ font-family: test;
+ src: url(data:font/opentype;base64,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);
+}
+
+body {
+ margin: 20px;
+ font-size: 100px;
+ font-family: test;
+}
+p { margin: 0; padding: 0; }
+</style>
+</head>
+<body>
+<p>PaSs</p>
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-1-ref.html b/layout/reftests/font-face/src-list-format-1-ref.html
new file mode 100644
index 0000000000..551d75b35f
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-1-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2D";
+ src: url(../fonts/mark2D.ttf);
+ }
+
+ body { font-family: "Mark2D"; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-1.html b/layout/reftests/font-face/src-list-format-1.html
new file mode 100644
index 0000000000..437847a8d2
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf) format("unknown"), url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-2-ref.html b/layout/reftests/font-face/src-list-format-2-ref.html
new file mode 100644
index 0000000000..551d75b35f
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-2-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2D";
+ src: url(../fonts/mark2D.ttf);
+ }
+
+ body { font-family: "Mark2D"; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-2.html b/layout/reftests/font-face/src-list-format-2.html
new file mode 100644
index 0000000000..2319f10558
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-2.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf) format("unknown"), url(../fonts/mark2A.ttf) format("truetype");
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-3-ref.html b/layout/reftests/font-face/src-list-format-3-ref.html
new file mode 100644
index 0000000000..02316eaace
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-3-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ body { font-family: MarkD; }
+
+ </style>
+</head>
+<body>
+
+<p>DBC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-4.html b/layout/reftests/font-face/src-list-format-4.html
new file mode 100644
index 0000000000..fa14bbaa27
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-4.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ /* assumes we don't support embedded-opentype and thus wouldn't try to load it */
+ src: url(../fonts/markA.ttf) format("embedded-opentype"), url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-5.html b/layout/reftests/font-face/src-list-format-5.html
new file mode 100644
index 0000000000..2719e26293
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-5.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ /* assumes we don't support embedded-opentype and thus wouldn't try to load it */
+ src: url(../fonts/markA.ttf) format("embedded-opentype"), url(../fonts/mark2A.ttf) format("truetype");
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-format-7.html b/layout/reftests/font-face/src-list-format-7.html
new file mode 100644
index 0000000000..fff76a7348
--- /dev/null
+++ b/layout/reftests/font-face/src-list-format-7.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf) format("truetype-aat"), url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-local-fallback-ref.html b/layout/reftests/font-face/src-list-local-fallback-ref.html
new file mode 100644
index 0000000000..388e1e92e6
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-fallback-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local on load fallback</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+ font-family: sans-serif;
+}
+
+p { margin-left: 1em; }
+
+p { font-family: Futura, Bitstream Vera Sans, DejaVu Sans, Arial, serif; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<h4>These should appear in sans-serif face, not serif:</h4>
+
+<p id="test0">Simple use of src local()</p>
+
+<p id="test1">The URL for the font data is bogus</p>
+
+<p id="test2">The URL exists but does not return font data</p>
+
+<p id="test3">Same as above, but first local not found</p>
+
+<p id="test4">Same as above, bogus url follows unknown local font</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/src-list-local-fallback.html b/layout/reftests/font-face/src-list-local-fallback.html
new file mode 100644
index 0000000000..83845738a2
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-fallback.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local on load fallback</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+ font-family: sans-serif;
+}
+
+p { margin-left: 1em; }
+
+@font-face {
+ font-family: test0;
+ src: local("Futura-Medium"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("Arial");
+}
+
+@font-face {
+ font-family: test1;
+ src: url(bogus-dir/bogus.ttf), local("Futura-Medium"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("Arial");
+}
+
+@font-face {
+ font-family: test2;
+ src: url(../fonts/README), local("Futura-Medium"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("Arial");
+}
+
+@font-face {
+ font-family: test3;
+ src: url(../fonts/README), local("Bogosity"), local("Futura-Medium"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("Arial");
+}
+
+@font-face {
+ font-family: test4;
+ src: url(../fonts/README), local("Bogosity"), url(bogus-dir/bogus.ttf), local("Futura-Medium"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("Arial");
+}
+
+#test0 { font-family: test0, serif; }
+#test1 { font-family: test1, serif; }
+#test2 { font-family: test2, serif; }
+#test3 { font-family: test3, serif; }
+#test4 { font-family: test4, serif; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<h4>These should appear in sans-serif face, not serif:</h4>
+
+<p id="test0">Simple use of src local()</p>
+
+<p id="test1">The URL for the font data is bogus</p>
+
+<p id="test2">The URL exists but does not return font data</p>
+
+<p id="test3">Same as above, but first local not found</p>
+
+<p id="test4">Same as above, bogus url follows unknown local font</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/src-list-local-full-quotes.html b/layout/reftests/font-face/src-list-local-full-quotes.html
new file mode 100644
index 0000000000..c63e6f4019
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-full-quotes.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local with full names</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+}
+
+/* use full names */
+
+@font-face {
+ font-family: test-regular;
+ src: local("Helvetica Neue"), local("Bitstream Vera Sans"), local("Bitstream Vera Sans Roman"), local("DejaVu Sans"), local("FreeSans"), local("Free Sans"), local("SwissA"), local("Arial");
+}
+
+/* use Helvetica on the Mac, since Futura has no bold face on 10.4, 10.5 */
+@font-face {
+ font-family: test-bold;
+ src: local("Helvetica Neue Bold"), local("Bitstream Vera Sans Bold"), local("DejaVu Sans Bold"), local("FreeSans Bold"), local("Free Sans Bold"), local("SwissA Bold"), local("Arial Bold");
+}
+
+@font-face {
+ font-family: test-italic;
+ src: local("Helvetica Neue Italic"), local("Bitstream Vera Sans Oblique"), local("DejaVu Sans Oblique"), local("FreeSans Oblique"), local("Free Sans Oblique"), local("SwissA Italic"), local("Arial Italic");
+}
+
+.regular { font-family: test-regular, serif; }
+.bold { font-family: test-bold, serif; }
+.italic { font-family: test-italic, serif; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p class="regular">This should be a sans-serif face</p>
+
+<p class="bold">This should be a bold sans-serif face</p>
+
+<p class="italic">This should be an italic sans-serif face</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-local-full-ref.html b/layout/reftests/font-face/src-list-local-full-ref.html
new file mode 100644
index 0000000000..4d357f8a2c
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-full-ref.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local ref with regular, bold, italic</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+}
+
+/* Bitstream Vera must be adjacent to DejaVu to because the latter is picked
+ up by fontconfig aliases for the former. */
+
+p { font-family: Helvetica Neue, Bitstream Vera Sans, DejaVu Sans, FreeSans, SwissA, Arial, serif; }
+
+.regular { }
+.bold { font-weight: bold; }
+.italic { font-style: italic; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p class="regular">This should be a sans-serif face</p>
+
+<p class="bold">This should be a bold sans-serif face</p>
+
+<p class="italic">This should be an italic sans-serif face</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-local-full.html b/layout/reftests/font-face/src-list-local-full.html
new file mode 100644
index 0000000000..c4aafdfa1e
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-full.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local with full names</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+}
+
+/* use full names */
+
+@font-face {
+ font-family: test-regular;
+ src: local(Helvetica Neue), local(Bitstream Vera Sans), local(Bitstream Vera Sans Roman), local(DejaVu Sans), local(FreeSans), local(Free Sans), local(SwissA), local(Arial);
+}
+
+/* use Helvetica on the Mac, since Futura has no bold face on 10.4, 10.5 */
+@font-face {
+ font-family: test-bold;
+ src: local(Helvetica Neue Bold), local(Bitstream Vera Sans Bold), local(DejaVu Sans Bold), local(FreeSans Bold), local(Free Sans Bold), local(SwissA Bold), local(Arial Bold);
+}
+
+@font-face {
+ font-family: test-italic;
+ src: local(Helvetica Neue Italic), local(Bitstream Vera Sans Oblique), local(DejaVu Sans Oblique), local(FreeSans Oblique), local(Free Sans Oblique), local(SwissA Italic), local(Arial Italic);
+}
+
+.regular { font-family: test-regular, serif; }
+.bold { font-family: test-bold, serif; }
+.italic { font-family: test-italic, serif; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p class="regular">This should be a sans-serif face</p>
+
+<p class="bold">This should be a bold sans-serif face</p>
+
+<p class="italic">This should be an italic sans-serif face</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/src-list-local-localized-ref.html b/layout/reftests/font-face/src-list-local-localized-ref.html
new file mode 100644
index 0000000000..5647133f9e
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-localized-ref.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Localized fullnames</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: testbackup;
+ src: url(../fonts/markA.ttf);
+}
+
+body {
+ margin: 50px;
+ font-size: 18px;
+ font-family: Futura, Helvetica, Calibri, Verdana, sans-serif;
+}
+
+table {
+ font-family: testbackup, serif;
+ border-collapse: collapse;
+ margin-left: 1em;
+}
+
+td + td {
+ padding-left: 1em;
+}
+
+</style>
+
+
+</head>
+<body>
+
+<h4>The letter A should not appear below independent of locale:</h4>
+
+<p>(Mouse over to see local name used)</p>
+
+<table>
+<tr>
+<td class="test0">AA</td>
+<td class="test1">AA</td>
+<td class="test2">AA</td>
+<td class="test3">AA</td>
+<td class="test4">AA</td>
+<td class="test5">AA</td>
+<td class="test6">AA</td>
+<td class="test7">AA</td>
+<td class="test8">AA</td>
+<td class="test9">AA</td>
+</tr>
+<tr>
+<td class="test10">AA</td>
+<td class="test11">AA</td>
+<td class="test12">AA</td>
+<td class="test13">AA</td>
+<td class="test14">AA</td>
+<td class="test15">AA</td>
+<td class="test16">AA</td>
+<td class="test17">AA</td>
+<td class="test18">AA</td>
+<td class="test19">AA</td>
+</tr>
+<tr>
+<td class="test20">AA</td>
+<td class="test21">AA</td>
+<td class="test22">AA</td>
+<td class="test23">AA</td>
+<td class="test24">AA</td>
+<td class="test25">AA</td>
+<td class="test26">AA</td>
+<td class="test27">AA</td>
+<td class="test28">AA</td>
+<td class="test29">AA</td>
+</tr>
+<tr>
+<td class="test30">AA</td>
+<td class="test31">AA</td>
+<td class="test32">AA</td>
+<td class="test33">AA</td>
+<td class="test34">AA</td>
+<td class="test35">AA</td>
+<td class="test36">AA</td>
+<td class="test37">AA</td>
+<td class="test38">AA</td>
+<td class="test39">AA</td>
+</tr>
+<tr>
+<td class="test40">AA</td>
+<td class="test41">AA</td>
+<td class="test42">AA</td>
+<td class="test43">AA</td>
+<td class="test44">AA</td>
+<td class="test45">AA</td>
+<td class="test46">AA</td>
+<td class="test47">AA</td>
+<td class="test48">AA</td>
+<td class="test49">AA</td>
+</tr>
+<tr>
+<td class="test50">AA</td>
+<td class="test51">AA</td>
+<td class="test52">AA</td>
+<td class="test53">AA</td>
+<td class="test54">AA</td>
+<td class="test55">AA</td>
+<td class="test56">AA</td>
+<td class="test57">AA</td>
+<td class="test58">AA</td>
+<td class="test59">AA</td>
+</tr>
+<tr>
+<td class="test60">AA</td>
+<td class="test61">AA</td>
+<td class="test62">AA</td>
+<td class="test63">AA</td>
+<td class="test64">AA</td>
+<td class="test65">AA</td>
+<td class="test66">AA</td>
+<td class="test67">AA</td>
+<td class="test68">AA</td>
+<td class="test69">AA</td>
+</tr>
+<tr>
+<td class="test70">AA</td>
+<td class="test71">AA</td>
+<td class="test72">AA</td>
+<td class="test73">AA</td>
+<td class="test74">AA</td>
+<td class="test75">AA</td>
+<td class="test76">AA</td>
+<td class="test77">AA</td>
+<td class="test78">AA</td>
+<td class="test79">AA</td>
+</tr>
+<tr>
+<td class="test80">AA</td>
+<td class="test81">AA</td>
+<td class="test82">AA</td>
+<td class="test83">AA</td>
+<td class="test84">AA</td>
+<td class="test85">AA</td>
+<td class="test86">AA</td>
+<td class="test87">AA</td>
+<td class="test88">AA</td>
+<td class="test89">AA</td>
+</tr>
+<tr>
+<td class="test90">AA</td>
+<td class="test91">AA</td>
+<td class="test92">AA</td>
+<td class="test93">AA</td>
+<td class="test94">AA</td>
+<td class="test95">AA</td>
+<td class="test96">AA</td>
+<td class="test97">AA</td>
+<td class="test98">AA</td>
+<td class="test99">AA</td>
+</tr>
+<tr>
+<td class="test100">AA</td>
+<td class="test101">AA</td>
+<td class="test102">AA</td>
+<td class="test103">AA</td>
+<td class="test104">AA</td>
+<td class="test105">AA</td>
+<td class="test106">AA</td>
+<td class="test107">AA</td>
+<td class="test108">AA</td>
+<td class="test109">AA</td>
+</tr>
+<tr>
+<td class="test110">AA</td>
+<td class="test111">AA</td>
+<td class="test112">AA</td>
+<td class="test113">AA</td>
+<td class="test114">AA</td>
+<td class="test115">AA</td>
+<td class="test116">AA</td>
+<td class="test117">AA</td>
+<td class="test118">AA</td>
+<td class="test119">AA</td>
+</tr>
+<tr>
+<td class="test120">AA</td>
+<td class="test121">AA</td>
+<td class="test122">AA</td>
+<td class="test123">AA</td>
+<td class="test124">AA</td>
+<td class="test125">AA</td>
+<td class="test126">AA</td>
+<td class="test127">AA</td>
+<td class="test128">AA</td>
+<td class="test129">AA</td>
+</tr>
+<tr>
+<td class="test130">AA</td>
+<td class="test131">AA</td>
+<td class="test132">AA</td>
+<td class="test133">AA</td>
+<td class="test134">AA</td>
+<td class="test135">AA</td>
+<td class="test136">AA</td>
+<td class="test137">AA</td>
+<td class="test138">AA</td>
+<td class="test139">AA</td>
+</tr>
+<tr>
+<td class="test140">AA</td>
+<td class="test141">AA</td>
+<td class="test142">AA</td>
+<td class="test143">AA</td>
+<td class="test144">AA</td>
+<td class="test145">AA</td>
+<td class="test146">AA</td>
+<td class="test147">AA</td>
+<td class="test148">AA</td>
+<td class="test149">AA</td>
+</tr>
+<tr>
+<td class="test150">AA</td>
+<td class="test151">AA</td>
+<td class="test152">AA</td>
+<td class="test153">AA</td>
+<td class="test154">AA</td>
+<td class="test155">AA</td>
+<td class="test156">AA</td>
+<td class="test157">AA</td>
+<td class="test158">AA</td>
+<td class="test159">AA</td>
+</tr>
+<tr>
+<td class="test160">AA</td>
+<td class="test161">AA</td>
+<td class="test162">AA</td>
+<td class="test163">AA</td>
+<td class="test164">AA</td>
+<td class="test165">AA</td>
+<td class="test166">AA</td>
+<td class="test167">AA</td>
+<td class="test168">AA</td>
+<td class="test169">AA</td>
+</tr>
+<tr>
+<td class="test170">AA</td>
+<td class="test171">AA</td>
+<td class="test172">AA</td>
+<td class="test173">AA</td>
+<td class="test174">AA</td>
+<td class="test175">AA</td>
+<td class="test176">AA</td>
+<td class="test177">AA</td>
+<td class="test178">AA</td>
+<td class="test179">AA</td>
+</tr>
+<tr>
+<td class="test180">AA</td>
+<td class="test181">AA</td>
+<td class="test182">AA</td>
+<td class="test183">AA</td>
+<td class="test184">AA</td>
+<td class="test185">AA</td>
+<td class="test186">AA</td>
+<td class="test187">AA</td>
+<td class="test188">AA</td>
+<td class="test189">AA</td>
+</tr>
+<tr>
+<td class="test190">AA</td>
+<td class="test191">AA</td>
+<td class="test192">AA</td>
+<td class="test193">AA</td>
+<td class="test194">AA</td>
+<td class="test195">AA</td>
+<td class="test196">AA</td>
+<td class="test197">AA</td>
+<td class="test198">AA</td>
+<td class="test199">AA</td>
+</tr>
+<tr>
+<td class="test200">AA</td>
+<td class="test201">AA</td>
+<td class="test202">AA</td>
+<td class="test203">AA</td>
+<td class="test204">AA</td>
+<td class="test205">AA</td>
+<td class="test206">AA</td>
+<td class="test207">AA</td>
+<td class="test208">AA</td>
+<td class="test209">AA</td>
+</tr>
+<tr>
+<td class="test210">AA</td>
+<td class="test211">AA</td>
+<td class="test212">AA</td>
+<td class="test213">AA</td>
+<td class="test214">AA</td>
+<td class="test215">AA</td>
+<td class="test216">AA</td>
+<td class="test217">AA</td>
+<td class="test218">AA</td>
+<td class="test219">AA</td>
+</tr>
+<tr>
+<td class="test220">AA</td>
+<td class="test221">AA</td>
+<td class="test222">AA</td>
+<td class="test223">AA</td>
+<td class="test224">AA</td>
+<td class="test225">AA</td>
+<td class="test226">AA</td>
+<td class="test227">AA</td>
+<td class="test228">AA</td>
+<td class="test229">AA</td>
+</tr>
+<tr>
+<td class="test230">AA</td>
+<td class="test231">AA</td>
+<td class="test232">AA</td>
+<td class="test233">AA</td>
+<td class="test234">AA</td>
+<td class="test235">AA</td>
+<td class="test236">AA</td>
+<td class="test237">AA</td>
+<td class="test238">AA</td>
+<td class="test239">AA</td>
+</tr>
+<tr>
+<td class="test240">AA</td>
+<td class="test241">AA</td>
+<td class="test242">AA</td>
+<td class="test243">AA</td>
+<td class="test244">AA</td>
+<td class="test245">AA</td>
+<td class="test246">AA</td>
+<td class="test247">AA</td>
+<td class="test248">AA</td>
+<td class="test249">AA</td>
+</tr>
+<tr>
+<td class="test250">AA</td>
+<td class="test251">AA</td>
+<td class="test252">AA</td>
+<td class="test253">AA</td>
+<td class="test254">AA</td>
+<td class="test255">AA</td>
+<td class="test256">AA</td>
+<td class="test257">AA</td>
+<td class="test258">AA</td>
+<td class="test259">AA</td>
+</tr>
+<tr>
+<td class="test260">AA</td>
+<td class="test261">AA</td>
+<td class="test262">AA</td>
+<td class="test263">AA</td>
+<td class="test264">AA</td>
+<td class="test265">AA</td>
+<td class="test266">AA</td>
+<td class="test267">AA</td>
+<td class="test268">AA</td>
+<td class="test269">AA</td>
+</tr>
+<tr>
+<td class="test270">AA</td>
+<td class="test271">AA</td>
+<td class="test272">AA</td>
+<td class="test273">AA</td>
+<td class="test274">AA</td>
+<td class="test275">AA</td>
+<td class="test276">AA</td>
+<td class="test277">AA</td>
+<td class="test278">AA</td>
+</tr>
+</table>
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/src-list-local-localized.html b/layout/reftests/font-face/src-list-local-localized.html
new file mode 100644
index 0000000000..6638e514f6
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-localized.html
@@ -0,0 +1,939 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Localized fullnames</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@font-face {
+ font-family: testbackup;
+ src: url(../fonts/markA.ttf);
+}
+
+body {
+ margin: 50px;
+ font-size: 18px;
+ font-family: Futura, Helvetica, Calibri, Verdana, sans-serif;
+}
+
+table {
+ font-family: testbackup, serif;
+ border-collapse: collapse;
+ margin-left: 1em;
+}
+
+td + td {
+ padding-left: 1em;
+}
+
+</style>
+
+<style type="text/css">
+@font-face { font-family: test0; src: local("#궁서체 일반체"); }
+.test0 { font-family: test0, testbackup; }
+@font-face { font-family: test1; src: local("#헤드라인A 일반체"); }
+.test1 { font-family: test1, testbackup; }
+@font-face { font-family: test2; src: local("AppleGothic 일반체"); }
+.test2 { font-family: test2, testbackup; }
+@font-face { font-family: test3; src: local("Arial Black Normal"); }
+.test3 { font-family: test3, testbackup; }
+@font-face { font-family: test4; src: local("Arial Black Standard"); }
+.test4 { font-family: test4, testbackup; }
+@font-face { font-family: test5; src: local("Arial Black normal"); }
+.test5 { font-family: test5, testbackup; }
+@font-face { font-family: test6; src: local("Arial Black obyčejné"); }
+.test6 { font-family: test6, testbackup; }
+@font-face { font-family: test7; src: local("Arial Black Обычный"); }
+.test7 { font-family: test7, testbackup; }
+@font-face { font-family: test8; src: local("Arial Black Κανονικά"); }
+.test8 { font-family: test8, testbackup; }
+@font-face { font-family: test9; src: local("Arial Corsivo"); }
+.test9 { font-family: test9, testbackup; }
+@font-face { font-family: test10; src: local("Arial Cursief"); }
+.test10 { font-family: test10, testbackup; }
+@font-face { font-family: test11; src: local("Arial Cursiva"); }
+.test11 { font-family: test11, testbackup; }
+@font-face { font-family: test12; src: local("Arial Dőlt"); }
+.test12 { font-family: test12, testbackup; }
+@font-face { font-family: test13; src: local("Arial Etzana"); }
+.test13 { font-family: test13, testbackup; }
+@font-face { font-family: test14; src: local("Arial Fet Kursiv"); }
+.test14 { font-family: test14, testbackup; }
+@font-face { font-family: test15; src: local("Arial Fet"); }
+.test15 { font-family: test15, testbackup; }
+@font-face { font-family: test16; src: local("Arial Fett Kursiv"); }
+.test16 { font-family: test16, testbackup; }
+@font-face { font-family: test17; src: local("Arial Fett"); }
+.test17 { font-family: test17, testbackup; }
+@font-face { font-family: test18; src: local("Arial Félkövér dőlt"); }
+.test18 { font-family: test18, testbackup; }
+@font-face { font-family: test19; src: local("Arial Félkövér"); }
+.test19 { font-family: test19, testbackup; }
+@font-face { font-family: test20; src: local("Arial Gras Italique"); }
+.test20 { font-family: test20, testbackup; }
+@font-face { font-family: test21; src: local("Arial Gras"); }
+.test21 { font-family: test21, testbackup; }
+@font-face { font-family: test22; src: local("Arial Grassetto Corsivo"); }
+.test22 { font-family: test22, testbackup; }
+@font-face { font-family: test23; src: local("Arial Grassetto"); }
+.test23 { font-family: test23, testbackup; }
+@font-face { font-family: test24; src: local("Arial Halvfet Kursiv"); }
+.test24 { font-family: test24, testbackup; }
+@font-face { font-family: test25; src: local("Arial Halvfet"); }
+.test25 { font-family: test25, testbackup; }
+@font-face { font-family: test26; src: local("Arial Italique"); }
+.test26 { font-family: test26, testbackup; }
+@font-face { font-family: test27; src: local("Arial Itálico"); }
+.test27 { font-family: test27, testbackup; }
+@font-face { font-family: test28; src: local("Arial Kalın İtalik"); }
+.test28 { font-family: test28, testbackup; }
+@font-face { font-family: test29; src: local("Arial Kalın"); }
+.test29 { font-family: test29, testbackup; }
+@font-face { font-family: test30; src: local("Arial Krepko poševno"); }
+.test30 { font-family: test30, testbackup; }
+@font-face { font-family: test31; src: local("Arial Krepko"); }
+.test31 { font-family: test31, testbackup; }
+@font-face { font-family: test32; src: local("Arial Kursiv"); }
+.test32 { font-family: test32, testbackup; }
+@font-face { font-family: test33; src: local("Arial Kursivoitu"); }
+.test33 { font-family: test33, testbackup; }
+@font-face { font-family: test34; src: local("Arial Kursywa"); }
+.test34 { font-family: test34, testbackup; }
+@font-face { font-family: test35; src: local("Arial Kurzíva"); }
+.test35 { font-family: test35, testbackup; }
+@font-face { font-family: test36; src: local("Arial Lihavoitu Kursivoi"); }
+.test36 { font-family: test36, testbackup; }
+@font-face { font-family: test37; src: local("Arial Lihavoitu"); }
+.test37 { font-family: test37, testbackup; }
+@font-face { font-family: test38; src: local("Arial Lodi etzana"); }
+.test38 { font-family: test38, testbackup; }
+@font-face { font-family: test39; src: local("Arial Lodia"); }
+.test39 { font-family: test39, testbackup; }
+@font-face { font-family: test40; src: local("Arial Negreta"); }
+.test40 { font-family: test40, testbackup; }
+@font-face { font-family: test41; src: local("Arial Negrita Cursiva"); }
+.test41 { font-family: test41, testbackup; }
+@font-face { font-family: test42; src: local("Arial Negrita"); }
+.test42 { font-family: test42, testbackup; }
+@font-face { font-family: test43; src: local("Arial Negrito Itálico"); }
+.test43 { font-family: test43, testbackup; }
+@font-face { font-family: test44; src: local("Arial Negrito"); }
+.test44 { font-family: test44, testbackup; }
+@font-face { font-family: test45; src: local("Arial Pogrubiona kursywa"); }
+.test45 { font-family: test45, testbackup; }
+@font-face { font-family: test46; src: local("Arial Pogrubiony"); }
+.test46 { font-family: test46, testbackup; }
+@font-face { font-family: test47; src: local("Arial Poševno"); }
+.test47 { font-family: test47, testbackup; }
+@font-face { font-family: test48; src: local("Arial Tučná kurzíva"); }
+.test48 { font-family: test48, testbackup; }
+@font-face { font-family: test49; src: local("Arial Tučné"); }
+.test49 { font-family: test49, testbackup; }
+@font-face { font-family: test50; src: local("Arial Vet Cursief"); }
+.test50 { font-family: test50, testbackup; }
+@font-face { font-family: test51; src: local("Arial Vet"); }
+.test51 { font-family: test51, testbackup; }
+@font-face { font-family: test52; src: local("Arial fed kursiv"); }
+.test52 { font-family: test52, testbackup; }
+@font-face { font-family: test53; src: local("Arial fed"); }
+.test53 { font-family: test53, testbackup; }
+@font-face { font-family: test54; src: local("Arial kursiv"); }
+.test54 { font-family: test54, testbackup; }
+@font-face { font-family: test55; src: local("Arial kurzíva"); }
+.test55 { font-family: test55, testbackup; }
+@font-face { font-family: test56; src: local("Arial nghiêng đậm"); }
+.test56 { font-family: test56, testbackup; }
+@font-face { font-family: test57; src: local("Arial nghiêng"); }
+.test57 { font-family: test57, testbackup; }
+@font-face { font-family: test58; src: local("Arial tučné kurzíva"); }
+.test58 { font-family: test58, testbackup; }
+@font-face { font-family: test59; src: local("Arial tučné"); }
+.test59 { font-family: test59, testbackup; }
+@font-face { font-family: test60; src: local("Arial İtalik"); }
+.test60 { font-family: test60, testbackup; }
+@font-face { font-family: test61; src: local("Arial đậm"); }
+.test61 { font-family: test61, testbackup; }
+@font-face { font-family: test62; src: local("Arial Έντονα Πλάγια"); }
+.test62 { font-family: test62, testbackup; }
+@font-face { font-family: test63; src: local("Arial Έντονα"); }
+.test63 { font-family: test63, testbackup; }
+@font-face { font-family: test64; src: local("Arial Πλάγια"); }
+.test64 { font-family: test64, testbackup; }
+@font-face { font-family: test65; src: local("Arial Курсив"); }
+.test65 { font-family: test65, testbackup; }
+@font-face { font-family: test66; src: local("Arial Полужирный Курсив"); }
+.test66 { font-family: test66, testbackup; }
+@font-face { font-family: test67; src: local("Arial Полужирный"); }
+.test67 { font-family: test67, testbackup; }
+@font-face { font-family: test68; src: local("Brush Script MT Πλάγια"); }
+.test68 { font-family: test68, testbackup; }
+@font-face { font-family: test69; src: local("Brush Script MT Курсив"); }
+.test69 { font-family: test69, testbackup; }
+@font-face { font-family: test70; src: local("Century Gothic Halvfet"); }
+.test70 { font-family: test70, testbackup; }
+@font-face { font-family: test71; src: local("Century Gothic Italique"); }
+.test71 { font-family: test71, testbackup; }
+@font-face { font-family: test72; src: local("Century Gothic Kalın"); }
+.test72 { font-family: test72, testbackup; }
+@font-face { font-family: test73; src: local("Century Gothic Krepko poševno"); }
+.test73 { font-family: test73, testbackup; }
+@font-face { font-family: test74; src: local("Century Gothic Krepko"); }
+.test74 { font-family: test74, testbackup; }
+@font-face { font-family: test75; src: local("Century Gothic Kursiv"); }
+.test75 { font-family: test75, testbackup; }
+@font-face { font-family: test76; src: local("Comic Sans MS Negreta"); }
+.test76 { font-family: test76, testbackup; }
+@font-face { font-family: test77; src: local("Comic Sans MS Έντονα"); }
+.test77 { font-family: test77, testbackup; }
+@font-face { font-family: test78; src: local("Courier Carregado"); }
+.test78 { font-family: test78, testbackup; }
+@font-face { font-family: test79; src: local("Courier Fet"); }
+.test79 { font-family: test79, testbackup; }
+@font-face { font-family: test80; src: local("Courier Fett"); }
+.test80 { font-family: test80, testbackup; }
+@font-face { font-family: test81; src: local("Courier Gras"); }
+.test81 { font-family: test81, testbackup; }
+@font-face { font-family: test82; src: local("Courier lihava"); }
+.test82 { font-family: test82, testbackup; }
+@font-face { font-family: test83; src: local("Courier vet"); }
+.test83 { font-family: test83, testbackup; }
+@font-face { font-family: test84; src: local("Courier‭ ‬עבה"); }
+.test84 { font-family: test84, testbackup; }
+@font-face { font-family: test85; src: local("Courier‭ ‬أسود"); }
+.test85 { font-family: test85, testbackup; }
+@font-face { font-family: test86; src: local("Courier‭ ‬برجسته"); }
+.test86 { font-family: test86, testbackup; }
+@font-face { font-family: test87; src: local("EucrosiaUPC Полужирный"); }
+.test87 { font-family: test87, testbackup; }
+@font-face { font-family: test88; src: local("Franklin Gothic Medium Kursiv"); }
+.test88 { font-family: test88, testbackup; }
+@font-face { font-family: test89; src: local("Garamond Kursywa"); }
+.test89 { font-family: test89, testbackup; }
+@font-face { font-family: test90; src: local("Garamond Kurzíva"); }
+.test90 { font-family: test90, testbackup; }
+@font-face { font-family: test91; src: local("Georgia Italique"); }
+.test91 { font-family: test91, testbackup; }
+@font-face { font-family: test92; src: local("Georgia Itálico"); }
+.test92 { font-family: test92, testbackup; }
+@font-face { font-family: test93; src: local("Georgia Kalın İtalik"); }
+.test93 { font-family: test93, testbackup; }
+@font-face { font-family: test94; src: local("HGP明朝B"); }
+.test94 { font-family: test94, testbackup; }
+@font-face { font-family: test95; src: local("HGP明朝E"); }
+.test95 { font-family: test95, testbackup; }
+@font-face { font-family: test96; src: local("HGPゴシックE"); }
+.test96 { font-family: test96, testbackup; }
+@font-face { font-family: test97; src: local("HGPゴシックM"); }
+.test97 { font-family: test97, testbackup; }
+@font-face { font-family: test98; src: local("HGP創英角ゴシックUB"); }
+.test98 { font-family: test98, testbackup; }
+@font-face { font-family: test99; src: local("HGS明朝B"); }
+.test99 { font-family: test99, testbackup; }
+@font-face { font-family: test100; src: local("HGS明朝E"); }
+.test100 { font-family: test100, testbackup; }
+@font-face { font-family: test101; src: local("HGS行書体"); }
+.test101 { font-family: test101, testbackup; }
+@font-face { font-family: test102; src: local("HGS教科書体"); }
+.test102 { font-family: test102, testbackup; }
+@font-face { font-family: test103; src: local("HGSゴシックE"); }
+.test103 { font-family: test103, testbackup; }
+@font-face { font-family: test104; src: local("HGSゴシックM"); }
+.test104 { font-family: test104, testbackup; }
+@font-face { font-family: test105; src: local("HGS創英プレゼンスEB"); }
+.test105 { font-family: test105, testbackup; }
+@font-face { font-family: test106; src: local("HG明朝B"); }
+.test106 { font-family: test106, testbackup; }
+@font-face { font-family: test107; src: local("HG正楷書体-PRO"); }
+.test107 { font-family: test107, testbackup; }
+@font-face { font-family: test108; src: local("HGゴシックE"); }
+.test108 { font-family: test108, testbackup; }
+@font-face { font-family: test109; src: local("HGゴシックM"); }
+.test109 { font-family: test109, testbackup; }
+@font-face { font-family: test110; src: local("HG丸ゴシックM-PRO"); }
+.test110 { font-family: test110, testbackup; }
+@font-face { font-family: test111; src: local("HG創英プレゼンスEB"); }
+.test111 { font-family: test111, testbackup; }
+@font-face { font-family: test112; src: local("Helvetica Carregado"); }
+.test112 { font-family: test112, testbackup; }
+@font-face { font-family: test113; src: local("Helvetica‭ ‬עבה"); }
+.test113 { font-family: test113, testbackup; }
+@font-face { font-family: test114; src: local("Helvetica‭ ‬أسود"); }
+.test114 { font-family: test114, testbackup; }
+@font-face { font-family: test115; src: local("Helvetica‭ ‬برجسته"); }
+.test115 { font-family: test115, testbackup; }
+@font-face { font-family: test116; src: local("Osaka−等幅"); }
+.test116 { font-family: test116, testbackup; }
+@font-face { font-family: test117; src: local("Thonburi Carregado"); }
+.test117 { font-family: test117, testbackup; }
+@font-face { font-family: test118; src: local("Thonburi Gras"); }
+.test118 { font-family: test118, testbackup; }
+@font-face { font-family: test119; src: local("Thonburi vet"); }
+.test119 { font-family: test119, testbackup; }
+@font-face { font-family: test120; src: local("Times Cursiva"); }
+.test120 { font-family: test120, testbackup; }
+@font-face { font-family: test121; src: local("Times Gras"); }
+.test121 { font-family: test121, testbackup; }
+@font-face { font-family: test122; src: local("Times Negrita"); }
+.test122 { font-family: test122, testbackup; }
+@font-face { font-family: test123; src: local("Times New Roman Corsivo"); }
+.test123 { font-family: test123, testbackup; }
+@font-face { font-family: test124; src: local("Times New Roman Cursief"); }
+.test124 { font-family: test124, testbackup; }
+@font-face { font-family: test125; src: local("Times New Roman Cursiva"); }
+.test125 { font-family: test125, testbackup; }
+@font-face { font-family: test126; src: local("Times New Roman Dőlt"); }
+.test126 { font-family: test126, testbackup; }
+@font-face { font-family: test127; src: local("Times New Roman Etzana"); }
+.test127 { font-family: test127, testbackup; }
+@font-face { font-family: test128; src: local("Times New Roman Fet Kursiv"); }
+.test128 { font-family: test128, testbackup; }
+@font-face { font-family: test129; src: local("Times New Roman Fet"); }
+.test129 { font-family: test129, testbackup; }
+@font-face { font-family: test130; src: local("Times New Roman Fett Kursiv"); }
+.test130 { font-family: test130, testbackup; }
+@font-face { font-family: test131; src: local("Times New Roman Fett"); }
+.test131 { font-family: test131, testbackup; }
+@font-face { font-family: test132; src: local("Times New Roman Félkövér dőlt"); }
+.test132 { font-family: test132, testbackup; }
+@font-face { font-family: test133; src: local("Times New Roman Félkövér"); }
+.test133 { font-family: test133, testbackup; }
+@font-face { font-family: test134; src: local("Times New Roman Gras Italique"); }
+.test134 { font-family: test134, testbackup; }
+@font-face { font-family: test135; src: local("Times New Roman Gras"); }
+.test135 { font-family: test135, testbackup; }
+@font-face { font-family: test136; src: local("Times New Roman Grassetto Corsivo"); }
+.test136 { font-family: test136, testbackup; }
+@font-face { font-family: test137; src: local("Times New Roman Grassetto"); }
+.test137 { font-family: test137, testbackup; }
+@font-face { font-family: test138; src: local("Times New Roman Halvfet Kursiv"); }
+.test138 { font-family: test138, testbackup; }
+@font-face { font-family: test139; src: local("Times New Roman Halvfet"); }
+.test139 { font-family: test139, testbackup; }
+@font-face { font-family: test140; src: local("Times New Roman Italique"); }
+.test140 { font-family: test140, testbackup; }
+@font-face { font-family: test141; src: local("Times New Roman Itálico"); }
+.test141 { font-family: test141, testbackup; }
+@font-face { font-family: test142; src: local("Times New Roman Kalın İtalik"); }
+.test142 { font-family: test142, testbackup; }
+@font-face { font-family: test143; src: local("Times New Roman Kalın"); }
+.test143 { font-family: test143, testbackup; }
+@font-face { font-family: test144; src: local("Times New Roman Krepko poševno"); }
+.test144 { font-family: test144, testbackup; }
+@font-face { font-family: test145; src: local("Times New Roman Krepko"); }
+.test145 { font-family: test145, testbackup; }
+@font-face { font-family: test146; src: local("Times New Roman Kursiv"); }
+.test146 { font-family: test146, testbackup; }
+@font-face { font-family: test147; src: local("Times New Roman Kursivoitu"); }
+.test147 { font-family: test147, testbackup; }
+@font-face { font-family: test148; src: local("Times New Roman Kurzíva"); }
+.test148 { font-family: test148, testbackup; }
+@font-face { font-family: test149; src: local("Times New Roman Lihavoitu Kursivoi"); }
+.test149 { font-family: test149, testbackup; }
+@font-face { font-family: test150; src: local("Times New Roman Lihavoitu"); }
+.test150 { font-family: test150, testbackup; }
+@font-face { font-family: test151; src: local("Times New Roman Lodi etzana"); }
+.test151 { font-family: test151, testbackup; }
+@font-face { font-family: test152; src: local("Times New Roman Lodia"); }
+.test152 { font-family: test152, testbackup; }
+@font-face { font-family: test153; src: local("Times New Roman Negreta cursiva"); }
+.test153 { font-family: test153, testbackup; }
+@font-face { font-family: test154; src: local("Times New Roman Negreta"); }
+.test154 { font-family: test154, testbackup; }
+@font-face { font-family: test155; src: local("Times New Roman Negrita Cursiva"); }
+.test155 { font-family: test155, testbackup; }
+@font-face { font-family: test156; src: local("Times New Roman Negrita"); }
+.test156 { font-family: test156, testbackup; }
+@font-face { font-family: test157; src: local("Times New Roman Negrito Itálico"); }
+.test157 { font-family: test157, testbackup; }
+@font-face { font-family: test158; src: local("Times New Roman Negrito"); }
+.test158 { font-family: test158, testbackup; }
+@font-face { font-family: test159; src: local("Times New Roman Pogrubiona kursywa"); }
+.test159 { font-family: test159, testbackup; }
+@font-face { font-family: test160; src: local("Times New Roman Pogrubiona"); }
+.test160 { font-family: test160, testbackup; }
+@font-face { font-family: test161; src: local("Times New Roman Poševno"); }
+.test161 { font-family: test161, testbackup; }
+@font-face { font-family: test162; src: local("Times New Roman Tučná kurzíva"); }
+.test162 { font-family: test162, testbackup; }
+@font-face { font-family: test163; src: local("Times New Roman Tučné"); }
+.test163 { font-family: test163, testbackup; }
+@font-face { font-family: test164; src: local("Times New Roman Vet Cursief"); }
+.test164 { font-family: test164, testbackup; }
+@font-face { font-family: test165; src: local("Times New Roman Vet"); }
+.test165 { font-family: test165, testbackup; }
+@font-face { font-family: test166; src: local("Times New Roman cursiva"); }
+.test166 { font-family: test166, testbackup; }
+@font-face { font-family: test167; src: local("Times New Roman fed kursiv"); }
+.test167 { font-family: test167, testbackup; }
+@font-face { font-family: test168; src: local("Times New Roman fed"); }
+.test168 { font-family: test168, testbackup; }
+@font-face { font-family: test169; src: local("Times New Roman kursiv"); }
+.test169 { font-family: test169, testbackup; }
+@font-face { font-family: test170; src: local("Times New Roman kursywa"); }
+.test170 { font-family: test170, testbackup; }
+@font-face { font-family: test171; src: local("Times New Roman kurzíva"); }
+.test171 { font-family: test171, testbackup; }
+@font-face { font-family: test172; src: local("Times New Roman nghiêng đậm"); }
+.test172 { font-family: test172, testbackup; }
+@font-face { font-family: test173; src: local("Times New Roman nghiêng"); }
+.test173 { font-family: test173, testbackup; }
+@font-face { font-family: test174; src: local("Times New Roman tučné kurzíva"); }
+.test174 { font-family: test174, testbackup; }
+@font-face { font-family: test175; src: local("Times New Roman tučné"); }
+.test175 { font-family: test175, testbackup; }
+@font-face { font-family: test176; src: local("Times New Roman İtalik"); }
+.test176 { font-family: test176, testbackup; }
+@font-face { font-family: test177; src: local("Times New Roman đậm"); }
+.test177 { font-family: test177, testbackup; }
+@font-face { font-family: test178; src: local("Times New Roman Έντονα Πλάγια"); }
+.test178 { font-family: test178, testbackup; }
+@font-face { font-family: test179; src: local("Times New Roman Έντονα"); }
+.test179 { font-family: test179, testbackup; }
+@font-face { font-family: test180; src: local("Times New Roman Πλάγια"); }
+.test180 { font-family: test180, testbackup; }
+@font-face { font-family: test181; src: local("Times New Roman Курсив"); }
+.test181 { font-family: test181, testbackup; }
+@font-face { font-family: test182; src: local("Times New Roman Полужирный Курсив"); }
+.test182 { font-family: test182, testbackup; }
+@font-face { font-family: test183; src: local("Times New Roman Полужирный"); }
+.test183 { font-family: test183, testbackup; }
+@font-face { font-family: test184; src: local("Times grassetto"); }
+.test184 { font-family: test184, testbackup; }
+@font-face { font-family: test185; src: local("Verdana Corsivo"); }
+.test185 { font-family: test185, testbackup; }
+@font-face { font-family: test186; src: local("Verdana Cursief"); }
+.test186 { font-family: test186, testbackup; }
+@font-face { font-family: test187; src: local("Verdana Cursiva"); }
+.test187 { font-family: test187, testbackup; }
+@font-face { font-family: test188; src: local("Verdana Dőlt"); }
+.test188 { font-family: test188, testbackup; }
+@font-face { font-family: test189; src: local("Verdana Etzana"); }
+.test189 { font-family: test189, testbackup; }
+@font-face { font-family: test190; src: local("Verdana Fet Kursiv"); }
+.test190 { font-family: test190, testbackup; }
+@font-face { font-family: test191; src: local("Verdana Fet"); }
+.test191 { font-family: test191, testbackup; }
+@font-face { font-family: test192; src: local("Verdana Fett Kursiv"); }
+.test192 { font-family: test192, testbackup; }
+@font-face { font-family: test193; src: local("Verdana Fett"); }
+.test193 { font-family: test193, testbackup; }
+@font-face { font-family: test194; src: local("Verdana Félkövér dőlt"); }
+.test194 { font-family: test194, testbackup; }
+@font-face { font-family: test195; src: local("Verdana Félkövér"); }
+.test195 { font-family: test195, testbackup; }
+@font-face { font-family: test196; src: local("Verdana Gras Italique"); }
+.test196 { font-family: test196, testbackup; }
+@font-face { font-family: test197; src: local("Verdana Gras"); }
+.test197 { font-family: test197, testbackup; }
+@font-face { font-family: test198; src: local("Verdana Grassetto Corsivo"); }
+.test198 { font-family: test198, testbackup; }
+@font-face { font-family: test199; src: local("Verdana Grassetto"); }
+.test199 { font-family: test199, testbackup; }
+@font-face { font-family: test200; src: local("Verdana Halvfet Kursiv"); }
+.test200 { font-family: test200, testbackup; }
+@font-face { font-family: test201; src: local("Verdana Halvfet"); }
+.test201 { font-family: test201, testbackup; }
+@font-face { font-family: test202; src: local("Verdana Italique"); }
+.test202 { font-family: test202, testbackup; }
+@font-face { font-family: test203; src: local("Verdana Itálico"); }
+.test203 { font-family: test203, testbackup; }
+@font-face { font-family: test204; src: local("Verdana Kalın İtalik"); }
+.test204 { font-family: test204, testbackup; }
+@font-face { font-family: test205; src: local("Verdana Kalın"); }
+.test205 { font-family: test205, testbackup; }
+@font-face { font-family: test206; src: local("Verdana Krepko poševno"); }
+.test206 { font-family: test206, testbackup; }
+@font-face { font-family: test207; src: local("Verdana Krepko"); }
+.test207 { font-family: test207, testbackup; }
+@font-face { font-family: test208; src: local("Verdana Kursiv"); }
+.test208 { font-family: test208, testbackup; }
+@font-face { font-family: test209; src: local("Verdana Kursivoitu"); }
+.test209 { font-family: test209, testbackup; }
+@font-face { font-family: test210; src: local("Verdana Kursywa"); }
+.test210 { font-family: test210, testbackup; }
+@font-face { font-family: test211; src: local("Verdana Kurzíva"); }
+.test211 { font-family: test211, testbackup; }
+@font-face { font-family: test212; src: local("Verdana Lihavoitu Kursivoi"); }
+.test212 { font-family: test212, testbackup; }
+@font-face { font-family: test213; src: local("Verdana Lihavoitu"); }
+.test213 { font-family: test213, testbackup; }
+@font-face { font-family: test214; src: local("Verdana Lodi etzana"); }
+.test214 { font-family: test214, testbackup; }
+@font-face { font-family: test215; src: local("Verdana Lodia"); }
+.test215 { font-family: test215, testbackup; }
+@font-face { font-family: test216; src: local("Verdana Negreta cursiva"); }
+.test216 { font-family: test216, testbackup; }
+@font-face { font-family: test217; src: local("Verdana Negreta"); }
+.test217 { font-family: test217, testbackup; }
+@font-face { font-family: test218; src: local("Verdana Negrita Cursiva"); }
+.test218 { font-family: test218, testbackup; }
+@font-face { font-family: test219; src: local("Verdana Negrita"); }
+.test219 { font-family: test219, testbackup; }
+@font-face { font-family: test220; src: local("Verdana Negrito Itálico"); }
+.test220 { font-family: test220, testbackup; }
+@font-face { font-family: test221; src: local("Verdana Negrito"); }
+.test221 { font-family: test221, testbackup; }
+@font-face { font-family: test222; src: local("Verdana Pogrubiona kursywa"); }
+.test222 { font-family: test222, testbackup; }
+@font-face { font-family: test223; src: local("Verdana Pogrubiony"); }
+.test223 { font-family: test223, testbackup; }
+@font-face { font-family: test224; src: local("Verdana Poševno"); }
+.test224 { font-family: test224, testbackup; }
+@font-face { font-family: test225; src: local("Verdana Tučná kurzíva"); }
+.test225 { font-family: test225, testbackup; }
+@font-face { font-family: test226; src: local("Verdana Tučné"); }
+.test226 { font-family: test226, testbackup; }
+@font-face { font-family: test227; src: local("Verdana Vet Cursief"); }
+.test227 { font-family: test227, testbackup; }
+@font-face { font-family: test228; src: local("Verdana Vet"); }
+.test228 { font-family: test228, testbackup; }
+@font-face { font-family: test229; src: local("Verdana fed kursiv"); }
+.test229 { font-family: test229, testbackup; }
+@font-face { font-family: test230; src: local("Verdana fed"); }
+.test230 { font-family: test230, testbackup; }
+@font-face { font-family: test231; src: local("Verdana kursiv"); }
+.test231 { font-family: test231, testbackup; }
+@font-face { font-family: test232; src: local("Verdana kurzíva"); }
+.test232 { font-family: test232, testbackup; }
+@font-face { font-family: test233; src: local("Verdana tučné kurzíva"); }
+.test233 { font-family: test233, testbackup; }
+@font-face { font-family: test234; src: local("Verdana tučné"); }
+.test234 { font-family: test234, testbackup; }
+@font-face { font-family: test235; src: local("Verdana İtalik"); }
+.test235 { font-family: test235, testbackup; }
+@font-face { font-family: test236; src: local("Verdana Έντονα Πλάγια"); }
+.test236 { font-family: test236, testbackup; }
+@font-face { font-family: test237; src: local("Verdana Έντονα"); }
+.test237 { font-family: test237, testbackup; }
+@font-face { font-family: test238; src: local("Verdana Πλάγια"); }
+.test238 { font-family: test238, testbackup; }
+@font-face { font-family: test239; src: local("Verdana Курсив"); }
+.test239 { font-family: test239, testbackup; }
+@font-face { font-family: test240; src: local("Verdana Полужирный Курсив"); }
+.test240 { font-family: test240, testbackup; }
+@font-face { font-family: test241; src: local("Verdana Полужирный"); }
+.test241 { font-family: test241, testbackup; }
+@font-face { font-family: test242; src: local("儷宋 Pro"); }
+.test242 { font-family: test242, testbackup; }
+@font-face { font-family: test243; src: local("儷黑 Pro"); }
+.test243 { font-family: test243, testbackup; }
+@font-face { font-family: test244; src: local("MS 明朝"); }
+.test244 { font-family: test244, testbackup; }
+@font-face { font-family: test245; src: local("MS P明朝"); }
+.test245 { font-family: test245, testbackup; }
+@font-face { font-family: test246; src: local("MS ゴシック"); }
+.test246 { font-family: test246, testbackup; }
+@font-face { font-family: test247; src: local("MS Pゴシック"); }
+.test247 { font-family: test247, testbackup; }
+@font-face { font-family: test248; src: local("仿宋"); }
+.test248 { font-family: test248, testbackup; }
+@font-face { font-family: test249; src: local("楷体"); }
+.test249 { font-family: test249, testbackup; }
+@font-face { font-family: test250; src: local("굴림"); }
+.test250 { font-family: test250, testbackup; }
+@font-face { font-family: test251; src: local("궁서"); }
+.test251 { font-family: test251, testbackup; }
+@font-face { font-family: test252; src: local("돋움"); }
+.test252 { font-family: test252, testbackup; }
+@font-face { font-family: test253; src: local("바탕"); }
+.test253 { font-family: test253, testbackup; }
+@font-face { font-family: test254; src: local("標楷體"); }
+.test254 { font-family: test254, testbackup; }
+@font-face { font-family: test255; src: local("細明體"); }
+.test255 { font-family: test255, testbackup; }
+@font-face { font-family: test256; src: local("굴림체"); }
+.test256 { font-family: test256, testbackup; }
+@font-face { font-family: test257; src: local("바탕체"); }
+.test257 { font-family: test257, testbackup; }
+@font-face { font-family: test258; src: local("細明體-ExtB"); }
+.test258 { font-family: test258, testbackup; }
+@font-face { font-family: test259; src: local("細明體_HKSCS"); }
+.test259 { font-family: test259, testbackup; }
+@font-face { font-family: test260; src: local("メイリオ ボールド イタリック"); }
+.test260 { font-family: test260, testbackup; }
+@font-face { font-family: test261; src: local("メイリオ ボールド"); }
+.test261 { font-family: test261, testbackup; }
+@font-face { font-family: test262; src: local("メイリオ"); }
+.test262 { font-family: test262, testbackup; }
+@font-face { font-family: test263; src: local("华文仿宋"); }
+.test263 { font-family: test263, testbackup; }
+@font-face { font-family: test264; src: local("华文细黑"); }
+.test264 { font-family: test264, testbackup; }
+@font-face { font-family: test265; src: local("华文黑体"); }
+.test265 { font-family: test265, testbackup; }
+@font-face { font-family: test266; src: local("微软雅黑"); }
+.test266 { font-family: test266, testbackup; }
+@font-face { font-family: test267; src: local("新細明體"); }
+.test267 { font-family: test267, testbackup; }
+@font-face { font-family: test268; src: local("新細明體-ExtB"); }
+.test268 { font-family: test268, testbackup; }
+@font-face { font-family: test269; src: local("微軟正黑體 Bold"); }
+.test269 { font-family: test269, testbackup; }
+@font-face { font-family: test270; src: local("רעננה"); }
+.test270 { font-family: test270, testbackup; }
+@font-face { font-family: test271; src: local("微軟正黑體"); }
+.test271 { font-family: test271, testbackup; }
+@font-face { font-family: test272; src: local("蘋果儷中黑"); }
+.test272 { font-family: test272, testbackup; }
+@font-face { font-family: test273; src: local("蘋果儷細宋"); }
+.test273 { font-family: test273, testbackup; }
+@font-face { font-family: test274; src: local("ヒラギノ角ゴ Pro W3"); }
+.test274 { font-family: test274, testbackup; }
+@font-face { font-family: test275; src: local("ヒラギノ丸ゴ Pro W4"); }
+.test275 { font-family: test275, testbackup; }
+@font-face { font-family: test276; src: local("ヒラギノ明朝 Pro W6"); }
+.test276 { font-family: test276, testbackup; }
+@font-face { font-family: test277; src: local("ヒラギノ丸ゴ ProN W4"); }
+.test277 { font-family: test277, testbackup; }
+@font-face { font-family: test278; src: local("רעננה‭ ‬Bold"); }
+.test278 { font-family: test278, testbackup; }
+</style>
+
+</head>
+<body>
+
+<h4>The letter A should not appear below independent of locale:</h4>
+
+<p>(Mouse over to see local name used)</p>
+
+<table>
+<tr>
+<td class="test0" title="#궁서체 일반체">AA</td>
+<td class="test1" title="#헤드라인A 일반체">AA</td>
+<td class="test2" title="AppleGothic 일반체">AA</td>
+<td class="test3" title="Arial Black Normal">AA</td>
+<td class="test4" title="Arial Black Standard">AA</td>
+<td class="test5" title="Arial Black normal">AA</td>
+<td class="test6" title="Arial Black obyčejné">AA</td>
+<td class="test7" title="Arial Black Обычный">AA</td>
+<td class="test8" title="Arial Black Κανονικά">AA</td>
+<td class="test9" title="Arial Corsivo">AA</td>
+</tr>
+<tr>
+<td class="test10" title="Arial Cursief">AA</td>
+<td class="test11" title="Arial Cursiva">AA</td>
+<td class="test12" title="Arial Dőlt">AA</td>
+<td class="test13" title="Arial Etzana">AA</td>
+<td class="test14" title="Arial Fet Kursiv">AA</td>
+<td class="test15" title="Arial Fet">AA</td>
+<td class="test16" title="Arial Fett Kursiv">AA</td>
+<td class="test17" title="Arial Fett">AA</td>
+<td class="test18" title="Arial Félkövér dőlt">AA</td>
+<td class="test19" title="Arial Félkövér">AA</td>
+</tr>
+<tr>
+<td class="test20" title="Arial Gras Italique">AA</td>
+<td class="test21" title="Arial Gras">AA</td>
+<td class="test22" title="Arial Grassetto Corsivo">AA</td>
+<td class="test23" title="Arial Grassetto">AA</td>
+<td class="test24" title="Arial Halvfet Kursiv">AA</td>
+<td class="test25" title="Arial Halvfet">AA</td>
+<td class="test26" title="Arial Italique">AA</td>
+<td class="test27" title="Arial Itálico">AA</td>
+<td class="test28" title="Arial Kalın İtalik">AA</td>
+<td class="test29" title="Arial Kalın">AA</td>
+</tr>
+<tr>
+<td class="test30" title="Arial Krepko poševno">AA</td>
+<td class="test31" title="Arial Krepko">AA</td>
+<td class="test32" title="Arial Kursiv">AA</td>
+<td class="test33" title="Arial Kursivoitu">AA</td>
+<td class="test34" title="Arial Kursywa">AA</td>
+<td class="test35" title="Arial Kurzíva">AA</td>
+<td class="test36" title="Arial Lihavoitu Kursivoi">AA</td>
+<td class="test37" title="Arial Lihavoitu">AA</td>
+<td class="test38" title="Arial Lodi etzana">AA</td>
+<td class="test39" title="Arial Lodia">AA</td>
+</tr>
+<tr>
+<td class="test40" title="Arial Negreta">AA</td>
+<td class="test41" title="Arial Negrita Cursiva">AA</td>
+<td class="test42" title="Arial Negrita">AA</td>
+<td class="test43" title="Arial Negrito Itálico">AA</td>
+<td class="test44" title="Arial Negrito">AA</td>
+<td class="test45" title="Arial Pogrubiona kursywa">AA</td>
+<td class="test46" title="Arial Pogrubiony">AA</td>
+<td class="test47" title="Arial Poševno">AA</td>
+<td class="test48" title="Arial Tučná kurzíva">AA</td>
+<td class="test49" title="Arial Tučné">AA</td>
+</tr>
+<tr>
+<td class="test50" title="Arial Vet Cursief">AA</td>
+<td class="test51" title="Arial Vet">AA</td>
+<td class="test52" title="Arial fed kursiv">AA</td>
+<td class="test53" title="Arial fed">AA</td>
+<td class="test54" title="Arial kursiv">AA</td>
+<td class="test55" title="Arial kurzíva">AA</td>
+<td class="test56" title="Arial nghiêng đậm">AA</td>
+<td class="test57" title="Arial nghiêng">AA</td>
+<td class="test58" title="Arial tučné kurzíva">AA</td>
+<td class="test59" title="Arial tučné">AA</td>
+</tr>
+<tr>
+<td class="test60" title="Arial İtalik">AA</td>
+<td class="test61" title="Arial đậm">AA</td>
+<td class="test62" title="Arial Έντονα Πλάγια">AA</td>
+<td class="test63" title="Arial Έντονα">AA</td>
+<td class="test64" title="Arial Πλάγια">AA</td>
+<td class="test65" title="Arial Курсив">AA</td>
+<td class="test66" title="Arial Полужирный Курсив">AA</td>
+<td class="test67" title="Arial Полужирный">AA</td>
+<td class="test68" title="Brush Script MT Πλάγια">AA</td>
+<td class="test69" title="Brush Script MT Курсив">AA</td>
+</tr>
+<tr>
+<td class="test70" title="Century Gothic Halvfet">AA</td>
+<td class="test71" title="Century Gothic Italique">AA</td>
+<td class="test72" title="Century Gothic Kalın">AA</td>
+<td class="test73" title="Century Gothic Krepko poševno">AA</td>
+<td class="test74" title="Century Gothic Krepko">AA</td>
+<td class="test75" title="Century Gothic Kursiv">AA</td>
+<td class="test76" title="Comic Sans MS Negreta">AA</td>
+<td class="test77" title="Comic Sans MS Έντονα">AA</td>
+<td class="test78" title="Courier Carregado">AA</td>
+<td class="test79" title="Courier Fet">AA</td>
+</tr>
+<tr>
+<td class="test80" title="Courier Fett">AA</td>
+<td class="test81" title="Courier Gras">AA</td>
+<td class="test82" title="Courier lihava">AA</td>
+<td class="test83" title="Courier vet">AA</td>
+<td class="test84" title="Courier‭ ‬עבה">AA</td>
+<td class="test85" title="Courier‭ ‬أسود">AA</td>
+<td class="test86" title="Courier‭ ‬برجسته">AA</td>
+<td class="test87" title="EucrosiaUPC Полужирный">AA</td>
+<td class="test88" title="Franklin Gothic Medium Kursiv">AA</td>
+<td class="test89" title="Garamond Kursywa">AA</td>
+</tr>
+<tr>
+<td class="test90" title="Garamond Kurzíva">AA</td>
+<td class="test91" title="Georgia Italique">AA</td>
+<td class="test92" title="Georgia Itálico">AA</td>
+<td class="test93" title="Georgia Kalın İtalik">AA</td>
+<td class="test94" title="HGP明朝B">AA</td>
+<td class="test95" title="HGP明朝E">AA</td>
+<td class="test96" title="HGPゴシックE">AA</td>
+<td class="test97" title="HGPゴシックM">AA</td>
+<td class="test98" title="HGP創英角ゴシックUB">AA</td>
+<td class="test99" title="HGS明朝B">AA</td>
+</tr>
+<tr>
+<td class="test100" title="HGS明朝E">AA</td>
+<td class="test101" title="HGS行書体">AA</td>
+<td class="test102" title="HGS教科書体">AA</td>
+<td class="test103" title="HGSゴシックE">AA</td>
+<td class="test104" title="HGSゴシックM">AA</td>
+<td class="test105" title="HGS創英プレゼンスEB">AA</td>
+<td class="test106" title="HG明朝B">AA</td>
+<td class="test107" title="HG正楷書体-PRO">AA</td>
+<td class="test108" title="HGゴシックE">AA</td>
+<td class="test109" title="HGゴシックM">AA</td>
+</tr>
+<tr>
+<td class="test110" title="HG丸ゴシックM-PRO">AA</td>
+<td class="test111" title="HG創英プレゼンスEB">AA</td>
+<td class="test112" title="Helvetica Carregado">AA</td>
+<td class="test113" title="Helvetica‭ ‬עבה">AA</td>
+<td class="test114" title="Helvetica‭ ‬أسود">AA</td>
+<td class="test115" title="Helvetica‭ ‬برجسته">AA</td>
+<td class="test116" title="Osaka−等幅">AA</td>
+<td class="test117" title="Thonburi Carregado">AA</td>
+<td class="test118" title="Thonburi Gras">AA</td>
+<td class="test119" title="Thonburi vet">AA</td>
+</tr>
+<tr>
+<td class="test120" title="Times Cursiva">AA</td>
+<td class="test121" title="Times Gras">AA</td>
+<td class="test122" title="Times Negrita">AA</td>
+<td class="test123" title="Times New Roman Corsivo">AA</td>
+<td class="test124" title="Times New Roman Cursief">AA</td>
+<td class="test125" title="Times New Roman Cursiva">AA</td>
+<td class="test126" title="Times New Roman Dőlt">AA</td>
+<td class="test127" title="Times New Roman Etzana">AA</td>
+<td class="test128" title="Times New Roman Fet Kursiv">AA</td>
+<td class="test129" title="Times New Roman Fet">AA</td>
+</tr>
+<tr>
+<td class="test130" title="Times New Roman Fett Kursiv">AA</td>
+<td class="test131" title="Times New Roman Fett">AA</td>
+<td class="test132" title="Times New Roman Félkövér dőlt">AA</td>
+<td class="test133" title="Times New Roman Félkövér">AA</td>
+<td class="test134" title="Times New Roman Gras Italique">AA</td>
+<td class="test135" title="Times New Roman Gras">AA</td>
+<td class="test136" title="Times New Roman Grassetto Corsivo">AA</td>
+<td class="test137" title="Times New Roman Grassetto">AA</td>
+<td class="test138" title="Times New Roman Halvfet Kursiv">AA</td>
+<td class="test139" title="Times New Roman Halvfet">AA</td>
+</tr>
+<tr>
+<td class="test140" title="Times New Roman Italique">AA</td>
+<td class="test141" title="Times New Roman Itálico">AA</td>
+<td class="test142" title="Times New Roman Kalın İtalik">AA</td>
+<td class="test143" title="Times New Roman Kalın">AA</td>
+<td class="test144" title="Times New Roman Krepko poševno">AA</td>
+<td class="test145" title="Times New Roman Krepko">AA</td>
+<td class="test146" title="Times New Roman Kursiv">AA</td>
+<td class="test147" title="Times New Roman Kursivoitu">AA</td>
+<td class="test148" title="Times New Roman Kurzíva">AA</td>
+<td class="test149" title="Times New Roman Lihavoitu Kursivoi">AA</td>
+</tr>
+<tr>
+<td class="test150" title="Times New Roman Lihavoitu">AA</td>
+<td class="test151" title="Times New Roman Lodi etzana">AA</td>
+<td class="test152" title="Times New Roman Lodia">AA</td>
+<td class="test153" title="Times New Roman Negreta cursiva">AA</td>
+<td class="test154" title="Times New Roman Negreta">AA</td>
+<td class="test155" title="Times New Roman Negrita Cursiva">AA</td>
+<td class="test156" title="Times New Roman Negrita">AA</td>
+<td class="test157" title="Times New Roman Negrito Itálico">AA</td>
+<td class="test158" title="Times New Roman Negrito">AA</td>
+<td class="test159" title="Times New Roman Pogrubiona kursywa">AA</td>
+</tr>
+<tr>
+<td class="test160" title="Times New Roman Pogrubiona">AA</td>
+<td class="test161" title="Times New Roman Poševno">AA</td>
+<td class="test162" title="Times New Roman Tučná kurzíva">AA</td>
+<td class="test163" title="Times New Roman Tučné">AA</td>
+<td class="test164" title="Times New Roman Vet Cursief">AA</td>
+<td class="test165" title="Times New Roman Vet">AA</td>
+<td class="test166" title="Times New Roman cursiva">AA</td>
+<td class="test167" title="Times New Roman fed kursiv">AA</td>
+<td class="test168" title="Times New Roman fed">AA</td>
+<td class="test169" title="Times New Roman kursiv">AA</td>
+</tr>
+<tr>
+<td class="test170" title="Times New Roman kursywa">AA</td>
+<td class="test171" title="Times New Roman kurzíva">AA</td>
+<td class="test172" title="Times New Roman nghiêng đậm">AA</td>
+<td class="test173" title="Times New Roman nghiêng">AA</td>
+<td class="test174" title="Times New Roman tučné kurzíva">AA</td>
+<td class="test175" title="Times New Roman tučné">AA</td>
+<td class="test176" title="Times New Roman İtalik">AA</td>
+<td class="test177" title="Times New Roman đậm">AA</td>
+<td class="test178" title="Times New Roman Έντονα Πλάγια">AA</td>
+<td class="test179" title="Times New Roman Έντονα">AA</td>
+</tr>
+<tr>
+<td class="test180" title="Times New Roman Πλάγια">AA</td>
+<td class="test181" title="Times New Roman Курсив">AA</td>
+<td class="test182" title="Times New Roman Полужирный Курсив">AA</td>
+<td class="test183" title="Times New Roman Полужирный">AA</td>
+<td class="test184" title="Times grassetto">AA</td>
+<td class="test185" title="Verdana Corsivo">AA</td>
+<td class="test186" title="Verdana Cursief">AA</td>
+<td class="test187" title="Verdana Cursiva">AA</td>
+<td class="test188" title="Verdana Dőlt">AA</td>
+<td class="test189" title="Verdana Etzana">AA</td>
+</tr>
+<tr>
+<td class="test190" title="Verdana Fet Kursiv">AA</td>
+<td class="test191" title="Verdana Fet">AA</td>
+<td class="test192" title="Verdana Fett Kursiv">AA</td>
+<td class="test193" title="Verdana Fett">AA</td>
+<td class="test194" title="Verdana Félkövér dőlt">AA</td>
+<td class="test195" title="Verdana Félkövér">AA</td>
+<td class="test196" title="Verdana Gras Italique">AA</td>
+<td class="test197" title="Verdana Gras">AA</td>
+<td class="test198" title="Verdana Grassetto Corsivo">AA</td>
+<td class="test199" title="Verdana Grassetto">AA</td>
+</tr>
+<tr>
+<td class="test200" title="Verdana Halvfet Kursiv">AA</td>
+<td class="test201" title="Verdana Halvfet">AA</td>
+<td class="test202" title="Verdana Italique">AA</td>
+<td class="test203" title="Verdana Itálico">AA</td>
+<td class="test204" title="Verdana Kalın İtalik">AA</td>
+<td class="test205" title="Verdana Kalın">AA</td>
+<td class="test206" title="Verdana Krepko poševno">AA</td>
+<td class="test207" title="Verdana Krepko">AA</td>
+<td class="test208" title="Verdana Kursiv">AA</td>
+<td class="test209" title="Verdana Kursivoitu">AA</td>
+</tr>
+<tr>
+<td class="test210" title="Verdana Kursywa">AA</td>
+<td class="test211" title="Verdana Kurzíva">AA</td>
+<td class="test212" title="Verdana Lihavoitu Kursivoi">AA</td>
+<td class="test213" title="Verdana Lihavoitu">AA</td>
+<td class="test214" title="Verdana Lodi etzana">AA</td>
+<td class="test215" title="Verdana Lodia">AA</td>
+<td class="test216" title="Verdana Negreta cursiva">AA</td>
+<td class="test217" title="Verdana Negreta">AA</td>
+<td class="test218" title="Verdana Negrita Cursiva">AA</td>
+<td class="test219" title="Verdana Negrita">AA</td>
+</tr>
+<tr>
+<td class="test220" title="Verdana Negrito Itálico">AA</td>
+<td class="test221" title="Verdana Negrito">AA</td>
+<td class="test222" title="Verdana Pogrubiona kursywa">AA</td>
+<td class="test223" title="Verdana Pogrubiony">AA</td>
+<td class="test224" title="Verdana Poševno">AA</td>
+<td class="test225" title="Verdana Tučná kurzíva">AA</td>
+<td class="test226" title="Verdana Tučné">AA</td>
+<td class="test227" title="Verdana Vet Cursief">AA</td>
+<td class="test228" title="Verdana Vet">AA</td>
+<td class="test229" title="Verdana fed kursiv">AA</td>
+</tr>
+<tr>
+<td class="test230" title="Verdana fed">AA</td>
+<td class="test231" title="Verdana kursiv">AA</td>
+<td class="test232" title="Verdana kurzíva">AA</td>
+<td class="test233" title="Verdana tučné kurzíva">AA</td>
+<td class="test234" title="Verdana tučné">AA</td>
+<td class="test235" title="Verdana İtalik">AA</td>
+<td class="test236" title="Verdana Έντονα Πλάγια">AA</td>
+<td class="test237" title="Verdana Έντονα">AA</td>
+<td class="test238" title="Verdana Πλάγια">AA</td>
+<td class="test239" title="Verdana Курсив">AA</td>
+</tr>
+<tr>
+<td class="test240" title="Verdana Полужирный Курсив">AA</td>
+<td class="test241" title="Verdana Полужирный">AA</td>
+<td class="test242" title="儷宋 Pro">AA</td>
+<td class="test243" title="儷黑 Pro">AA</td>
+<td class="test244" title="MS 明朝">AA</td>
+<td class="test245" title="MS P明朝">AA</td>
+<td class="test246" title="MS ゴシック">AA</td>
+<td class="test247" title="MS Pゴシック">AA</td>
+<td class="test248" title="仿宋">AA</td>
+<td class="test249" title="楷体">AA</td>
+</tr>
+<tr>
+<td class="test250" title="굴림">AA</td>
+<td class="test251" title="궁서">AA</td>
+<td class="test252" title="돋움">AA</td>
+<td class="test253" title="바탕">AA</td>
+<td class="test254" title="標楷體">AA</td>
+<td class="test255" title="細明體">AA</td>
+<td class="test256" title="굴림체">AA</td>
+<td class="test257" title="바탕체">AA</td>
+<td class="test258" title="細明體-ExtB">AA</td>
+<td class="test259" title="細明體_HKSCS">AA</td>
+</tr>
+<tr>
+<td class="test260" title="メイリオ ボールド イタリック">AA</td>
+<td class="test261" title="メイリオ ボールド">AA</td>
+<td class="test262" title="メイリオ">AA</td>
+<td class="test263" title="华文仿宋">AA</td>
+<td class="test264" title="华文细黑">AA</td>
+<td class="test265" title="华文黑体">AA</td>
+<td class="test266" title="微软雅黑">AA</td>
+<td class="test267" title="新細明體">AA</td>
+<td class="test268" title="新細明體-ExtB">AA</td>
+<td class="test269" title="微軟正黑體 Bold">AA</td>
+</tr>
+<tr>
+<td class="test270" title="רעננה">AA</td>
+<td class="test271" title="微軟正黑體">AA</td>
+<td class="test272" title="蘋果儷中黑">AA</td>
+<td class="test273" title="蘋果儷細宋">AA</td>
+<td class="test274" title="ヒラギノ角ゴ Pro W3">AA</td>
+<td class="test275" title="ヒラギノ丸ゴ Pro W4">AA</td>
+<td class="test276" title="ヒラギノ明朝 Pro W6">AA</td>
+<td class="test277" title="ヒラギノ丸ゴ ProN W4">AA</td>
+<td class="test278" title="רעננה‭ ‬Bold">AA</td>
+</tr>
+</table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/src-list-local-ps.html b/layout/reftests/font-face/src-list-local-ps.html
new file mode 100644
index 0000000000..4ca4335dee
--- /dev/null
+++ b/layout/reftests/font-face/src-list-local-ps.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>src local with postscript names</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+body {
+ margin: 50px;
+ font-size: 24pt;
+}
+
+/* use full names */
+
+@font-face {
+ font-family: test-regular;
+ src: local(HelveticaNeue), local(BitstreamVeraSans-Roman), local(FreeSans),
+ local(SwissA), local(DejaVuSans), local(ArialMT);
+}
+
+/* use Helvetica on the Mac, since Futura has no bold face on 10.4, 10.5 */
+@font-face {
+ font-family: test-bold;
+ src: local(HelveticaNeue-Bold), local(BitstreamVeraSans-Bold),
+ local(FreeSansBold), local(SwissA-Bold), local(DejaVuSans-Bold),
+ local(Arial-BoldMT);
+}
+
+@font-face {
+ font-family: test-italic;
+ src: local(HelveticaNeue-Italic), local(BitstreamVeraSans-Oblique),
+ local(FreeSansOblique), local(SwissA-Italic),
+ local(DejaVuSans-Oblique), local(Arial-ItalicMT);
+}
+
+.regular { font-family: test-regular, serif; }
+.bold { font-family: test-bold, serif; }
+.italic { font-family: test-italic, serif; }
+
+</style>
+
+<script type="text/javascript">
+
+</script>
+
+</head>
+<body>
+
+<p class="regular">This should be a sans-serif face</p>
+
+<p class="bold">This should be a bold sans-serif face</p>
+
+<p class="italic">This should be an italic sans-serif face</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/synthetic-variations-ref.html b/layout/reftests/font-face/synthetic-variations-ref.html
new file mode 100644
index 0000000000..f691640889
--- /dev/null
+++ b/layout/reftests/font-face/synthetic-variations-ref.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML>
+<html><head>
+
+
+<title>@font-face and synthetic rendering</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
+<style type="text/css">
+
+@font-face {
+ font-family: test;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+ font-weight: normal;
+}
+
+body {
+ margin: 50px;
+ font-family: sans-serif;
+ font-size: 18pt;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+#test1, #test2, #test3 { font-family: test, Times New Roman, Times, Bitstream Vera, serif; }
+
+th, td {
+ padding-left: 1em;
+ padding-right: 1em;
+ text-align: left;
+}
+
+th { font-weight: normal; }
+td { font-weight: bold; }
+em { font-style: italic; }
+
+</style>
+
+
+</head><body>
+
+<p>All lines should appear in a sans-serif face with proper bolding</p>
+
+<table id="test1">
+<tr class="w1"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w2"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w3"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w4"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w5"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w6"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w7"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w8"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w9"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+</table>
+
+<table id="test2">
+<tr class="w9"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w8"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w7"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w6"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w5"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w4"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w3"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w2"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+<tr class="w1"><th>normal</th><th><em>italic</em></th><td>bold</td><td><em>bolditalic</em></td></tr>
+</table>
+
+<table id="test3">
+<tr class="w1"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w2"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w3"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w4"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w5"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w6"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w7"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w8"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w9"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+</table>
+
+</body></html> \ No newline at end of file
diff --git a/layout/reftests/font-face/synthetic-variations.html b/layout/reftests/font-face/synthetic-variations.html
new file mode 100644
index 0000000000..c5fbd7e7b7
--- /dev/null
+++ b/layout/reftests/font-face/synthetic-variations.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML>
+<html><head>
+
+
+<title>@font-face and synthetic rendering</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
+<style type="text/css">
+
+@font-face {
+ font-family: test1;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+ font-weight: normal;
+}
+
+@font-face {
+ font-family: test2;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+ font-weight: normal;
+}
+
+@font-face {
+ font-family: test3;
+ src: url(../fonts/mplus/mplus-1p-thin.ttf);
+ font-weight: 100;
+}
+
+@font-face {
+ font-family: test3;
+ src: url(../fonts/mplus/mplus-1p-regular.ttf);
+ font-weight: 300;
+}
+
+body {
+ margin: 50px;
+ font-family: sans-serif;
+ font-size: 18pt;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+.w1 { font-weight: 100; }
+.w2 { font-weight: 200; }
+.w3 { font-weight: 300; }
+.w4 { font-weight: 400; }
+.w5 { font-weight: 500; }
+.w6 { font-weight: 600; }
+.w7 { font-weight: 700; }
+.w8 { font-weight: 800; }
+.w9 { font-weight: 900; }
+
+#test1 { font-family: test1, Times New Roman, Times, Bitstream Vera, serif; }
+#test2 { font-family: test2, Times New Roman, Times, Bitstream Vera, serif; }
+#test3 { font-family: test3, Times New Roman, Times, Bitstream Vera, serif; }
+
+th, td {
+ font-weight: inherit;
+ padding-left: 1em;
+ padding-right: 1em;
+ text-align: left;
+}
+
+em { font-style: italic; }
+
+#test1 .w1 td, #test1 .w1 td span { font-weight: bolder; }
+#test1 .w2 td, #test1 .w2 td span { font-weight: bolder; }
+#test1 .w3 td, #test1 .w3 td span { font-weight: bolder; }
+#test1 .w4 td { font-weight: bolder; }
+#test1 .w5 td { font-weight: bolder; }
+#test1 .w6 th { font-weight: lighter; }
+#test1 .w7 th { font-weight: lighter; }
+#test1 .w8 th, #test1 .w8 th span { font-weight: lighter; }
+#test1 .w9 th, #test1 .w9 th span { font-weight: lighter; }
+
+#test2 .w1 td, #test2 .w1 td span { font-weight: bolder; }
+#test2 .w2 td, #test2 .w2 td span { font-weight: bolder; }
+#test2 .w3 td, #test2 .w3 td span { font-weight: bolder; }
+#test2 .w4 td { font-weight: bolder; }
+#test2 .w5 td { font-weight: bolder; }
+#test2 .w6 th { font-weight: lighter; }
+#test2 .w7 th { font-weight: lighter; }
+#test2 .w8 th, #test2 .w8 th span { font-weight: lighter; }
+#test2 .w9 th, #test2 .w9 th span { font-weight: lighter; }
+
+#test3 .w1 th, #test3 .w1 td, #test3 .w1 td span { font-weight: bolder; }
+#test3 .w2 th, #test3 .w2 td, #test3 .w2 td span { font-weight: bolder; }
+#test3 .w3 th, #test3 .w3 td, #test3 .w3 td span { font-weight: bolder; }
+#test3 .w4 td { font-weight: bolder; }
+#test3 .w5 td { font-weight: bolder; }
+#test3 .w6 th { font-weight: lighter; }
+#test3 .w7 th { font-weight: lighter; }
+#test3 .w8 td, #test3 .w8 th, #test3 .w8 th span { font-weight: lighter; }
+#test3 .w9 td, #test3 .w9 th, #test3 .w9 th span { font-weight: lighter; }
+
+</style>
+
+
+</head><body>
+
+<p>All lines should appear in a sans-serif face with proper bolding</p>
+
+<table id="test1">
+<tr class="w1"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w2"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w3"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w4"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w5"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w6"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w7"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w8"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w9"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+</table>
+
+<table id="test2">
+<tr class="w9"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w8"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w7"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w6"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w5"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w4"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w3"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w2"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+<tr class="w1"><th><span>normal</span></th><th><em><span>italic</span></em></th><td><span>bold</span></td><td><em><span>bolditalic</span></em></td></tr>
+</table>
+
+<table id="test3">
+<tr class="w1"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w2"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w3"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w4"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w5"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w6"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w7"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w8"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+<tr class="w9"><th><span>normal</span></th><th><span><em>italic</em></span></th><td><span>bold</span></td><td><span><em>bolditalic</em></span></td></tr>
+</table>
+
+</body></html>
diff --git a/layout/reftests/font-face/synthetic-weight-style-ref.html b/layout/reftests/font-face/synthetic-weight-style-ref.html
new file mode 100644
index 0000000000..af44b593f2
--- /dev/null
+++ b/layout/reftests/font-face/synthetic-weight-style-ref.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>@font-face and synthetic rendering</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@import url(../fonts/mplus/mplusfonts.css);
+
+body {
+ margin: 50px;
+ font-family: mplus1p, Futura, sans-serif;
+ font-size: 18pt;
+}
+
+table {
+ border-collapse: collapse;
+ margin-left: 1em;
+}
+
+td + td {
+ padding-left: 1em;
+}
+
+</style>
+
+
+</head>
+
+<body>
+
+<h4>Text below should appear in normal face with no synthetic bolding/italics</h4>
+
+<table>
+<tr>
+<td>100</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>200</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>300</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>400</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>500</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>600</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>700</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>800</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+<tr>
+<td>900</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+<td>Regular</td>
+<td>Italic</td>
+<td>Oblique</td>
+</tr>
+</table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/synthetic-weight-style.html b/layout/reftests/font-face/synthetic-weight-style.html
new file mode 100644
index 0000000000..332e62eae3
--- /dev/null
+++ b/layout/reftests/font-face/synthetic-weight-style.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>@font-face and synthetic rendering</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<style type="text/css">
+
+@import url(../fonts/mplus/mplusfonts.css);
+
+body {
+ margin: 50px;
+ font-family: mplus1p, Futura, sans-serif;
+ font-size: 18pt;
+}
+
+table {
+ border-collapse: collapse;
+ margin-left: 1em;
+}
+
+td + td {
+ padding-left: 1em;
+}
+
+@font-face { font-family: mplus-w1; font-weight: 100; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w1; font-style: italic; font-weight: 100; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w1; font-style: oblique; font-weight: 100; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w1 { font-family: mplus-w1; }
+
+@font-face { font-family: mplus-w2; font-weight: 200; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w2; font-style: italic; font-weight: 200; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w2; font-style: oblique; font-weight: 200; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w2 { font-family: mplus-w2; }
+
+@font-face { font-family: mplus-w3; font-weight: 300; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w3; font-style: italic; font-weight: 300; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w3; font-style: oblique; font-weight: 300; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w3 { font-family: mplus-w3; }
+
+@font-face { font-family: mplus-w4; font-weight: 400; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w4; font-style: italic; font-weight: 400; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w4; font-style: oblique; font-weight: 400; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w4 { font-family: mplus-w4; }
+
+@font-face { font-family: mplus-w5; font-weight: 500; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w5; font-style: italic; font-weight: 500; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w5; font-style: oblique; font-weight: 500; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w5 { font-family: mplus-w5; }
+
+@font-face { font-family: mplus-w6; font-weight: 600; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w6; font-style: italic; font-weight: 600; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w6; font-style: oblique; font-weight: 600; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w6 { font-family: mplus-w6; }
+
+@font-face { font-family: mplus-w7; font-weight: 700; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w7; font-style: italic; font-weight: 700; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w7; font-style: oblique; font-weight: 700; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w7 { font-family: mplus-w7; }
+
+@font-face { font-family: mplus-w8; font-weight: 800; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w8; font-style: italic; font-weight: 800; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w8; font-style: oblique; font-weight: 800; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w8 { font-family: mplus-w8; }
+
+@font-face { font-family: mplus-w9; font-weight: 900; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w9; font-style: italic; font-weight: 900; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+@font-face { font-family: mplus-w9; font-style: oblique; font-weight: 900; src: url(../fonts/mplus/mplus-1p-regular.ttf); }
+.mplus-w9 { font-family: mplus-w9; }
+
+</style>
+
+
+</head>
+
+<body>
+
+<h4>Text below should appear in normal face with no synthetic bolding/italics</h4>
+
+<table>
+<tr class="mplus-w1">
+<td style="font-family: mplus1p;">100</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 100;">Regular</td>
+<td style="font-style: italic;font-weight: 100;">Italic</td>
+<td style="font-style: oblique;font-weight: 100;">Oblique</td>
+</tr>
+<tr class="mplus-w2">
+<td style="font-family: mplus1p;">200</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 200;">Regular</td>
+<td style="font-style: italic;font-weight: 200;">Italic</td>
+<td style="font-style: oblique;font-weight: 200;">Oblique</td>
+</tr>
+<tr class="mplus-w3">
+<td style="font-family: mplus1p;">300</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 300;">Regular</td>
+<td style="font-style: italic;font-weight: 300;">Italic</td>
+<td style="font-style: oblique;font-weight: 300;">Oblique</td>
+</tr>
+<tr class="mplus-w4">
+<td style="font-family: mplus1p;">400</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 400;">Regular</td>
+<td style="font-style: italic;font-weight: 400;">Italic</td>
+<td style="font-style: oblique;font-weight: 400;">Oblique</td>
+</tr>
+<tr class="mplus-w5">
+<td style="font-family: mplus1p;">500</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 500;">Regular</td>
+<td style="font-style: italic;font-weight: 500;">Italic</td>
+<td style="font-style: oblique;font-weight: 500;">Oblique</td>
+</tr>
+<tr class="mplus-w6">
+<td style="font-family: mplus1p;">600</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 600;">Regular</td>
+<td style="font-style: italic;font-weight: 600;">Italic</td>
+<td style="font-style: oblique;font-weight: 600;">Oblique</td>
+</tr>
+<tr class="mplus-w7">
+<td style="font-family: mplus1p;">700</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 700;">Regular</td>
+<td style="font-style: italic;font-weight: 700;">Italic</td>
+<td style="font-style: oblique;font-weight: 700;">Oblique</td>
+</tr>
+<tr class="mplus-w8">
+<td style="font-family: mplus1p;">800</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 800;">Regular</td>
+<td style="font-style: italic;font-weight: 800;">Italic</td>
+<td style="font-style: oblique;font-weight: 800;">Oblique</td>
+</tr>
+<tr class="mplus-w9">
+<td style="font-family: mplus1p;">900</td>
+<td>Regular</td>
+<td style="font-style: italic;">Italic</td>
+<td style="font-style: oblique;">Oblique</td>
+<td style="font-weight: 900;">Regular</td>
+<td style="font-style: italic;font-weight: 900;">Italic</td>
+<td style="font-style: oblique;font-weight: 900;">Oblique</td>
+</tr>
+</table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/layout/reftests/font-face/underline-offset-change-1-ref.html b/layout/reftests/font-face/underline-offset-change-1-ref.html
new file mode 100644
index 0000000000..a5124bc122
--- /dev/null
+++ b/layout/reftests/font-face/underline-offset-change-1-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title>Switching first font to one with higher underline (reference)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2AHighUnderline";
+ src: url(../fonts/mark2A-highunderline.ttf);
+ }
+
+ body { font-family: "Mark2AHighUnderline"; }
+
+ p { text-decoration: underline; border: blue solid; padding: 0.2em; }
+
+ </style>
+</head>
+<body>
+
+<p style="position:relative; width: max-content">A</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/underline-offset-change-1.html b/layout/reftests/font-face/underline-offset-change-1.html
new file mode 100644
index 0000000000..0f315e3163
--- /dev/null
+++ b/layout/reftests/font-face/underline-offset-change-1.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title>Switching first font to one with higher underline</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2AHighUnderline";
+ src: url(../fonts/mark2A-highunderline.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkALowUnderline";
+ src: url(../fonts/markA-lowunderline.ttf);
+ }
+
+ body { font-family: "Mark2AHighUnderline", "MarkALowUnderline"; }
+
+ p { text-decoration: underline; border: blue solid; padding: 0.2em; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">A<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/underline-offset-change-2-ref.html b/layout/reftests/font-face/underline-offset-change-2-ref.html
new file mode 100644
index 0000000000..864a90c8d8
--- /dev/null
+++ b/layout/reftests/font-face/underline-offset-change-2-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title>Switching first font to one with lower underline (reference)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2ALowUnderline";
+ src: url(../fonts/mark2A-lowunderline.ttf);
+ }
+
+ body { font-family: "Mark2ALowUnderline"; }
+
+ p { text-decoration: underline; border: blue solid; padding: 0.2em; }
+
+ </style>
+</head>
+<body>
+
+<p style="position:relative; width: max-content">A</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/underline-offset-change-2.html b/layout/reftests/font-face/underline-offset-change-2.html
new file mode 100644
index 0000000000..9cbeef3442
--- /dev/null
+++ b/layout/reftests/font-face/underline-offset-change-2.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US" class="reftest-wait">
+<head>
+ <title>Switching first font to one with lower underline</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: "Mark2ALowUnderline";
+ src: url(../fonts/mark2A-lowunderline.ttf);
+ }
+
+ </style>
+ <style type="text/css">
+
+ @font-face {
+ font-family: "MarkAHighUnderline";
+ src: url(../fonts/markA-highunderline.ttf);
+ }
+
+ body { font-family: "Mark2ALowUnderline", "MarkAHighUnderline"; }
+
+ p { text-decoration: underline; border: blue solid; padding: 0.2em; }
+
+ </style>
+ <script type="application/ecmascript">
+
+ document.getElementsByTagName("style")[0].disabled = true;
+
+ function run() {
+ // The resize-detector iframe will remove the class attribute.
+ document.getElementsByTagName("iframe")[0].contentWindow.arm_for_wider();
+
+ document.getElementsByTagName("style")[0].disabled = false;
+ }
+
+ </script>
+</head>
+<body onload="setTimeout(run, 20)">
+
+<p style="position:relative; width: max-content">A<iframe style="visibility:hidden;position:absolute;height:100%;width:100%" src="resize-detector-iframe.html"></iframe></p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-1-ref.html b/layout/reftests/font-face/unicoderange-1-ref.html
new file mode 100644
index 0000000000..9048468305
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-1-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: ahemspace, "MarkD", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-1.html b/layout/reftests/font-face/unicoderange-1.html
new file mode 100644
index 0000000000..b1b008e01d
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-1.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ unicode-range: u+42;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ unicode-range: u+42;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ unicode-range: u+41;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ unicode-range: u+41;
+ }
+
+ body { font-family: ahemspace, "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-2-ref.html b/layout/reftests/font-face/unicoderange-2-ref.html
new file mode 100644
index 0000000000..7b1194e4f5
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-2-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: ahemspace, "MarkD", "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-2.html b/layout/reftests/font-face/unicoderange-2.html
new file mode 100644
index 0000000000..e380b41368
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-2.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ unicode-range: u+42;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ unicode-range: u+42;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ unicode-range: u+41;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ unicode-range: u+41;
+ }
+
+ body { font-family: ahemspace, "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-3-ref.html b/layout/reftests/font-face/unicoderange-3-ref.html
new file mode 100644
index 0000000000..1358cae30e
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-3-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "Mark2D";
+ src: url(../fonts/mark2D.ttf);
+ }
+
+ @font-face {
+ font-family: "MarkA";
+ src: url(../fonts/markA.ttf);
+ }
+
+ body { font-family: ahemspace, "Mark2D", "MarkA"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-3.html b/layout/reftests/font-face/unicoderange-3.html
new file mode 100644
index 0000000000..3cf278275c
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-3.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markB.ttf);
+ unicode-range: u+42;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ unicode-range: u+41;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2A.ttf);
+ unicode-range: u+41;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ unicode-range: u+42;
+ }
+
+ body { font-family: ahemspace, "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-4-ref.html b/layout/reftests/font-face/unicoderange-4-ref.html
new file mode 100644
index 0000000000..9048468305
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-4-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "MarkD";
+ src: url(../fonts/markD.ttf);
+ }
+
+ @font-face {
+ font-family: "Mark2A";
+ src: url(../fonts/mark2A.ttf);
+ }
+
+ body { font-family: ahemspace, "MarkD", "Mark2A"; }
+
+ </style>
+</head>
+<body>
+
+<p>DAC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/unicoderange-4.html b/layout/reftests/font-face/unicoderange-4.html
new file mode 100644
index 0000000000..e3c899a031
--- /dev/null
+++ b/layout/reftests/font-face/unicoderange-4.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en-US">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+
+ @font-face {
+ font-family: ahemspace;
+ src: url(../fonts/Ahem.ttf);
+ unicode-range: u+20;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markA.ttf);
+ unicode-range: u+4?;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/mark2B.ttf);
+ unicode-range: u+4?;
+ }
+
+ @font-face {
+ font-family: "One";
+ src: url(../fonts/markD.ttf);
+ unicode-range: u+4?;
+ }
+
+ body { font-family: ahemspace, "One"; }
+
+ </style>
+</head>
+<body>
+
+<p>ABC</p>
+
+</body>
+</html>
diff --git a/layout/reftests/font-face/variation-format-hint-1A-ref.html b/layout/reftests/font-face/variation-format-hint-1A-ref.html
new file mode 100644
index 0000000000..6fef9ea84d
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1A-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/markA.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1B-otf-ref.html b/layout/reftests/font-face/variation-format-hint-1B-otf-ref.html
new file mode 100644
index 0000000000..5b97d8f398
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1B-otf-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/markB.otf);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1B-ttf-ref.html b/layout/reftests/font-face/variation-format-hint-1B-ttf-ref.html
new file mode 100644
index 0000000000..20702094ee
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1B-ttf-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/markB.ttf);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1B-woff-ref.html b/layout/reftests/font-face/variation-format-hint-1B-woff-ref.html
new file mode 100644
index 0000000000..a303ebb7ca
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1B-woff-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/markB.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1B-woff2-ref.html b/layout/reftests/font-face/variation-format-hint-1B-woff2-ref.html
new file mode 100644
index 0000000000..b846b901e7
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1B-woff2-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/markB.woff2);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1a.html b/layout/reftests/font-face/variation-format-hint-1a.html
new file mode 100644
index 0000000000..5ff20bd7b8
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1a.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ /* this should load markB if variation font support is enabled,
+ and markA otherwise */
+ src: url(../fonts/markB.ttf) format("truetype-variations"),
+ url(../fonts/markA.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1b.html b/layout/reftests/font-face/variation-format-hint-1b.html
new file mode 100644
index 0000000000..627570fbca
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1b.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ /* this should load markB if variation font support is enabled,
+ and markA otherwise */
+ src: url(../fonts/markB.otf) format("opentype-variations"),
+ url(../fonts/markA.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1c.html b/layout/reftests/font-face/variation-format-hint-1c.html
new file mode 100644
index 0000000000..d12be4c16a
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1c.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ /* this should load markB if variation font support is enabled,
+ and markA otherwise */
+ src: url(../fonts/markB.woff) format("woff-variations"),
+ url(../fonts/markA.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/variation-format-hint-1d.html b/layout/reftests/font-face/variation-format-hint-1d.html
new file mode 100644
index 0000000000..66e87f97be
--- /dev/null
+++ b/layout/reftests/font-face/variation-format-hint-1d.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<style>
+@font-face {
+ font-family: test;
+ /* this should load markB if variation font support is enabled,
+ and markA otherwise */
+ src: url(../fonts/markB.woff2) format("woff2-variations"),
+ url(../fonts/markA.woff);
+}
+div {
+ font-family: test, serif;
+ font-size: 50px;
+ line-height: 2em;
+}
+</style>
+
+<div>
+ABC
+</div>
diff --git a/layout/reftests/font-face/woff2-1-ref.html b/layout/reftests/font-face/woff2-1-ref.html
new file mode 100644
index 0000000000..690f68fc31
--- /dev/null
+++ b/layout/reftests/font-face/woff2-1-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Test for WOFF2</title>
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/sil/GenR102.ttf);
+}
+body {
+ font-family: test, monospace;
+ font-size: 24px;
+}
+</style>
+</head>
+<body>
+Hello WOFF2 World!
+</body>
+</html>
diff --git a/layout/reftests/font-face/woff2-1.html b/layout/reftests/font-face/woff2-1.html
new file mode 100644
index 0000000000..35cd516a6d
--- /dev/null
+++ b/layout/reftests/font-face/woff2-1.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Test for WOFF2</title>
+<style>
+@font-face {
+ font-family: test;
+ src: url(../fonts/sil/GenR102.woff2);
+}
+body {
+ font-family: test, monospace;
+ font-size: 24px;
+}
+</style>
+</head>
+<body>
+Hello WOFF2 World!
+</body>
+</html>
diff --git a/layout/reftests/font-face/woff2-totalsfntsize-ref.html b/layout/reftests/font-face/woff2-totalsfntsize-ref.html
new file mode 100644
index 0000000000..ee6dc8984e
--- /dev/null
+++ b/layout/reftests/font-face/woff2-totalsfntsize-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+@font-face {
+ font-family: "webfont";
+ src: url("../fonts/header-totalsfntsize-001.ttf") format("truetype");
+}
+#container {
+ width: 100px;
+ height: 38px;
+ position: relative;
+ overflow: hidden;
+}
+#test {
+ font: 41px "webfont";
+ position: absolute;
+ width: 41px;
+ height: 41px;
+ left: -1px;
+ top: -1px;
+}
+</style>
+</head>
+<body>
+This test makes sure WOFF2 renders as expected. The test passes if you see the word PASS below.
+<div id="container"><div id="test">P</div></div>
+</body>
+</html>
diff --git a/layout/reftests/font-face/woff2-totalsfntsize.html b/layout/reftests/font-face/woff2-totalsfntsize.html
new file mode 100644
index 0000000000..85be1a2d0d
--- /dev/null
+++ b/layout/reftests/font-face/woff2-totalsfntsize.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+@font-face {
+ font-family: "webfont";
+ src: url("../fonts/header-totalsfntsize-001.woff2") format("woff2");
+}
+#container {
+ width: 100px;
+ height: 38px;
+ position: relative;
+ overflow: hidden;
+}
+#test {
+ font: 41px "webfont";
+ position: absolute;
+ width: 41px;
+ height: 41px;
+ left: -1px;
+ top: -1px;
+}
+</style>
+</head>
+<body>
+This test makes sure WOFF2 renders as expected. The test passes if you see the word PASS below.
+<div id="container"><div id="test">P</div></div>
+</body>
+</html>