bug 875629 - test for supplementary-plane character support in SVG-in-OpenType. r=roc
authorJonathan Kew <jkew@mozilla.com>
Wed, 05 Jun 2013 12:35:00 +0100
changeset 134096 566576fe7088cf32bc87ddb7f83f515f7c026486
parent 134095 5df3bc40a38d0f26d0f9d75d5f6afd19dd52e44a
child 134097 1a88cc7dbd568ba9ec7dfe55ae934adf423797ff
push id24783
push userryanvm@gmail.com
push dateWed, 05 Jun 2013 20:30:03 +0000
treeherdermozilla-central@204de5b7e0a6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersroc
bugs875629
milestone24.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
bug 875629 - test for supplementary-plane character support in SVG-in-OpenType. r=roc
layout/reftests/text-svgglyphs/cat_face-bmp.html
layout/reftests/text-svgglyphs/cat_face-notref.html
layout/reftests/text-svgglyphs/cat_face.html
layout/reftests/text-svgglyphs/reftest.list
layout/reftests/text-svgglyphs/resources/cat_face-bmp.ttf
layout/reftests/text-svgglyphs/resources/cat_face.ttf
new file mode 100644
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/cat_face-bmp.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style type="text/css">
+/* font with the SVG glyph for the cat face U+1f431 remapped to
+   the BMP smiling-face character U+263a */
+@font-face { font-family: foo; src: url("resources/cat_face-bmp.ttf"); }
+body { font-family: foo, sans-serif; font-size: 24px; }
+td { padding: 2px 10px }
+</style>
+</head>
+<body>
+<table>
+<tr><td>&#x263a;</td><td>ネコ</td><td>cat face</td></tr>
+</table>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/cat_face-notref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style type="text/css">
+/* no SVG cat-face glyph, so this should NOT match the testcases */
+body { font-family: sans-serif; font-size: 24px; }
+td { padding: 2px 10px }
+</style>
+</head>
+<body>
+<table>
+<tr><td>&#x263a;</td><td>ネコ</td><td>cat face</td></tr>
+</table>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/cat_face.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style type="text/css">
+/* font with an SVG glyph for the cat face U+1f431 */
+@font-face { font-family: foo; src: url("resources/cat_face.ttf"); }
+body { font-family: foo, sans-serif; font-size: 24px; }
+td { padding: 2px 10px }
+</style>
+</head>
+<body>
+<table>
+<tr><td>&#x1f431;</td><td>ネコ</td><td>cat face</td></tr>
+</table>
+</body>
+</html>
--- a/layout/reftests/text-svgglyphs/reftest.list
+++ b/layout/reftests/text-svgglyphs/reftest.list
@@ -12,8 +12,12 @@ pref(gfx.font_rendering.opentype_svg.ena
 pref(gfx.font_rendering.opentype_svg.enabled,true)    == svg-glyph-objectpattern.svg svg-glyph-objectpattern-ref.svg
 pref(gfx.font_rendering.opentype_svg.enabled,true)    == clip.html clip-ref.html
 pref(gfx.font_rendering.opentype_svg.enabled,true)    fuzzy(5,12) == svg-glyph-objectopacity.svg svg-glyph-objectopacity-ref.svg # see bug 871961#c5
 pref(gfx.font_rendering.opentype_svg.enabled,true)    == svg-glyph-objectopacity2.svg svg-glyph-objectopacity2-ref.svg
 pref(gfx.font_rendering.opentype_svg.enabled,true)    random-if(winWidget) == svg-glyph-paintnone.svg svg-glyph-paintnone-ref.svg # bug 872491
 pref(gfx.font_rendering.opentype_svg.enabled,true)    == svg-glyph-cachedopacity.svg svg-glyph-cachedopacity-ref.svg
 pref(gfx.font_rendering.opentype_svg.enabled,true)    == svg-glyph-objectvalue.svg svg-glyph-objectvalue-ref.svg
 pref(gfx.font_rendering.opentype_svg.enabled,true)    fails == svg-glyph-mask.svg svg-glyph-mask-ref.svg # bug 872483
+
+# test for a non-BMP character in the glyphchar attribute (bug 875629)
+pref(gfx.font_rendering.opentype_svg.enabled,true)  != cat_face-bmp.html cat_face-notref.html
+pref(gfx.font_rendering.opentype_svg.enabled,true)  == cat_face.html cat_face-bmp.html
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5c080ba66d395fee53906b1d2516042cecb2f13
GIT binary patch
literal 9544
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e21617e15b5a86fda54f4b2be689a5f5b2256450
GIT binary patch
literal 9592
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