summaryrefslogtreecommitdiffstats
path: root/layout/reftests/text-svgglyphs/resources
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--layout/reftests/text-svgglyphs/resources/README61
-rw-r--r--layout/reftests/text-svgglyphs/resources/bug1320197-testFont2.ttfbin0 -> 1972 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-base.svg13
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-invalid.svg40
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-objectcolor.svg24
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-objectopacity.svg59
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-objectstroke.svg25
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-paintservers.svg28
-rw-r--r--layout/reftests/text-svgglyphs/resources/glyphs-transforms.svg67
-rw-r--r--layout/reftests/text-svgglyphs/resources/nosvg.woffbin0 -> 68044 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/rubbish.txt1
-rw-r--r--layout/reftests/text-svgglyphs/resources/rubbish.woffbin0 -> 68172 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/svg-bitmap.ttfbin0 -> 2064 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/svg-bitmap.ttx253
-rw-r--r--layout/reftests/text-svgglyphs/resources/svg-glyph-extents.otfbin0 -> 183892 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/svg-gz.ttfbin0 -> 113804 bytes
-rw-r--r--layout/reftests/text-svgglyphs/resources/svg.woffbin0 -> 70060 bytes
17 files changed, 571 insertions, 0 deletions
diff --git a/layout/reftests/text-svgglyphs/resources/README b/layout/reftests/text-svgglyphs/resources/README
new file mode 100644
index 0000000000..852e5e4206
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/README
@@ -0,0 +1,61 @@
+.woff files for SVG-in-OpenType testing
+=======================================
+
+There are three .woff files in this directory:
+ * nosvg.woff
+ * svg.woff
+ * rubbish.woff
+
+nosvg.woff
+----------
+This font is FiraSansOT-Regular, with its metrics hacked so that its ascent
+is 1000 and descent is 0. Its unitsPerEm value is 1000.
+
+It contains no 'SVG ' table.
+
+svg.woff
+--------
+This font is the same as nosvg.woff above, but with the glyphs-*.svg SVG
+documents from this directory embedded in it using the tools described below.
+
+rubbish.woff
+------------
+This font is the same as nosvg.woff above, but with the addition of an 'SVG '
+table with the contents of rubbish.txt. Its purpose is to test that SVG tables
+without valid XML are ignored.
+
+Creating the Fonts
+------------------
+The tools used here are insertsvg.py from [1] and sfnt2woff from [2].
+
+svg.woff can be recreated with:
+
+woff2sfnt nosvg.woff > nosvg.ttf
+insertsvg.py nosvg.ttf svg.ttf glyphs-*.svg
+sfnt2woff svg.ttf
+
+[1] https://github.com/edf825/SVG-OpenType-Utils
+[2] http://people.mozilla.com/~jkew/woff/
+
+
+
+Additional test fonts:
+======================
+
+svg-glyph-extents.otf
+---------------------
+
+This is a copy of Fira Sans with a simple SVG table added using the tool from
+https://github.com/rocallahan/svg-opentype-workshop. The SVG table defines four
+glyphs, corresponding to 'A' through 'D':
+
+ <svg xmlns='http://www.w3.org/2000/svg'>
+ <rect id='glyph36' x='0' y='-1000' width='1000' height='1500' fill='red'/>
+ <rect id='glyph37' x='0' y='-1000' width='1000' height='1500' fill='green' transform='scale(2)'/>
+ <g id='glyph38'>
+ <rect x='0' y='-1000' width='1000' height='1500' fill='red'/>
+ </g>
+ <g id='glyph39'>
+ <rect x='0' y='-1000' width='1000' height='1500' fill='green' transform='scale(2)'/>
+ </g>
+ </svg>
diff --git a/layout/reftests/text-svgglyphs/resources/bug1320197-testFont2.ttf b/layout/reftests/text-svgglyphs/resources/bug1320197-testFont2.ttf
new file mode 100644
index 0000000000..8ef2e89edf
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/bug1320197-testFont2.ttf
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-base.svg b/layout/reftests/text-svgglyphs/resources/glyphs-base.svg
new file mode 100644
index 0000000000..51c32135c0
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-base.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Basic test SVG glyphs
+ Covers glyph ID 47
+-->
+ <!-- char = L -->
+ <g id="glyph47">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ stroke="black" fill="red"/>
+ <rect x="100" y="-1000" width="100" height="100" stroke="none"
+ fill="turquoise" />
+ </g>
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-invalid.svg b/layout/reftests/text-svgglyphs/resources/glyphs-invalid.svg
new file mode 100644
index 0000000000..4740b4ff3b
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-invalid.svg
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Test handling of invalid ids
+-->
+ <!-- not valid: leading space not allowed -->
+ <g id="glyph 48">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+ <!-- not valid: leading zero not allowed -->
+ <g id="glyph048">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+ <!-- not valid: trailing garbage not allowed -->
+ <g id="glyph48xxx">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+ <!-- not valid: trailing space not allowed -->
+ <g id="glyph48 ">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+ <!-- not valid: floating point not allowed -->
+ <g id="glyph48.0">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+ <!-- char = M -->
+ <g id="glyph48">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="lime"/>
+ </g>
+ <!-- Ensure first glyph48 is picked -->
+ <g id="glyph48">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="red"/>
+ </g>
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-objectcolor.svg b/layout/reftests/text-svgglyphs/resources/glyphs-objectcolor.svg
new file mode 100644
index 0000000000..cf738d0cc1
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-objectcolor.svg
@@ -0,0 +1,24 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Test SVG glyphs for text object pattern inheritance
+ Covers glyph ID range 49 (N) to 52 (Q)
+-->
+<!-- context-fill, no stroke -->
+ <!-- N -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ stroke="none" fill="context-fill" id="glyph49"/>
+
+ <!-- O -->
+ <rect x="50" y="-950" width="900" height="900" stroke-width="100"
+ fill="context-fill" stroke="none" id="glyph50"/>
+
+<!-- context-stroke -->
+ <!-- P -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ stroke="context-stroke" fill="burlywood" id="glyph51"/>
+
+<!-- both context-stroke and context-fill (but note swapped usage!) -->
+ <!-- Q -->
+ <rect x="50" y="-950" width="900" height="900" stroke-width="100"
+ fill="context-stroke" stroke="context-fill" id="glyph52"/>
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-objectopacity.svg b/layout/reftests/text-svgglyphs/resources/glyphs-objectopacity.svg
new file mode 100644
index 0000000000..7fc479e22b
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-objectopacity.svg
@@ -0,0 +1,59 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Test SVG glyphs for text object opacity inheritance
+ Covers glyph ID range 53 (R) to 60 (Y)
+-->
+ <!-- R -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="context-fill" stroke="context-stroke"
+ fill-opacity="context-fill-opacity"
+ stroke-opacity="context-stroke-opacity" id="glyph53"/>
+
+ <!-- S -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="context-fill" stroke="context-stroke"
+ fill-opacity="context-stroke-opacity"
+ stroke-opacity="context-fill-opacity" id="glyph54"/>
+
+ <!-- T -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="context-stroke" stroke="context-fill"
+ fill-opacity="context-fill-opacity"
+ stroke-opacity="context-stroke-opacity" id="glyph55"/>
+
+ <!-- U -->
+ <!-- Test for bug where explicit `inherit' would fail for
+ *-opacity="objectStrokeOpacity" or "objectFillOpacity" -->
+ <g style="fill-opacity : context-stroke-opacity; stroke-opacity : context-fill-opacity">
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="context-stroke" stroke="context-fill"
+ fill-opacity="inherit" stroke-opacity="inherit" id="glyph56"/>
+ </g>
+
+ <!-- W -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="darkorchid" stroke="goldenrod"
+ fill-opacity="context-fill-opacity"
+ stroke-opacity="context-stroke-opacity" id="glyph58"/>
+
+ <!-- X -->
+ <rect x="100" y="-900" width="800" height="800" stroke-width="50"
+ fill="darkorchid" stroke="goldenrod"
+ fill-opacity="context-stroke-opacity"
+ stroke-opacity="context-fill-opacity" id="glyph59"/>
+
+ <style type="text/css"><![CDATA[
+ #glyph60 {
+ fill-opacity : context-fill-opacity;
+ stroke-opacity : context-stroke-opacity;
+ }
+ #ychild {
+ color-interpolation : sRGB;
+ }
+ ]]></style>
+ <!-- Y -->
+ <g id="glyph60">
+ <rect x="100" y="-900" width="800" height="300" stroke="red" stroke-width="50"/>
+ <rect x="100" y="-400" width="800" height="300" stroke="red" stroke-width="50" id="ychild" />
+ </g>
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-objectstroke.svg b/layout/reftests/text-svgglyphs/resources/glyphs-objectstroke.svg
new file mode 100644
index 0000000000..44afb2f600
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-objectstroke.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Test SVG glyphs for text object stroke value inheritance
+ Covers glyph ID range 68 (a) to 71 (d)
+-->
+ <!-- a -->
+ <rect x="100" y="-900" width="800" height="800" stroke="powderblue"
+ stroke-width="50" stroke-dashoffset="35"
+ stroke-dasharray="50 50" id="glyph68" />
+
+ <!-- b -->
+ <rect x="100" y="-900" width="800" height="800" stroke="chartreuse"
+ stroke-width="50" stroke-dashoffset="35"
+ stroke-dasharray="context-value" id="glyph69" />
+
+ <!-- c -->
+ <rect x="100" y="-900" width="800" height="800" stroke="sienna"
+ stroke-width="50" stroke-dasharray="50 50"
+ stroke-dashoffset="context-value" id="glyph70" />
+
+ <!-- d -->
+ <rect x="100" y="-900" width="800" height="800" stroke="olivedrab"
+ stroke-width="context-value" stroke-dasharray="context-value"
+ stroke-dashoffset="context-value" id="glyph71" />
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-paintservers.svg b/layout/reftests/text-svgglyphs/resources/glyphs-paintservers.svg
new file mode 100644
index 0000000000..7f5a95ac09
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-paintservers.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ SVG test glyphs for paint servers within SVG glyphs
+ e: tests that we can refer to paint servers within the SVG glyph doc
+ (i.e. fill="url(#grad)" works)
+ f: tests that stop-color="context-{fill,stroke}" uses the context fill/stroke
+ fallback color
+-->
+ <defs>
+ <linearGradient id="grad">
+ <stop offset="0%" stop-color="papayawhip" />
+ <stop offset="100%" stop-color="plum" />
+ </linearGradient>
+
+ <linearGradient id="grad2">
+ <stop offset="0%" stop-color="context-fill" />
+ <stop offset="100%" stop-color="context-stroke" />
+ </linearGradient>
+ </defs>
+
+ <!-- char 'e' -->
+ <rect id="glyph72" x="250" y="-750" width="500" height="500"
+ fill="url(#grad)" />
+
+ <!-- char 'f' -->
+ <rect id="glyph73" x="250" y="-750" width="500" height="500"
+ fill="url(#grad2)" />
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/glyphs-transforms.svg b/layout/reftests/text-svgglyphs/resources/glyphs-transforms.svg
new file mode 100644
index 0000000000..ff3d9ffb76
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/glyphs-transforms.svg
@@ -0,0 +1,67 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<!--
+ SVG test glyphs for transforms within SVG glyphs
+ 'g': simple red square used as a reference
+ 'h': a smaller square, with a transform that should make it match the 'g'
+ 'i': similar, applying a transform to the referenced element
+ 'j': has a large blue square that should be transformed such that it is
+ completely hidden by the red
+ 'k': tests the accumulation of several transforms
+ 'l': checks that a transform from outside the glyph element is NOT applied
+ 'm', 'n', 'o', 'p': all render the same <rect> but only 'm' and 'n' should be
+ transformed; 'o' and 'p' should match 'q'
+ 'q': the unscaled small square, reference for 'o' and 'p' above
+-->
+
+ <defs>
+ <!-- this rect will need to be scaled 5x to match the reference glyph 'g' -->
+ <rect id="small" x="50" y="-150" width="100" height="100" fill="red" />
+ </defs>
+
+ <!-- char 'g' -->
+ <rect id="glyph74" x="250" y="-750" width="500" height="500" fill="red" />
+
+ <!-- char 'h' -->
+ <rect id="glyph75" x="25" y="-75" width="50" height="50" transform="scale(10)" fill="red" />
+
+ <!-- char 'i' -->
+ <g id="glyph76">
+ <use xlink:href="#small" transform="scale(5)" />
+ </g>
+
+ <!-- char 'j' -->
+ <g id="glyph77">
+ <g transform="translate(300,-300) scale(0.4)">
+ <rect x="0" y="-1000" width="1000" height="1000" fill="blue" />
+ </g>
+ <g transform="scale(5)">
+ <use xlink:href="#small" />
+ </g>
+ </g>
+
+ <!-- char 'k' -->
+ <g id="glyph78" transform="scale(0.5)">
+ <g transform="scale(0.5)">
+ <use xlink:href="#small" transform="scale(20)" />
+ </g>
+ </g>
+
+ <!-- char 'l' -->
+ <g transform="scale(2)">
+ <g id="glyph79">
+ <use xlink:href="#small" transform="scale(5)" />
+ </g>
+ </g>
+
+ <g id="glyph80"> <!-- char 'm' -->
+ <g id="glyph81" transform="scale(5)"> <!-- char 'n' -->
+ <g id="glyph82"> <!-- char 'o' -->
+ <use id="glyph83" xlink:href="#small" /> <!-- char 'p' -->
+ </g>
+ </g>
+ </g>
+
+ <!-- char 'q' -->
+ <use id="glyph84" xlink:href="#small" />
+
+</svg>
diff --git a/layout/reftests/text-svgglyphs/resources/nosvg.woff b/layout/reftests/text-svgglyphs/resources/nosvg.woff
new file mode 100644
index 0000000000..ad53341871
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/nosvg.woff
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/rubbish.txt b/layout/reftests/text-svgglyphs/resources/rubbish.txt
new file mode 100644
index 0000000000..1ad1631812
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/rubbish.txt
@@ -0,0 +1 @@
+This is the text contained in the rubbish.ttf 'SVG ' table. It is obviously not XML, and should thus be ignored.
diff --git a/layout/reftests/text-svgglyphs/resources/rubbish.woff b/layout/reftests/text-svgglyphs/resources/rubbish.woff
new file mode 100644
index 0000000000..3c83e02a30
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/rubbish.woff
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttf b/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttf
new file mode 100644
index 0000000000..cb0e3bd95d
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttf
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttx b/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttx
new file mode 100644
index 0000000000..cd3e9f4c5c
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/svg-bitmap.ttx
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.16">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="uni0000"/>
+ <GlyphID id="2" name="uni000D"/>
+ <GlyphID id="3" name="space"/>
+ <GlyphID id="4" name="A"/>
+ <GlyphID id="5" name="B"/>
+ <GlyphID id="6" name="C"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.0"/>
+ <checkSumAdjustment value="0xcbb705e8"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Tue Mar 1 20:28:26 2022"/>
+ <modified value="Tue Mar 1 20:28:26 2022"/>
+ <xMin value="0"/>
+ <yMin value="-250"/>
+ <xMax value="1000"/>
+ <yMax value="750"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="3"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="750"/>
+ <descent value="-250"/>
+ <lineGap value="0"/>
+ <advanceWidthMax value="1000"/>
+ <minLeftSideBearing value="0"/>
+ <minRightSideBearing value="0"/>
+ <xMaxExtent value="1000"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="4"/>
+ </hhea>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="7"/>
+ <maxPoints value="2"/>
+ <maxContours value="2"/>
+ <maxCompositePoints value="0"/>
+ <maxCompositeContours value="0"/>
+ <maxZones value="2"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="512"/>
+ <maxSizeOfInstructions value="0"/>
+ <maxComponentElements value="0"/>
+ <maxComponentDepth value="0"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="1000"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="699"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="140"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="699"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="479"/>
+ <yStrikeoutSize value="49"/>
+ <yStrikeoutPosition value="258"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="0"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="0"/>
+ <bProportion value="0"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="00000000 00000000 00000000 00000111"/>
+ <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="XXXX"/>
+ <fsSelection value="00000000 01000000"/>
+ <usFirstCharIndex value="0"/>
+ <usLastCharIndex value="67"/>
+ <sTypoAscender value="750"/>
+ <sTypoDescender value="-250"/>
+ <sTypoLineGap value="0"/>
+ <usWinAscent value="750"/>
+ <usWinDescent value="250"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 00000011"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="400"/>
+ <sCapHeight value="700"/>
+ <usDefaultChar value="32"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="0"/>
+ </OS_2>
+
+ <hmtx>
+ <mtx name=".notdef" width="1000" lsb="0"/>
+ <mtx name="A" width="1000" lsb="0"/>
+ <mtx name="B" width="1000" lsb="0"/>
+ <mtx name="C" width="1000" lsb="0"/>
+ <mtx name="space" width="1000" lsb="0"/>
+ <mtx name="uni0000" width="0" lsb="0"/>
+ <mtx name="uni000D" width="0" lsb="0"/>
+ </hmtx>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x0" name="uni0000"/><!-- ???? -->
+ <map code="0xd" name="uni000D"/><!-- ???? -->
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C -->
+ </cmap_format_4>
+ </cmap>
+
+ <loca>
+ <!-- The 'loca' table will be calculated by the compiler -->
+ </loca>
+
+ <glyf>
+
+ <!-- The xMin, yMin, xMax and yMax values
+ will be recalculated by the compiler. -->
+
+ <TTGlyph name=".notdef"/><!-- contains no outline data -->
+
+ <TTGlyph name="A" xMin="0" yMin="-250" xMax="1000" yMax="750">
+ <contour>
+ <pt x="0" y="-250" on="1"/>
+ </contour>
+ <contour>
+ <pt x="1000" y="750" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="B" xMin="0" yMin="-250" xMax="1000" yMax="750">
+ <contour>
+ <pt x="0" y="-250" on="1"/>
+ </contour>
+ <contour>
+ <pt x="1000" y="750" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="C" xMin="0" yMin="-250" xMax="1000" yMax="750">
+ <contour>
+ <pt x="0" y="-250" on="1"/>
+ </contour>
+ <contour>
+ <pt x="1000" y="750" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="space" xMin="0" yMin="-250" xMax="1000" yMax="750">
+ <contour>
+ <pt x="0" y="-250" on="1"/>
+ </contour>
+ <contour>
+ <pt x="1000" y="750" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="uni0000"/><!-- contains no outline data -->
+
+ <TTGlyph name="uni000D"/><!-- contains no outline data -->
+
+ </glyf>
+
+ <name>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ SVG-Bitmap
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ SVG-Bitmap-Regular:v1.0
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ SVG-Bitmap Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.0
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ SVG-Bitmap-Regular
+ </namerecord>
+ </name>
+
+ <post>
+ <formatType value="3.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="0"/>
+ <underlineThickness value="0"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ </post>
+
+ <SVG>
+
+ <svgDoc endGlyphID="4" startGlyphID="4">
+ <![CDATA[<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="glyph4" viewBox="0 0 1000 1000"><image x="0" y="-750" width="1000" height="1000" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAChJREFUSMftzUENAAAIBKDT/p01hQ83KEBNbnUEAoFAIBAIBALBk2ABo8QBP1gd7ycAAAAASUVORK5CYII="/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="5" startGlyphID="5">
+ <![CDATA[<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="glyph5" viewBox="0 0 1000 1000"><image x="0" y="-750" width="1000" height="1000" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAChJREFUSMftzUENAAAIBKDT/p01hQ83KEDN5FQnAoFAIBAIBAKB4EewtloCPhS2RvMAAAAASUVORK5CYII="/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="6" startGlyphID="6">
+ <![CDATA[<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="glyph6" viewBox="0 0 1000 1000"><image x="0" y="-750" width="1000" height="1000" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAChJREFUSMftzUEBAAAEBLCjf2dK8NsKrJLJp84zgUAgEAgEAoFAcGUBocYBP+pqhN4AAAAASUVORK5CYII="/></svg>]]>
+ </svgDoc>
+ </SVG>
+
+</ttFont>
diff --git a/layout/reftests/text-svgglyphs/resources/svg-glyph-extents.otf b/layout/reftests/text-svgglyphs/resources/svg-glyph-extents.otf
new file mode 100644
index 0000000000..1083f397f6
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/svg-glyph-extents.otf
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/svg-gz.ttf b/layout/reftests/text-svgglyphs/resources/svg-gz.ttf
new file mode 100644
index 0000000000..3a9660224a
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/svg-gz.ttf
Binary files differ
diff --git a/layout/reftests/text-svgglyphs/resources/svg.woff b/layout/reftests/text-svgglyphs/resources/svg.woff
new file mode 100644
index 0000000000..6deee1460d
--- /dev/null
+++ b/layout/reftests/text-svgglyphs/resources/svg.woff
Binary files differ