Internet DRAFT - draft-lilley-font-toplevel
draft-lilley-font-toplevel
Network Working Group C. Lilley
Internet-Draft W3C
Intended status: Standards Track October 16, 2015
Expires: April 18, 2016
The font Primary Content Type
draft-lilley-font-toplevel-00
Abstract
This memo serves to register and document the "font" Primary Content
Type, under which the Internet Media subtypes for representation
formats for fonts may be registered. This document also serves as a
registration application for a set of intended subtypes, which are
representative of some existing subtypes already registered under the
"application" tree by their separate registrations.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 18, 2016.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
Lilley Expires April 18, 2016 [Page 1]
Internet-Draft The font Primary Content Type October 2015
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
1. Introduction
The process of setting type in computer systems and other forms of
text presentation systems uses fonts in order to provide visual
representations of the glyphs. Just as with images, for example,
there are a number of ways to represent the visual information of the
glyphs. Early font formats often used bitmaps, as these could have
been carefully tuned for maximum readability at a given size on low-
resolution displays. More recently, scalable vector outline fonts
have come into widespread use: in these fonts, the outlines of the
glyphs are described, and the presentation system renders the outline
in the desired position and size.
This document defines a top-level Internet Media Type type "font"
under which different representation formats of fonts may be
registered (e.g. a bitmap or outline formats). It should be
emphasized that, just as under the "image" top-level type one does
not find registration for a specific image, for example, "The Night-
watch" (by Rembrandt) but instead "JPEG" (a compressed image data
representation format), so, under "font" one will not find "Courier"
(the name of a popular font) but perhaps "TTF", "OTF" or "SFNT" (the
names of commonly used TrueType and OpenType font formats as well as
their higher-level wrapper format).
2. Background and Justification
Historically there has not been a registration of formats for fonts.
Most recently, there have been several representation formats
registered as MIME subtypes under the "application" top-level type.
However, with the rapid adoption of web fonts (based on the data from
HTTP Archive [1] showing a huge increase in web font usage from 1% in
the end of 2010 to 50% across all sites in the beginning of 2015)
custom fonts on the web have become a core web resource. As the in-
depth analysis [2] shows, the lack of the intuitive top-level font
type is causing significant confusion among developers - while
currently defined font subtypes are severely under-utilized there are
many more sites that already use non-existent (but highly intuitive)
media types such as "font/woff", "font/ttf" and "font/truetype". At
the same time, the majority of sites resort to using generic types
such as "application/octet-stream", "text/plain" and "text/html"; or
use unregistrable types such as "application/x-font-ttf".
Contrary to our expectations, the officially defined IANA subtypes
such as "application/font-woff" and "application/font-sfnt" see a
very limited use - their adoption rates trail far behind as the
Lilley Expires April 18, 2016 [Page 2]
Internet-Draft The font Primary Content Type October 2015
actual use of web fonts continues to increase. The members of the
W3C WebFonts WG believe the use of "application" top-level type is
not ideal. First, the "application" sub-tree is treated (correctly)
with great caution with respect to viruses and other active code.
Secondly, the lack of a top-level type means that there is no
opportunity to have a common set of optional attributes, such as are
specified here. Third, fonts have a unique set of licensing and
usage restrictions, which makes it worthwhile to identify this
general category with a unique top-level type.
The W3C WebFonts WG believes that the situation can be significantly
improved if a set of font media types is registered using "font" as a
dedicated top-level type. Based on the data analysis presented
above, we believe that it is the presence of simple and highly
intuitive media types for images that caused the widespread adoption
of IANA's recommendations, where the correct usage of existing media
types reaches over 97% for all subtypes in the "image" tree. The WG
believes that, considering a rapid adoption of fonts on the web, the
registration of the top-level media type for fonts along with the
intuitive set of subtypes that reflect popular and widely used data
formats would further stimulate the adoption of web fonts,
significantly simplify web server configuration process and
facilitate the proper use of IANA media type recommendations.
3. Security considerations
Fonts are interpreted data structures that represent collections of
different tables containing data that represent different types of
information, including glyph outlines in various formats, hinting
instructions, metrics and layout information for multiple languages
and writing systems, rules for glyph substitution and positioning,
etc. Depending on the format used to represent the glyph data the
font may contain TrueType, PostScript or SVG outlines and their
respective hint instructions, where applicable. There are many
existing, already standardized font table tags and formats that allow
an unspecified number of entries containing predefined data fields
for storage of variable length binary data. Many existing (TrueType,
OpenType and OFF, SIL Graphite, WOFF, etc.) font formats are based on
the table-based SFNT (scalable font) format which is extremely
flexible, highly extensible and offers an opportunity to introduce
additional table structures when needed, in a way that would not
affect existing font rendering engines and text layout
implementations. However, this very extensibility may present
specific security concerns - the flexibility and ease of adding new
data structures makes it easy for any arbitrary data to be hidden
inside a font file. There is a significant risk that the flexibility
of font data structures may be exploited to hide malicious binary
content disguised as a font data component.
Lilley Expires April 18, 2016 [Page 3]
Internet-Draft The font Primary Content Type October 2015
Fonts may contain 'hints', which are programmatic instructions that
are executed by the font engine for the alignment of graphical
elements of glyph outlines with the target display pixel grid.
Depending on the font technology utilized in the creation of a font
these hints may represent active code interpreted and executed by the
font rasterizer. Even though hints operate within the confines of
the glyph outline conversion system and have no access outside the
font rendering engine, hint instructions can be, however, quite
complex, and a maliciously designed complex font could cause undue
resource consumption (e.g. memory or CPU cycles) on a machine
interpreting it. Indeed, fonts are sufficiently complex, and most
(if not all) interpreters cannot be completely protected from
malicious fonts without undue performance penalties.
Widespread use of fonts as necessary component of visual content
presentation warrants that a careful attention should be given to
security considerations whenever a font is either embedded into an
electronic document or transmitted alongside media content as a
linked resource. While many existing font formats provide certain
levels of protection of data integrity (such mechanisms include e.g.
checksums and digital signatures), font data formats provide neither
privacy nor confidentiality protection internally; if needed, such
protection should be provided externally.
4. Definition and encoding
The "font" as the primary media content type indicates that the
content identified by it requires certain graphic subsystem such as
font rendering engine (and, in some cases, text layout and shaping
engine) to process font data, which in turn may require certain level
of hardware capabilities such as certain levels of CPU performance
and available memory. The "font" media type does not provide any
specific information about the underlying data format and how the
font information should be interpreted - the subtypes defined within
a "font" tree will name the specific font formats. Unrecognized sub-
types of "font" should be treated as "application/octet-stream".
Implementations may pass unrecognized subtypes to a common font-
handling system, if such system is available.
5. Defined subtypes
In this section the initial entries under the top-level 'font' MIME
type are documented. They also serve as examples for future
registrations.
Lilley Expires April 18, 2016 [Page 4]
Internet-Draft The font Primary Content Type October 2015
5.1. Generic SFNT font type
Type name: font
Subtype name: sfnt
Required parameters: None.
Optional parameters:
1) Name: Outlines Value: TTF, CFF, SVG
This parameter can be used to specify the type of outlines
supported by the font. Value "TTF" shall be used when a font
resource contains glyph outlines in TrueType format, value
"CFF" shall be used to identify fonts containing PostScript/CFF
outlines, and value SVG shall be used to identify fonts that
include SVG outlines. TTF, CFF or SVG outlines can be present
in various combinations in the same font file, therefore,
multiple values for the same optional parameter may be defined.
2) Name: Layout
Value: OTF, AAT, SIL
This parameter identifies the type of implemented support for
advanced text layout features. The predefined values "OTF",
"AAT" and " SIL" respectively indicate support for OpenType
text layout, Apple Advanced Typography or Graphite SIL. More
than one shaping and layout mechanism may be supported by the
same font file, therefore, multiple values for the same
optional parameter may be defined.
Encoding considerations: Binary.
Interoperability considerations: As it was noted in the first
paragraph of the "Security considerations" section, the same font
format wrapper can be used to encode fonts with different types of
glyph data represented as either TrueType or PostScript (CFF)
outlines. Existing font rendering engines may not be able to
process some of the particular outline formats, and downloading a
font resource that contains unsupported glyph data format would
result in inability of application to render and display text.
Therefore, it would be extremely useful to clearly identify the
format of the glyph outline data within a font using an optional
parameter, and allow applications to make decisions about
downloading a particular font resource sooner. Similar, another
optional parameter is suggested to identify the type of text
Lilley Expires April 18, 2016 [Page 5]
Internet-Draft The font Primary Content Type October 2015
shaping and layout mechanism that is supported by a font. Please
note that as new outline formats and text shaping mechanisms may
be defined in the future, the set of allowed values for two
optional parameters defined by this section may be extended.
Published specification: ISO/IEC 14496-22 "Open Font Format" (OFF)
specification being developed by ISO/IEC SC29/WG11.
Applications that use this media type: Any and all applications that
are able to create, edit or display textual media content.
Additional information:
Magic number(s): The TrueType fonts and OFF / OpenType fonts
containing TrueType outlines should use 0x00010000 as the
'sfnt' version number.
The OFF / OpenType fonts containing CFF data should use the tag
'OTTO' as 'sfnt' version number.
File extension(s): Font file extensions used for OFF / OpenType
fonts: .ttf, .otf
Typically, .ttf extension is only used for fonts containing
TrueType outlines, while .otf extension can be used for any
OpenType/OFF font, either with TrueType or CFF outlines.
Macintosh file type code(s): (no code specified)
@font-face Format: none.
Fragment Identifiers none.
Person & email address to contact for further information: Vladimir
Levantovsky (vladimir.levantovsky@monotype.com).
Intended usage: COMMON
Restrictions on usage: None
Author: The ISO/IEC 14496-22 "Open Font Format" specification is a
product of the ISO/IEC JTC1 SC29/WG11.
Change controller: The ISO/IEC has change control over this
specification.
Lilley Expires April 18, 2016 [Page 6]
Internet-Draft The font Primary Content Type October 2015
5.2. TTF font type
Type name: font
Subtype name: ttf
Required parameters: None.
Optional parameters:
Name: Layout Value: OTF, AAT, SIL
This parameter identifies the type of support mechanism for
advanced text layout features. The predefined values "OTF",
"AAT" and " SIL" respectively indicate support for OpenType
text layout, Apple Advanced Typography or Graphite SIL. More
than one shaping and layout mechanism may be supported by the
same font file, therefore, multiple values for the same
optional parameter may be defined.
Encoding considerations: Binary.
Interoperability considerations: As was noted in the first paragraph
of the "Security considerations" section, the same font format can
be used to encode fonts supporting different types of outlines
and/or text shaping and layout mechanisms. Existing font
rendering engine implementations may not be able to process some
of the particular layout table formats, and downloading a font
resource that contains unsupported text shaping mechanism would
result in inability of applications to display text properly.
Therefore, it would be extremely useful to clearly identify the
supported text shaping and layout data within a font using an
optional parameter, and allow applications to make decisions about
downloading a particular font resource sooner. Please note that
as new text shaping mechanisms may be defined in the future, the
set of allowed values for the optional parameter defined by this
section may be extended.
Published specification: ISO/IEC 14496-22 "Open Font Format" (OFF)
specification being developed by ISO/IEC SC29/WG11.
Applications that use this media type: Any and all applications that
are able to create, edit or display textual media content.
Additional information:
Lilley Expires April 18, 2016 [Page 7]
Internet-Draft The font Primary Content Type October 2015
Magic number(s): The TrueType fonts and OFF / OpenType fonts
containing TrueType outlines should use 0x00010000 as the
'sfnt' version number.
File extension(s): Font file extensions used for TrueType / OFF /
OpenType fonts: .ttf, .otf
Typically, .ttf extension is only used for fonts containing
TrueType outlines, while .otf extension may be used for any
OpenType/OFF font, either with TrueType or CFF outlines.
Macintosh file type code(s): (no code specified)
@font-face Format: truetype
Fragment Identifiers none.
Person & email address to contact for further information: Vladimir
Levantovsky (vladimir.levantovsky@monotype.com).
Intended usage: COMMON
Restrictions on usage: None
Author: The ISO/IEC 14496-22 "Open Font Format" specification is a
product of the ISO/IEC JTC1 SC29/WG11.
Change controller: The ISO/IEC has change control over this
specification.
5.3. OTF font type
Type name: font
Subtype name: otf
Required parameters: None.
Optional parameters
Name: Outlines Value: TTF, CFF, SVG
This parameter can be used to specify the type of outlines
supported by the font. Value "TTF" shall be used when a font
resource contains glyph outlines in TrueType format, value
"CFF" shall be used to identify fonts containing PostScript/CFF
outlines, and value SVG shall be used to identify fonts that
include SVG outlines. TTF, CFF or SVG outlines can be present
Lilley Expires April 18, 2016 [Page 8]
Internet-Draft The font Primary Content Type October 2015
in various combinations in the same font file, therefore,
multiple values for the same optional parameter may be defined.
Encoding considerations: Binary.
Interoperability considerations: As it was noted in the first
paragraph of the "Security considerations" section, the same font
format can be used to encode fonts with different types of glyph
data represented as either TrueType, PostScript (CFF) or SVG
outlines. Existing font rendering engines may not be able to
process some of the particular outline formats, and downloading a
font resource that contains unsupported glyph data format would
result in inability of application to render and display text.
Therefore, it would be extremely useful to clearly identify the
format of the glyph outline data within a font using an optional
parameter, and allow applications to make decisions about
downloading a particular font resource sooner. Please note that
as new outline formats may be defined in the future, the set of
allowed values for the optional parameter defined in this section
may be extended.
Published specification: ISO/IEC 14496-22 "Open Font Format" (OFF)
specification being developed by ISO/IEC SC29/WG11.
Applications that use this media type: Any and all applications that
are able to create, edit or display textual media content.
Additional information:
Magic number(s): The TrueType fonts and OFF / OpenType fonts
containing TrueType outlines should use 0x00010000 as the
'sfnt' version number.
The OFF / OpenType fonts containing CFF data should use the tag
'OTTO' as 'sfnt' version number.
File extension(s): Font file extensions used for OFF / OpenType
fonts: .ttf, .otf
Typically, .ttf extension is only used for fonts containing
TrueType outlines, while .otf extension can be used for any
OpenType/OFF font, either with TrueType, CFF or SVG outlines.
Macintosh file type code(s): (no code specified)
@font-face Format: opentype
Fragment Identifiers none.
Lilley Expires April 18, 2016 [Page 9]
Internet-Draft The font Primary Content Type October 2015
Person & email address to contact for further information: Vladimir
Levantovsky (vladimir.levantovsky@monotype.com).
Intended usage: COMMON
Restrictions on usage: None
Author: The ISO/IEC 14496-22 "Open Font Format" specification is a
product of the ISO/IEC JTC1 SC29/WG11.
Change controller: The ISO/IEC has change control over this
specification.
5.4. WOFF 1.0
Type name: font
Subtype name: woff
Required parameters: None.
Optional parameters: None.
Encoding considerations: Binary.
Interoperability considerations: None.
Published specification: This media type registration is extracted
from the WOFF specification [3] at W3C.
Applications that use this media type: WOFF is used by Web browsers,
often in conjunction with HTML and CSS.
Additional information:
Magic number(s): The signature field in the WOFF header MUST
contain the "magic number" 0x774F4646
File extension(s): woff
Macintosh file type code(s): (no code specified)
Macintosh Universal Type Identifier code: "org.w3c.woff"
@font-face Format: woff
Fragment Identifiers: none.
Lilley Expires April 18, 2016 [Page 10]
Internet-Draft The font Primary Content Type October 2015
Person & email address to contact for further information: Chris
Lilley (www-font@w3.org).
Intended usage: COMMON
Restrictions on usage: None
Author: The WOFF specification is a work product of the World Wide
Web Consortium's WebFonts Working Group.
Change controller: The W3C has change control over this
specification.
5.5. WOFF 2.0
Type name: font
Subtype name: woff2
Required parameters: None.
Optional parameters: None.
Encoding considerations: Binary.
Interoperability considerations: WOFF 2.0 is an improvement on WOFF
1.0. The two formats have different Internet Media Types,
different @font-face formats, and may be used in parallel.
Published specification: This media type registration is extracted
from the WOFF 2.0 specification [4] at W3C.
Applications that use this media type: WOFF 2.0 is used by Web
browsers, often in conjunction with HTML and CSS.
Additional information:
Magic number(s): The signature field in the WOFF header MUST
contain the "magic number" 0x774F4632 ('wOF2')
File extension(s): woff2
Macintosh file type code(s): (no code specified)
Macintosh Universal Type Identifier code: "org.w3c.woff2"
@font-face Format: woff2
Lilley Expires April 18, 2016 [Page 11]
Internet-Draft The font Primary Content Type October 2015
Fragment Identifiers none.
Person & email address to contact for further information: Chris
Lilley (www-font@w3.org).
Intended usage: COMMON
Restrictions on usage: None
Author: The WOFF2 specification is a work product of the World Wide
Web Consortium's WebFonts Working Group.
Change controller: The W3C has change control over this
specification.
6. References
6.1. URIs
[1] http://httparchive.org/
trends.php?s=All&minlabel=Nov+15+2010&maxlabel=Feb+15+2015
[2] http://goo.gl/zbDhUN
[3] http://www.w3.org/TR/WOFF
[4] http://www.w3.org/TR/WOFF2
Author's Address
Chris Lilley
W3C
2004 Route des Lucioles
Sophia Antipolis 06902
France
Email: chris@w3.org
Lilley Expires April 18, 2016 [Page 12]