default namespace = "http://www.w3.org/2000/svg"
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"


## 
##     SVG 1.1 Basic Font Module
##     file: svg-basic-font.rng
## 
##     This is SVG, a language for describing two-dimensional graphics in XML.
##     Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
##
##     Modifications Copyright 2007 Mozilla Foundation
## 
##     $Id$
##   

## 
##     Basic Font
## 
##         font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
##         font-face-uri, font-face-name
## 
##     This module declares markup to provide support for template.
##   

## 
##     SVG.Font.class
##   
[ xml:lang = "en" ]
grammar {
    SVG.Font.extra.class = notAllowed
    SVG.Font.class |= font | font-face | SVG.Font.extra.class
    a:documentation [ "\x{a}" ~ "    font: Font Element\x{a}" ~ "  " ]
    SVG.font.content =
        SVG.Description.class*,
        font-face,
        missing-glyph,
        (glyph | hkern | vkern)*
    font = element font { attlist.font, SVG.font.content }
    attlist.font &=
        SVG.Core.attrib,
        SVG.Style.attrib,
        SVG.Presentation.attrib,
        SVG.External.attrib,
        attribute horiz-origin-x { Number.datatype }?,
        attribute horiz-origin-y { Number.datatype }?,
        attribute horiz-adv-x { Number.datatype },
        attribute vert-origin-x { Number.datatype }?,
        attribute vert-origin-y { Number.datatype }?,
        attribute vert-adv-y { Number.datatype }?
    a:documentation [
        "\x{a}" ~
        "    font-face: Font Face Element\x{a}" ~
        "  "
    ]
    SVG.font-face.extra.class = notAllowed
    SVG.font-face.content =
        SVG.Description.class*,
        font-face-src?,
        SVG.font-face.extra.class
    font-face =
        element font-face { attlist.font-face, SVG.font-face.content }
    attlist.font-face &=
        SVG.Core.attrib,
        attribute font-family { text }?,
        attribute font-style { text }?,
        attribute font-variant { text }?,
        attribute font-weight { text }?,
        attribute font-stretch { text }?,
        attribute font-size { text }?,
        attribute unicode-range { text }?,
        attribute units-per-em { Number.datatype }?,
        attribute panose-1 { text }?,
        attribute stemv { Number.datatype }?,
        attribute stemh { Number.datatype }?,
        attribute slope { Number.datatype }?,
        attribute cap-height { Number.datatype }?,
        attribute x-height { Number.datatype }?,
        attribute accent-height { Number.datatype }?,
        attribute ascent { Number.datatype }?,
        attribute descent { Number.datatype }?,
        attribute widths { text }?,
        attribute bbox { text }?,
        attribute ideographic { Number.datatype }?,
        attribute alphabetic { Number.datatype }?,
        attribute mathematical { Number.datatype }?,
        attribute hanging { Number.datatype }?,
        attribute v-ideographic { Number.datatype }?,
        attribute v-alphabetic { Number.datatype }?,
        attribute v-mathematical { Number.datatype }?,
        attribute v-hanging { Number.datatype }?,
        attribute underline-position { Number.datatype }?,
        attribute underline-thickness { Number.datatype }?,
        attribute strikethrough-position { Number.datatype }?,
        attribute strikethrough-thickness { Number.datatype }?,
        attribute overline-position { Number.datatype }?,
        attribute overline-thickness { Number.datatype }?
    a:documentation [ "\x{a}" ~ "    glyph: Glyph Element\x{a}" ~ "  " ]
    SVG.glyph.class = notAllowed
    SVG.glyph.content = SVG.Description.class* | SVG.glyph.class*
    glyph = element glyph { attlist.glyph, SVG.glyph.content }
    attlist.glyph &=
        SVG.Core.attrib,
        SVG.Style.attrib,
        SVG.Presentation.attrib,
        (common.attrs.aria.implicit.group | common.attrs.aria)?,
        attribute unicode { text }?,
        attribute glyph-name { text }?,
        attribute d { PathData.datatype }?,
        attribute orientation { text }?,
        attribute arabic-form { text }?,
        attribute horiz-adv-x { Number.datatype }?,
        attribute vert-origin-x { Number.datatype }?,
        attribute vert-origin-y { Number.datatype }?,
        attribute vert-adv-y { Number.datatype }?
    a:documentation [
        "\x{a}" ~
        "    missing-glyph: Missing Glyph Element\x{a}" ~
        "  "
    ]
    SVG.missing-glyph.class = notAllowed
    SVG.missing-glyph.content =
        SVG.Description.class* | SVG.missing-glyph.class*
    missing-glyph =
        element missing-glyph {
            attlist.missing-glyph, SVG.missing-glyph.content
        }
    attlist.missing-glyph &=
        SVG.Core.attrib,
        SVG.Style.attrib,
        SVG.Presentation.attrib,
        attribute d { PathData.datatype }?,
        attribute horiz-adv-x { Number.datatype }?,
        attribute vert-origin-x { Number.datatype }?,
        attribute vert-origin-y { Number.datatype }?,
        attribute vert-adv-y { Number.datatype }?
    a:documentation [
        "\x{a}" ~
        "    hkern: Horizontal Kerning Element\x{a}" ~
        "  "
    ]
    SVG.hkern.content = empty
    hkern = element hkern { attlist.hkern, SVG.hkern.content }
    attlist.hkern &=
        SVG.Core.attrib,
        attribute u1 { text }?,
        attribute g1 { text }?,
        attribute u2 { text }?,
        attribute g2 { text }?,
        attribute k { Number.datatype }
    a:documentation [
        "\x{a}" ~
        "    vkern: Vertical Kerning Element\x{a}" ~
        "  "
    ]
    SVG.vkern.content = empty
    vkern = element vkern { attlist.vkern, SVG.vkern.content }
    attlist.vkern &=
        SVG.Core.attrib,
        attribute u1 { text }?,
        attribute g1 { text }?,
        attribute u2 { text }?,
        attribute g2 { text }?,
        attribute k { Number.datatype }
    a:documentation [
        "\x{a}" ~
        "    font-face-src: Font Face Source Element\x{a}" ~
        "  "
    ]
    SVG.font-face-src.content = (font-face-uri | font-face-name)+
    font-face-src =
        element font-face-src {
            attlist.font-face-src, SVG.font-face-src.content
        }
    attlist.font-face-src &= SVG.Core.attrib
    a:documentation [
        "\x{a}" ~
        "    font-face-uri: Font Face URI Element\x{a}" ~
        "  "
    ]
    SVG.font-face-uri.content = empty
    font-face-uri =
        element font-face-uri {
            attlist.font-face-uri, SVG.font-face-uri.content
        }
    attlist.font-face-uri &= SVG.Core.attrib, SVG.XLinkRequired.attrib
    a:documentation [
        "\x{a}" ~
        "    font-face-name: Font Face Name Element\x{a}" ~
        "  "
    ]
    SVG.font-face-name.content = empty
    font-face-name =
        element font-face-name {
            attlist.font-face-name, SVG.font-face-name.content
        }
    attlist.font-face-name &=
        SVG.Core.attrib,
        attribute name { text }?
}
