import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
61
layout/reftests/text-svgglyphs/resources/README
Normal file
|
|
@ -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>
|
||||
13
layout/reftests/text-svgglyphs/resources/glyphs-base.svg
Normal file
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 349 B |
40
layout/reftests/text-svgglyphs/resources/glyphs-invalid.svg
Normal file
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 841 B |
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 900 B |
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 880 B |
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
layout/reftests/text-svgglyphs/resources/nosvg.woff
Normal file
1
layout/reftests/text-svgglyphs/resources/rubbish.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
This is the text contained in the rubbish.ttf 'SVG ' table. It is obviously not XML, and should thus be ignored.
|
||||