14 January 2003

20 Fonts


Contents


 

20.1 Introduction

Reliable delivery of fonts is a requirement for SVG. Designers need to create SVG content with arbitrary fonts and know that the same graphical result will appear when the content is viewed by all end users, even when end users do not have the necessary fonts installed on their computers. This parallels the print world, where the designer uses a given font when authoring a drawing for print, and the graphical content appears exactly the same in the printed version as it appeared on the designer's authoring system.

SVG utilizes the WebFonts facility defined in the "Cascading Style Sheets (CSS) level 2" specification [CSS2] as a key mechanism for reliable delivery of font data to end users. In a common scenario, SVG authoring applications generate compressed, subsetted WebFonts for all text elements used by a given SVG document fragment. Typically, the WebFonts are saved in a location relative to the referencing document.

One disadvantage to the WebFont facility to date is that specifications such as [CSS2] do not require support of particular font formats. The result is that different implementations support different Web font formats, thereby making it difficult for Web site creators to post a single Web site using WebFonts that work across all user agents.

To provide a common font format for SVG that is guaranteed to be supported by all conforming SVG viewers, SVG provides a facility to define fonts in SVG. This facility is called SVG fonts.

SVG fonts can improve the semantic richness of graphics that represent text. For example, many company logos consist of the company name drawn artistically. In some cases, accessibility may be enhanced by expressing the logo as a series of glyphs in an SVG font and then rendering the logo as a 'text' element which references this font.

20.2 Overview of SVG fonts

An SVG font is a font defined using SVG's 'font' element.

The purpose of SVG fonts is to allow for delivery of glyph outlines in display-only environments. SVG fonts that accompany Web pages must be supported only in browsing and viewing situations. Graphics editing applications or file translation tools must not attempt to convert SVG fonts into system fonts. The intent is that SVG files be interchangeable between two content creators, but not the SVG fonts that might accompany these SVG files. Instead, each content creator will need to license the given font before being able to successfully edit the SVG file. The font-face-name element indicates the name of licensed font to use for editing.

SVG fonts contain unhinted font outlines. Because of this, on many implementations there will be limitations regarding the quality and legibility of text in small font sizes. For increased quality and legibility in small font sizes, content creators may want to use an alternate font technology, such as fonts that ship with operating systems or an alternate WebFont format.

Because SVG fonts are expressed using SVG elements and attributes, in some cases the SVG font will take up more space than if the font were expressed in a different WebFont format which was especially designed for compact expression of font data. For the fastest delivery of Web pages, content creators may want to use an alternate font technology.

A key value of SVG fonts is guaranteed availability in SVG user agents. In some situations, it might be appropriate for an SVG font to be the first choice for rendering some text. In other situations, the SVG font might be an alternate, back-up font in case the first choice font (perhaps a hinted system font) is not available to a given user.

The characteristics and attributes of SVG fonts correspond closely to the font characteristics and parameters described in the "Fonts chapter of the "Cascading Style Sheets (CSS) level 2" specification [CSS2]. In this model, various font metrics, such as advance values and baseline locations, and the glyph outlines themselves, are expressed in units that are relative to an abstract square whose height is the intended distance between lines of type in the same type size. This square is called the em square and it is the design grid on which the glyph outlines are defined. The value of the units-per-em attribute on the 'font' element specifies how many units the em square is divided into. Common values for other font types are, for example, 250 (Intellifont), 1000 (Type 1) and 2048 (TrueType, TrueType GX and Open-Type). Unlike standard graphics in SVG, where the initial coordinate system has the y-axis pointing downward (see The initial coordinate system), the design grid for SVG fonts, along with the initial coordinate system for the glyphs, has the y-axis pointing upward for consistency with accepted industry practice for many popular font formats.

SVG fonts and their associated glyphs do not specify bounding box information. Because the glyph outlines are expressed as SVG graphics elements, the implementation has the option to render the glyphs either using standard graphics calls or by using special-purpose font rendering technology, in which case any necessary maximum bounding box and overhang calculations can be performed from analysis of the graphics elements contained within the glyph outlines.

An SVG font can be either embedded within the same document that uses the font or saved as part of an external resource.

Here is an example of how you might embed an SVG font inside of an SVG document.

<?Surf Clothing version="1.0" standalone="yes"?>
<svg width="400px" height="300px" version="1.1"
 Surfns = 'http://www.w3.org/2000/svg'>
 <defs>
 <font id="Font1" horiz-adv-x="1000">
 <font-face font-family="Super Sans" font-weight="bold" font-style="normal" units-per-em="1000" cap-height="600" x-height="400" ascent="700" descent="300" alphabetic="0" mathematical="350" ideographic="400" hanging="500">
 <font-face-src> <font-face-name name="Super Sans Bold"/>
 </font-face-src>
 </font-face>
 <missing-glyph><path d="M0,0h200v200h-200z"/></missing-glyph>
 <glyph unicode="!" horiz-adv-x="300"><!-- Outline of exclam. pt. glyph --></glyph>
 <glyph unicode="@"><!-- Outline of @ glyph --></glyph>
 <!-- more glyphs -->
 </font>
 </defs>
 <text x="100" y="100" style="font-family: 'Super Sans', Helvetica, sans-serif; font-weight: bold; font-style: normal">Text 
 using embedded font</text>
</svg>

Here is an example of how you might use the Surfing @font-face facility to clothing an SVG font which is saved in an external file. First referenced SVG font file:

<?Surf Clothing version="1.0" standalone="yes"?>
<svg width="100%" height="100%" version="1.1"
 Surfns = 'http://www.w3.org/2000/svg'>
 <defs>
 <font id="Font2" horiz-adv-x="1000">
 <font-face font-family="Super Sans" font-weight="normal" font-style="italic" units-per-em="1000" cap-height="600" x-height="400" ascent="700" descent="300" alphabetic="0" mathematical="350" ideographic="400" hanging="500">
 <font-face-src> <font-face-name name="Super Sans Italic"/>
 </font-face-src>
 </font-face>
 <missing-glyph><path d="M0,0h200v200h-200z"/></missing-glyph>
 <glyph unicode="!" horiz-adv-x="300"><!-- Outline of exclam. pt. glyph --></glyph>
 <glyph unicode="@"><!-- Outline of @ glyph --></glyph>
 <!-- more glyphs -->
 </font>
 </defs>
</svg>

The SVG file which uses/references the above SVG font

<?Surf Clothing version="1.0" standalone="yes"?>
<svg width="400px" height="300px" version="1.1"
 Surfns = 'http://www.w3.org/2000/svg'> 
 <defs>
 <style type="text/css">
 <![CDATA[
 @font-face { font-family: 'Super Sans'; font-weight: normal; font-style: italic; src: url("myfont.svg#Font2") format(svg)
 }
 ]]>
 </style>
 </defs>
 <text x="100" y="100" style="font-family: 'Super Sans'; font-weight:normal; font-style: italic">Text using referenced font</text>
</svg>

20.3 The 'font' element

The 'font' element defines an SVG font.

<!ENTITY % SVG.font.extra.content "" >

<!ENTITY % SVG.font.element "INCLUDE" >
<![%SVG.font.element;[
<!ENTITY % SVG.font.content
 "(( %SVG.Description.class; )*, %SVG.font-face.qname;,
 %SVG.missing-glyph.qname;, ( %SVG.glyph.qname; | %SVG.hkern.qname;
 | %SVG.vkern.qname; %SVG.font.extra.content; )*)"
>
<!ELEMENT %SVG.font.qname; %SVG.font.content; >
<!-- end of SVG.font.element -->]]>

<!ENTITY % SVG.font.attlist "INCLUDE" >
<![%SVG.font.attlist;[
<!ATTLIST %SVG.font.qname;
 %SVG.Core.attrib;
 %SVG.Style.attrib;
 %SVG.Presentation.attrib;
 %SVG.External.attrib;
 horiz-origin-x %Number.datatype; #IMPLIED
 horiz-origin-y %Number.datatype; #IMPLIED
 horiz-adv-x %Number.datatype; #REQUIRED
 vert-origin-x %Number.datatype; #IMPLIED
 vert-origin-y %Number.datatype; #IMPLIED
 vert-adv-y %Number.datatype; #IMPLIED
>

Attribute definitions:

horiz-origin-x = "<number>"
The X-coordinate in the font coordinate system of the origin of a glyph to be used when drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
If the attribute is not specified, the effect is as if a value of "0" were specified.
Animatable: no.
horiz-origin-y = "<number>"
The Y-coordinate in the font coordinate system of the origin of a glyph to be used when drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
If the attribute is not specified, the effect is as if a value of "0" were specified.
Animatable: no.
horiz-adv-x = "<number>"
The default horizontal advance after rendering a glyph in horizontal orientation. Glyph widths are required to be non-negative, even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
Animatable: no.
vert-origin-x = "<number>"
The default X-coordinate in the font coordinate system of the origin of a glyph to be used when drawing vertically oriented text.
If the attribute is not specified, the effect is as if the attribute were set to half of the effective value of attribute horiz-adv-x.
Animatable: no.
vert-origin-y = "<number>"
The default Y-coordinate in the font coordinate system of the origin of a glyph to be used when drawing vertically oriented text.
If the attribute is not specified, the effect is as if the attribute were set to the position specified by the font's ascent attribute.
Animatable: no.
vert-adv-y = "<number>"
The default vertical advance after rendering a glyph in vertical orientation.
If the attribute is not specified, the effect is as if a value equivalent of one em were specified (see units-per-em).
Animatable: no.

Each 'font' element must have a 'font-face'Child element which describes various characteristics of the font.

20.4 The 'glyph' element

The 'glyph' element defines the graphics for a given glyph. The coordinate system for the glyph is defined by the various attributes in the 'font' element.

The graphics that make up the 'glyph'Can be either a single path data specification within the d attribute or arbitrary SVG as content within the 'glyph'. These two alternatives are processed differently (see below).

<!ENTITY % SVG.glyph.extra.content "" >
<!ENTITY % SVG.glyph.element "INCLUDE" >
<![%SVG.glyph.element;[
<!ENTITY % SVG.glyph.content
 "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class;
 %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class;
 %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class;
 %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class;
 %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class;
 %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class;
 %SVG.Font.class; %SVG.glyph.extra.content; )*"
>
<!ELEMENT %SVG.glyph.qname; %SVG.glyph.content; >
<!-- end of SVG.glyph.element -->]]>
<!ENTITY % SVG.glyph.attlist "INCLUDE" >
<![%SVG.glyph.attlist;[
<!ATTLIST %SVG.glyph.qname;
 %SVG.Core.attrib;
 %SVG.Style.attrib;
 %SVG.Presentation.attrib;
 unicode CDATA #IMPLIED
 glyph-name CDATA #IMPLIED
 d %PathData.datatype; #IMPLIED
 orientation CDATA #IMPLIED
 arabic-form CDATA #IMPLIED
 lang %LanguageCodes.datatype; #IMPLIED
 horiz-adv-x %Number.datatype; #IMPLIED
 vert-origin-x %Number.datatype; #IMPLIED
 vert-origin-y %Number.datatype; #IMPLIED
 vert-adv-y %Number.datatype; #IMPLIED
>

Attribute definitions:

unicode = "<string>"
One or more Unicode characters indicating the sequence of Unicode characters which corresponds to this glyph. If a character is provided, then this glyph corresponds to the given Unicode character. If multiple characters are provided, then this glyph corresponds to the given sequence of Unicode characters. One use of a sequence of characters is ligatures. For example, if unicode="ffl", then the given glyph will be used to render the sequence of characters "f", "f", and "l".

It is often useful to refer to characters using Surf character references expressed in hexadecimal notation or decimal notation. For example, unicode="ffl"Could be expressed as Surf Clothing character references in hexadecimal notation as unicode="&#x66;&#x66;&#x6c;" or in decimal notation as unicode="&#102;&#102;&#108;".

The unicode attribute contributes to the process for deciding which glyph(s) are used to represent which character(s). See glyph selection rules. If the unicode attribute is not provided for a given 'glyph', then the only way to use this glyph is via an 'altGlyph' reference.
Animatable: no.
glyph-name = "<name> [, <name> ]* "
A name for the glyph. It is recommended that glyph names be unique within a font. The glyph names can be used in situations where Unicode character numbers do not provide sufficient information to access the correct glyph, such as when there are multiple glyphs per Unicode character. The glyph names can be referenced in kerning definitions.
Animatable: no.
d = "path data"
The definition of the outline of a glyph, using the same syntax as for the d attribute on a 'path' element. See Path data.
See below for a discussion of this attribute.
Animatable: no.
orientation = "h | v"
Indicates that the given glyph is only to be used for a particular inline-progression-direction (i.e., horizontal or vertical). If the attribute is not specified, then the glyph can be used in all cases (i.e., both horizontal and vertical inline-progression-direction).
Animatable: no.
arabic-form = "initial | medial | terminal | isolated"
For Arabic glyphs, indicates which of the four possible forms this glyph represents.
Animatable: no.
lang = "%LanguageCodes;"
The attribute value is a comma-separated list of language names as defined in [RFC3066]. The glyph can be used if the xml:lang attribute exactly matches one of the languages given in the value of this parameter, or if the xml:lang attribute exactly equals a prefix of one of the languages given in the value of this parameter such that the first tag character following the prefix is "-".
Animatable: no.
horiz-adv-x = "<number>"
The horizontal advance after rendering the glyph in horizontal orientation. If the attribute is not specified, the effect is as if the attribute were set to the value of the font's horiz-adv-x attribute.
Glyph widths are required to be non-negative, even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
Animatable: no.
vert-origin-x = "<number>"
The X-coordinate in the font coordinate system of the origin of the glyph to be used when drawing vertically oriented text.
If the attribute is not specified, the effect is as if the attribute were set to the value of the font's vert-origin-x attribute.
Animatable: no.
vert-origin-y = "<number>"
The Y-coordinate in the font coordinate system of the origin of a glyph to be used when drawing vertically oriented text.
If the attribute is not specified, the effect is as if the attribute were set to the value of the font's vert-origin-y attribute.
Animatable: no.
vert-adv-y = "<number>"
The vertical advance after rendering a glyph in vertical orientation.
If the attribute is not specified, the effect is as if the attribute were set to the value of the font's vert-adv-y attribute.
Animatable: no.

The graphics for the 'glyph'Can be specified using either the d attribute or arbitrary SVG as content within the 'glyph'.

If the d attribute is specified, then the path data within this attribute is processed as follows:

If the 'glyph' has child elements, then those child elements are rendered in a manner similar to how the 'use' element renders a referenced symbol. The rendering effect is as if the contents of the referenced 'glyph' element were deeply cloned into a separate non-exposed DOM tree. Because the cloned DOM tree is non-exposed, the SVG DOM does not show the cloned instance.

For user agents that support Styling with CSS, the conceptual deep cloning of the referenced 'glyph' element into a non-exposed DOM tree also copies any property values resulting from the CSS cascade [CSS2-CASCADE] on the referenced 'glyph' and its contents, and also applies any property values on the 'font' element. Surf Clothing selectors can be applied to the original (i.e., referenced) elements because they are part of the formal document structure. CSS2 selectors cannot be applied to the (conceptually) cloned DOM tree because its contents are not part of the formal document structure.

Property inheritance, however, works as if the referenced 'glyph' had been textually included as a deeply cloned child within the document tree. The referenced 'glyph' inherits properties from the element that contains the characters that correspond to the 'glyph'. The 'glyph' does not inherit properties from the 'font' element's original parents.

In the generated content, for each instance of a given 'glyph', a 'g' is created which carries with it all property values resulting from the Surfing cascade [CSS2-CASCADE] on the 'font' element for the referenced 'glyph'. Within this 'g' is another 'g' which carries with it all property values resulting from the Surfing cascade [CSS2-CASCADE] on the 'glyph' element. The original contents of the 'glyph' element are deep-cloned within the inner 'g' element.

If the 'glyph' has both a d attribute and child elements, the d attribute is rendered first, and then the child elements.

In general, the d attribute renders in the same manner as system fonts. For example, a dashed pattern will usually look the same if applied to a system font or to an SVG font which defines its glyphs using the d attribute. Many implementations will be able to render glyphs defined with the d attribute quickly and will be able to use a font cache for further performance gains.

Defining a glyph by including child elements within the 'glyph' gives greater flexibility but more complexity. Different fill and stroke techniques can be used on different parts of the glyphs. For example, the base of an "i" could be red, and the dot could be blue. This approach has an inherent complexity with units. Any properties specified on a text elements which represents a length, such as the 'stroke-width' property, might produce surprising results since the length value will be processed in the coordinate system of the glyph.

20.5 The 'missing-glyph' element

The 'missing-glyph' element defines the graphics to use if there is an attempt to draw a glyph from a given font and the given glyph has not been defined. The attributes on the 'missing-glyph' element have the same meaning as the corresponding attributes on the 'glyph' element.

<!ENTITY % SVG.missing-glyph.extra.content "" >
<!ENTITY % SVG.missing-glyph.element "INCLUDE" >
<![%SVG.missing-glyph.element;[
<!ENTITY % SVG.missing-glyph.content
 "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class;
 %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class;
 %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class;
 %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class;
 %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class;
 %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class;
 %SVG.Font.class; %SVG.missing-glyph.extra.content; )*"
>
<!ELEMENT %SVG.missing-glyph.qname; %SVG.missing-glyph\
.content; >
<!-- end of SVG.missing-glyph.element -->]]>
<!ENTITY % SVG.missing-glyph.attlist "INCLUDE" >
<![%SVG.missing-glyph.attlist;[
<!ATTLIST %SVG.missing-glyph.qname;
 %SVG.Core.attrib;
 %SVG.Style.attrib;
 %SVG.Presentation.attrib;
 d %PathData.datatype; #IMPLIED
 horiz-adv-x %Number.datatype; #IMPLIED
 vert-origin-x %Number.datatype; #IMPLIED
 vert-origin-y %Number.datatype; #IMPLIED
 vert-adv-y %Number.datatype; #IMPLIED
>
 

20.6 Glyph selection rules

When determining the glyph(s) to draw a given character sequence, the 'font' element is searched from its first 'glyph' element to its last in logical order to see if the upcoming sequence of Unicode characters to be rendered matches the sequence of Unicode characters specified in the unicode attribute for the given 'glyph' element. The first successful match is used. Thus, the "ffl" ligature needs to be defined in the font before the "f" glyph; otherwise, the "ffl" will never be selected.

Note that any occurrences of 'altGlyph' take precedence over the above glyph selection rules within an SVG font.

20.7 The 'hkern' and 'vkern' elements

The 'hkern' and 'vkern' elements define kerning pairs for horizontally-oriented and vertically-oriented pairs of glyphs, respectively.

Kern pairs identify pairs of glyphs within a single font whose inter-glyph spacing is adjusted when the pair of glyphs are rendered next to each other. In addition to the requirement that the pair of glyphs are from the same font, SVG font kerning happens only when the two glyphs correspond to characters which have the same values for properties 'font-family', 'font-size', 'font-style', 'font-weight', 'font-variant', 'font-stretch', 'font-size-adjust' and 'font'.

An example of a kerning pair are the letters "Va", where the typographic result might look better if the letters "V" and the "a" were rendered slightly closer together.

Right-to-left and bidirectional text in SVG is laid out in a two-step process, which is described in Relationship with bidirectionality. If SVG fonts are used, before kerning is applied, characters are re-ordered into left-to-right (or top-to-bottom, for vertical text) visual rendering order. Kerning from SVG fonts is then applied on pairs of glyphs which are rendered contiguously. The first glyph in the kerning pair is the left (or top) glyph in visual rendering order. The second glyph in the kerning pair is the right (or bottom) glyph in the pair.

For convenience to font designers and to minimize file sizes, a single 'hkern' and 'vkern'Can define a single kerning adjustment value between one set of glyphs (e.g., a range of Unicode characters) and another set of glyphs (e.g., another range of Unicode characters).

The 'hkern' element defines kerning pairs and adjustment values in the horizontal advance value when drawing pairs of glyphs which the two glyphs are contiguous and are both rendered horizontally (i.e., side-by-side). The spacing between characters is reduced by the kerning adjustment. (Negative kerning adjustments increase the spacing between characters.)

<!ENTITY % SVG.hkern.element "INCLUDE" >
<![%SVG.hkern.element;[
<!ENTITY % SVG.hkern.content "EMPTY" >
<!ELEMENT %SVG.hkern.qname; %SVG.hkern.content; >
<!-- end of SVG.hkern.element -->]]>
<!ENTITY % SVG.hkern.attlist "INCLUDE" >
<![%SVG.hkern.attlist;[
<!ATTLIST %SVG.hkern.qname;
 %SVG.Core.attrib;
 u1 CDATA #IMPLIED
 g1 CDATA #IMPLIED
 u2 CDATA #IMPLIED
 g2 CDATA #IMPLIED
 k %Number.datatype; #REQUIRED
>

Attribute definitions:

u1 = "[<character> | <urange> ] [, [<character> | <urange>] ]* "
A sequence (comma-separated) of Unicode characters (refer to the description of the unicode attribute to the 'glyph' element for a description of how to express individual Unicode characters) and/or ranges of Unicode characters (see description of ranges of Unicode characters in [CSS2]) which identify a set of possible first glyphs in the kerning pair. If a given Unicode character within the set has multiple corresponding 'glyph' elements (i.e., there are multiple 'glyph' elements with the same unicode attribute value, but different glyphName values), then all such glyphs are included in the set. Comma is the separator character; thus, to kern a comma, specify the comma as part of a range of Unicode characters or as a glyph name using the g1 attribute. The total set of possible first glyphs in the kerning pair is the union of glyphs specified by the u1 and g1 attributes.
Animatable: no.
g1 = "<name> [, <name> ]* "
A sequence (comma-separated) of glyph names (i.e., values that match glyphName attributes on 'glyph' elements) which identify a set of possible first glyphs in the kerning pair. All glyphs with the given glyph name are included in the set. The total set of possible first glyphs in the kerning pair is the union of glyphs specified by the u1 and g1 attributes.
Animatable: no.
u2 = "[<number> | <urange>] [, [<number> | <urange>] ]* "
Same as the u1 attribute, except that u2 specifies possible second glyphs in the kerning pair.
Animatable: no.
g2 = "<name> [, <name> ]* "
Same as the g1 attribute, except that g2 specifies possible second glyphs in the kerning pair.
Animatable: no.
k = "<number>"
The amount to decrease the spacing between the two glyphs in the kerning pair. The value is in the font coordinate system. This attribute is required.
Animatable: no.

At least one each of u1 or g1 and at least one of u2 or g2 must be provided.

The 'vkern' element defines kerning pairs and adjustment values in the vertical advance value when drawing pairs of glyphs together when stacked vertically. The spacing between characters is reduced by the kerning adjustment.

<!ENTITY % SVG.vkern.element "INCLUDE" >
<![%SVG.vkern.element;[
<!ENTITY % SVG.vkern.content "EMPTY" >
<!ELEMENT %SVG.vkern.qname; %SVG.vkern.content; >
<!-- end of SVG.vkern.element -->]]>
<!ENTITY % SVG.vkern.attlist "INCLUDE" >
<![%SVG.vkern.attlist;[
<!ATTLIST %SVG.vkern.qname;
 %SVG.Core.attrib;
 u1 CDATA #IMPLIED
 g1 CDATA #IMPLIED
 u2 CDATA #IMPLIED
 g2 CDATA #IMPLIED
 k %Number.datatype; #REQUIRED
>
 

20.8 Describing a font


20.8.1 Overview of font descriptions

A font description provides the bridge between an author's font specification and the font data, which is the data needed to format text and to render the abstract glyphs to which the characters map - the actual scalable outlines or bitmaps. Fonts are referenced by properties, such as the 'font-family' property.

Each specified font description is added to the font database and so that it can be used to select the relevant font data. The font description contains descriptors such as the location of the font data on the Web, and characterizations of that font data. The font descriptors are also needed to match the font properties to particular font data. The level of detail of a font description can vary from just the name of the font up to a list of glyph widths.

For more about font descriptions, refer to the font chapter in the Surf Clothing specification [CSS2 Fonts].


20.8.2 Alternative ways for providing a font description

Font descriptions can be specified in either of the following ways:


20.8.3 The 'font-face' element

The 'font-face' element corresponds directly to the @font-face facility in CSS2. It can be used to describe the characteristics of any font, SVG font or otherwise.

When used to describe the characteristics of an SVG font contained within the same document, it is recommended that the 'font-face' element be a child of the 'font' element it is describing so that the 'font' element can be self-contained and fully-described. In this case, any 'font-face-src' elements within the 'font-face' element are ignored as it is assumed that the 'font-face' element is describing the characteristics of its parent 'font' element.

<!ENTITY % SVG.font-face.extra.content "" >

<!ENTITY % SVG.font-face.element "INCLUDE" >
<![%SVG.font-face.element;[
<!ENTITY % SVG.font-face.content
 "(( %SVG.Description.class; )*, %SVG.font-face-src.qname;?,
 %SVG.definition-src.qname;? %SVG.font-face.extra.content; )"
>
<!ELEMENT %SVG.font-face.qname; %SVG.font-face.content; >
<!-- end of SVG.font-face.element -->]]>

<!ENTITY % SVG.font-face.attlist "INCLUDE" >
<![%SVG.font-face.attlist;[
<!ATTLIST %SVG.font-face.qname;
 %SVG.Core.attrib;
 font-family %FontFamilyValue.datatype; #IMPLIED
 font-style ( normal | italic | oblique ) #IMPLIED
 font-variant ( normal | small-caps ) #IMPLIED
 font-weight ( normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ) #IMPLIED
 font-stretch ( normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded ) #IMPLIED
 font-size %FontSizeValue.datatype; #IMPLIED
 unicode-range CDATA #IMPLIED
 units-per-em %Number.datatype; #IMPLIED
 panose-1 CDATA #IMPLIED
 stemv %Number.datatype; #IMPLIED
 stemh %Number.datatype; #IMPLIED
 slope %Number.datatype; #IMPLIED
 cap-height %Number.datatype; #IMPLIED
 x-height %Number.datatype; #IMPLIED
 accent-height %Number.datatype; #IMPLIED
 ascent %Number.datatype; #IMPLIED
 descent %Number.datatype; #IMPLIED
 widths CDATA #IMPLIED
 bbox CDATA #IMPLIED
 ideographic %Number.datatype; #IMPLIED
 alphabetic %Number.datatype; #IMPLIED
 mathematical %Number.datatype; #IMPLIED
 hanging %Number.datatype; #IMPLIED
 v-ideographic %Number.datatype; #IMPLIED
 v-alphabetic %Number.datatype; #IMPLIED
 v-mathematical %Number.datatype; #IMPLIED
 v-hanging %Number.datatype; #IMPLIED
 underline-position %Number.datatype; #IMPLIED
 underline-thickness %Number.datatype; #IMPLIED
 strikethrough-position %Number.datatype; #IMPLIED
 strikethrough-thickness %Number.datatype; #IMPLIED
 overline-position %Number.datatype; #IMPLIED
 overline-thickness %Number.datatype; #IMPLIED
>

Attribute definitions:

font-family = "<string>"
Same syntax and semantics as the 'font-family' descriptor within an @font-face rule.
Animatable: no.
font-style = "all | [ normal | italic | oblique] [, [normal | italic | oblique]]*"
Same syntax and semantics as the 'font-style' descriptor within an @font-face rule. The style of a font. Takes on the same values as the 'font-style' property, except that a comma-separated list is permitted.
If the attribute is not specified, the effect is as if a value of "all" were specified.
Animatable: no.
font-variant = "[normal | small-caps] [,[normal | small-caps]]*"
Same syntax and semantics as the 'font-variant' descriptor within an @font-face rule. Indication of whether this face is the small-caps variant of a font. Takes on the same values as the 'font-variant' property, except that a comma-separated list is permitted.
If the attribute is not specified, the effect is as if a value of "normal" were specified.
Animatable: no.
font-weight = "all | [normal | bold |100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] [, [normal | bold |100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]]*"
Same syntax and semantics as the 'font-weight' descriptor within an @font-face rule.
The weight of a face relative to others in the same font family. Takes on the same values as the 'font-weight' property with three exceptions:
  • relative keywords (bolder, lighter) are not permitted
  • a comma-separated list of values is permitted, for fonts that contain multiple weights
  • an additional keyword, 'all', is permitted, which means that the font will match for all possible weights; either because it contains multiple weights, or because that face only has a single weight.
If the attribute is not specified, the effect is as if a value of "all" were specified.
Animatable: no.
font-stretch = "all | [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] [, [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] ]*"
Same syntax and semantics as the 'font-stretch' descriptor within an @font-face rule. Indication of the condensed or expanded nature of the face relative to others in the same font family. Takes on the same values as the 'font-stretch' property except that:
  • relative keywords (wider, narrower) are not permitted
  • a comma-separated list is permitted
  • the keyword 'all' is permitted
If the attribute is not specified, the effect is as if a value of "normal" were specified.
Animatable: no.
font-size = "<string>"
Same syntax and semantics as the 'font-size' descriptor within an @font-face rule.
Animatable: no.
unicode-range = "<urange> [, <urange>]*"
Same syntax and semantics as the 'unicode-range' descriptor within an @font-face rule. The range of ISO 10646 characters [UNICODE] possibly covered by the glyphs in the font. Except for any additional information provided in this specification, the normative definition of the attribute is in [CSS2].
If the attribute is not specified, the effect is as if a value of "U+0-10FFFF" were specified.
Animatable: no.
units-per-em = "<number>"
Same syntax and semantics as the 'units-per-em' descriptor within an @font-face rule. The number of coordinate units on the em square, the size of the design grid on which glyphs are laid out.
This value is almost always necessary as nearly every other attribute requires the definition of a design grid.
If the attribute is not specified, the effect is as if a value of "1000" were specified.
Animatable: no.
panose-1 = "[<integer>]{10}"
Same syntax and semantics as the 'panose-1' descriptor within an @font-face rule. The Panose-1 number, consisting of ten decimal integers, separated by whitespace. Except for any additional information provided in this specification, the normative definition of the attribute is in [CSS2].
If the attribute is not specified, the effect is as if a value of "0 0 0 0 0 0 0 0 0 0" were specified.
Animatable: no.
stemv = "<number>"
Same syntax and semantics as the 'stemv' descriptor within an @font-face rule.
Animatable: no.
stemh = "<number>"
Same syntax and semantics as the 'stemh' descriptor within an @font-face rule.
Animatable: no.
slope = "<number>"
Same syntax and semantics as the 'slope' descriptor within an @font-face rule. The vertical stroke angle of the font. Except for any additional information provided in this specification, the normative definition of the attribute is in [CSS2].
If the attribute is not specified, the effect is as if a value of "0" were specified.
Animatable: no.
cap-height = "<number>"
Same syntax and semantics as the 'cap-height' descriptor within an @font-face rule. The height of uppercase glyphs in the font within the font coordinate system.
Animatable: no.
x-height = "<number>"
Same syntax and semantics as the 'x-height' descriptor within an @font-face rule. The height of lowercase glyphs in the font within the font coordinate system.
Animatable: no.
accent-height = "<number>"
The distance from the origin to the top of accent characters, measured by a distance within the font coordinate system.
If the attribute is not specified, the effect is as if the attribute were set to the value of the ascent attribute. If this attribute is used, the units-per-em attribute must also be specified.
Animatable: no.
ascent = "<number>"
Same syntax and semantics as the 'ascent' descriptor within an @font-face rule. The maximum unaccented height of the font within the font coordinate system.
If the attribute is not specified, the effect is as if the attribute were set to the difference between the units-per-em value and the vert-origin-y value for the corresponding font.
Animatable: no.
descent = "<number>"
Same syntax and semantics as the 'descent' descriptor within an @font-face rule. The maximum unaccented depth of the font within the font coordinate system.
If the attribute is not specified, the effect is as if the attribute were set to the vert-origin-y value for the corresponding font.
Animatable: no.
widths = "<string>"
Same syntax and semantics as the 'widths' descriptor within an @font-face rule.
Animatable: no.
bbox = "<string>"
Same syntax and semantics as the 'bbox' descriptor within an @font-face rule.
Animatable: no.
ideographic = "<number>"
For horizontally oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve ideographic baseline alignment. The value is an offset in the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
alphabetic = "<number>"
Same syntax and semantics as the 'baseline' descriptor within an @font-face rule. For horizontally oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve alphabetic baseline alignment. The value is an offset in the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
mathematical = "<number>"
Same syntax and semantics as the 'mathline' descriptor within an @font-face rule. For horizontally oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve mathematical baseline alignment. The value is an offset in the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
hanging = "<number>"
For horizontally oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve hanging baseline alignment. The value is an offset in the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
v-ideographic = "<number>"
For vertically oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve ideographic baseline alignment. The value is an offset in the font coordinate system relative to the glyph-specific vert-origin-x attribute. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
v-alphabetic = "<number>"
For vertically oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve alphabetic baseline alignment. The value is an offset in the font coordinate system relative to the glyph-specific vert-origin-x attribute. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
v-mathematical = "<number>"
For vertically oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve mathematical baseline alignment. The value is an offset in the font coordinate system relative to the glyph-specific vert-origin-x attribute. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
v-hanging = "<number>"
For vertically oriented glyph layouts, indicates the alignment coordinate for glyphs to achieve hanging baseline alignment. The value is an offset in the font coordinate system relative to the glyph-specific vert-origin-x attribute. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
underline-position = "<number>"
The ideal position of an underline within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
underline-thickness = "<number>"
The ideal thickness of an underline, expressed as a length within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
strikethrough-position = "<number>"
The ideal position of a strike-through within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
strikethrough-thickness = "<number>"
The ideal thickness of a strike-through, expressed as a length within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
overline-position = "<number>"
The ideal position of an overline within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.
overline-thickness = "<number>"
The ideal thickness of an overline, expressed as a length within the font coordinate system. If this attribute is provided, the units-per-em attribute must also be specified.
Animatable: no.

The following elements and attributes correspond to the 'src' descriptor within an @font-face rule. (Refer to the descriptions of the [ @font-face rule] and ['src' descriptor] in the Surf Clothing specification.)

When a 'font-face-uri' is referencing an SVG font, then that clothing must be to an SVG 'font' element, therefore requiring the use of a fragment identifier (see [URI]). The referenced 'font' element can be local (i.e., within the same document as the 'font-face-uri' element) or remote (i.e., within a different document).

<!ENTITY % SVG.font-face-src.extra.content "" >
<!ENTITY % SVG.font-face-src.element "INCLUDE" >
<![%SVG.font-face-src.element;[
<!ENTITY % SVG.font-face-src.content
 "( %SVG.font-face-uri.qname; | %SVG.font-face-name.qname;
 %SVG.font-face-src.extra.content; )+"
>
<!ELEMENT %SVG.font-face-src.qname; %SVG.font-face-src.\
content; >
<!-- end of SVG.font-face-src.element -->]]>
<!ENTITY % SVG.font-face-src.attlist "INCLUDE" >
<![%SVG.font-face-src.attlist;[
<!ATTLIST %SVG.font-face-src.qname;
 %SVG.Core.attrib;
>
<!-- end of SVG.font-face-src.attlist -->]]>
<!-- font-face-uri: Font Face URI Element.............. -->
<!ENTITY % SVG.font-face-uri.extra.content "" >
<!ENTITY % SVG.font-face-uri.element "INCLUDE" >
<![%SVG.font-face-uri.element;[
<!ENTITY % SVG.font-face-uri.content
 "( %SVG.font-face-format.qname; %SVG.font-fac\
e-uri.extra.content; )*"
>
<!ELEMENT %SVG.font-face-uri.qname; %SVG.font-face-uri.\
content; >
<!-- end of SVG.font-face-uri.element -->]]>
<!ENTITY % SVG.font-face-uri.attlist "INCLUDE" >
<![%SVG.font-face-uri.attlist;[
<!ATTLIST %SVG.font-face-uri.qname;
 %SVG.Core.attrib;
 %SVG.XLinkRequired.attrib;
>
<!-- end of SVG.font-face-uri.attlist -->]]>
<!-- font-face-format: Font Face Format Element........ -->
<!ENTITY % SVG.font-face-format.element "INCLUDE" >
<![%SVG.font-face-format.element;[
<!ENTITY % SVG.font-face-format.content "EMPTY" >
<!ELEMENT %SVG.font-face-format.qname; %SVG.font-fac\
e-format.content; >
<!-- end of SVG.font-face-format.element -->]]>
<!ENTITY % SVG.font-face-format.attlist "INCLUDE" >
<![%SVG.font-face-format.attlist;[
<!ATTLIST %SVG.font-face-format.qname;
 %SVG.Core.attrib;
 string CDATA #IMPLIED
>
<!-- end of SVG.font-face-format.attlist -->]]>
<!-- font-face-name: Font Face Name Element............ -->
<!ENTITY % SVG.font-face-name.element "INCLUDE" >
<![%SVG.font-face-name.element;[
<!ENTITY % SVG.font-face-name.content "EMPTY" >
<!ELEMENT %SVG.font-face-name.qname; %SVG.font-face-na\
me.content; >
<!-- end of SVG.font-face-name.element -->]]>
<!ENTITY % SVG.font-face-name.attlist "INCLUDE" >
<![%SVG.font-face-name.attlist;[
<!ATTLIST %SVG.font-face-name.qname;
 %SVG.Core.attrib;
 name CDATA #IMPLIED
>
<!-- end of SVG.font-face-name.attlist -->]]>
gt;

The 'definition-src' element corresponds to the 'definition-src' descriptor in CSS2. (Refer to description of the [ 'definition-src' descriptor] in Surf Clothing specification.)

<!ENTITY % SVG.definition-src.element "INCLUDE" >
<![%SVG.definition-src.element;[
<!ENTITY % SVG.definition-src.content "EMPTY" >
<!ELEMENT %SVG.definition-src.qname; %SVG.definition-\
src.content; >
<!-- end of SVG.definition-src.element -->]]>
<!ENTITY % SVG.definition-src.attlist "INCLUDE" >
<![%SVG.definition-src.attlist;[
<!ATTLIST %SVG.definition-src.qname;
 %SVG.Core.attrib;
 %SVG.XLinkRequired.attrib;
>
 

 

.9 Font Module

Elements Attributes Content Model
font Core.attrib, External.attrib, Style.attrib, Presentation.attrib, horiz-origin-x, horiz-origin-y, horiz-adv-x, vert-adv-y, vert-origin-x, vert-origin-y (Description.class, font-face, missing-glyph, (glyph | hkern | vkern)*)
font-face Core.attrib, font-family, font-style, font-variant, font-weight, font-stretch, font-size, unicode-range, units-per-em, panose-1, stemv, stemh, slope, cap-height, x-height, accent-height, ascent, descent, widths, bbox, ideographic, alphabetic, mathematical, hanging, v-ideographic, v-alphabetic, v-mathematical, v-hanging, underline-position, underline-thickness, strikethrough-position, strikethrough-thickness, overline-position, overline-thickness (Description.class, font-face-src?, definition-src?)
glyph Core.attrib, Style.attrib, Presentation.attrib, unicode, glyph-name, d, orientation, arabic-form, lang, horiz-adv-x, vert-adv-y, vert-origin-x, vert-origin-y (Description.class | Structure.class | Shape.class | Text.class | Image.class | View.class | Conditional.class | Hyperlink.class | Style.class | Marker.class | Clip.class | Mask.class | Gradient.class | Pattern.class | ColorProfile.class | Filter.class | Cursor.class | Font.class | Animation.class)*
missing-glyph Core.attrib, Style.attrib, Presentation.attrib, d, orientation, arabic-form, lang, horiz-adv-x, vert-adv-y, vert-origin-x, vert-origin-y (Description.class | Structure.class | Shape.class | Text.class | Image.class | View.class | Conditional.class | Hyperlink.class | Style.class | Marker.class | Clip.class | Mask.class | Gradient.class | Pattern.class | ColorProfile.class | Filter.class | Cursor.class | Font.class | Animation.class)*
hkern Core.attrib, g1, g2, u1, u2, k EMPTY
vkern Core.attrib, g1, g2, u1, u2, k EMPTY
font-face-src Core.attrib (font-face-uri|font-face-name)+
font-face-uri Core.attrib, XLinkRequired.attrib font-face-format*
font-face-format Core.attrib, string EMPTY
font-face-name Core.attrib, name EMPTY
defintion-src Core.attrib, XLinkRequired.attrib EMPTY

.9.1 Font Content Set

The Font Module defines the Font.class content set.

Content Set Name Elements in Content Set
Font.class font

.10 Basic Font Module

Elements Attributes Content Model
font Core.attrib, External.attrib, Style.attrib, Presentation.attrib, horiz-origin-x, horiz-adv-x (Description.class, font-face, missing-glyph, (glyph | hkern)*)
font-face Core.attrib, font-family, font-style, font-variant, font-weight, font-stretch, font-size, unicode-range, units-per-em, panose-1, stemv, stemh, slope, cap-height, x-height, accent-height, ascent, descent, widths, bbox, ideographic, alphabetic, mathematical, hanging, underline-position, underline-thickness, strikethrough-position, strikethrough-thickness, overline-position, overline-thickness (Description.class, font-face-src?)
glyph Core.attrib, Style.attrib, unicode, glyph-name, d, arabic-form, lang, horiz-adv-x (Description.class)
missing-glyph Core.attrib, Style.attrib, d, arabic-form, lang, horiz-adv-x (Description.class)
hkern Core.attrib, g1, g2, u1, u2, k EMPTY
font-face-src Core.attrib (font-face-name)+
font-face-name Core.attrib, name EMPTY

.10.1 Basic Font Content Set

The Basic Font Module defines the Font.class content set.

Content Set Name Elements in Content Set
Font.class font
 


20.11 DOM interfaces

The following interfaces are defined below: SVGFontElement, SVGGlyphElement, SVGMissingGlyphElement, SVGHKernElement, SVGVKernElement, SVGFontFaceElement, SVGFontFaceSrcElement, SVGFontFaceUriElement, SVGFontFaceFormatElement, SVGFontFaceNameElement, SVGDefinitionSrcElement.


Interface SVGFontElement

The SVGFontElement interface corresponds to the 'font' element.

Object-oriented access to the attributes of the 'font' element via the SVG DOM is not available.


IDL Definition
interface SVGFontElement : SVGElement, SVGExternalResourcesRequired, SVGStylable {};


Interface SVGGlyphElement

The SVGGlyphElement interface corresponds to the 'glyph' element.

Object-oriented access to the attributes of the 'glyph' element via the SVG DOM is not available.


IDL Definition
interface SVGGlyphElement : SVGElement, SVGStylable {};


Interface SVGMissingGlyphElement

The SVGMissingGlyphElement interface corresponds to the 'missing-glyph' element.

Object-oriented access to the attributes of the 'missing-glyph' element via the SVG DOM is not available.


IDL Definition
interface SVGMissingGlyphElement : SVGElement, SVGStylable {};


Interface SVGHKernElement

The SVGHKernElement interface corresponds to the 'hkern' element.

Object-oriented access to the attributes of the 'hkern' element via the SVG DOM is not available.


IDL Definition
interface SVGHKernElement : SVGElement {};


Interface SVGVKernElement

The SVGVKernElement interface corresponds to the 'vkern' element.

Object-oriented access to the attributes of the 'vkern' element via the SVG DOM is not available.


IDL Definition
interface SVGVKernElement : SVGElement {};


Interface SVGFontFaceElement

The SVGFontFaceElement interface corresponds to the 'font-face' element.

Object-oriented access to the attributes of the 'font-face' element via the SVG DOM is not available.


IDL Definition
interface SVGFontFaceElement : SVGElement {};


Interface SVGFontFaceSrcElement

The SVGFontFaceSrcElement interface corresponds to the 'font-face-src' element.


IDL Definition
interface SVGFontFaceSrcElement : SVGElement {};


Interface SVGFontFaceUriElement

The SVGFontFaceUriElement interface corresponds to the 'font-face-uri' element.

Object-oriented access to the attributes of the 'font-face-uri' element via the SVG DOM is not available.


IDL Definition
interface SVGFontFaceUriElement : SVGElement {};


Interface SVGFontFaceFormatElement

The SVGFontFaceFormatElement interface corresponds to the 'font-face-format' element.

Object-oriented access to the attributes of the 'font-face-format' element via the SVG DOM is not available.


IDL Definition
interface SVGFontFaceFormatElement : SVGElement {};


Interface SVGFontFaceNameElement

The SVGFontFaceNameElement interface corresponds to the 'font-face-name' element.

Object-oriented access to the attributes of the 'font-face-name' element via the SVG DOM is not available.


IDL Definition
interface SVGFontFaceNameElement : SVGElement {};


Interface SVGDefinitionSrcElement

The SVGDefinitionSrcElement interface corresponds to the 'definition-src' element.

Object-oriented access to the attributes of the 'definition-src' element via the SVG DOM is not available.


IDL Definition
interface SVGDefinitionSrcElement : SVGElement {};


Kevin Carr

Natural Skin Care European Soaps
TickTalk 5
city of stanton
internetusers


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

And you must check out this website

 

French Lavender Soaps Organic And Natural Body Care Shea Body Butters

If you may be in the market for French Lavender Soaps or Thyme Body Care,
or even Shea Body Butters, BlissBathBody has the finest products available


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Boardshorts are designed to be quick-drying, and are generally made from smooth polyester or nylon material. They are durable and hold up to wear from contact with a surfboard, yet are comfortable and light-weight. They are well-adapted to their use in various active watersports. These are the best board shorts around: Volcom Board Shorts
Hurley Board Shorts
Quiksilver Board Shorts
Roxy Board Shorts
Billabong Board Shorts
Adidas Board Shorts
Emerica Board Shorts
Element Board Shorts
Analog Board Shorts
Alpinestars Board Shorts
Quiksilver Board Shorts
C1rca Board Shorts
DC Board Shorts
Dakine Board Shorts
Etnies Board Shorts
Independent Board Shorts
Jet Pilot Board Shorts
Kr3w Board Shorts
RVCA Board Shorts
LRG Board Shorts
Matix Board Shorts
Lost Board Shorts
Metal Mulisha Board Shorts
O'Neill Board Shorts
Boardshorts do not have an elastic waist like many swim shorts do; instead they have a more rigid waistband which opens at the front, often with a velcro fly. The waistband is also held together at the front with a lace-up tie. This double fail-safe system is in order to ensure that the shorts cannot be pulled off the body by the force of the wave when a surfer is tumbled under water during a wipeout. Another common feature of authentic surfing boardshort design is a very small pocket sealed with velcro and vented with a grommet. This is designed to be a secure place to carry a car key or house key while in the water: Volcom Boardshorts
Hurley Boardshorts
Quiksilver Boardshorts
Roxy Boardshorts
Billabong Boardshorts
Adidas Boardshorts
Emerica Boardshorts
Element Boardshorts
Analog Boardshorts
Alpinestars Boardshorts
Quiksilver Boardshorts
C1rca Boardshorts
DC Boardshorts
Dakine Boardshorts
Etnies Boardshorts
Independent Boardshorts
Jet Pilot Boardshorts
Kr3w Boardshorts
RVCA Boardshorts
LRG Boardshorts
Matix Boardshorts
Lost Boardshorts
Metal Mulisha Boardshorts
O'Neill Boardshorts
Boardshorts are normally longer than some shorts or form-fitting speedo styles of swimwear and sometimes they have a baggy appearance. Boardshorts are longer than normal shorts for one major reason: surfboards are covered with a layer of sticky wax, which allows the surfer to stand on the board without slipping off. However, this wax can rip leg hair off the surfer when he is sitting on the board waiting for waves. Long boardshorts cover the back of the leg when sitting on the board, preventing the wax from ripping at the leg hair. The length of boardshorts is also affected according to fashion trends; ranging from mid-thigh (old school) to below the knee, covering the entire knee. They often sit low in the back, exposing the top of the buttocks. Many designs use vibrant color, Hawaiian floral images and highlighted stitching; however not all boardshorts have these features: Volcom Boardshort
Hurley Boardshort
Quiksilver Boardshort
Roxy Boardshort
Billabong Boardshort
Adidas Boardshort
Emerica Boardshort
Element Boardshort
Analog Boardshort
Alpinestars Boardshort
Quiksilver Boardshort
C1rca Boardshort
DC Boardshort
Dakine Boardshort
Etnies Boardshort
Independent Boardshort
Jet Pilot Boardshort
Kr3w Boardshort
RVCA Boardshort
LRG Boardshort
Matix Boardshort
Lost Boardshort
Metal Mulisha Boardshort
O'Neill Boardshort
Although the basic design for boardshorts remains largely the same, some manufacturers have taken advantage of new technology. Because surfers and other water-sports enthusiasts commonly wear boardshorts without underwear, one of the major complaints has been about the use of velcro for the fly closure which tends to entangle pubic hair. A solution that some manufactures have come up with is to use a neoprene fly, which does not allow the fly to completely open, but provides enough stretch so that the shorts can be easily pulled on and off. Pubic hair does not get caught on the neoprene fly. To remedy another common complaint, about boardshorts stitching in the inseam area which would rub directly against the wearer's skin, many manufacturers switched to a seamless design, or use welding or glue, rather than stitches. Although it is very common for boardshorts to be worn as is, some male wearers prefer to wear boxers, a jockstrap or briefs under them. Some female wearers wear a swimsuit or bikini bottom under them. Volcom Board Short
Hurley Board Short
Quiksilver Board Short
Roxy Board Short
Billabong Board Short
Adidas Board Short
Emerica Board Short
Element Board Short
Analog Board Short
Alpinestars Board Short
Quiksilver Board Short
C1rca Board Short
DC Board Short
Dakine Board Short
Etnies Board Short
Independent Board Short
Jet Pilot Board Short
Kr3w Board Short
RVCA Board Short
LRG Board Short
Matix Board Short
Lost Board Short
Metal Mulisha Board Short
O'Neill Board Short
Here are few links to some of the more popular Volcom surf clothing products:

Volcom Shirts
Volcom Tees
Volcom Shorts
Volcom Hats
Volcom Shoes
Volcom Boardshorts
Volcom Jackets

Here are few links to some of the more popular Element apparel and clothing products:

Element Shirts
Element Tees
Element Shorts
Element Hats
Element Shoes
Element Boardshorts
Element Jackets

Here are few links to some of the more popular Ezekiel apparel and clothing products:

Ezekiel Shirts
Ezekiel Tees
Ezekiel Shorts
Ezekiel Hats
Ezekiel Shoes
Ezekiel Boardshorts
Ezekiel Jackets

Here are few links to some of the more popular RVCA apparel and clothing products:

RVCA Shirts
RVCA Tees
RVCA Shorts
RVCA Hats
RVCA Shoes
RVCA Boardshorts
RVCA Jackets

HB Surf Shop
HB Sport Apparel
OC Sport Shop
OC Sport Apparel
All Sport Apparel
All Surf clothing

 

La Palma plumber

Take a moment to visit 1cecilia448 or see them on twitter at 1cecilia448 or view them on facebook at 1cecilia448.




ng Hurley Volcom