default namespace = "http://www.w3.org/2000/svg" namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" ## ## SVG 1.1 Text Module ## file: svg-text.rng ## ## This is SVG, a language for describing two-dimensional graphics in XML. ## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved. ## ## $Id: svg-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $ ## ## ## Text ## ## text, tspan, tref, textPath, altGlyph, altGlyphDef, altGlyphItem, ## glyphRef ## ## This module declares markup to provide support for alternate glyph. ## [ xml:lang = "en" ] grammar { include "svg-basic-text.rnc" a:documentation [ "\x{a}" ~ " Datatypes\x{a}" ~ " " ] BaselineShiftValue.datatype = xsd:string FontSizeAdjustValue.datatype = xsd:string GlyphOrientationHorizontalValue.datatype = xsd:string GlyphOrientationVerticalValue.datatype = xsd:string KerningValue.datatype = xsd:string SpacingValue.datatype = xsd:string TextDecorationValue.datatype = xsd:string a:documentation [ "\x{a}" ~ " SVG.Text.attrib\x{a}" ~ " " ] SVG.Text.extra.attrib = empty SVG.Text.attrib &= attribute writing-mode { "lr-tb" | "rl-tb" | "tb-rl" | "lr" | "rl" | "tb" | "inherit" }?, SVG.Text.extra.attrib a:documentation [ "\x{a}" ~ " SVG.TextContent.attrib\x{a}" ~ " " ] SVG.TextContent.extra.attrib = empty SVG.TextContent.attrib &= attribute alignment-baseline { "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" }?, attribute baseline-shift { BaselineShiftValue.datatype }?, attribute direction { "ltr" | "rtl" | "inherit" }?, attribute dominant-baseline { "auto" | "use-script" | "no-change" | "reset-size" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "central" | "middle" | "text-after-edge" | "text-before-edge" | "inherit" }?, attribute glyph-orientation-horizontal { GlyphOrientationHorizontalValue.datatype }?, attribute glyph-orientation-vertical { GlyphOrientationVerticalValue.datatype }?, attribute kerning { KerningValue.datatype }?, attribute letter-spacing { SpacingValue.datatype }?, attribute text-anchor { "start" | "middle" | "end" | "inherit" }?, attribute text-decoration { TextDecorationValue.datatype }?, attribute unicode-bidi { "normal" | "embed" | "bidi-override" | "inherit" }?, attribute word-spacing { SpacingValue.datatype }?, SVG.TextContent.extra.attrib SVG.Font.attrib &= attribute font-size-adjust { FontSizeAdjustValue.datatype }?, attribute font-stretch { "normal" | "wider" | "narrower" | "ultra-condensed" | "extra-condensed" | "condensed" | "semi-condensed" | "semi-expanded" | "expanded" | "extra-expanded" | "ultra-expanded" | "inherit" }?, attribute font-variant { "normal" | "small-caps" | "inherit" }? ## ## extend SVG.Text.class ## SVG.Text.class |= altGlyphDef ## ## extend SVG.TextContent.class ## SVG.TextContent.class |= tspan | tref | textPath a:documentation [ "\x{a}" ~ " text: Text Element\x{a}" ~ " " ] SVG.text.class |= SVG.TextContent.class attlist.text &= SVG.Text.attrib, SVG.TextContent.attrib, attribute dx { Lengths.datatype }?, attribute dy { Lengths.datatype }?, attribute textLength { Length.datatype }?, attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }? a:documentation [ "\x{a}" ~ " tspan: Text Span Element\x{a}" ~ " " ] SVG.tspan.content = (text | tspan | tref | altGlyph | animate | set | animateColor | SVG.Description.class | SVG.Hyperlink.class)* tspan = element tspan { attlist.tspan, SVG.tspan.content } attlist.tspan &= SVG.Core.attrib, SVG.Conditional.attrib, SVG.Style.attrib, SVG.TextContent.attrib, SVG.Font.attrib, SVG.Paint.attrib, SVG.Color.attrib, SVG.Opacity.attrib, SVG.Graphics.attrib, SVG.Clip.attrib, SVG.Mask.attrib, SVG.Filter.attrib, SVG.GraphicalEvents.attrib, SVG.Cursor.attrib, SVG.External.attrib, attribute x { Coordinates.datatype }?, attribute y { Coordinates.datatype }?, attribute dx { Lengths.datatype }?, attribute dy { Lengths.datatype }?, attribute rotate { Numbers.datatype }?, attribute textLength { Length.datatype }?, attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }? a:documentation [ "\x{a}" ~ " tref: Text Reference Element\x{a}" ~ " " ] SVG.tref.content = (animate | set | animateColor | SVG.Description.class)* tref = element tref { attlist.tref, SVG.tref.content } attlist.tref &= SVG.Core.attrib, SVG.Conditional.attrib, SVG.Style.attrib, SVG.TextContent.attrib, SVG.Font.attrib, SVG.Paint.attrib, SVG.Color.attrib, SVG.Opacity.attrib, SVG.Graphics.attrib, SVG.Clip.attrib, SVG.Mask.attrib, SVG.Filter.attrib, SVG.GraphicalEvents.attrib, SVG.Cursor.attrib, SVG.XLinkRequired.attrib, SVG.External.attrib, attribute x { Coordinates.datatype }?, attribute y { Coordinates.datatype }?, attribute dx { Lengths.datatype }?, attribute dy { Lengths.datatype }?, attribute rotate { Numbers.datatype }?, attribute textLength { Length.datatype }?, attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }? a:documentation [ "\x{a}" ~ " textPath: Text Path Element\x{a}" ~ " " ] SVG.textPath.content = (text | tspan | tref | altGlyph | animate | set | animateColor | SVG.Description.class | SVG.Hyperlink.class)* textPath = element textPath { attlist.textPath, SVG.textPath.content } attlist.textPath &= SVG.Core.attrib, SVG.Conditional.attrib, SVG.Style.attrib, SVG.TextContent.attrib, SVG.Font.attrib, SVG.Paint.attrib, SVG.Color.attrib, SVG.Opacity.attrib, SVG.Graphics.attrib, SVG.Clip.attrib, SVG.Mask.attrib, SVG.Filter.attrib, SVG.GraphicalEvents.attrib, SVG.Cursor.attrib, SVG.XLinkRequired.attrib, SVG.External.attrib, attribute startOffset { Length.datatype }?, attribute textLength { Length.datatype }?, attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?, attribute method { "align" | "stretch" }?, attribute spacing { "auto" | "exact" }? a:documentation [ "\x{a}" ~ " altGlyph: Alternate Glyph Element\x{a}" ~ " " ] attlist.altGlyph &= SVG.TextContent.attrib, attribute x { Coordinates.datatype }?, attribute y { Coordinates.datatype }?, attribute dx { Lengths.datatype }?, attribute dy { Lengths.datatype }?, attribute rotate { Numbers.datatype }? a:documentation [ "\x{a}" ~ " altGlyphDef: Alternate Glyph Definition Element\x{a}" ~ " " ] SVG.altGlyphDef.content |= altGlyphItem+ a:documentation [ "\x{a}" ~ " altGlyphItem: Alternate Glyph Item Element\x{a}" ~ " " ] SVG.altGlyphItem.content = glyphRef+ altGlyphItem = element altGlyphItem { attlist.altGlyphItem, SVG.altGlyphItem.content } attlist.altGlyphItem &= SVG.Core.attrib a:documentation [ "\x{a}" ~ " glyphRef: Glyph Reference Element\x{a}" ~ " " ] attlist.glyphRef &= attribute x { Number.datatype }?, attribute y { Number.datatype }?, attribute dx { Number.datatype }?, attribute dy { Number.datatype }? }