Appendix C: Implementation and performance
notes
3.1 Order of property value calculation
This section is under construction
Due to dependencies among properties, user agents must
compute some property
values in a specific order.
3.2 Colors
The following information is informative, not normative.
See the Gamma Tutorial in the PNG specification [PNG10]
if you aren't familiar with gamma issues.
In the computation, UAs displaying on a CRT may assume an ideal
CRT and ignore any effects on apparent gamma caused by dithering. That
means the minimal handling they need to do on current platforms is:
-
PC using MS-Windows
-
none
-
Unix using X11
-
none
-
Mac using QuickDraw
-
apply gamma 1.39 [ICC32] (ColorSync-savvy applications
may simply pass the sRGB ICC profile to ColorSync
to perform correct color correction)
-
SGI using X
-
apply the gamma value from /etc/config/system.glGammaVal (the default
value being 1.70; applications running on Irix 6.2 or above may simply pass
the sRGB ICC profile to the color management system)
-
NeXT using NeXTStep
-
apply gamma 2.22
"Applying gamma" means that each of the three R, G and B must be
converted to R'=Rgamma, G'=Ggamma,
B'=Bgamma, before handing to the OS.
This may rapidly be done by building a 256-element lookup table
once per browser invocation thus:
for i := 0 to 255 do
raw := i / 255;
corr := pow (raw, gamma);
table[i] := trunc (0.5 + corr * 255.0)
end
which then avoids any need to do transcendental math per color
attribute, far less per pixel.
3.3.1 Glossary of font terms
- DocLock™
- Bitstream's DocLock™ technology ensures that TrueDoc
PFRs can only be used with the site they are published for. A TrueDoc
PFR moved to a different site or referenced from another site will not
work.
- Digital Signature
- Part of a trust management technology, used to provide signed
assertions about a resource.
- Font Caching
- Font caching allows for a temporary copy of fonts on the client
system. They are often stored on disk with other cached items such as
graphics specifically for the UA.
- Font Face
- A "handle" that refers to a specific face of a font, excluding
the font size (? size may be needed for non-scalable fonts)
- Font Matching
- Font matching is a process of selecting a similar font based
on using one or more attributes of the primary font. Common attribute include
serif, sans serif, weight, cap height, x height, spacing, language, and
posture. Font matching is dependent on the algorithm and the variety of
candidate fonts.
- Glyph Representation Sub-setting
- Glyph Representation sub-setting is the process by which
unwanted glyph representations, (together with their side bearings and
kerning information) are removed from a primary font to produce a
smaller subset font that covers a particular document or set of
documents. This is a particular win for documents that use ideographic
scripts, where the glyph complement of the base font can be very
large. Glyph representation sub-setting for documents using scripts
that require ligatures, such as Arabic, is difficult without knowing
the ligature formation rules of the final display system.
- Intellifont
- Intellifont technology was developed by Agfa and is the native
format for Hewlett-Packard and other printers that use the PCL5
language. It is also the native font format on the Amiga
computers.
- Infinifont
- A font synthesis technique which, given a Panose-1 number (and,
optionally, additional font description data) can generate a faux font
without extrapolating from a single master outline or interpolating
between two or more outlines. See [INFINIFONT].
- Italic
- A class of letter forms for Latin scripts, that are more cursive
than roman letter forms but less so than script forms. Often, a pair of
fonts are designed to be used together; one is a serifed roman and one
is italic. Other terms to describe this class of letter forms include
cursive and, for Cyrillic scripts, kursiv. For sans-serif faces, the
companion face is often a slanted or oblique variant rather than a
different class of letter form.
- Kerning
- Altering the spacing between selected glyph representations, which
would otherwise appear to be too close or too far apart, to obtain a
more even typographical color.
- Multiple Master Font
- A Multiple Master Font contain two primary fonts that are used
with special rendering software to provide an interpolated result. Adobe
Systems provides a mechanism that allows for parameters to be used to control
the output or the interpolated output font. These parameters generally describe
the characteristics of an original font and the multiple master result
is referred to as a "synthesized font."
- Open Type
- Open Type is an extension to the TrueType font format which
contains additional information that extends the capabilities of the
fonts to support high-quality international typography. Open Type can
associate a single character with multiple glyph representations, and
combinations of characters with a single glyph representation
(ligature formation). Open Type includes two-dimensional information
to support features for complex positioning and glyph attachment.
TrueType Open contains explicit script and language information, so a
text-processing application can adjust its behavior accordingly. See
[OPENTYPE].
- Server Font
- A Server Font is a font resource located on the web server
that is referenced by the WebFont definition. The user agent may use
this resource for rendering the page.
- Speedo
- Speedo font technology was developed by Bitstream and is
the native font format on the Atari ST and Falcon computers,. It is
also used by computers running X.
- TrueDoc
- TrueDoc technology was developed by Bitstream for the
creation, transport, and imaging of platform independent scalable
font objects on the web. Creation of font objects is done by the
TrueDoc character shape recorder (CSR) and the rendering of the font
objects is done by TrueDoc's character shape player (CSP). The
technology is intended to be used on the web for viewing and
printing.
- TrueDoc Portable Font Resource
- A TrueDoc Portable for resource (or PFR) is a
platform independent scalable font object which is produce by a
character shape player. Input may be either TrueType or Type 1 of any
flavor on either Windows, Mac, or Unix. TrueDoc Portable Font
Resources provide good compression ratios, are platform
independent, and because they are not in an native font format
(TrueType or Type 1) they can not be easily installed.
- TrueType
- TrueType is a font format developed by Apple and licensed
to Microsoft. TrueType is the native operating system font format for
Windows and Macintosh. TrueType contains a hierarchical set of tables
and glyph representations. Characters can be hinted on a per
character and point size basis yielding excellent quality at screen
resolutions. TrueType fonts for Windows and Mac have few differences,
though they can be different enough to prevent cross platform
usage. Font foundries provide TrueType fonts for each platform and
generally include a license preventing electronic manipulation to
achieve cross platform transparency.
- TrueType Collection
- A TrueType Collection (or TTC) is an extension to
the TrueType format that includes tables that allow for multiple
TrueType fonts to be contained within a single TrueType font file.
TrueType collection files are relatively rare at this time.
- TrueType GX Fonts
- TrueType GX Fonts contain extensions to the standard
TrueType format that allow for mutable fonts, similar to Multiple
Master fonts. There may be several mutation axis such as weight,
height, and slant. The axis can be defined to obtain almost any
effect. TrueType GX can also supports alternate glyph representation
substitution for ligatures, contextual forms, fractions, etc. To date,
TrueType GX is available only on the Mac. See [TRUETYPEGX].
- Type 1 font
- Type 1 fonts, developed by Adobe Systems, were one of first
scalable formats available. Type 1 fonts generally contain 228
characters with the glyph representations described using third degree
bezier curves. Mac, Windows, and X have similar but separate formats;
Adobe provides Adobe Type Manager for all three platforms. Type1c is a
more recent losslessly-compressed storage form for Type 1 glyph
representations.
- URI Binding
- A process of locking a particular font resource to a given Web
site by embedding an encrypted URI or a digitally signed usage
assertion into the font resource.
There are many different font formats in use by many different
platforms. To select a preferred font format, transparent content
negotiation is used (see [NEGOT]). It is always possible to
tell when a font is being dereferenced, because the URI is inside a
font description. Thus, only the relevant Accept headers need be sent
(not headers related to images, HTML, etc).
For further details on Panose-1, see [PANOSE].
- Family
-
- Serif Style
- Any (0)
- No Fit (1)
- Cove (2)
- Obtuse Cove (3)
- Square Cove (4)
- Obtuse Square Cove (5)
- Square (6)
- Thin (7)
- Bone (8)
- Exaggerated (9)
- Triangle (10)
- Normal Sans (11)
- Obtuse Sans (12)
- Perp Sans (13)
- Flared (14)
- Rounded (15)
- Weight
- Any (0)
- No Fit (1)
- Very Light (2)[100]
- Light (3) [200]
- Thin (4) [300]
- Book (5) [400] same as CSS1 'normal'
- Medium (6) [500]
- Demi (7) [600]
- Bold (8) [700] same as CSS1 'bold'
- Heavy (9) [800]
- Black (10) [900]
- Extra Black / Nord (11) [900] force mapping to CSS1 100-900 scale
- Proportion
- Any (0)
- No Fit (1)
- Old Style (2)
- Modern (3)
- Even Width (4)
- Expanded (5)
- Condensed (6)
- Very Expanded (7)
- Very Condensed (8)
- Monospaced (9)
- Contrast
- Any (0)
- No Fit (1)
- None (2)
- Very Low (3)
- Low (4)
- Medium Low (5)
- Medium (6)
- Medium High (7)
- High (8)
- Very High (9)
- Stroke Variation
- Any (0)
- No Fit (1)
- No Variation (2)
- Gradual/Diagonal (3)
- Gradual/Transitional (4)
- Gradual/Vertical (5)
- Gradual/Horizontal (6)
- Rapid/Vertical (7)
- Rapid/Horizontal (8)
- Instant/Horizontal (9)
- Instant/Vertical (10)
- Arm Style
- Any (0)
- No Fit (1)
- Straight Arms/Horizontal (2)
- Straight Arms/Wedge (3)
- Straight Arms/Vertical (4)
- Straight Arms/Single Serif (5)
- Straight Arms/Double Serif (6)
- Non-Straight Arms/Horizontal (7)
- Non-Straight Arms/Wedge (8)
- Non-Straight Arms/Vertical 90)
- Non-Straight Arms/Single Serif (10)
- Non-Straight Arms/Double Serif (11)
- Letterform
-
- Any (0)
- No Fit (1)
- Normal/Contact (2)
- Normal/Weighted (3)
- Normal/Boxed (4)
- Normal/Flattened (5)
- Normal/Rounded (6)
- Normal/Off Center (7)
- Normal/Square (8)
- Oblique/Contact (9)
- Oblique/Weighted (10)
- Oblique/Boxed (11)
- Oblique/Flattened (12)
- Oblique/Rounded (13)
- Oblique/Off Center (14)
- Oblique/Square (15)
- Midline
-
- Any (0)
- No Fit (1)
- Standard/Trimmed (2)
- Standard/Pointed (3)
- Standard/Serifed (4)
- High/Trimmed (5)
- High/Pointed (6)
- High/Serifed (7)
- Constant/Trimmed (8)
- Constant/Pointed (9)
- Constant/Serifed (10)
- Low/Trimmed (11)
- Low/Pointed (12)
- Low/Serifed (13)
- XHeight
- Any (0)
- No Fit (1)
- Constant/Small (2)
- Constant/Standard (3)
- Constant/Large (4)
- Ducking/Small (5)
- Ducking/Standard (6)
- Ducking/Large (7)
This information is available in the font by looking at the
'ulUnicodeRange' bits in the 'OS/2' table (if it has one), which holds
a bitfield representation of the set. This table is defined in
revision 1.66 of the TrueType specification, from
Microsoft. Considering this information as a set, each element
corresponds to a Unicode 1.1 character block, and the presence of that
element in the set indicates that the font has one or more glyph
representations to represent at least one character in that block. The
set has 128 elements as described below. The order generally follows
that in the Unicode 1.1 standard. This table may be used to convert
the information in a TrueType font into a CSS 'unicode-range'
descriptor.
|
---|
Block | Add | Block name | Unicode range
|
---|
|
---|
0 | 1 | Basic Latin | U+0-7F
|
1 | 2 | Latin-1 Supplement | U+80-FF
|
2 | 4 | Latin-1 Extended-A | U+100-17F
|
3 | 8 | Latin Extended-B | U+180-24F
|
|
---|
4 | 1 | IPA Extensions | U+250-2AF
|
5 | 2 | Spacing Modifier Letters | U+2B0-2FF
|
6 | 4 | Combining Diacritical Marks | U+300-36F
|
7 | 8 | Greek | U+370-3CF
|
|
---|
8 | 1 | Greek Symbols and Coptic | U+3D0-3EF
|
9 | 2 | Cyrillic | U+400-4FF
|
10 | 4 | Armenian | U+530-58F
|
11 | 8 | Hebrew | U+590-5FF
|
|
---|
12 | 1 | Hebrew Extended-A Hebrew Extended-B | ?? what ranges ??
|
13 | 2 | Arabic | U+600-69F
|
14 | 4 | Arabic Extended | U+670-6FF
|
15 | 8 | Devanagari | U+900-97F
|
|
---|
16 | 1 | Bengali | U+980-9FF
|
17 | 2 | Gurmukhi | U+A00-A7F
|
18 | 4 | Gujarati | U+A80-AFF
|
19 | 8 | Oriya | U+B00-B7F
|
|
---|
20 | 1 | Tamil | U+B80-BFF
|
21 | 2 | Telugu | U+C00-C7F
|
22 | 4 | Kannada | U+C80-CFF
|
23 | 8 | Malayalam | U+D00-D7F
|
|
---|
24 | 1 | Thai | U+E00-E7F
|
25 | 2 | Lao | U+E80-EFF
|
26 | 4 | Georgian | U+10A0-10EF
|
27 | 8 | Georgian Extended | U+10F0-10FF ??
|
|
---|
28 | 1 | Hangul Jamo | U+1100-11FF
|
29 | 2 | Latin Extended Additional | -
|
30 | 4 | Greek Extended | U+1F00-1FFF
|
31 | 8 | General Punctuation | U+2000-206F
|
|
---|
32 | 1 | Superscripts and Subscripts | -
|
33 | 2 | Currency Symbols | U+20A0-20CF
|
34 | 4 | Combining Marks for Symbols | U+20D0-20FF
|
35 | 8 | Letterlike Symbols | U+2100-214F
|
|
---|
36 | 1 | Number Forms | U+2150-218F
|
37 | 2 | Arrows | U+2190-21FF
|
38 | 4 | Mathematical Operators | U+2200-22FF
|
39 | 8 | Miscellaneous Technical | U+2300-23FF
|
|
---|
40 | 1 | Control Pictures | U+2400-243F
|
41 | 2 | Optical Character Recognition | U+2440-245F
|
42 | 4 | Enclosed Alphanumerics | U+2460-24FF
|
43 | 8 | Box Drawing | U+2500-257F
|
|
---|
44 | 1 | Block Elements | U+2580-259F
|
45 | 2 | Geometric Shapes | U+25A0-25FF
|
46 | 4 | Miscellaneous Symbols | U+2600-26FF
|
47 | 8 | Dingbats | U+2700-27BF
|
|
---|
48 | 1 | CJK Symbols and Punctuation | U+3000-303F
|
49 | 2 | Hiragana | U+3040-309F
|
50 | 4 | Katakana | U+30A0-30FF
|
51 | 8 | Bopomofo | U+3100-312F
|
|
---|
52 | 1 | Hangul Compatibility Jamo | U+3130-318F
|
53 | 2 | CJK Miscellaneous | ??
|
54 | 4 | Enclosed CJK Letters and Months | U+3200-32FF
|
55 | 8 | CJK compatibility | U+3300-33FF
|
|
---|
56 | 1 | Hangul | U+AC00-D7FF
|
59 | 8 | CJK Unified Ideographs | U+4E00-9FFF
|
|
---|
60 | 1 | Private Use Area | U+E000-F8FF
|
61 | 2 | CJK Compatibility Ideographs | U+F900-FAFF
|
62 | 4 | Alphabetic Presentation Forms | U+FB00-FB4F
|
63 | 8 | Arabic Presentation Forms-A | U+FB50-FDFF
|
|
---|
64 | 1 | Combining Half Marks | U+FE20-FE2F
|
65 | 2 | CJK compatibility Forms | U+FE30-FE4F
|
66 | 4 | Small Form Variants | U+FE50-FE6F
|
67 | 8 | Arabic Presentation Forms-B | U+FE70-FEFF
|
|
---|
68 | 1 | Halfwidth and Fullwidth Forms | U+FF00-FFEF
|
69 | 2 | Specials | U+FFF0-FFFD
|