diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /layout/reftests/font-face | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream.tar.xz firefox-esr-upstream.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'layout/reftests/font-face')
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 Binary files differnew file mode 100644 index 0000000000..682bb2a484 --- /dev/null +++ b/layout/reftests/font-face/CAhem.ttf 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></td> +<td></td> +<td></td> +<td></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>神</td> +<td>神󠄀</td> +<td>神󠄃</td> +<td>神︀</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></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></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></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></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></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>葛󠄀葛󠄁</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..ba62955b04 --- /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) +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) HTTP(..) == font-error-404-1.html font-error-404-1-ref.html # HTTP status 404, don't load +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) HTTP(..) == font-error-404-2.html font-error-404-2-ref.html # HTTP status 200, load # random on win7, see bug 1786796 comment 9 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) 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) +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-200) == colrv1-01.html#A colrv1-01-ref.html#A +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-32,0-200) == colrv1-01.html#B colrv1-01-ref.html#B +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-8,0-10100) == colrv1-01.html#C colrv1-01-ref.html#C +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-600) == colrv1-01.html#D colrv1-01-ref.html#D +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-398) == colrv1-01.html#E colrv1-01-ref.html#E +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-398) == colrv1-01.html#F colrv1-01-ref.html#F +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-596) == colrv1-01.html#G colrv1-01-ref.html#G +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-596) == colrv1-01.html#H colrv1-01-ref.html#H +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-10100) == colrv1-01.html#I colrv1-01-ref.html#I +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-6806) == colrv1-01.html#J colrv1-01-ref.html#J +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-1,0-748) == colrv1-01.html#K colrv1-01-ref.html#K +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-67,0-9494) == colrv1-01.html#L colrv1-01-ref.html#L +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-3578) == colrv1-01.html#M colrv1-01-ref.html#M +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-64,0-6116) == colrv1-01.html#N colrv1-01-ref.html#N +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-80,0-5491) == colrv1-01.html#O colrv1-01-ref.html#O +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-112,0-300) == colrv1-01.html#P colrv1-01-ref.html#P +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-138,0-484) == colrv1-01.html#Q colrv1-01-ref.html#Q +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-214,0-461) == colrv1-01.html#R colrv1-01-ref.html#R +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-255,0-373) == colrv1-01.html#S colrv1-01-ref.html#S +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-237,0-477) == colrv1-01.html#T colrv1-01-ref.html#T + +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-1,0-1) == colrv1-03.html colrv1-03-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-1,0-1800) fuzzy-if(Android,0-64,0-37100) == colrv1-04.html colrv1-04-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy-if(Android,8-8,1484-1484) == colrv1-05.html colrv1-05-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-1,0-291) == colrv1-06.html colrv1-06-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fuzzy(0-128,0-264) == colrv1-07.html colrv1-07-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == colrv1-08.html colrv1-08-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 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) +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) pref(gfx.font_rendering.colr_v1.enabled,true) == colrv1-02.html colrv1-02a-ref.html +skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) 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 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) HTTP(..) == reflow-sanity-1.html reflow-sanity-1-ref.html # random on win7, see bug 1786796 comment 9 +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) HTTP(..) == reflow-sanity-1-data.html reflow-sanity-1-ref.html +random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) 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 +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),255-255,14462-14462) == meiryo-en-italic.html meiryo-ja-italic.html # Bug 1392106 +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),255-255,14462-14462) == meiryo-en-oblique.html meiryo-ja-oblique.html # Bug 1392106 +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),255-255,16299-16299) == 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) +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1a.html variation-format-hint-1A-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1b.html variation-format-hint-1A-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1c.html variation-format-hint-1A-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == 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 +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1a.html variation-format-hint-1B-ttf-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1b.html variation-format-hint-1B-otf-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == variation-format-hint-1c.html variation-format-hint-1B-woff-ref.html +fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-255,0-2777) == 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,AAEAAAARAQAABAAQRkZUTVsSEWAAAJ4kAAAAHEdERUYAJwDlAACeQAAAAB5HU1VCDlgOGAAAnmAAAABiT1MvMpP6Q0QAAAGYAAAAYGNtYXA989mHAAAFeAAAAjJjdnQgEIcRvwAAC2QAAABGZnBnbQ+0L6cAAAesAAACZWdhc3AAAAAQAACeHAAAAAhnbHlmIlooQgAADXAAAIxIaGVhZPrvmbwAAAEcAAAANmhoZWENaQTiAAABVAAAACRobXR4XGQ3gAAAAfgAAAN+bG9jYdufulYAAAusAAABwm1heHAB/QGYAAABeAAAACBuYW1lJoFCmQAAmbgAAAHOcG9zdIn/7pAAAJuIAAACknByZXDMcRRIAAAKFAAAAU4AAQAAAAEAALQyfd5fDzz1AB8IAAAAAADK4Sh3AAAAAMrmJtf/vv4ABjcHcQAAAAgAAgAAAAAAAAABAAAHcf3YAAAGbP++/74GNwABAAAAAAAAAAAAAAAAAAAA3wABAAAA4ABWAAUAAAAAAAIAAQACABYAAAEAAT4AAAAAAAICNgGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAAAAAAAAAAAAAAAgAAAJ0AAAEoAAAAAAAAAAHB5cnMAQAAg+wIF4f3hAAAHcQIoAAAAAQAAAAAEYAXhAAAAIAACATsAAAAAAAACqQAAATsAAAGDAEoBSQA5BNAAMQK0ACUD6QA3A1YAMQE1AC0CMQBCAjEAKQKlAEoEJABKATUALQG8AEoBQQA1AtAACALUAEQB2wAZAtsANwKuAC0CrAAZAsAASgK8AEICTQAIArgANQK8ADkBagBKAWoASgQiAEoEIgBKBCIASgKFABkDaABCAv0AFALpAFICxABEAvkAUgJ0AFICaABSAuEAQwMKAFIBgQBSAacADAMAAFICXABSA98AUgMoAFIC1ABEAtAAUgLZAEQC4wBSAr4AJQKHAAQC7QBQAswAEgQMABkC4QAQArwADgJyABQCGgBSAxgACAIaADkETQA1BLoASgQAASUCqQAxAq4AUgKFAEICrgBKApMAQgHbABQCvAAMArIAUgFyAFIBbP/TAoEAUgFyAFID/QBSArIAUgKRAD8CrgBSAq4ASgH3AFICdgAlAfUAFAKyAE4CWgAQA4kAFAJqABACegAZAhQADAKwAD0BZABSArAAOQUAAHEBOwAAAYMASgJ8AEIDMQAEAtAAGQQAARAGbAA1AbwASgZsADUEAAE5BAABmgDXAAAEAAGqAoUAKQL9ABQC/QAUAv0AFAL9ABQC/QAUAv0AFARLABACxABEAnQAUgJ0AFICdABSAnQAUgGR//oBkQBSAXL/vgF0/8sC+QAUAygAUgLUAEQC1ABEAtQARALUAEQC1ABEAtQAOwLtAFAC7QBQAu0AUALtAFACwAAQAtQAUgLdAEICqQAxAqkAMQKpADECqQAxAqkAMQKpADED3QAxAoUAQgKTAEICkwBCApMAQgKTAEIBcv/fAXIAUgFy/74BdP/LAqEATAKyAFICkQA/ApEAPwKRAD8CkQA/ApEAPwKRAD8CsgBOArIATgKyAE4CsgBOAnoAGQKuAFICegAZAXIAUgJ0ACkB1AAfA9cARAPjAD8CvgAlAnYAJQLAABACcgAUAhQADAP9AQQD/QEEBAABHwP9AZgD/QFmBAABXAQAATkEAADXA7gAAAdwAAADuAAAB3AAAAJ6AAAB2wAAAT0AAAE9AAAA7QAAAXwAAABoAAABvABKAbwASgG8AEoDJgBKA8wASgE1ADEBNQAtATUALQJwADUCcAA1AnAANQKXAFIDxAA1AXwAAAHbAAADLQA1A6kASgMIAEoEYAAAAwQAFAAUAAAAAAADAAAAAwAAABwAAQAAAAABLAADAAEAAAAcAAQBEAAAAEAAQAAFAAAAfgCjAKUAqQCvALQAuADWAPYA/wExAUIBUwFhAXgBfgLHAt0gCiAUIBogHiAiICYgLyBfIKwhIiIS4AD7Av//AAAAIACgAKUAqACtALQAtwC/ANgA+AExAUEBUgFgAXgBfQLGAtggACAQIBggHCAiICYgLyBfIKwhIiIS4AD7Af///+P/wv/B/7//vP+4/7b/sP+v/67/ff9u/1//U/89/zn98v3i4MDgu+C44LfgtOCx4KngeuAu37neyiDdBd0AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhAHR1d3mBhouQj5GTkpSWmJeZmpybnZ6goqGjpaSop6mqAABkZQDWAI5qaNtsZwB2hwAAAABmAAAAAAAAAAAAlaZvYwAAAAAAAADXYnBzhbGyzs/T1NDRAACttQDaAADe3wBt0tUAcnpxe3h9fn98g4QAgomKiK64vmu6u7xuv725AACwACywABNLsCpQWLBKdlmwACM/GLAGK1g9WUuwKlBYfVkg1LABEy4YLbABLCDasAwrLbACLEtSWEUjWSEtsAMsaRggsEBQWCGwQFktsAQssAYrWCEjIXpY3RvNWRtLUlhY/RvtWRsjIbAFK1iwRnZZWN0bzVlZWRgtsAUsDVxaLbAGLLEiAYhQWLAgiFxcG7AAWS2wByyxJAGIUFiwQIhcXBuwAFktsAgsEhEgOS8tsAksIH2wBitYxBvNWSCwAyVJIyCwBCZKsABQWIplimEgsABQWDgbISFZG4qKYSCwAFJYOBshIVlZGC2wCiywBitYIRAbECFZLbALLCDSsAwrLbAMLCAvsAcrXFggIEcjRmFqIFggZGI4GyEhWRshWS2wDSwSESAgOS8giiBHikZhI4ogiiNKsABQWCOwAFJYsEA4GyFZGyOwAFBYsEBlOBshWVktsA4ssAYrWD3WGCEhGyDWiktSWCCKI0kgsABVWDgbISFZGyEhWVktsA8sIyDWIC+wBytcWCMgWEtTGyGwAVlYirAEJkkjiiMgikmKI2E4GyEhISFZGyEhISEhWS2wECwg2rASKy2wESwg0rASKy2wEiwgL7AHK1xYICBHI0ZhaoogRyNGI2FqYCBYIGRiOBshIVkbISFZLbATLCCKIIqHILADJUpkI4oHsCBQWDwbwFktsBQsswBAAUBCQgFLuBAAYwBLuBAAYyCKIIpVWCCKIIpSWCNiILAAI0IbYiCwASNCWSCwQFJYsgAgAENjQrIBIAFDY0KwIGOwGWUcIVkbISFZLbAVLLABQ2MjsABDYyMtAAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYALAEIEWwAytEsAkgRbIEeQIrsAMrRLAIIEWyCU8CK7ADK0SwByBFsgg6AiuwAytEsAYgRbIHJQIrsAMrRLAFIEWyBhACK7ADK0SwCiBFsgSYAiuwAytEsAsgRbIKLwIrsAMrRLAMIEWyCy4CK7ADK0SwDSBFsgwaAiuwAytEAbAOIEWwAytEsBEgRbIOGQIrsQNGditEsBAgRbIRDwIrsQNGditEsA8gRbIQPwIrsQNGditEsBIgRboADn//AAIrsQNGditEsBMgRbISVAIrsQNGditEsBQgRbITNgIrsQNGditEsBUgRbIUDgIrsQNGditEsBYgRbIVCgIrsQNGditEsBcgRbIWCQIrsQNGditEsBggRbIXBwIrsQNGditEWbAUKwAA/n8AAARgBeEAwwBgAKIArAC0ALoAywDbAOMA8gDPAF4AewCgAM8A3QDlATUBqgH6AkoAmgDSAJwAngDZAKUAvACQAHYASgAAAAAAAAAAAAAAAAA0AFIBKAGiAmIDCgMyA2gDngPSBBQEOgRYBHgErAUMBUIFlAY+BooHAgd4B6QIMAimCNAI/gkcCT4JXAmsCkwKkAr+C3ILvAv2DCoMsAzmDQQNNg2eDcQOQA6QDvAPMg+mEAQQgBCwEPYRLBGKEkwSihK+EuoTHhNQE3ATiBOiFCQUfhTSFS4VoBXsFrIW9hcgF2QXrBfKGDYYeBjoGUIZnBnOGkoamBrcGxIblBwYHFockBzwHQodah2yHbId5h40HuQfdB+iIF4gfCFCIWAhfCGaIcAiGiJoIrgjGCOSI/4khiT+JYAlyiYWJnAmyib0JxwnUieOJ/IofijoKVQpzipgKuwrqCvoLCgsfCzqLSQtbC3eLmwu+i+YMEww8DGwMnoy4jNiM+A0cDUENSY1RjV2NbQ2ODayNyA3jDgKOKA5KDoGOlg6qjsMO247uDwUPH48nDzePRI9fD4wPsQ/WD+0P/5ASEBuQJZAyEDqQTBBbkGsQdhB2EHYQdhB2EHYQdhB2EHYQdhB2EHYQfZCFEIyQlBCaEKQQrhC3kMkQ25DtkPgRBhEGEQYRMRFNEVQRV5FwEYkAAAAAgBKAAABOQXhAAMABwBAALIEAQArsQUM6bIAAwArAbAIL7AE1rAAMrEHE+mwATKzAgcECCuxAxDpsAMvsQIQ6bEJASsAsQAFERKwAjkwMRMzAyMDNTMVSu83gSvXBeH7tf5q4+MAAAABADkDugEQBeEAAwAfALIAAwArtAMNAAgEKwGwBC+wA9axAhHpsQUBKwAwMRMzAyM51x6aBeH92QAAAAACADEAAASgBeEAGwAfATsAshoBACuyFRYZMzMzsgcDACuyCAsMMzMztAABGgcNK7MCERwdJBczsQAE6bMUFxgbJBcytAUEGgcNK7MDEB4fJBczsQUE6bMGCQoNJBcyAbAgL7Aa1rEZDumwGRCxBwErsQgO6bAIELEWASuxFQ7psBUQsQsBK7EMDumxIQErsDYauj9a9uoAFSsKuj9r92UAFSsKsBoQswIaBxMrswMaBxMrswYaBxMrsBkQswkZCBMrsBYQswoWCxMrsBUQsw0VDBMrsxAVDBMrsxEVDBMrsxQVDBMrsBYQsxcWCxMrsBkQsxgZCBMrsBoQsxsaBxMrsBkQsxwZCBMrsBYQsx0WCxMrsx4WCxMrsBkQsx8ZCBMrA0AQAgMGCQoNEBEUFxgbHB0eHy4uLi4uLi4uLi4uLi4uLi6wQBoAMDETNzMTIzczEzMDIRMzAzMHIwMzByMDIxMhAyMTNyETITEbxiXEGsU5xTkBBDnFOsEbwCW+Gr87xTz++zvFPN8BBCX+/AG2wwECwgGk/lwBpP5cwv7+w/5KAbb+SgG2wwECAAEAJf8pAo8GXAAzAF4AAbA0L7AQ1rEdDumwACDWEbEBDumwHRCxMQErsBIysTAQ6bAUMrAwELEFASuwGDKxLQ7psBcysTUBK7EQABESsDM5sR0BERKwAjmxMDERErAKObEtBRESsCc5ADAxEzcWFzI3NC4EJy4CNRI3NTMVFhMHJiYHBgcUHgQXHgcVAgcVIzUmJcAMdVgFERYrGTcIREJLBNN7ySLABiwrUAQRFC0XOwkGNRQvFSEODATxe+wBZg26AbkdPTFIIkwMXGO4TgElMYN9F/79GTlGAgKgHT8tSiFUCgpMHEopRjVEHv6uH9ndKQAFADf/8AO0BfIAFAAYACYAOwBHAKsAshUBACuyOAEAK7Q+BQA1BCuyFgMAK7IHAwArtCIFADQEK7RDLjgHDSu0QwUAMwQrtBsSOAcNK7QbBQAzBCsBsEgvsADWsRkQ6bAZELEeASuxDBDpsAwQsScBK7E8EOmwPBCxQAErsTIQ6bFJASuxGQARErEDFTk5sB4RsxIHGyIkFzmwDBKxDhg5ObE8JxESsRYqOTmwQBGyOC5DOTk5sDISsRc0OTkAMDETETQ+AzMyFhcXERQOAyMiJxMBMwEDBjMyNjU1ETYjIgYVFQERND4DMzIXFxEUDgMjIiYnNwYXMicRNiMiBhUVNwIRHkItRlAEBAIRHkAtgRtjAimD/d11BCkQEwIlEhMBxQIQH0EufRwEAhAfPy1IUAR3BCklAwIkEhMDjwG1Bhg8LyVYKyv+SwYYPi0nh/yaBeH6HwOPNx0MDgG1NxsODvtaAbQGGT0tJ4cp/kwGGTswJFYtKzkBOgG0NxoPDgADADH/8AMtBfIAIwAuADwAlQCyIgEAK7AdM7EnBOmyDQMAK7E5B+kBsD0vsAXWsS8O6bAvELAkINYRsQAO6bAAL7EkDumwLxCxMwErtBEOADcEK7MXETMIK7EYEemwHDKxPgErsSQFERKxAyI5ObEzLxESsw0nKxMkFzmwFxGzFSAhKSQXObEYERESsBo5ALEnIhESsCA5sDkRtQADExwrMSQXOTAxEzQ2NyY1NTQ+BDMyFxYHFAMWFzY3FwYHFhcVIiYnBiAmNxYWMzI3JicOAhMUFzY3JjYuAiMiBhUxWFJqChApOFo5yzEOAs1MSCEOsBBMNyUXfjx7/v6u1QI3KztCWFYGEB0rN2QBAgQIDyAZJycBO3PHe+HZEgxEPkw3Jdc9NKL+8K5vYHMh1ZE/DetLQIvClEJUVoucCiV2AyJvh5xgAhstKR9MJQAAAAABAC0D9AEEBeEABgAuALIDAwArtAANAAkEKwGwBy+wANawAjKxBRPpsQUT6bEIASuxBQARErABOQAwMRMTIzUzFQMtSEjXcQP0AQrj4/72AAEAQv7XAggGNQAXABMAAbAYL7AB1rENDumxGQErADAxEhASNjY3NxcOAwIQEhYWFxcHLgNCO1hWHR6iCiNaRDc1TEwbGqIMJ2ROAfYBHgEr4LgvL1QONbC9/uH+5v7lxp4nJ1QSQMvTAAAAAAEAKf7XAfAGNQAXABMAAbAYL7AG1rESDumxGQErADAxFz4DEhACJiYnJzceAxIQAgYGBwcpCiNaRDc1TEwaG6IMJ2ROQDxYVh0e1Q42sLoBHwEaARvHnycnVBJAzNH+zv7i/tXfty8vAAAAAAEASgPnAlwF4QAOACoAsgMDACu0DA0ACQQrsAoyAbAPL7AA1rEHF+mxEAErALEDDBESsAs5MDETNxcnMwc3FwcXBycHJzdKK6QTmhOkK6xzg05Mg3ME45RGsLBGlCKKUJiYUIoAAAAAAQBKAS8D2wSPAAsAUgCwAC+wBzOxAQfpsAUysgABCiuzQAAKCSuyAQAKK7NAAQMJKwGwDC+wCtawAjKxCRHpsAQysgkKCiuzQAkHCSuyCgkKK7NACgAJK7ENASsAMDETNSERMxEhFSERIxFKAXKsAXP+jawCiawBWv6mrP6mAVoAAAAAAQAt/vYBBADjAAYALACwBS+0AQ0ACQQrAbAHL7AF1rAAMrEDE+mxAxPpsQgBK7EDBRESsAY5ADAxMzUzFQMjEy3XcWZI4+P+9gEKAAEASgHHAXMCiQADACIAsAAvsQEE6bEBBOkBsAQvsADWsQMV6bEDFemxBQErADAxEzUhFUoBKQHHwsIAAAEANQAAAQwA4wADACkAsgABACuxAQzpsgABACuxAQzpAbAEL7AA1rEDE+mxAxPpsQUBKwAwMTM1MxU11+PjAAABAAj/bQLJBeEAAwBJALIBAwArsAIzAbAEL7AA1rEDEemwAxCxAQErsQIR6bEFASuwNhq6PN3sNwAVKwoEsAEQsADAsAIQsAPAArEAAy4usEAaAQAwMRcBMwEIAh+i/eeTBnT5jAAAAAIARP/wApEF8gAXACcARACyEwEAK7EcC+myBwMAK7EkC+kBsCgvsADWsRgT6bAYELEfASuxDRPpsSkBK7EYABESsQYTOTmxDR8RErEHEjk5ADAxExE0PgMyHgIXFxEUDgMiLgInNxQWFjI2NTcRNCYmIgYVB0QEHjh5p3k4HgICBB44ead5OB4C2wIlRSUCAiVFJQIBNQN3DC1xVkZEXmAjIfyJDC1xVkVDYF8gIwwlPTcdGgN3DCU+OBodAAAAAAEAGQAAAYkF4QALAD4AsgoBACuyBwMAK7QBAAoHDSu0AQYAGwQrAbAML7AK1rEJE+myCgkKK7NACgAJK7ENASuxCQoRErAHOQAwMRM1PgM3NzMRIxEZM1YzIwYGhd0EnI0KLTMwEA76HwScAAEANwAAAo8F8gAUAF0AsgABACuxEgvpsg8DACuxCQrpsgkPCiuzQAkMCSsBsBUvsAzWsAAysQsT6bALELEHASuxEBPpsBMysRYBK7ELDBESsAM5sAcRsBI5ALESABESsAE5sAkRsBA5MDEzNT4DEjc0IhUVIzUQIBEQASEVNw4yf2JUApPeAk7+pgFe2xdN5NUBDme4uGlpAYX+if6w/bDbAAAAAQAt//ACeQXyAEAApwCyFwEAK7EhBOmyIRcKK7NAIR0JK7IGAwArsT0E6bI9Bgors0A9QAkrtC8uFwYNK7EvCekBsEEvsALWsQAdMjKxQA7psB4ysEAQsSMBK7ERE+mwERCwDCDWEbE2E+mwNi+xDBPpsUIBK7FAAhESshsuLzk5ObA2EbUXBiEpKj0kFzmwIxKwJzmwDBGxDyY5OQCxLiERErARObAvEbAPObA9ErAMOTAxEzQ+AzMyHgMVEAcHFhEUDgMjIi4DNTMWFjMyNjU0Ni4FJyM1PgU9AjQuAiMiBgctBB85b1BOcjchBmoCfwYhN3NOUHA8IwbZAh8rLRkCAgYNGCM3IxMlMycXDAYCDB8YKRcCBC9GWo1UQj5QaDcX/t1qAmT+xhlDg2VNP1iJYz+WamVaEmAdRhYrDxACuAILEhkiLR0+Ky0vRSFingAAAAIAGQAAAqAF4QAKABAAWACyCQEAK7ICAwArtAoLCQINK7AEM7EKBOmwBjIBsBEvsAnWsAwysQgO6bADMrIICQors0AIBgkrsgkICiuzQAkACSuxEgErALELChESsAE5sAIRsA45MDETNQEzETMVIxEjESczETUjBxkBQ91nZ8qamg0MAUjCA9f8KcL+uAFIwgHXLS0AAAAAAQBK//ACiwXhACUAgQCyIAEAK7EFBOmyBSAKK7NABQAJK7IQAwArsRML6bQYCyAQDSuxGArpsgsYCiuzQAsPCSsBsCYvsA/WsAAysRQO6bAOMrIUDwors0AUEgkrsA8QsQIT6bAUELEIASuxHhPpsScBK7EUDxESsCQ5sQgCERKwIDkAsRgLERKwFDkwMRMzFRQWMzI2NRE0ByIGFSMRIRUhET4CFzIeAhURECEiLgNK3R0mJR9GITW6Ahf+qAgaRBlObisO/t9ObjshCAG2O3NYWm8BUG8BUB4DGNv+xwYSHQJQd1Ie/rD+dztUhWgAAgBC//ACgwXyAB0AKgBrALIaAQArsSEE6bIDAwArsQkE6bIJAwors0AJBgkrtA8oGgMNK7EPB+kBsCsvsADWsR4T6bAMMrAeELEkASuwBjKxFRPpsAQysSwBK7EeABESsBo5sCQRsA85sBUSsBk5ALEPKBESsA05MDETERAkERUjNCYjIgYVETYzMh4CFREUDgIiLgIXFBYzMjY1ETQmIgYHQgJB3RctJxw7M1BrLQ4QNH69fzMQ3SMgHyUlPSMCATUDWAFkAf6bXqJgSlr+9CVIclkr/s0pVnlNTXlWGBQwMRMBwhIyKRUAAAABAAgAAAI1BeEABgA0ALIFAQArsgEDACuxAAvpAbAHL7AF1rEEFOmyBAUKK7NABAMJK7EIASuxBAURErAGOQAwMRM1IRUDIxMIAi3d5eEFBtvd+vwFBgAAAwA1//ACgwXyACEALQA4AHgAsh0BACuxJQrpsgwDACuxNgTptDEsHQwNK7ExC+kBsDkvsAXWsAAysS4T6bEiE+mwLhCxKQErsDMysRcT6bARMrE6ASuxIgURErIDCB05OTmwLhGwCzmwKRKyDCUsOTk5sBcRsg8UHDk5OQCxMSwRErEUAzk5MDETNTQ3JjU1ND4DMh4DFRUUBxYVFRQOAyIuAzcWFjMyNjY1NCYiBhMUFjI2NTQmIyIGNXNmBCA2cpxzNSEEZ3MEITl3pHc5IQTXAh8vJSMIG2obDxhSGRkpJRoBQrC8bWaufxc1alA+PlBqNRd/rmZtvLAZN29SQUFSbzdxf2E8UlKYcnICLn9kZH9xXlgAAAIAOf/wAnsF8gAdACoAawCyHQEAK7EFBOmyBR0KK7NABQEJK7IWAwArsScE6bQLIR0WDSuxCwfpAbArL7AA1rAQMrECE+mwHjKwAhCxCAErsCMysRsT6bEsASuxAgARErAVObAIEbALObAbErAWOQCxIQsRErAJOTAxEzUzFBYzMjY1EQYjIi4CNRE0PgIyHgIVERAgExQWMjY3ETQmIyIGFTneFi0nHTs0UGotDxEzf7x/MxH9vt4kPiMCIyEfJAFUXqJgSloBGyVHc1grASUpVnlOTnlWKfyo/pwDSRIxKRQBuxQvMRIAAAAAAgBKAAABIQRgAAMABwAvALIAAQArsQEM6bIFAgArsQQM6QGwCC+wANawBDKxAxPpsAYysQMT6bEJASsAMDEzNTMVAzUzFUrX19fj4wN94+MAAAAAAgBK/vYBIQRgAAYACgAwALIIAgArsQcM6QGwCy+wBdaxAAcyMrEDE+mwCTKxAxPpsQwBK7EDBRESsAY5ADAxMzUzFQMjEwM1MxVK13FmR0fX4+P+9gEKA33j4wABAEoArgPZBQQABgATAAGwBy+wANaxBA7psQgBKwAwMRM1ARUBARVKA4/9RgK6AomgAdvH/pz+nMcAAAACAEoB3QPZBAwAAwAHABoAsAAvsQEH6bAEL7EFB+kBsAgvsQkBKwAwMRM1IRUBNSEVSgOP/HEDjwHdrKwBg6ysAAAAAAEASgCuA9kFBAAGABMAAbAHL7AC1rEGDumxCAErADAxNzUBATUBFUoCuv1GA4+uxwFkAWTH/iWgAAAAAAIAGQAAAlwF7AAfACMALQCyBQMAK7EcBOkBsCQvsBLWsCAysREO6bAhMrARELEZCyuxCg7psSUBKwAwMRM+AxceAxUUBw4CFREjETQ2Njc2NzYmIyYGBwMzNSMZDCtMdEJScDQUUCckML4xLykrCgYiJy9GDgTX1wTsIUdcPAMCP2RSJ1KJP0CWRf8AAQBmul5GSCkbQwJiMfto4wAAAAACAEL/8AMvBfIALQA3AKQAsikBACuxJAbpsgYDACuxHgfptBEwKQYNK7QRBgAbBCu0FjUpBg0rtBYGABsEKwGwOC+wANa0IQ4ANwQrsCEQsRMBK7EuEemwLhCxMgErsBoytAsOADcEK7E5ASuxEyERErEFHjk5sC4RsxEWJCkkFzmwMhKzBg0dJiQXObALEbAnOQCxJCkRErAnObAREbAmObAwErELDTk5sRY1ERKwGjkwMRMRND4CMh4CFREjJw4CIyI1ETQzMhYXFzU0JiIGFREUFjMyNxcGIyIuAgEUMzI1ETQjIhVCIk6c1ZtOI6QUBA87I5GRIzkLClrJWlhmdTOYbdNqnE4iAdUvMTEvAS8DeStmb0pKb2Yr/Oc4CBclrAHlqiIREC0za2sz/Ic1ZD9Wj0dtYgE3NTUBxzU1AAIAFAAAAukF4QAHAA0ASwCyAAEAK7ADM7IBAwArtAYIAAENK7EGDOkBsA4vsADWsQcT6bAHELEEASuxAxPpsQ8BK7EEBxESswIBCAkkFzkAsQEIERKwCzkwMTMTIRMjAyMDEzMDJyMHFOQBDuPXKdUoR5hABgwGBeH6HwEz/s0CHQHbJycAAAADAFIAAAK4BeEAEAAbACcAZwCyEAEAK7ERC+myAgMAK7EnC+m0HBsQAg0rsRwK6QGwKC+wANaxERPpsBwysBEQsRUBK7AhMrEOFOmxBQ7psSkBK7EVERESsBA5sAURsAg5ALEbERESsA45sBwRsAg5sCcSsAU5MDEzETMyFhUUBgceBBUQBScyNzY1NC4CIyM1Mj4DNC4DI1LCzcc7TgYUNikg/qozSiM3ITslGwgXFjogHR0gOhYXBeG22WqKQwIPN0yJVP5iDNsfN5JSaCUIywISJ1J3UicSAgAAAQBE//ACkQXyAC0AZgCyKQEAK7EcC+myHCkKK7NAHCEJK7IHAwArsRUL6bIVBwors0AVDQkrAbAuL7AA1rEYE+mwGBCxHwErsA4ysSMO6bAMMrEvASuxGAARErEGKTk5sB8RsgcVKDk5ObAjErAKOQAwMRMRND4DMh4CFxcVIzUiNi4CIwYHERQWFjMyNj0CMxUUDgMiLgInRAQeOHmneTgeAgLOAgQLDiMaRggEJyMpK84EHjh5p3k4HgIBNQN3DC1xVkZEXmAjIc/PFyAhFwpl/IkMJT03HRrPzwwtcVZFQ2BfIAAAAAIAUgAAArgF4QARAB0AOgCyEQEAK7ESC+myAgMAK7EdC+kBsB4vsADWsRIT6bASELEWASuxCxTpsR8BKwCxHRIRErEKCTk5MDEzETMyHgUQDgUjNzI3NhE0NDUQJyYjUq5af2I+JxIGBhInPmJ/Wi91GBcXGXQF4RgrXGO0rv7lrrJiXCsZ3VFLAUEbORsBQklQAAABAFIAAAJMBeEACwBFALIAAQArsQkM6bIBAwArsQQM6bQFCAABDSuxBQ3pAbAML7AA1rELF+mwAjKxCRPpsAQysQcW6bELF+mwAzKxDQErADAxMxEhFSERMxUjESEVUgH6/uPNzQEdBeHj/nXy/mLjAAAAAAEAUgAAAmAF4QAJAEAAsgABACuyAQMAK7EEDOm0BQgAAQ0rsQUM6QGwCi+wANaxCRPpsAQysgkACiuzQAkDCSuzQAkHCSuxCwErADAxMxEhFSERMxUjEVICDv7Pzc0F4eP+deT9cQAAAQBD//ACkQXyACwAiwCyJAEAK7InAQArsRsE6bIHAwArsRML6bITBwors0ATDgkrtCAhJwcNK7EgCekBsC0vsADWsRcT6bAXELEeASuwDjKxIxPpsAwysCMQsSAV6bAgL7EuASuxFwARErAGObAgEbITGic5OTmwHhKxEhs5ObAjEbEHJTk5ALEbJBESsCU5sCARsCs5MDETETQ+AzIeAhcXFSM1NCYmIgYVBxEUFhYyNjU3ESM1IREjJwYjIicmNTREBB44ead5OB4CAt0CJUUlAgIlRSUCWAE1gxpGZssvCwE1A3cMLXFWRkReYCMh5+cMJT44Gh38dwwlPjgaHQEQu/0SSFjVMCkMAAEAUgAAArgF4QALAD8AsgABACuwBzOyAQMAK7AFM7QDCgABDSuxAwzpAbAML7AA1rELE+mwAjKwCxCxCAErsAQysQcT6bENASsAMDEzETMRMxEzESMRIxFS3azd3awF4f2SAm76HwKP/XEAAAEAUgAAAS8F4QADACEAsgABACuyAQMAKwGwBC+wANaxAxPpsQMT6bEFASsAMDEzETMRUt0F4fofAAAAAAEADP/wAWAF4QAPACwAsgABACuxAQvpsggDACsBsBAvsAfWsQoT6bIHCgors0AHAAkrsREBKwAwMRc1MhY+AjURMxEUBwYnIgwEESkeG91PRpgTDtkCBhIzJQSo+zaJVEoBAAABAFIAAALsBeEAEQCNALIAAQArsQoLMzOyAQMAK7AHMwGwEi+wANaxERPpsAIysBEQsQsBK7EKE+mxEwErsDYausGZ8coAFSsKDrALELANwLAKELAJwLANELMMDQsTK7IMDQsgiiCKIwYOERI5ALIJDA0uLi4BsgkMDS4uLrBAGgGxCxERErAHObAKEbAIOQCxAQARErAEOTAxMxEzERUzNxMzAxMjAycjBwcRUt0IC7jXy+bYmQYGDTMF4f4LGRkB9f4R/A4Cjx8fe/3sAAAAAQBSAAACVAXhAAUALACyAAEAK7EDCumyAQMAKwGwBi+wANaxAxPpsgMACiuzQAMFCSuxBwErADAxMxEzESEVUt0BJQXh+uzNAAAAAAEAUgAAA40F4QAVAKwAsgABACuxCQ8zM7IBAwArsAczAbAWL7AA1rEVDumwFRCxEAErsQ8P6bAPELEKASuxCQ7psRcBK7A2GrrAmfdIABUrCg6wEhCwEcCxAxv5sATAuj+B+BAAFSsKDrAFELAGwLEOHPmwDcAAtwMEBQYNDhESLi4uLi4uLi4BtwMEBQYNDhESLi4uLi4uLi6wQBoBsRAVERKwAjmxCg8RErAHOQCxAQARErAMOTAxMxEhExczNxMhESMRNSMHAyMDJyMVEVIBDoMLBAqDAQ7MDQiNXo4IDAXh/VBQUAKw+h8DskBA/E4DskBA/E4AAQBSAAAC1wXhAA8AZgCyAAEAK7AJM7IBAwArsAczAbAQL7AA1rEPDumwAjKwDxCxBQErsAoysQkO6bERASuwNhq6wkfvEwAVKwoOsAwQsAvAsQMZ+bAEwACzAwQLDC4uLi4BswMECwwuLi4usEAaAQAwMTMRMxMXMzURMxEjAycjFRFSxdcSDMvF1xIMBeH88EZGAxD6HwMQRkb88AAAAAIARP/wApEF8gAXACcARACyEwEAK7EcC+myBwMAK7EkC+kBsCgvsADWsRgT6bAYELEfASuxDRPpsSkBK7EYABESsQYTOTmxDR8RErEHEjk5ADAxExE0PgMyHgIXFxEUDgMiLgInNxQWFjI2NTcRNCYmIgYVB0QEHjh5p3k4HgICBB44ead5OB4C2wIlRSUCAiVFJQIBNQN3DC1xVkZEXmAjIfyJDC1xVkVDYF8gIwwlPTcdGgN3DCU+OBodAAAAAAIAUgAAArQF4QAIAA8ASgCyAAEAK7ICAwArsQ8M6bQHCQACDSuxBwzpAbAQL7AA1rEIE+mwCTKwCBCxDAErsQUT6bERASsAsQkHERKwBTmxAg8RErAEOTAxMxEzMhYQBiMRETI2NTQmI1Ldpt/fpmZAQmQF4dP+IdX9pgM7W4GDZgAAAAIARP+NArwF8gAbACsAYgCyFgEAK7EgC+mzESAWCCuxEgnpsgcDACuxKAvpAbAsL7AA1rEcE+mwHBCxIwErsQ0T6bEtASuxHAARErEGGjk5sCMRsBY5sA0SsgcPFDk5OQCxERYRErAUObAgEbAPOTAxExE0PgMyHgIXFxEUBxYXFSInBiMiLgInNxQWFjI2NTcRNCYmIgYVB0QEHjh5p3k4HgICLSE3oEM3OFR4OB4C2wIlRSUCAiVFJQIBNQN3DC1xVkZEXmAjIfyJXlgrCr11EkNgXyAjDCU9Nx0aA3cMJT44Gh0AAAACAFIAAAK6BeEACwAVAG4AsgABACuxBwgzM7ICAwArsRUL6QGwFi+wANaxCxPpsAwysAsQsREBK7AIMrEEDumxBxPpsRcBK7A2GrrBBvSYABUrCg6wCBCwCcCwBxCwBsAAsQYJLi4BsQYJLi6wQBoBALEVABESsQQMOTkwMTMRMyAREAcTIwMjEREyPgI0LgIjUt0BeXuN3XM7Hys7Hx87Kx8F4f5O/v5U/ScCe/2FA0gKJ2KYYicKAAAAAAEAJf/vApoF8gAzAGYAsi4BACuxAwrpshIDACuxHQrpAbA0L7AP1rEfE+mwACDWEbEBE+mwHxCxBQErsBsysSwT6bAaMrE1ASuxHwERErAKObAFEbIDFB05OTmwLBKwJzkAsR0DERK1AAEPGhssJBc5MDETNxAzMjc0LgMnLgI1NDY3MjMyFx4CFQc0IwYXFB4GFx4CFRAlIi4DJdloWgERLxtPCUJJP4+RBQVYPkI7GdlZTAEIDBkQJxIwCEo9SP7MUnhEJwwBphT/AKYdPVYpdQ5gfK5Li9QCIyWBfUoU2QKUEisjMx07G0MNb2K0TP6FATNMenEAAQAEAAACgwXhAAcAOgCyBgEAK7IBAwArsQAM6bADMgGwCC+wBtaxBRPpsgUGCiuzQAUDCSuyBgUKK7NABgAJK7EJASsAMDETNSEVIxEjEQQCf9HdBP7j4/sCBP4AAAAAAQBQ//ACngXhABcAPwCyEwEAK7EHC+myAQMAK7ALMwGwGC+wANaxAxPpsAMQsQoBK7ENE+mxGQErsQMAERKwEzmxDQoRErASOQAwMRMRMxEUFhYyNjU3ETMRFA4DIi4CJ1DdAiVGJAPdBB83eah5Nx8CATUErPtUDCU9Nx0aBKz7VAwtcVZFQ2BfIAABABIAAAK6BeEACQA9ALIJAQArsgADACuwBjMBsAovsADWsQET6bABELEGASuxBxPpsQsBK7EGARESsQgJOTkAsQAJERKwAzkwMRMzExczNxMzAyMS128IDQhu1+XdBeH8xUBAAzv6HwAAAAABABkAAAP0BeEAFQBpALIVAQArsA4zsgADACuxBgwzMwGwFi+wANaxAQ7psAEQsQYBK7EHEemwBxCxDAErsQ0O6bEXASuxAQARErAVObAGEbAUObAHErEREjk5sAwRsA85sA0SsA45ALEAFRESsgMJETk5OTAxEzMTFzM3EzMTFzM3EzMDIwMnIwcDIxnMWAUQBl6gXgYRBFjNy6xmDQgMZ6wF4fzyMTEDDvzyMTEDDvofAslYWP03AAAAAAEAEAAAAtEF4QARAT4AsgABACuyCwwRMzMzsgIDACuyAwgJMzMzAbASL7AA1rACMrERE+mwAzKwERCxDAErsAgysQsT6bAJMrETASuwNhq6PP/soQAVKwq6wvXsxgAVKwq6wxPsaAAVKwuwAhCzAQIMEyuxAgwIsAAQswEACBMrusMQ7HEAFSsLsAMQswQDCxMrujzt7GgAFSsLsAAQswcACBMrusMQ7HEAFSsLsAMQswoDCxMrsQMLCLARELMKEQkTK7rDE+xoABUrC7ACELMNAgwTK7o87exoABUrC7ARELMPEQkTK7MQEQkTK7IHAAggiiCKIwYOERI5shARCRESObAPObIEAwsgiiCKIwYOERI5sg0CDBESOQC2AQQHCg0PEC4uLi4uLi4BtgEEBwoNDxAuLi4uLi4usEAaAQCxAgARErEFDjk5MDEzEwMzExczNxMzAxMjAycjBwMQ9PDaeAcIBnnZ8PTZfwQIBX8DFwLK/oMSEgF9/Tb86QHBEhL+PwABAA4AAAKuBeEACwBIALIKAQArsgADACuwBjMBsAwvsADWsQET6bABELEKASuxCRPpsAkQsQYBK7EHE+mxDQErsQkKERKxAwQ5OQCxAAoRErADOTAxEzMTFzM3EzMDESMRDtlvBgQGb9nh3QXh/h8ODgHh/KD9fwKBAAAAAQAUAAACXgXhAAkAOwCyAAEAK7EHC+myBAMAK7EDC+kBsAovsQABK7EJGOmwBTKxCwErsQkAERKwBzkAsQMHERKxAQY5OTAxMzUBITUhFQEhFRQBW/7XAhj+oAFg7gQY29v71dsAAAABAFL/KwHhBeEACAAzALIFAQArsQgE6bIBAwArsQQE6QGwCS+wCNaxBxbpsAIysQUO6bEGFumwAzKxCgErADAxFxEhFSMRMxUhUgGPysr+cRAF8cT608UAAQAI/0wDEAacAAMATQABsAQvsADWsQER6bABELEDASuxAhHpsQUBK7A2GrrDIew7ABUrCgSwAC6wAi6wABCxARn5sAIQsQMZ+QKzAAECAy4uLi6wQBoBADAxEzMBIwiiAmaoBpz4sAABADn/KwHJBeEACAA8ALIAAQArsQgE6bIEAwArsQME6QGwCS+wCNawAzKxBxbpsAcQsQEO6bABL7AHELEAFumwAC+xCgErADAxFzMRIzUhERUhOcvLAZD+cBAFLcT6D8UAAAAAAQA1AykEGQXhAAYAFQCyAQMAK7EFBukBsAcvsQgBKwAwMRMBMwEjAQE1AX3qAX3H/tX+1QMpArj9SAIf/eEAAAEASv66BHH/ZgADABcAsAMvsQAH6bEAB+kBsAQvsQUBKwAwMRchFSFKBCf72ZqsAAEBJQUZAmYF0QADABoAsAMvsQEJ6QGwBC+wANaxAhXpsQUBKwAwMQEzFyMBJddqnwXRuAACADH/8AJoBHEAJQAtAIAAsh0BACuyIwEAK7EoCumyFQIAK7EKCOmyChUKK7NAChEJK7EgIxAgwC+xKAXpAbAuL7AA1rEmDumwESDWEbEQDumwJhCxHwErsQYrMjKxGg7psS8BK7EmERESsCM5sR8QERKyBRUgOTk5sBoRsB05ALEKKBESswAYGiwkFzkwMRM0PgM3NTU0IyIOAhUVIzU0NjMyFhURERQXIyYnIwYGIyImNxQXMjY1EQYxRGJiTgQ5FBkKBM+hdWaWDsoSAQ4UWzc7a8s5IzOPAQRqolY8KRAlVmYSLxsiJy97sJRq/qH+r21WFEYlRXi7aAEnHQEfPgAAAAIAUv/wAmQF4QARAB0AWQCyAAEAK7IMAQArsRUE6bIBAwArsgUCACuxGwTpAbAeL7AA1rERDumxAhIyMrARELEXASuxCQ7psR8BK7EJFxESsQUMOTkAsRUAERKwEDmxBRsRErADOTAxMxEzETYzMhYVERQGIyImJycVNRQWMjY1ETQmIgYVUs9YTE5RUk0hUhkYJy0hIS0nBeH+NlqKUf01UoktFhdK9h0nJx0CdB0nKxkAAAEAQv/vAlQEcQAbAFQAshoBACuxEQnpshEaCiuzQBEVCSuyAwIAK7EMCemyDAMKK7NADAgJKwGwHC+wANaxDw7psA8QsRQBK7AIMrEXDumwBjKxHQErsRQPERKwAzkAMDETERAhMhYVFSM1NCYjIgcRFDMyNjU1MxUUBiMEQgEIiYHPGCM5ATojGM+Bif74ATsB6gFMjrRYhzMnWv2kWicznG20jQEAAAIASv/wAlwF4QARAB0AWQCyDAEAK7IPAQArsRUE6bIJAwArsgQCACuxGwTpAbAeL7AA1rESDumwEhCxDAErsQgXMjKxCw7psR8BK7ESABESsQQPOTkAsRUMERKwDTmxBBsRErAIOTAxNxE0NjMyFhcXETMRIzUGIyImNxQWMjY1ETQmIgYVSlJNIVIZGM/PWExOUc8gLScnLSDLAstSiS0XFgHK+h9KWol9HScnHQJ0GSsnHQAAAAACAEL/8AJYBHEAJAAvAFkAsh8BACuxFAjpshQfCiuzQBQXCSuyBwIAK7ErCOm0JQ0fBw0rsSUG6QGwMC+wANaxDg7psCUysA4QsRYBK7AmMrEZDumwCzKxMQErsRYOERKxBx85OQAwMRMRND4DMzIXFhURIRUVFB4CMzY3NTMVFA4DIyIuAicTMzU0JiYjIgYHB0IEHDRuSsc1Dv6qCA8gFUYEwAQdMW5MSm8xHAK+lgIlIyEnAgIBFwIzDCdmTkDFMyn+uvMNCCcdGApneoEMJ2JOPT1WVh8BtJ4MJz85HRwAAAABABQAAAHLBekAGABMALIXAQArsgoDACuxDgnpsgECACuwEjOxAAnpsBQyAbAZL7AX1rACMrEWDumwEDKyFhcKK7NAFhQJK7IXFgors0AXAAkrsRoBKwAwMRM1MzU1ND4DMxcVJiMiFxUVMxUjESMRFGkEGS1gQ2EbI0IBaGjPA6a6EQ4zQnZGOQ6yCLQQDbr8WgOmAAAAAAMADP5vAroEcQA0AD8AVQCbALISAgArsBYzsVAE6bAXMrAyL7E3B+mwIS+xQwfpAbBWL7AL1rAEMrFVDumwJTKwACDWEbE1DumwVRCxRQErsRsO6bM6G0UIK7EvDumwFjKxVwErsTULERKxBwI5ObFFVREStSEjKT4SUCQXObEbOhESsRQZOTkAsSE3ERK1AAQlLzU+JBc5sEMRsAc5sFASsBk5sBIRsBQ5MDEXNDcmNTQ2NyYmJycRND4DMzIXNjcVIgcXERQOAyMiJwYVFB4CFx4DFRQGIyYmNxQ3MjY1NCYnJwYTFBYzNjURJjQ2NTQnLgIjIgYVFREMon1QMTM7BQQEHTFtSIdHZkRIMAoEHzFtSRsMHRY+HS05WFozzpSkqMmHO2MpRmpMMR8dPwECAwQKGxQdH7heTCNyLWAbI3ktKwExDCViTD5nZgG5GEb+wwonX0k8AhkaEBkQBAkIGjhkRpiGBGCXTgEnJCEjDBUsAlwROAZfATMBBQoBCAsPHxQzGxj+zQAAAAEAUgAAAmQF4QASAEcAsgABACuwCzOyAQMAK7IHAgArsQ8K6QGwEy+wANaxEg7psAIysBIQsQwBK7ELDumxFAErsQsMERKwBzkAsQcPERKwAzkwMTMRMxE3NjYzMhYVESMRNCMiBxFSzyAeSSFMT84yKRoF4f4hIB4xilH8agN3MTX8jQAAAAACAFIAAAEhBeEAAwAHADAAsgABACuyBQMAK7EECumyAQIAKwGwCC+wANawBDKxAw7psAYysQMO6bEJASsAMDEzETMRAzUzFVLPz88EYPugBRLPzwAC/9P+fwEbBeEAFAAYADgAshAAACuxAgTpshYDACuxFQrpsggCACsBsBkvsATWsBUysQoO6bAXMrEaASsAsQIQERKwFDkwMQcWMzI1NDQ1ETMRFA4DIyImJycTNTMVLR0cQM8EGS1gRB0tCAh5z7YIjgMPAwR7+4MzQXNGNwYCBAaHz88AAAAAAQBSAAACfQXhABEATQCyAAEAK7AKM7IBAwArsgcCACsBsBIvsADWsREO6bACMrARELELASuxCg7psRMBK7ELERESsAc5sAoRsQkIOTkAsQcAERKxBA05OTAxMxEzERUzNxMzAxMjAycjBwcRUs8KDGW6lbzHZgQKBxoF4f1aJCQBJf6U/QwBxRAQQv59AAAAAQBSAAABIQXhAAMAIQCyAAEAK7IBAwArAbAEL7AA1rEDDumxAw7psQUBKwAwMTMRMxFSzwXh+h8AAAAAAQBSAAADsARxAB8AewCyAAEAK7ERGDMzsgECACuyBwIAK7ANM7EcCumwFTKxAwcQIMAvsRwF6QGwIC+wANaxHw7psAIysB8QsRkBK7EYDumwGBCxEgErsREO6bEhASuxGR8RErAFObAYEbEJBzk5sRESERKwDTkAsQMcERKwCTmwARGwBTkwMTMRMxUyNjYzMhc+AjMyFhURIxE0IyIHESMRNCMiBxFSzwI9TCFkJwROSiBMUMI4KSXCNyklBGBePTJ9BEovilH8agN3MTX8jQN3MTX8jQAAAQBSAAACZARxABIARwCyAAEAK7ALM7IBAgArsgcCACuxDwrpAbATL7AA1rESDumwAjKwEhCxDAErsQsO6bEUASuxCwwRErAHOQCxAQ8RErADOTAxMxEzFTc2NjMyFhURIxE0IyIHEVLPIB5JIUxPzjIpGgRgXiAeMYpR/GoDdzE1/I0AAgA///ACUgRxABcAMQBMALISAQArsR4I6bIHAgArsSsI6QGwMi+wANaxLg7psC4QsSABK7AlMrEMDumxMwErsS4AERKwAzmwIBGzEgciIyQXObAMErAOOQAwMRMRND4DMzIXFhURFA4DIyIuAjU3FBceAjM2NxEiNzY1NCcuAiMGBxEWFAY/Axwxb0rHNQ4CHTNtS0pvMRy/AwQMHxVGAQICAQMEDB8WRAIBAgEXAjMMJ2ZOQMUzKf3ADCdiTj09VlYfCwkLESIWCmcCMwsEBAkMESEYCmj9zQEGDAAAAAACAFL+fwJkBHEAEQAdAFcAsgwBACuxFQTpsgECACuyBQIAK7EbBOmwAC8BsB4vsADWsREO6bECEjIysBEQsRcBK7EJDumxHwErsQkXERKxBQw5OQCxFQwRErAQObEBGxESsAM5MDETETMVNjMyFhURFAYjIiYnJxERFBYyNjURNCYiBhVSz1hMTlFSTSFSGRgnLSEhLSf+fwXhSVqKUf01UoktFhf+NQJ3GSsnHQJ0HScnHQACAEr+fwJcBHEAEQAdAFcAsg8BACuxFQTpsgkCACuyBAIAK7EbBOmwDC8BsB4vsADWsRIO6bASELEMASuxCBcyMrELDumxHwErsRIAERKxBA85OQCxFQ8RErANObEJGxESsAg5MDE3ETQ2MzIWFxc1MxEjEQYjIiY3FBYyNjURNCYiBhVKUk0hUhkYz89YTE5RzyAtJyctIMsCy1KJLRcWSfofActaiX0dJysZAnQdJycdAAABAFIAAAHwBHEADgAxALIAAQArsgECACuyBgIAK7EJC+kBsA8vsADWsQ4O6bACMrEQASsAsQEJERKwAzkwMTMRMxU2NjMVJiMiBwYVEVLPCGRjIh44Ki0EYH0pZeYLJSk+/PYAAQAl//ACTgRxACsAegCyJgEAK7EDB+myAyYKK7NAAwAJK7IQAgArsRsH6bIbEAors0AbGQkrAbAsL7AL1rEdDumwACDWEbEBDumwHRCxBQErsBkysSMO6bAYMrEtASuxAQsRErAIObEFHRESswMHEiYkFzmwIxGwITkAsRsDERKxCyI5OTAxEzMUMzInNCcuAjU0PgI3MjMyFx4CFSM0IwYHFBYWFxYXFAYjIi4DJcBhSAGBRD1DGDZmSAYFTjU4MRHBQz8BLystvgGBh0htPSUKAUaqh0p8QkKJTDdiXDgCGhxmWDuDAoEhUC0rtqB7uDFHY1AAAAABABT/8AHZBXUAFgBVALIPAQArsQsK6bIBAgArsAUzsQAJ6bAHMrIBAAors0ABBAkrAbAXL7AV1rACMrEJDumwBDKyCRUKK7NACQcJK7AMMrIVCQors0AVAAkrsRgBKwAwMRM1MxEzETMVIxEUMzcVBiMiLgM1ERRpz42NQUwtQkRfLRkEA6a6ARX+67r907gIyw45SHhGOQI+AAABAE7/8AJgBGAAEgBHALILAQArshABACuxBQrpsgECACuwCDMBsBMvsADWsQMO6bADELELASuwBzKxCg7psRQBK7EDABESsBA5ALEFCxESsAw5MDE3ETMRFDMyNxEzESM1BwYGIyImTs8xKRrPzx8eSiFMT8sDlfyJMTYDcvugXiAeMIkAAAAAAQAQAAACSgRgAAkAPQCyCQEAK7IAAgArsAYzAbAKL7AA1rEBDumzCQEACCuxCA7psAEQsQYBK7EHDumxCwErALEACRESsAM5MDETMxMXMzcTMwMjEMlECBAIRMm3zARg/XdISAKJ+6AAAAAAAQAUAAADdQRgABUAsQCyFQEAK7AOM7IAAgArsgYMDTMzMwGwFi+wANaxAQ7psAEQsQYBK7EHEOmwBxCxDAErsQ0O6bEXASuwNhq6P4H4EAAVKwoOsAwQsArABbANELAOwLo/mfjZABUrC7AKELMLCgwTK7ILCgwgiiCKIwYOERI5ALEKCy4uAbIKCw4uLi6wQBoBsQEAERKwFTmwBhGwFDmwBxKxERI5ObAMEbAPOQCxABURErIDCRE5OTkwMRMzExczNxMzExczNxMzAyMDJyMHAyMUvUEJDApWe1YKDQhBvaasUAoIC1CsBGD9t0BAAkn9t0BAAkn7oAIXPz/96QAAAAABABAAAAJaBGAAEQC/ALIAAQArsQsRMzOyAgIAK7IDCAkzMzMBsBIvsALWsQMO6bARMrADELEADumwAC+wAxCxCAErsAwysQkO6bELDumxEwErsDYauj1b7coAFSsKDrAAELABwLARELAQwLrCae6bABUrCrEAAQiwAhCwAcAOsAMQsATAuj2X7psAFSsKDrAIELAHwLAJELAKwAC0AQQHChAuLi4uLgG0AQQHChAuLi4uLrBAGgGxCAMRErAOOQCxAgARErEFDjk5MDEzEwMzExczNxMzAxMjAycjBwMQwbDCSgYEBkrDsMDJVAYEBlQCQgIe/vofHwEG/eL9vgEbHh7+5QAAAAABABn+bwJiBGAAEgA/ALIAAgArsAYzsAwvsQ0J6QGwEy+wANaxAQ7psAEQsQYBK7EHDumxFAErsQEAERKxDBI5OQCxAA0RErADOTAxEzMTFzM3EzMDBgYjJzUWMzY2NRnKUgQJBFLKxhCcc1wQIT1IBGD9UDk5ArD7TH++BLgEBm9DAAABAAwAAAIEBGAACQBBALIAAQArsQcJ6bIEAgArsQMJ6QGwCi+xAAErsQkX6bAFMrELASuxCQARErAHOQCxBwARErABObEEAxESsAY5MDEzNQEjNSEVASEVDAEd8AHL/uMBHagC/Lyo/QS8AAABAD3+NwJ3BfYAHQBiALIIAwArsQkH6bAWL7EVB+mwAC+xAQbpAbAeL7AZ1rAEMrESDumwDDKyEhkKK7NAEhYJK7AIMrEfASuxEhkRErAPOQCxABURErIREhk5OTmwARGwDzmwCRKyBQwNOTk5MDETNTI2NRE0NhcVJgYVERQHFhURFBY3FQYmNRE0JiY9SDzA9odrf39rh/bAEUIBxaNjKQGN35YErAJQd/5zj05SjP5zd1ACrASW3wGNFDZAAAABAFL+AAESBpwAAwAXAAGwBC+wANaxAw7psQMO6bEFASsAMDETETMRUsD+AAic92QAAAAAAQA5/jcCcwX2AB0AYgCyDQMAK7EMB+mwHS+xAAfpsBYvsRUG6QGwHi+wA9awCDKxGg7psBAysgMaCiuzQAMdCSuwDDKxHwErsRoDERKwBjkAsRYAERKyAwQaOTk5sBURsAY5sAwSsggJEDk5OTAxExY2NRE0NyY1ETQmBzU2FhURFBYWMxUGBhURFAYnOYdrf39qiPbBEEIxSDvB9v7nAlB3AY2LU06PAY13UAKsBJbf/nMXNz6jBGEn/nPflgQAAQBxBQ4EyQaDAB0AMgCwGi+xBgnpswwGGggrsRYJ6bAdMgGwHi+xHwErALEaFhESsAA5sQYMERKxChA5OTAxEz4EMzIWFhcWNzI3NxcOBCMiJyYiBgcHcQQQPEV5QjdwNDlqRG1FDYcEETtGcEB5l3N/ZBMSBUgMKWpSQiUdJUgBmR05DCxqUERlSlstLQAAAgBK/n8BOQRgAAMABwA+ALIFAgArsQQM6bAALwGwCC+wBNawADKxBxPpsAMyswIHBAgrsQEQ6bABL7ECEOmxCQErALEEABESsAE5MDETEzMTAzUzFUo3gTfj1/5/BEz7tAT+4+MAAAABAEL/hQJMBh8AHwA9AAGwIC+wANaxEQ7psBEQsR0BK7ADMrEcEOmwBTKwHBCxFQsrsAsysRgO6bAJMrEhASuxHB0RErAOOQAwMRMREDc1MxUWFhUVIzU0IyIVERQXMic1MxUUBgcRIxEmQtB7Yl29SUhISgG9XGN70AH8AekBKR/y9BCQm1iHWlr9pFoBW5tsnJER/tEBLR8AAAABAAT/8AMUBfQAOgC4ALIzAQArsDozsS0L6bITAwArsRwK6bQJCjMTDSuwIjO0CQYAGwQrsCQysxkzEwgrAbA7L7AO1rEfDumyDh8KK7NADgkJK7MGHw4IK7EnDumyJwYKK7NAJyQJK7AfELEZASuxGA7psTwBK7EGDhESswQICzokFzmwHxGwNjmwJxKyIiUpOTk5sBkRsCs5sBgSsi4vMzk5OQCxLTMRErEANjk5sAkRsgQvMDk5ObEcGRESsQ4fOTkwMTc+Ajc2NTQnIzUzJyY1ND4CNzYeAhUjNCYHBgYVFBcXMxUjFgcUBx4CMzY3FwYGIyImIyIGBwcECB9tPyUfvJMGTh9CdlBgiEcd1TNALytGBtOuGQE5EDgpFEoIvAyLZDO5JSE5DAw/FEN0Cm9YRGqJFf5YRnpvRAICRHeHUlZxAgJiRHHhGYlkSmhzCCESBLoWtsdmMxsYAAAAAQAZAAACuAXhABkA0gCyEQEAK7IAAwArsgEGBzMzM7QTFBEADSuwDDO0EwYAGwQrsA4ytBcYEQANK7EIGTMztBcGABsEK7AKMgGwGi+wANaxARPpsAEQsREBK7AVMrEQE+mwCzKyEBEKK7NAEAoJK7ANMrIREAors0ARFwkrsBMysBAQsQYBK7EHE+mxGwErsDYausGc8bsAFSsKsAAQsBnADrABELACwLo+ZPG7ABUrCg6wBhCwBcAFsAcQsAjAAwCxAgUuLgGzAgUIGS4uLi6wQBoAsQAYERKwAzkwMRMzExczNxMzAzMVIxUzFSMRIxEjNTM1IzUzGdluBgQHbtnEk7CwsN2wsLCTBeH+Hw4OAeH9D4qJif6sAVSJiYoAAgEQBRkC8AXhAAMABwA2ALIBAwArsAUzsQAK6bAEMrIBAwArsQAK6QGwCC+wANaxAw7psAMQsQQBK7EHDumxCQErADAxATUzFTM1MxUBEL9ivwUZyMjIyAAAAAADADX/8AY3BfIABwARADYAxQCyBwEAK7QLBQA0BCuyAwMAK7QQBQA0BCu0MygHAw0rtDMGABsEK7IoMwors0AoLAkrtBkjBwMNK7QZBgAbBCuyIxkKK7NAIx4JKwGwNy+wAdaxCRDpsAkQsRIBK7EmEemwJhCxKgErsB4ytC0QAC0EK7AcMrAtELENASuxBRDpsTgBK7ESCRESsgcCCjk5ObAmEbEVNjk5sCoSshkQMzk5ObAtEbAvObANErIGCwM5OTkAsSMoERK2AAQFAQkIDSQXOTAxEhAAIAAQACAAEAAgABEQACEgExE0PgMzMhcXFSM1NTQmIwYHERQzNic1MxUUDgMjIiYnNQHDAnsBxP48/YX+tAF/AhQBgv6B/vP+9kgCFCNQN5MjB4oYGS8CMTUEigIVI041VmAGAbICewHF/jv9hf4+BAr96/6BAX8BCwEMAX/8bAITCBtDMyuTMX19EQsjAj397T8CPX19CBpEMytiMQAAAQBKAccBcwKJAAMAIgCwAC+xAQTpsQEE6QGwBC+wANaxAxXpsQMV6bEFASsAMDETNSEVSgEpAcfCwgAABAA1//AGNwXyAAcAEQAeACkA7wCyBwEAK7QLBQA0BCuyAwMAK7QQBQA0BCu0HR8HAw0rtB0FADEEK7AcMrIdHwors0AdGwkrsRIaMjK0FCkHAw0rtBQFADAEKwGwKi+wAdaxCRDpsAkQsRIBK7EeEemwHzKwHhCxJAErsBsytBYQACwEK7EaEemwFhCxDQErsQUQ6bErASuwNhq6wiPvmwAVKwqwGxCwHMAOsBoQsBnAALAZLgGxGRwuLrBAGgGxEgkRErIHAgo5OTmxJB4RErAQObENGhESsgYLAzk5OQCxHQsRErIFCQA5OTmwHxGwDTmwKRKwCDmwFBGxBAE5OTAxEhAAIAAQACAAEAAgABEQACEgExEzMhMUBgcTIwMjEREzMjY2NTQmJiMjNQHDAnsBxP48/YX+tAF/AhQBgv6B/vP+9kbE5wEhN2qXXzctKy0KCi0rLQGyAnsBxf47/YX+PgQK/ev+gQF/AQsBDAF/+74Db/7+TGIv/nABbf6TAewrLyUnMSsAAAAAAQE5BSMCxwXFAAMAHwCwAC+xAQbpsQEG6QGwBC+xAAErsQMW6bEFASsAMDEBNSEVATkBjgUjoqIAAAAAAQGaBRkC2wXRAAMAGgCwAC+xAQnpAbAEL7AA1rECFemxBQErADAxATczBwGaateiBRm4uAAAAAABAAACiQDXA20AAwAiALAAL7EBDOmxAQzpAbAEL7AA1rEDE+mxAxPpsQUBKwAwMRE1MxXXAonk5AAAAAABAar+fwJW/5EABgAsALAEL7AGL7QABgAbBCsBsAcvsAbWsQIR6bECEemxCAErALEGBBESsAI5MDEFMxUHIzcjAaqsLWgoP2+NhYUAAgAp/nUCbQRgAB8AIwBBALIhAgArsSAM6bAbL7ESBOkBsCQvsADWsQ8O6bAPELEGCyuwIDKxCQ7psCIysSUBKwCxIBIRErMABxUWJBc5MDEXNDc+AjURMxEUBgYHBgcGFjMWNjcXDgMnLgMTNTMVKVAnJS++MS8pKwoGIicvRg6zDCxMdEJScDQUvtdqUok/QJVGAQD/AGa7XkZIKBtEAmMxVCFIXDsCAj9lUgQO4+MAAAAAAwAUAAAC6QcfAAcACwARAFQAsgABACuwAzOyAQMAK7QGDAABDSuxBgzpAbASL7AA1rEHE+mwBxCxBAErsQMT6bETASuxBwARErAIObAEEbYCAQkKCwwNJBc5ALEBDBESsA85MDEzEyETIwMjAwMzFyMTMwMnIwcU5AEO49cp1Shf12ugBJhABgwGBeH6HwEz/s0HH7n7twHbJycAAwAUAAAC6QcfAAcACwARAFQAsgABACuwAzOyAQMAK7QGDAABDSuxBgzpAbASL7AA1rEHE+mwBxCxBAErsQMT6bETASuxBAcRErYCAQgJCwwNJBc5sAMRsAo5ALEBDBESsA85MDEzEyETIwMjAxM3MwcDMwMnIwcU5AEO49cp1Sg5atehkphABgwGBeH6HwEz/s0GZrm5+7cB2ycnAAAAAAMAFAAAAukHHwAHAA4AFABtALIAAQArsAMzsgEDACu0Bg8AAQ0rsQYM6bAOL7ALM7EJCekBsBUvsADWsQcT6bAHELEEASuxAxPpsRYBK7EHABESsAg5sAQRtwIBCQoMDg8QJBc5sAMSsAs5ALEBDxESsBI5sQkOERKwDTkwMTMTIRMjAyMDAzczFyMnBwMzAycjBxTkAQ7j1ynVKGeN3I29Pz0PmEAGDAYF4fofATP+zQZmublISPu3AdsnJwAAAAMAFAAAAukHHwAHABsAIQCDALIAAQArsAMzsgEDACu0BhwAAQ0rsQYM6bAYL7ELBumwEjKwFSDWEbAIM7EOBukBsCIvsADWsQcT6bAHELEEASuxAxPpsSMBK7EHABESsQgJOTmwBBG3AgELDRUYHB0kFzmwAxKxEhM5OQCxARwRErAfObEYFRESsBM5sA4RsAk5MDEzEyETIwMjAwM1NjMyFhcyNjc3FQYjIiYjIgYHEzMDJyMHFOQBDuPXKdUoNDE8IXQfGTcODzM6H3QhGTcObJhABgwGBeH6HwEz/s0GYJgnJQIQCAmYJycQCfu1AdsnJwAEABQAAALpBy8ABwALABEAFQCEALIAAQArsAMzsgEDACu0BgwAAQ0rsQYM6bAIL7ASM7EJCumwEzIBsBYvsAjWsQsO6bMHCwgIK7EAE+mwAC+xBxPpsAsQsRIBK7EVDumzBBUSCCuxAxPpsRcBK7ELBxESsgEGDDk5ObASEbEPEDk5sAQSsgIFDTk5OQCxAQwRErAPOTAxMxMhEyMDIwMDNTMVAzMDJyMHEzUzFRTkAQ7j1ynVKF2/G5hABgwGPb8F4fofATP+zQZmycn7twHbJycCbsnJAAAEABQAAALpB3EABwAPABUAHQCkALIAAQArsAMzsgEDACu0BhAAAQ0rsQYM6bAPL7QZBQA2BCuwHS+0CwUANgQrAbAeL7AJ1rQXDwAuBCuwEDKzBxcJCCuxABPpsAAvsQcT6bAXELEbASuwETK0DQ8ALgQrswQNGwgrsQMT6bEfASuxFwcRErEBBjk5sBsRtAsODwoUJBc5sAQSsQIFOTkAsQEQERKwEzmxHRkRErMJDA0IJBc5MDEzEyETIwMjAwI0NjIWFAYiAzMDJyMHAhQWMjY0JiIU5AEO49cp1SgFW39YWH8PmEAGDAY+LzovLzoF4fofATP+zQake1JSe1L7ywHbJycDBjkrKzkrAAAAAAIAEAAABCMF4QAPABMAqQCyDAEAK7EADzMzsQkM6bICAwArsAEzsQQM6bQOEAwCDSuxDgzptAUIDAINK7EFDekBsBQvsADWsQ8T6bAPELENASuwETKxCRPpsAQysgkNCiuzQAkCCSuwCjKwDRCxBxbpsRUBK7A2Gro9au3/ABUrCrAAELABwA6wDxCwE8AFsw4PExMrsxAPExMrAwCwEy4BswEOEBMuLi4usEAaALEEBRESsBI5MDEzASEVIREzFSMRIRUhESMDEzMRIxABpAJv/uPNzQEd/gbjWp2gCgXh4/518v5i4wEz/s0CHQICAAIARP5/ApEF8gAtADQAbwCyKQEAK7EcC+myHCkKK7NAHCEJK7IHAwArsRUL6bIVBwors0AVDQkrAbA1L7AA1rEYE+mwMTKwGBCxHwErsA4ysSMO6bAMMrE2ASuxGAARErMGKS4vJBc5sB8RtQcVKDAzNCQXObAjErAKOQAwMRMRND4DMh4CFxcVIzUiNi4CIwYHERQWFjMyNj0CMxUUDgMiLgInExUzBzM3NUQEHjh5p3k4HgICzgIECw4jGkYIBCcjKSvOBB44ead5OB4CxkApaC0BNQN3DC1xVkZEXmAjIc/PFyAhFwpl/IkMJT03HRrPzwwtcVZFQ2BfIP5/jYWFjQAAAgBSAAACTAcfAAsADwBXALIAAQArsQkM6bIBAwArsQQM6bQFCAABDSuxBQ3pAbAQL7AA1rELF+mwAjKxCRPpsAQysQcW6bELF+mwAzKxEQErsQkAERKxDA85ObAHEbENDjk5ADAxMxEhFSERMxUjESEVATMXI1IB+v7jzc0BHf4j12qgBeHj/nXy/mLjBx+5AAAAAAIAUgAAAkwHHwALAA8AWwCyAAEAK7EJDOmyAQMAK7EEDOm0BQgAAQ0rsQUN6QGwEC+wANaxCxfpsAIysQkT6bAEMrEHFumxCxfpsAMysREBK7EJABESsAw5sAcRsQ0POTmwCxKwDjkAMDEzESEVIREzFSMRIRUBNzMHUgH6/uPNzQEd/qBq16IF4eP+dfL+YuMGZrm5AAAAAgBSAAACTAcfAAsAEgBwALIAAQArsQkM6bIBAwArsQQM6bQFCAABDSuxBQ3psBIvsA8zsQ0J6QGwEy+wANawDDKxCxfpsQIPMjKxCRPpsAQysQcW6bELF+mwAzKxFAErsQkAERKxDRI5ObAHEbIOEBE5OTkAsQ0SERKwETkwMTMRIRUhETMVIxEhFQE3MxcjJwdSAfr+483NAR3+CI3bjr0/PgXh4/518v5i4wZmublISAAAAwBSAAACTAcvAAsADwATAG8AsgABACuxCQzpsgEDACuxBAzptAUIAAENK7EFDemwDC+wEDOxDQrpsBEyAbAUL7AA1rELF+mwAjKxCRPpsAQysQcW6bAHELATINYRsRAO6bAQL7ETDumwABCxCxfpsAMysAwzsQ8O6bEVASsAMDEzESEVIREzFSMRIRUBNTMVMzUzFVIB+v7jzc0BHf4Sv2K+BeHj/nXy/mLjBmbJycnJAAAAAv/6AAABPwcfAAMABwAqALIEAQArsgUDACsBsAgvsATWsQcT6bACMrEJASuxBwQRErEBAzk5ADAxAzMXIwMRMxEG12qfOt0HH7n5mgXh+h8AAAAAAgBSAAABmAcfAAMABwAqALIAAQArsgEDACsBsAgvsADWsAQysQMT6bEJASuxAwARErEFBzk5ADAxMxEzEQM3MwdS3dlr16IF4fofBma5uQAC/74AAAG0Bx8ABgAKADwAsgcBACuyCAMAK7AGL7ADM7EBCekBsAsvsAfWsQoT6bEMASuxCgcRErMCAQQGJBc5ALEBBhESsAU5MDEDNzMXIycHAxEzEUKO2428QD0x3QZmublISPmaBeH6HwAD/8sAAAGqBy8AAwAHAAsARQCyBAEAK7IFAwArsAAvsAgzsQEK6bAJMgGwDC+wBNaxBxPpswMHBAgrsQAO6bAAL7EDDumzCAcECCuxCw7psQ0BKwAwMQM1MxUDETMRAzUzFTW+Pd09vgZmycn5mgXh+h8GZsnJAAACABQAAAK4BeEAFQAgAGQAshMBACuxFgvpsgQDACuxHAvptAEAEwQNK7AfM7EBDOmwHTIBsCEvsBTWsAIysRYT6bAcMrMMFAAOK7QfFQAMBCuwFhCxGQErsQ0U6bEiASsAsQAWERKwDDmxHAERErALOTAxEzUzETMyHgUQDgUjIxETMjYDEiYjETMVIxQ+rlp/Yj4nEgYGEic+Yn9art11MQICMXVUVAKP5AJuGCtcY7Su/uWusmJcKxkCj/5OogFzAXOf/m/kAAIAUgAAAtcHHwAPACMApwCyAAEAK7AJM7IBAwArsAczsCAvsRMG6bAaMrAdINYRsBAzsRYG6QGwJC+wANaxDw7psAIysA8QsQUBK7AKMrEJDumxJQErsDYausJH7xMAFSsKDrAMELALwLEDGfmwBMAAswMECwwuLi4uAbMDBAsMLi4uLrBAGgGxDwARErEQETk5sAURsxMVHSAkFzmwCRKxGhs5OQCxIB0RErAbObAWEbAROTAxMxEzExczNREzESMDJyMVEQM1NjMyFhcyNjc3FQYjIiYjIgYHUsXXEgzLxdcSDE4xOyF1Hxk2Dw4zOR91IRk2DwXh/PBGRgMQ+h8DEEZG/PAGYJgnJQIQCAmYJycQCQAAAAADAET/8AKRBx8AFwAbACsATQCyEwEAK7EgC+myBwMAK7EoC+kBsCwvsADWsRwT6bAcELEjASuxDRPpsS0BK7EcABESswYTGBskFzmwIxGwGTmwDRKyBxIaOTk5ADAxExE0PgMyHgIXFxEUDgMiLgInEzMXIxMUFhYyNjU3ETQmJiIGFQdEBB44ead5OB4CAgQeOHmneTgeAjPXap8GAiVFJQICJUUlAgE1A3cMLXFWRkReYCMh/IkMLXFWRUNgXyAGDbn6zwwlPTcdGgN3DCU+OBodAAMARP/wApEHHwAXABsAKwBNALITAQArsSAL6bIHAwArsSgL6QGwLC+wANaxHBPpsBwQsSMBK7ENE+mxLQErsRwAERKyBhMYOTk5sCMRsBk5sA0SswcSGhskFzkAMDETETQ+AzIeAhcXERQOAyIuAicTNzMHAxQWFjI2NTcRNCYmIgYVB0QEHjh5p3k4HgICBB44ead5OB4C12rXopsCJUUlAgIlRSUCATUDdwwtcVZGRF5gIyH8iQwtcVZFQ2BfIAVUubn6zwwlPTcdGgN3DCU+OBodAAAAAAMARP/wApEHHwAXAB4ALgBiALITAQArsSML6bIHAwArsSsL6bAeL7AbM7EZCekBsC8vsADWsR8T6bAfELEmASuxDRPpsTABK7EfABESswYTGBkkFzmwJhGxHB45ObANErMHEhobJBc5ALEZHhESsB05MDETETQ+AzIeAhcXERQOAyIuAicTNzMXIycHAxQWFjI2NTcRNCYmIgYVB0QEHjh5p3k4HgICBB44ead5OB4CK43bjbxAPQwCJUUlAgIlRSUCATUDdwwtcVZGRF5gIyH8iQwtcVZFQ2BfIAVUublISPrPDCU9Nx0aA3cMJT44Gh0AAAADAET/8AKRBx8AFwArADsAcwCyEwEAK7EwC+myBwMAK7E4C+mwKC+xGwbpsCIysCUg1hGwGDOxHgbpAbA8L7AA1rEsE+mwLBCxMwErsQ0T6bE9ASuxLAARErQGExgbKCQXObAzEbAdObANErMHEiIlJBc5ALEoJRESsCM5sB4RsBk5MDETETQ+AzIeAhcXERQOAyIuAicTNTYzMhYXMjY3NxUGIyImIyIGBxMUFhYyNjU3ETQmJiIGFQdEBB44ead5OB4CAgQeOHmneTgeAl4xOyF1Hxk2Dw4zOR91IRk2D28CJUUlAgIlRSUCATUDdwwtcVZGRF5gIyH8iQwtcVZFQ2BfIAVOmCclAhAICZgnJxAJ+s0MJT03HRoDdwwlPjgaHQAABABE//ACkQcvABcAGwArAC8AhgCyEwEAK7EgC+myBwMAK7EoC+mwGC+wLDOxGQrpsC0yAbAwL7AA1rEcE+mwHBCwGyDWEbEYDumwGC+xGw7psBwQsSMBK7ENE+mwLCDWEbEvDumxMQErsRgAERKwFjmwHBGxEwY5ObEsGxESsx8gJygkFzmxLyMRErESBzk5sA0RsAo5ADAxExE0PgMyHgIXFxEUDgMiLgInEzUzFQMUFhYyNjU3ETQmJiIGFQcTNTMVRAQeOHmneTgeAgIEHjh5p3k4HgI1vhgCJUUlAgIlRSUCe74BNQN3DC1xVkZEXmAjIfyJDC1xVkVDYF8gBVTJyfrPDCU9Nx0aA3cMJT44Gh0BusnJAAMAO//sApEF9gAfACgAMADgALIcAQArsQAfMzOxJAvpsgwDACuxDxAzM7EsC+kBsDEvsAXWsSAT6bApMrAgELEnASuxKCoyMrEWE+mwEDKxMgErsDYaujz47IsAFSsKsAAusBAQsQ8h+bAAELEfIfm6PSvtKwAVKwuwABCzAQAPEyuzDgAPEyuwHxCzER8QEyuzHh8QEysEsygfEBMrsAAQsykADxMrsgEADyCKIIojBg4REjmwDjmyHh8QERI5sBE5ALUBDhEeKCkuLi4uLi4BtgABDg8RHh8uLi4uLi4usEAaAbEnIBESsRwMOTkAMDEXNyYmNScRND4DMzIXNzMHFhYVFxEUDgMjIicHExQWFjI2NTcRBxMmJyIGFQc7LxISAgQeOHlTXEIPei0UFwIEHjh5VGA/D2UCJUUlApOTCEIjJAIUnSVWGRgDdwwtcVZGKy+WJ1oaGfyJDC1xVkUrLwFJDCU9Nx0aAehGAd9kATgaHQAAAAACAFD/8AKeBx8AFwAbACYAsgYBACuxEgvpAbAcL7AA1rEVE+mxHQErsRUAERKxBRg5OQAwMRMUHgMyPgI3NxEjERQGBiImNScRIxMzFyNQBB83eah5Nx8CAt0DJEYlAt1B12ugATUMLXFWRUNgXyAjBKz7VAwlPTcdGgSsAT65AAIAUP/wAp4HHwAXABsAJACyBgEAK7ESC+kBsBwvsADWsRUT6bEdASuxFQARErAFOQAwMRMUHgMyPgI3NxEjERQGBiImNScRIzc3MwdQBB83eah5Nx8CAt0DJEYlAt3ja9eiATUMLXFWRUNgXyAjBKz7VAwlPTcdGgSshbm5AAAAAgBQ//ACngcfABcAHgBEALIGAQArsRIL6bAeL7AbM7EZCekBsB8vsADWsRUT6bEgASuxFQARErIFGBk5OTkAsR4SERKyDBYXOTk5sBkRsB05MDETFB4DMj4CNzcRIxEUBgYiJjUnESM3NzMXIycHUAQfN3moeTcfAgLdAyRGJQLdLY3bjr0/PgE1DC1xVkVDYF8gIwSs+1QMJT03HRoErIW5uUhIAAAAAwBQ//ACngcvABcAGwAfAHgAshMBACuxBwvpsgEDACuwCzOwGC+wHDOxGQrpsB0yAbAgL7AA1rEDE+mwAxCwGyDWEbEYDumwGC+xGw7psAMQsQoBK7ENE+mwHCDWEbEfDumxIQErsRgAERKwFjmwAxGwEzmxHBsRErEHBjk5sR8KERKwEjkAMDETETMRFBYWMjY1NxEzERQOAyIuAicTNTMVMzUzFVDdAiVGJAPdBB83eah5Nx8CNb9ivgE1BKz7VAwlPTcdGgSs+1QMLXFWRUNgXyAFVMnJyckAAAIAEAAAArAHHwALAA8AMwABsBAvsADWsQsT6bALELEGASuxBRPpsREBK7EGCxEStQEDBAwNDyQXObAFEbAOOQAwMRMTETMREyMDByMnAzc3MwcQ4t3h2W8GBAZvFWrXoQXh/KD9fwKBA2D+Hw4OAeGFubkAAgBSAAACtAXhAAoAEQBTALIAAQArsgEDACu0CQsAAQ0rsQkM6bQEEQABDSuxBAzpAbASL7AA1rEKE+mxAgsyMrAKELEOASuxBxPpsRMBKwCxCwkRErAHObEEERESsAY5MDEzETMVMzIWEAYjEREyNjU0JiNS2wKm39+mZkBCZAXh8dP+INX+mAJKWoGDZgAAAQBCAAACqAXyACMAfgCyAAEAK7AQM7IEAwArsSAJ6bIaAgArtBkGABsEK7IIAgArAbAkL7AA1rEjDumwIxCxFQErsQsO6bAdINYRtAcOADcEK7IdBwors0AdEAkrsBkysSUBK7EdIxESsAQ5sQcVERKwCTkAsRkAERKwCzmwGhGwCTmwIBKwBzkwMTMRNDYzMhYVFAcWERQOAiM1MjY2NTQmJiM1MjY1NCYjIhURQo2LhYlYmClccVgtMx8fMy0jMysrSgTTe6Sie21BWP5wtul3KcEzrJ+qszeNQjMtN2b7LQAAAwAx//ACaAXRACUAKQAxAIkAsh0BACuyIwEAK7EsCumyFQIAK7EKCOmyChUKK7NAChEJK7EgIxAgwC+xLAXpAbAyL7AA1rEqDumwESDWEbEQDumwKhCxHwErsQYvMjKxGg7psTMBK7EqERESsSMmOTmwEBGwKTmwHxKzBRUgJyQXObAaEbEdKDk5ALEKLBESswAYGjAkFzkwMRM0PgM3NTU0IyIOAhUVIzU0NjMyFhURERQXIyYnIwYGIyImEzMXIwMUFzI2NREGMURiYk4EORQZCgTPoXVmlg7KEgEOFFs3O2s112ugDDkjM48BBGqiVjwpECVWZhIvGyInL3uwlGr+of6vbVYURiVFeAVpuPwKaAEnHQEfPgAAAAADADH/8AJoBdEAJQAtADEAiQCyHQEAK7IjAQArsSgK6bIVAgArsQoI6bIKFQors0AKEQkrsSAjECDAL7EoBekBsDIvsADWsSYO6bARINYRsRAO6bAmELEfASuxBisyMrEaDumxMwErsSYRERKwIzmwEBGwLjmwHxKzBRUgLyQXObAaEbIdMDE5OTkAsQooERKzABgaLCQXOTAxEzQ+Azc1NTQjIg4CFRUjNTQ2MzIWFRERFBcjJicjBgYjIiY3FBcyNjURBhM3MwcxRGJiTgQ5FBkKBM+hdWaWDsoSAQ4UWzc7a8s5IzOPDGvXogEEaqJWPCkQJVZmEi8bIicve7CUav6h/q9tVhRGJUV4u2gBJx0BHz4DOri4AAAAAAMAMf/wAmgF0QAlACwANACgALIdAQArsiMBACuxLwrpshUCACuxCgjpsgoVCiuzQAoRCSuxICMQIMAvsS8F6bAsL7ApM7EnCekBsDUvsADWsS0O6bARINYRsRAO6bAtELEfASuxBjIyMrEaDumxNgErsS0RERKyIyYnOTk5sBARsCw5sB8SswUVICskFzmwGhGzHSgpKiQXOQCxCi8RErMAGBozJBc5sScsERKwKzkwMRM0PgM3NTU0IyIOAhUVIzU0NjMyFhURERQXIyYnIwYGIyImEzczFyMnBwMUFzI2NREGMURiYk4EORQZCgTPoXVmlg7KEgEOFFs3O2spjdyNvT89GzkjM48BBGqiVjwpECVWZhIvGyInL3uwlGr+of6vbVYURiVFeASxuLhHR/wKaAEnHQEfPgAAAAADADH/8AJoBdcAJQA5AEEArgCyHQEAK7IjAQArsTwK6bIVAgArsQoI6bIKFQors0AKEQkrsSAjECDAL7E8BemwNi+xKQbpsDAysDMg1hGwJjOxLAbpAbBCL7AA1rE6DumwESDWEbEQDumwOhCxHwErsQY/MjKxGg7psUMBK7E6ERESsyMmKTYkFzmxHxARErIFFSA5OTmwGhGzHSswMyQXOQCxCjwRErMAGBpAJBc5sTYzERKwMTmwLBGwJzkwMRM0PgM3NTU0IyIOAhUVIzU0NjMyFhURERQXIyYnIwYGIyImEzU2MzIWFzI2NzcVBiMiJiMiBgcTFBcyNjURBjFEYmJOBDkUGQoEz6F1ZpYOyhIBDhRbNztrXjE8IXQfGTcODzM6H3QhGTcOXjkjM48BBGqiVjwpECVWZhIvGyInL3uwlGr+of6vbVYURiVFeASxlyclAhEICJgnJxAI/AJoAScdAR8+AAAEADH/8AJoBeEAJQApADEANQCtALIdAQArsiMBACuxLArpsicDACuwMzOxJgrpsDIyshUCACuxCgjpsgoVCiuzQAoRCSuxICMQIMAvsSwF6QGwNi+wANaxKg7psCoQsCkg1hGxJg7psCYvsSkO6bAPMrApELERDumwES+wKhCxHwErsgYvMjIyMrEaDumxNQ7psTcBK7EqJhESsCM5sR8pERKzBQoVICQXObA1EbAdOQCxCiwRErMAGBowJBc5MDETND4DNzU1NCMiDgIVFSM1NDYzMhYVEREUFyMmJyMGBiMiJhM1MxUDFBcyNjURBhM1MxUxRGJiTgQ5FBkKBM+hdWaWDsoSAQ4UWzc7azW/KTkjM4+LvwEEaqJWPCkQJVZmEi8bIicve7CUav6h/q9tVhRGJUV4BLHIyPwKaAEnHQEfPgM6yMgABAAx//ACaAYdACUALQA1AD0AzACyHQEAK7IjAQArsTAK6bIVAgArsQoI6bIKFQors0AKEQkrsSAjECDAL7EwBemwLS+0OQUANgQrsD0vtCkFADYEKwGwPi+wANaxLg7psDYysBEg1hGxEA7psC4QtCcPAC4EK7AnL7AuELEfASuxBjMyMrEaDumzOxofCCu0Kw8ALgQrsT8BK7EuJxESsCM5sBARsSgtOTmwHxK2BRUgODk8PSQXObA7EbIdKSw5OTkAsQowERKzABgaNCQXObE9ORESsycqKyYkFzkwMRM0PgM3NTU0IyIOAhUVIzU0NjMyFhURERQXIyYnIwYGIyImEjQ2MhYUBiIDFBcyNjURBhIUFjI2NCYiMURiYk4EORQZCgTPoXVmlg7KEgEOFFs3O2uLW39YWH8bOSMzjw4vOi8vOgEEaqJWPCkQJVZmEi8bIicve7CUav6h/q9tVhRGJUV4BOh7UlJ7UvwlaAEnHQEfPgPLOSsrOSsAAAAAAwAx//ADogRxADYAPgBJAMcAsjQBACuwMDOxOQrpsjQBACuxJQjpsiU0CiuzQCUoCSuyFAIAK7AYM7EJCOmwRTKyCRQKK7NACRAJK7Q/HjQUDSuxPwbpAbBKL7AA1rE3DumwECDWEbEPDumwNxCxPAErsAYysSAO6bA/MrAgELEnASuwQDKxKg7psBwysUsBK7E3EBESsDQ5sTwPERKxBRQ5ObAgEbEWMjk5sCcSsDA5ALElNBESsDI5sR45ERKxADc5ObA/EbA9ObAJErAFObAUEbAWOTAxEzQ+Azc1NCMiDgIVFSM1NDYzMhc2NzIXFhcRIRUVFB4CMzY3NTMVFA4DIyInBiMiJjcUFzI2NREGJTM1NCYmIyIGBwcxRGJiTgQ5FBkKBM+hdVREQmDHNA4B/qoIDiEVRgPBBB0xb0ueRGZ3O2vLOSMzjwFQlQIlIiEnAgIBBGqiVjwpEHtmEi8bIicve7A0MwHFMyn+uvMNCCcdGApneoEMJ2JOPYODeLtoAScdAR8+zZ4MJz85HRwAAAACAEL+fwJUBHEAGwAiAGoAshoBACuxEQnpshEaCiuzQBEVCSuyAwIAK7EMCemyDAMKK7NADAgJKwGwIy+wANaxDw7psA8QsRQBK7AIMrEXDumwBjKxJAErsQ8AERKyHB0fOTk5sBQRsgMeIDk5ObAXErEhIjk5ADAxExEQITIWFRUjNTQmIyIHERQzMjY1NTMVFAYjBBcVMwczNzVCAQiJgc8YIzkBOiMYz4GJ/visPylpLQE7AeoBTI60WIczJ1r9pFonM5xttI0BXo2FhY0AAwBC//ACWAXRACQAKAAzAGgAsh8BACuxFAjpshQfCiuzQBQXCSuyBwIAK7EvCOm0KQ0fBw0rsSkG6QGwNC+wANaxDg7psCkysA4QsRYBK7AqMrEZDumwCzKxNQErsQ4AERKwJTmwFhGzBx8mKCQXObAZErAnOQAwMRMRND4DMzIXFhURIRUVFB4CMzY3NTMVFA4DIyIuAicTMxcjAzM1NCYmIyIGBwdCBBw0bkrHNQ7+qggPIBVGBMAEHTFuTEpvMRwCItdroAaWAiUjIScCAgEXAjMMJ2ZOQMUzKf668w0IJx0YCmd6gQwnYk49PVZWHwTZuP2TngwnPzkdHAAAAAMAQv/wAlgF0QAkAC8AMwBkALIfAQArsRQI6bIUHwors0AUFwkrsgcCACuxKwjptCUNHwcNK7ElBukBsDQvsADWsQ4O6bAlMrAOELEWASuwJjKxGQ7psAsysTUBK7EWDhESswcfMDEkFzmwGRGxMjM5OQAwMRMRND4DMzIXFhURIRUVFB4CMzY3NTMVFA4DIyIuAicTMzU0JiYjIgYHBxM3MwdCBBw0bkrHNQ7+qggPIBVGBMAEHTFuTEpvMRwCvpYCJSMhJwICBmvXogEXAjMMJ2ZOQMUzKf668w0IJx0YCmd6gQwnYk49PVZWHwG0ngwnPzkdHAHPuLgAAAMAQv/wAlgF0QAkACsANgB+ALIfAQArsRQI6bIUHwors0AUFwkrsgcCACuxMgjptCwNHwcNK7EsBumwKy+wKDOxJgnpAbA3L7AA1rEODumwLDKwDhCxFgErsC0ysRkO6bALMrE4ASuxDgARErElJjk5sBYRswcfKSskFzmwGRKxJyg5OQCxJisRErAqOTAxExE0PgMzMhcWFREhFRUUHgIzNjc1MxUUDgMjIi4CJxM3MxcjJwcDMzU0JiYjIgYHB0IEHDRuSsc1Dv6qCA8gFUYEwAQdMW5MSm8xHAIMjduOvT8+CpYCJSMhJwICARcCMwwnZk5AxTMp/rrzDQgnHRgKZ3qBDCdiTj09VlYfBCG4uEdH/ZOeDCc/OR0cAAAAAAQAQv/wAlgF4QAkACgAMwA3AIYAsh8BACuxFAjpshQfCiuzQBQXCSuyJgMAK7A1M7ElCumwNDKyBwIAK7EvCOm0KQ0fBw0rsSkG6QGwOC+wANaxDg7psCkysA4QsCgg1hGxJQ7psCUvsSgO6bAOELEWASuwKjKxGQ7psAsysDQg1hGxNw7psTkBK7E0KBESsgcfLzk5OQAwMRMRND4DMzIXFhURIRUVFB4CMzY3NTMVFA4DIyIuAicTNTMVAzM1NCYmIyIGBwcTNTMVQgQcNG5KxzUO/qoIDyAVRgTABB0xbkxKbzEcAha/F5YCJSMhJwICeb4BFwIzDCdmTkDFMyn+uvMNCCcdGApneoEMJ2JOPT1WVh8EIcjI/ZOeDCc/OR0cAc/IyAAAAv/fAAABIQXRAAMABwAdAAGwCC+wANaxAhXpsQkBK7ECABESsQQFOTkAMDEDMxcjAzMRIyHXa6Avz88F0bj65wRgAAACAFIAAAGTBdEAAwAHAB0AAbAIL7AE1rEGFemxCQErsQYEERKxAAE5OQAwMTMzESM1NzMHUs/PatehBGC5uLgAAv++AAABtAXRAAYACgAvALAGL7ADM7EBCekBsAsvsADWsQMX6bEMASuxAwARErEHCDk5ALEBBhESsAU5MDEDNzMXIycHAzMRI0KO2428QD0pz88FGbi4R0f65wRgAAAAA//LAAABqgXhAAMABwALAEcAsgQBACuyAQMAK7AJM7EACumwCDKyBQIAKwGwDC+wBNaxBw7pswMHBAgrsQAO6bAAL7EDDumzCAcECCuxCw7psQ0BKwAwMQM1MxUDETMRAzUzFTW+N881vgUZyMj65wRg+6AFGcjIAAAAAAIATP/wAl4F+AAfADEAbQCyGgEAK7ElCOmyDAMAK7IDAgArsS4I6QGwMi+wANaxMQ7psDEQsScBK7EUDumxMwErsTEAERK0AwgJCyEkFzmwJxG2BQoMGiApLiQXObAUErEOKjk5ALEDLhESsAU5sAwRtAcIDhARJBc5MDETERAzMhcmJwcnNyc3Fhc3FwcWFREUDgMjIi4CNTYGHgIzNjcRIjYuAiMGBxFMrD9cDCdSN2QtbRkcXjhlfQIdM2xMSm4yHMIECA0eFUYCAgQIDR8WRAIBFwJDARdObV5IP1hCZBsiUkJYyfX9cAwnYk49PVZWHx8XIyEWCmcCMxYjIRgKaP3NAAAAAAIAUgAAAmQF1wASACYAfwCyAAEAK7ALM7IBAgArsgcCACuxDwrpsCMvsRYG6bAdMrAgINYRsBMzsRkG6QGwJy+wANaxEg7psAIysBIQsQwBK7ELDumxKAErsRIAERKyExYjOTk5sAwRsBg5sAsSsgcdIDk5OQCxAQ8RErADObEjIBESsB45sBkRsBQ5MDEzETMVNzY2MzIWFREjETQjIgcRAzU2MzIWFzI2NzcVBiMiJiMiBgdSzyAeSSFMT84yKRqOMTwhdR4ZNw4PMzofdCEZNw4EYF4gHjGKUfxqA3cxNfyNBRmXJyUCEQgImCcnEAgAAAADAD//8AJSBdEAFwAbAC0ATwCyEgEAK7EhCOmyBwIAK7EqCOkBsC4vsADWsS0O6bAtELEjASuwJjKxDA7psS8BK7EtABESsBg5sCMRtBIZGwclJBc5sAwSsQ4aOTkAMDETETQ+AzMyFxYVERQOAyMiLgI1EzMXIxAGHgIzNjcRIjYuAiMGBxE/Axwxb0rHNQ4CHTNtS0pvMRwg12ugBAgMHxVGAQIECAwfFkQCARcCMwwnZk5AxTMp/cAMJ2JOPT1WVh8E2bj7/hcjIRYKZwIzFiMhGApo/c0AAAAAAwA///ACUgXRABcAKQAtAEsAshIBACuxHQjpsgcCACuxJgjpAbAuL7AA1rEpDumwKRCxHwErsCIysQwO6bEvASuxHykRErQSByEqKyQXObAMEbIOLC05OTkAMDETETQ+AzMyFxYVERQOAyMiLgI1NgYeAjM2NxEiNi4CIwYHERM3Mwc/Axwxb0rHNQ4CHTNtS0pvMRzCBAgMHxVGAQIECAwfFkQCAmvXogEXAjMMJ2ZOQMUzKf3ADCdiTj09VlYfHxcjIRYKZwIzFiMhGApo/c0EAri4AAAAAwA///ACUgXRABcAHgAwAGUAshIBACuxJAjpsgcCACuxLQjpsB4vsBszsRkJ6QGwMS+wANaxMA7psDAQsSYBK7ApMrEMDumxMgErsTAAERKxGBk5ObAmEbQSHB4HKCQXObAMErIOGhs5OTkAsRkeERKwHTkwMRMRND4DMzIXFhURFA4DIyIuAjUTNzMXIycHAgYeAjM2NxEiNi4CIwYHET8DHDFvSsc1DgIdM21LSm8xHAyN2469Pz4GBAgMHxVGAQIECAwfFkQCARcCMwwnZk5AxTMp/cAMJ2JOPT1WVh8EIbi4R0f7/hcjIRYKZwIzFiMhGApo/c0AAAAAAwA///ACUgXXABcAKwA9AHgAshIBACuxMQjpsgcCACuxOgjpsCgvsRsG6bAiMrAlINYRsBgzsR4G6QGwPi+wANaxPQ7psD0QsTMBK7A2MrEMDumxPwErsT0AERKyGBsoOTk5sDMRsxIdBzUkFzmwDBKyDiIlOTk5ALEoJRESsCM5sB4RsBk5MDETETQ+AzMyFxYVERQOAyMiLgI1EzU2MzIWFzI2NzcVBiMiJiMiBgcSBh4CMzY3ESI2LgIjBgcRPwMcMW9KxzUOAh0zbUtKbzEcQTE8IXQfGTcODjM5H3UgGTcPcwQIDB8VRgECBAgMHxZEAgEXAjMMJ2ZOQMUzKf3ADCdiTj09VlYfBCGXJyUCEQgImCcnEAj79hcjIRYKZwIzFiMhGApo/c0ABAA///ACUgXhABcAGwAtADEAeACyEgEAK7EhCOmyGQMAK7AvM7EYCumwLjKyBwIAK7EqCOkBsDIvsADWsS0O6bAtELAbINYRsRgO6bAYL7EbDumwLRCxIwErsCYysQwO6bAuINYRsTEO6bEzASuxLhsRErISByo5OTmwIxGwJTmxDDERErAOOQAwMRMRND4DMzIXFhURFA4DIyIuAjUTNTMVAgYeAjM2NxEiNi4CIwYHERM1MxU/Axwxb0rHNQ4CHTNtS0pvMRwYvxUECAwfFUYBAgQIDB8WRAJ5vgEXAjMMJ2ZOQMUzKf3ADCdiTj09VlYfBCHIyPv+FyMhFgpnAjMWIyEYCmj9zQQCyMgAAAADAD//sgJSBK4AHQAjACkBNACyFQEAK7EmCOmyFwEAK7IHAgArsSEI6QGwKi+wANaxHg7psxgeAAgrtBkPAC4EK7AZL7QYDwAuBCuwHhCxKAErsCkysQ8O6bMKDygIK7QLDwAuBCuxKwErsDYauj3n78AAFSsKBLAZLrALLrAZELEYIvmwCxCxCiL5uj327/oAFSsLsBkQswkZChMrsBgQswwYCxMrBbMXGAsTK7o99u/6ABUrC7AZELMaGQoTKwSzHhkKEyu6Pfbv+gAVKwuzHxkKEyuwGBCzJBgLEysEsykYCxMrshoZCiCKIIojBg4REjmwHzmwCTmyJBgLERI5sAw5AEALCQoLDBgZGh4fJCkuLi4uLi4uLi4uLgG1CQwXGh8kLi4uLi4usEAaAbEZABESsQMcOTmxKB4RErEVBzk5ADAxExE0PgMzMhc3MwcWFxEUDgMjIicHIzcmJic3EyYHBgcTFjM2NxE/Axwxb0ozNxVLHlgGAh0zbUs5LhRQHykvAsB9EiVEAhAQJkYBARcCMwwnZk5AE1B5VJH9wAwnYk49EE55J3UnxgHmIwEKaP17HwpnAZMAAAACAE7/8AJgBdEAEgAWAFcAsgsBACuyEAEAK7EFCumyAQIAK7AIMwGwFy+wANaxAw7psAMQsQsBK7AHMrEKDumxGAErsQMAERKyEBMWOTk5sAsRsBQ5sAoSsBU5ALEFCxESsAw5MDE3ETMRFDMyNxEzESM1BwYGIyImEzMXI07PMSkaz88fHkohTE8j12qgywOV/IkxNgNy+6BeIB4wiQVYuAAAAAIATv/wAmAF0QASABYAVwCyCwEAK7IQAQArsQUK6bIBAgArsAgzAbAXL7AA1rEDDumwAxCxCwErsAcysQoO6bEYASuxAwARErEQEzk5sAsRsBQ5sAoSsRUWOTkAsQULERKwDDkwMTcRMxEUMzI3ETMRIzUHBgYjIiYTNzMHTs8xKRrPzx8eSiFMT8Rr16LLA5X8iTE2A3L7oF4gHjCJBKC4uAAAAgBO//ACYAXRABIAGQBuALILAQArshABACuxBQrpsgECACuwCDOwGS+wFjOxFAnpAbAaL7AA1rEDDumwAxCxCwErsAcysQoO6bEbASuxAwARErMQExQZJBc5sAsRsBg5sAoSshUWFzk5OQCxBQsRErAMObEUGRESsBg5MDE3ETMRFDMyNxEzESM1BwYGIyImEzczFyMnB07PMSkaz88fHkohTE8QjtuNvEA9ywOV/IkxNgNy+6BeIB4wiQSguLhHRwAAAAMATv/wAmAF4QASABYAGgBvALILAQArshABACuxBQrpshQDACuwGDOxEwrpsBcysgECACuwCDMBsBsvsADWsQMO6bAVMrADELETDumwEy+wAxCxCwErsQcXMjKxCg7psRoO6bEcASuxAxMRErAQObALEbAFOQCxBQsRErAMOTAxNxEzERQzMjcRMxEjNQcGBiMiJhM1MxUzNTMVTs8xKRrPzx8eSiFMTxy/Yr/LA5X8iTE2A3L7oF4gHjCJBKDIyMjIAAACABn+bwJiBdEAEgAWAEEAsAYvsQUJ6QGwFy+wANaxEg7psBIQsQ0BK7EMDumxGAErsRIAERKyAQUIOTk5sA0RshMUFjk5ObAMErAVOQAwMRMTFAYHJxUWMzI2NxMjAwcjJwM3NzMHGb5IPTFGFnObEcbKUgQJBFIEa9eiBGD7f0RuBgS4BL5/BLT9UDk5ArC5uLgAAgBS/n8CZAXhABEAHQBXALIMAQArsRUE6bIBAwArsgUCACuxGwTpsAAvAbAeL7AA1rERDumxAhIyMrARELEXASuxCQ7psR8BK7EJFxESsQUMOTkAsRUMERKwEDmxBRsRErADOTAxExEzETYzMhYVERQGIyImJycRERQWMjY1ETQmIgYVUs9YTE5RUk0hUhkYJy0hIS0n/n8HYv42WopR/TVSiS0WF/41AncZKycdAnQdJycdAAAAAAMAGf5vAmIF4QASABYAGgB6ALIUAwArsBgzsRMK6bAXMrIAAgArsAYzsAwvsQ0J6QGwGy+wE9axFg7psBYQsAEg1hGxAA7psAAvsQEO6bAWELEGASuxBw7psBcg1hGxGg7psRwBK7ETABESsQwNOTmwARGwEjmxFxYRErECBTk5ALEADRESsAM5MDETMxMXMzcTMwMGBiMnNRYzNjY1AzUzFTM1MxUZylIECQRSysYQnHNcECE9SIm+Y74EYP1QOTkCsPtMf74EuAQGb0MFOsjIyMgAAQBSAAABIQRgAAMAIQCyAAEAK7IBAgArAbAEL7AA1rEDDumxAw7psQUBKwAwMTMRMxFSzwRg+6AAAAAAAQApAAACbQXhAA0ATACyDAEAK7EJCumyAwMAKwGwDi+wDNawAjKxCRPpsAQysgkMCiuzQAkHCSuzQAkLCSuwCRCxARXpsAEvsQ8BKwCxAwkRErEADTk5MDETNTcRMxE3FQcRIRUhESlB3nl5ASX9/QIx3TQCn/4NXt1f/b3NAmQAAAAAAQAfAAABtgXhAAsAOQCyCgEAK7IDAwArAbAML7AK1rACMrEJDumwBDKyCQoKK7NACQcJK7IKCQors0AKAQkrsQ0BKwAwMRM1NxEzETcVBxEjER9kz2RkzwIx3U4Chf4dTt1O/N8CfwACAEQAAAOuBeEAFwAmAFwAshEBACuxDwzpshEBACuxHATpsggDACuxCgzpsggDACuxIgTptAsOEQgNK7ELDekBsCcvsADWsRgT6bAYELEfASuxDxPpsAoysQ0W6bEoASuxGAARErAWOQAwMRMRND4DMyEVIREzFSMRIRUhIi4CJzcUFhYyNjU3ESYnIgYVB0QEHjh5UwJE/uPNzQEd/bxUeDgeAtsCJUUlAgZEIyQCATUDdwwra1BD4/518v5i4z9dWiEeDCU9Nx0aA4VgATgaHQAAAAMAP//wA6gEcQAqADwARgCfALIlAQArsCEzsTAI6bAWMrIwJQors0AwGQkrsgcCACuwCzOxOQjpsEMytD0RJQcNK7E9BukBsEcvsADWsTwO6bA8ELEyASuxEg7psD0ysBIQsRgBK7A+MrEbDumwDzKxSAErsTI8ERKzJQc0OSQXObASEbIJIzU5OTmwGBKwITkAsTAlERKwIzmwERGwPDmxOT0RErAzObAHEbAJOTAxExE0PgMzMhc2NzIXFhURIRUUFhYzNjc1MxUUDgMjIicGIyIuAjU2Bh4CMzY3ESI2LgIjBgcRATM1NCYmIyIGFT8DHDFvSmpCQmjHNQ7+qgglH0YDwQQdMW9LakBEZkpvMRzCBAgMHxVGAQIECAwfFkQCAVCVAiQjKyEBFwIzDCdmTkA8OwHFMyn+uvoQKTEKZ3qBDCdiTj05OT1WVh8fFyMhFgpnAjMWIyEYCmj9zQGVngwnP0shAAIAJf/vApoHHwAwADcAhQCyKwEAK7EDCumyEgMAK7EaCumwNy+xMgnpsDQyAbA4L7AP1rEcE+mwACDWEbEBE+mwHBCxBQErsBgysSkT6bAXMrE5ASuxAQ8RErExNzk5sBwRsAo5sAUSswMaMjQkFzmwKRGyJDU2OTk5ALEaAxEStQABDxcYKSQXObEyNxESsDM5MDETNxAzMjc0LgMnLgI1NDY3Nh4CFQc0IwYXFB4GFx4CFRAlIi4DEzMXNzMHIyXZaFoBES8bTwlCST+PkV6EOxnZWUwBCAwZECcSMAhKPUj+zFJ4RCcMP709QLyN2wGmFP8Aph09Vil1DmB8rkuL1AICSoF9ShTZApQSKyMzHTsbQw1vYrRM/oUBM0x6cQXFSEi5AAAAAgAl//ACTgXRACgALwCaALIjAQArsQMH6bIDIwors0ADAAkrshACACuxGAfpshgQCiuzQBgWCSuwLy+xKgnpsCwyAbAwL7AL1rApMrEaDumwACDWEbEBDumwGhCxBQErsBYysSAO6bAVMrExASuxAQsRErEILzk5sBoRsCo5sAUStAMHIyssJBc5sCARsh4tLjk5OQCxGAMRErELHzk5sSovERKwKzkwMRMzFDMyJzQnLgI1ND4CNzYeAhUjNCMGBxQWFhcWFxQGIyIuAxMzFzczByMlwGFIAYFEPUMYNmZIVnAxEcFDPwEvKy2+AYGHSG09JQodvD1AvI3bAUaqh0p8QkKJTDdiXDgCAjhmWDuDAoEhUC0rtqB7uDFHY1AEtkhIuAAAAAADABAAAAKwBy8ACwAPABMAbwCyCgEAK7IAAwArsAYzsAwvsBAzsQ0K6bARMgGwFC+wANaxARPpsAEQsQoBK7EJE+mzDwkKCCuxDA7psAwvsQ8O6bAJELEGASuxBxPpsBAg1hGxEw7psRUBK7EQDxESsQQDOTkAsQAKERKwAzkwMRMzExczNxMzAxEjEQM1MxUzNTMVENlvBgQGb9nh3YG+Yr8F4f4fDg4B4fyg/X8CgQPlycnJyQAAAgAUAAACXgcfAAkAEABRALIAAQArsQcL6bIEAwArsQML6bAQL7ELCemwDTIBsBEvsQABK7EJGOmwBTKxEgErsQkAERKyBwoOOTk5ALEDBxESsQEGOTmxCxARErAMOTAxMzUBITUhFQEhFQEzFzczByMUAVv+1wIY/qABYP36vD4/vY3c7gQY29v71dsHH0hIuQAAAAIADAAAAg4F0QAJABAAUQCyAAEAK7EHCemyBAIAK7EDCemwEC+xCwnpsA0yAbARL7AA1rEOF+mxEgErsQ4AERKxBQo5OQCxBwARErABObEEAxESsAY5sQsQERKwDDkwMTM1ASM1IRUBIRUBMxc3MwcjDAEd8AHL/uMBHf4VvD1AvI3bqAL8vKj9BLwF0UhIuAAAAAABAQQFGQL6BdEABgApALAAL7ADM7EBCemxAQnpAbAHL7AA1rEDF+mxCAErALEBABESsAU5MDEBNzMXIycHAQSN3I29Pz0FGbi4R0cAAQEEBRkC+gXRAAYALACwBi+xAQnpsAMysQEJ6bAEMgGwBy+wANaxBBfpsQgBKwCxAQYRErACOTAxATMXNzMHIwEEvT0/vY3cBdFISLgAAAABAR8FFwLhBdUADwAnALAML7QDBgAbBCsBsBAvsADWsQgW6bERASsAsQMMERKxAAg5OTAxATcWMzI2NzcXDgIjIiYnAR9uKUojOwwNagojdz0/cRkFd14vGA0KXgohNTEYAAAAAQGYBRICZgXhAAMAKQCyAQMAK7EACumyAQMAK7EACukBsAQvsADWsQMO6bEDDumxBQErADAxATUzFQGYzgUSz88AAAACAWYE/gKYBh0ABwAPAFIAsAcvtAsFADYEK7APL7QDBQA2BCsBsBAvsAHWtAkPAC4EK7AJELENASu0BQ8ALgQrsREBK7ENCRESswMGBwIkFzkAsQ8LERKzAQQFACQXOTAxADQ2MhYUBiImFBYyNjQmIgFmW35ZWX4NLzovLzoFUHtSUntSrDkrKzkrAAEBXP5/AqYAAAARAD8AsgMBACuyDwAAK7QLBgAbBCsBsBIvsADWtAgQAB0EK7ETASuxCAARErADOQCxCw8RErANObADEbEADDk5MDEFNDc3Mw4CFRQWMjcHBiMiJgFcfwhjCh80PlItEDcyYHHTaGUGCB1aKyklE4oSZgABATkFEgLHBdcAEwA4ALAQL7EDBumwCjKwDSDWEbAAM7EGBukBsBQvsQABK7ELFumxFQErALEQDRESsAs5sAYRsAE5MDEBNTYzMhYXMjY3NxUGIyImIyIGBwE5MTwhdB8ZNw4PMzofdCEZNw4FGZcnJQIRCAiYJycQCAAAAgDXBRkDSAXRAAMABwAxALAAL7AEM7EBCemwBTKxAQnpsAYyAbAIL7AA1rEGGOmxCQErsQYAERKxAgQ5OQAwMRM3MwczNzMH12vXoo9r16IFGbi4uLgAAAEASgHHAXMCiQADACIAsAAvsQEE6bEBBOkBsAQvsADWsQMV6bEDFemxBQErADAxEzUhFUoBKQHHwsIAAAEASgHHAXMCiQADACIAsAAvsQEE6bEBBOkBsAQvsADWsQMV6bEDFemxBQErADAxEzUhFUoBKQHHwsIAAAEASgHHAXMCiQADACIAsAAvsQEE6bEBBOkBsAQvsADWsQMV6bEDFemxBQErADAxEzUhFUoBKQHHwsIAAAEASgKJAt0DTAADACIAsAAvsQEE6bEBBOkBsAQvsQABK7QDGAANBCuxBQErADAxEzUhFUoCkwKJw8MAAAEASgKJA4MDTAADABcAsAAvsQEE6bEBBOkBsAQvsQUBKwAwMRM1IRVKAzkCicPDAAEAMQP0AQgF4QAGAC0AsgIDACu0AA0ACQQrAbAHL7AA1rEGE+mxBhPpsQgBK7EGABESsQMEOTkAMDETNRMzAzMVMXFmR0cD9OMBCv724wAAAQAtA/QBBAXhAAYALgCyAwMAK7QADQAJBCsBsAcvsADWsAIysQUT6bEFE+mxCAErsQUAERKwATkAMDETEyM1MxUDLUhI13ED9AEK4+P+9gABAC3+9gEEAOMABgAsALAFL7QBDQAJBCsBsAcvsAXWsAAysQMT6bEDE+mxCAErsQMFERKwBjkAMDEzNTMVAyMTLddxZkjj4/72AQoAAgA1A/QCOwXhAAYADQBTALICAwArsAkzsAYvsAczsQQM6bALMgGwDi+wANaxBhPpsAMysAYQsQcBK7ENE+mwCjKxDwErsQYAERKwBDmxDQcRErALOQCxBAYRErEBCDk5MDETNRMzAzMVMzUTMwMzFTVxZkdHWHFmR0cD9OMBCv724+MBCv724wAAAAACADUD9AI7BeEABgANAFsAsgMDACuwCjOxAgzpsAgysgIDCiuzQAIGCSuwBzIBsA4vsALWsAAysQUT6bAFELEJASuwBzKxDBPpsQ8BK7EFAhESsAE5sQwJERKwCDkAsQMCERKxBQw5OTAxExMjNTMVAzMTIzUzFQM1SEjXcMhISNdwA/QBCuPj/vYBCuPj/vYAAAAAAgA1/vYCOwDjAAYADQBbALIAAQArsAczsQEM6bAIMrIAAQors0AABAkrsAsysgMBACuyCgEAKwGwDi+wANawBTKxAxPpsAMQsQcBK7AMMrEKE+mxDwErsQMAERKwBjmxCgcRErANOQAwMTM1MxUDIxMzNTMVAyMTNddwZ0jn13BnSOPj/vYBCuPj/vYBCgAAAQBSAjUCRgQpAAsAKACwCS+0Aw0ACQQrtAMNAAkEKwGwDC+wANaxBhfpsQYX6bENASsAMDETNDYzMhYVFAYjIiZSkWtmkpJmapIDMWaSkWdqkpIAAwA1AAADjwDjAAMABwALAEUAsgABACuxBAgzM7EBDOmxBQkyMrIAAQArsQEM6QGwDC+wANaxAxPpsAMQsQQBK7EHE+mwBxCxCAErsQsT6bENASsAMDEzNTMVMzUzFTM1MxU112vXatfj4+Pj4+MAAAEANf/wAu4F8gA9ALQAsjcBACuxKgvpsio3CiuzQCovCSuyDQMAK7EbC+myGw0KK7NAGxMJK7QAATcNDSuwIjO0AAYAGwQrsCQytAUENw0NK7AgM7QFBgAbBCuwHjIBsD4vsDzWsQIGMjKxJhPpsR0hMjKyJjwKK7NAJiQJK7AfMrI8Jgors0A8AAkrsAQysCYQsS4BK7AUMrExDumwEjKxPwErsSY8ERKxDDc5ObAuEbINGzY5OTmwMRKwEDkAMDETNTM1IzUzNTQ+AzIeAhcXFSM1IjYuAiMGBxUzFSMVMxUjFRQWFjMyNjU3NTMVFA4DIi4CJyc1NWtrawQfN3moeDgeAwLPAgQKDyMaRgjp6enpBCcjKSkCzwUeOHioeTcfAgICI4mJie4MLXFWRkReYCMhVFQXICEXCmXuiYmJ7gwlPTcdGlRUDC1xVkVDYF8gI+4AAAAAAgBKAzUDWAXhAAcAFQCOALIBAwArsQkNMzOxAAXpsAMysgABCiuzQAAGCSuyCA8SMjIyAbAWL7AG1rEFEOmyBQYKK7NABQMJK7IGBQors0AGAAkrsAUQsQgBK7EVD+m0ChAALQQrsBUQsRMBK7QSDwAeBCuwEhCxEAErsQ8P6bAPELQNEAAtBCuwDS+xFwErsRITERKxCww5OQAwMRM1IRUjESMRAREzEzMTMxEjEQMjAxFKAUFocQEGikMGRIloTjNQBXloaP28AkT9vAKs/sEBP/1UAcH+PwHB/j8AAAABAEoCiQK+AzUAAwAfALAAL7EBB+mxAQfpAbAEL7EAASuxAxjpsQUBKwAwMRM1IRVKAnQCiaysAAEAAAAABGAEYAADAAARIREhBGD7oARg+6AAAAABABQAAAKyBfAAHwBkALIeAQArsBkzsgoDACuwDTOxEQnpsgECACuwFzOxAAnpsBsyAbAgL7Ae1rACMrEdDumwFjKyHh0KK7NAHgAJK7AdELEaASuxGQ7psSEBK7EaHRESsQoROTmwGRGxDw45OQAwMRM1MzU0PgQzMhYXFxUmIyIOAhUVIREjESMRIxEUaQIMITVcPiFJFRQpRR8nDAIBZs+XzwOmuh8tMWk/SCMJBAK4DCVPHScd+6ADpvxaA6YAAAAAAQAUAAACsgXwAB8AagCyHgEAK7AQM7IKAwArsRQJ6bIBAgArsBkzsQAJ6bAbMgGwIC+wHtawAjKxHQ7psBgysh0eCiuzQB0bCSuyHh0KK7NAHgAJK7AdELERASuxEA7psSEBK7ERHRESsAo5ALEUARESsBI5MDETNTM1ND4EMzIWFxczESMRJiIOAhUVMxUjESMRFGkCDCE1XD4hSRUUpM8lPScMAmhozwOmuh8tMWk/SCMJBAL6HwUxBCVPHScduvxaA6YAAAAAAAgAZgADAAEECQAAAHgAAAADAAEECQABABwAeAADAAEECQACAA4AlAADAAEECQADAA4AogADAAEECQAEACwAsAADAAEECQAFAB4A3AADAAEECQAGABwAeAADAAEECQDIAG4A+gBHAGUAbgBlAHIAYQB0AGUAZAAgAGkAbgAgADIAMAAwADkAIABiAHkAIABGAG8AbgB0AEwAYQBiACAAUwB0AHUAZABpAG8ALgAgAEMAbwBwAHkAcgBpAGcAaAB0ACAAaQBuAGYAbwAgAHAAZQBuAGQAaQBuAGcALgBnAHIAdABlAHMAdAAtAG8AdAAtAG8AbgBsAHkAUgBlAGcAdQBsAGEAcgB3AGUAYgBmAG8AbgB0AGcAcgB0AGUAcwB0AC0AbwB0AC0AbwBuAGwAeQAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADAAMAAxAC4AMAAwADEAVABoAGkAcwAgAGYAbwBuAHQAIAB3AGEAcwAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAdABoAGUAIABGAG8AbgB0ACAAUwBxAHUAaQByAHIAZQBsACAARwBlAG4AZQByAGEAdABvAHIALgAAAAIAAAAAAAD/ZwBmAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBAgCjAIQAhQCWAI4AiwEDAIoA2gCNAMMA3gCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwCRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8AKEAfwB+AIAAgQDsAO4AugDXAOIA4wCwALEA5ADlALsA5gDnANgA4QDbANwA3QDgANkA3wEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREAsgCzALYAtwDEALQAtQDFAIcAqwESARMBFACMAO8BFQEWARcHdW5pMDBBMAd1bmkwMEFEB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDEwB3VuaTIwMTEKZmlndXJlZGFzaAd1bmkyMDJGB3VuaTIwNUYERXVybwd1bmlFMDAwB3VuaUZCMDEHdW5pRkIwMgAAAAEAAf//AA8AAAABAAAAAMmJbzEAAAAAxqd5twAAAADK4Sh3AAEAAAAMAAAAFgAAAAIAAQABAN8AAQAEAAAAAQAAAAAAAQAAAAoALgA8AAJERkxUAA5sYXRuABgABAAAAAD//wAAAAQAAAAA//8AAQAAAAFUU1QxAAgAAAABAAAAAQAEAAEAAAABAAgAAgAOAAQARAAzADYAVgABAAQAJAApACwALwAA); +} + +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> |