112112
113113 < h1 > CSS Fonts Module Level 3</ h1 >
114114
115- < h2 class ="no-num no-toc " id =editors-draft-31-january -2013 > Editor's Draft
116- 31 January 2013</ h2 >
115+ < h2 class ="no-num no-toc " id =editors-draft-4-february -2013 > Editor's Draft
116+ 4 February 2013</ h2 >
117117
118118 < dl id =authors >
119119 < dt > This version:
120120
121121 < dd > < a
122122 href ="http://dev.w3.org/csswg/css3-fonts/ "> http://dev.w3.org/csswg/css3-fonts/</ a >
123- <!-- <dd><a href="http://www.w3.org/TR/2013/ED-css3-fonts-20130131 /">http://www.w3.org/TR/2013/ED-css3-fonts-20130131 /</a> -->
123+ <!-- <dd><a href="http://www.w3.org/TR/2013/ED-css3-fonts-20130204 /">http://www.w3.org/TR/2013/ED-css3-fonts-20130204 /</a> -->
124124
125125
126126 < dt > Latest version:
@@ -308,19 +308,22 @@ <h2 class="no-num no-toc" id=contents>Table of contents</h2>
308308 < li > < a href ="#font-matching-algorithm "> < span class =secno > 5 </ span > Font
309309 Matching Algorithm</ a >
310310 < ul class =toc >
311- < li > < a href ="#font-style-matching "> < span class =secno > 5.1 </ span > Matching
311+ < li > < a href ="#font-family-casing "> < span class =secno > 5.1 </ span > Case
312+ sensitivity of font family names</ a >
313+
314+ < li > < a href ="#font-style-matching "> < span class =secno > 5.2 </ span > Matching
312315 font styles</ a >
313316
314- < li > < a href ="#cluster-matching "> < span class =secno > 5.2 </ span > Cluster
317+ < li > < a href ="#cluster-matching "> < span class =secno > 5.3 </ span > Cluster
315318 matching</ a >
316319
317- < li > < a href ="#char-handling-issues "> < span class =secno > 5.3
320+ < li > < a href ="#char-handling-issues "> < span class =secno > 5.4
318321 </ span > Character handling issues</ a >
319322
320- < li > < a href ="#font-matching-changes "> < span class =secno > 5.4 </ span > Font
323+ < li > < a href ="#font-matching-changes "> < span class =secno > 5.5 </ span > Font
321324 matching changes since CSS 2.1</ a >
322325
323- < li > < a href ="#font-matching-examples "> < span class =secno > 5.5 </ span > Font
326+ < li > < a href ="#font-matching-examples "> < span class =secno > 5.6 </ span > Font
324327 matching examples</ a >
325328 </ ul >
326329
@@ -2869,7 +2872,39 @@ <h2 id=font-matching-algorithm><span class=secno>5 </span>Font Matching
28692872 runs of text. For each character in the run a font family is chosen and a
28702873 particular font face is selected containing a glyph for that character.
28712874
2872- < h3 id =font-style-matching > < span class =secno > 5.1 </ span > Matching font
2875+ < h3 id =font-family-casing > < span class =secno > 5.1 </ span > Case sensitivity of
2876+ font family names</ h3 >
2877+
2878+ < p > As part of the font matching algorithm outlined below, user agents must
2879+ match font family names used in style rules with actual font family names
2880+ contained in fonts available in a given environment or defined via
2881+ < code > @font-face</ code > rules. User agents must match these names case
2882+ insensitively, using the "Default Caseless Matching" algorithm outlined in
2883+ the Unicode specification < a href ="#UNICODE6 "
2884+ rel =biblioentry > [UNICODE6]<!--{{!UNICODE6}}--> </ a > . This algorithm is
2885+ detailed in section 3.13 entitled "Default Case Algorithms". Specifically,
2886+ the algorithm must be applied without normalizing the strings involved and
2887+ without applying any language-specific tailorings. The case folding method
2888+ specified by this algorithm uses the case mappings with status field
2889+ ‘< code class =property > C</ code > ’ or ‘< code class =property > F</ code > ’
2890+ in the CaseFolding.txt file of the Unicode Character Database.
2891+ Implementors should take care to verify that a given caseless string
2892+ comparison implementation uses this precise algorithm and not assume that
2893+ a given platform string matching routine follows it, as many of these have
2894+ locale-specific behavior or use some level of string normalization.
2895+
2896+ < p > For authors this means that font family names are matched case
2897+ insensitively, whether or not those names exist in a platform font or in
2898+ the < code > @font-face</ code > rules contained in a stylesheet. Authors
2899+ should take care to normalize the names they use when using combining
2900+ diacritics, since names containing combining diacritics won't match
2901+ equivalent names that use precomposed characters. For example, a family
2902+ name that contains an uppercase A (U+0041) followed by a combining ring
2903+ (U+030A) will < strong > not</ strong > match a name that is identical except
2904+ that it uses the precomposed lowercase a-ring character (U+00E5) instead
2905+ of the combining sequence.
2906+
2907+ < h3 id =font-style-matching > < span class =secno > 5.2 </ span > Matching font
28732908 styles</ h3 >
28742909
28752910 < p > The procedure for choosing fonts consists of iterating over the font
@@ -2897,16 +2932,15 @@ <h3 id=font-style-matching><span class=secno>5.1 </span>Matching font
28972932
28982933 < li > For other family names, the user agent attempts to find the family
28992934 name among fonts defined via < code > @font-face</ code > rules and then among
2900- available system fonts, matching names with a case-insensitive
2901- comparison. On systems containing fonts with multiple localized font
2902- family names, user agents must match any of these names independent of
2903- the underlying system locale or platform API used. If a font family
2904- defined via < code > @font-face</ code > rules contains only invalid font
2905- data, it should be considered as if a font was present but contained an
2906- empty character map; matching a platform font with the same name must not
2907- occur in this case.
2908- < p class =issue > Need to define explicitly the case-insensitive matching
2909- algorithm for matching font family names</ p >
2935+ available system fonts, matching names with a case-insensitive comparison
2936+ as outlined < a href ="#font-family-casing "> in the section above</ a > . On
2937+ systems containing fonts with multiple localized font family names, user
2938+ agents must match any of these names independent of the underlying system
2939+ locale or platform API used. If a font family defined via
2940+ < code > @font-face</ code > rules contains only invalid font data, it should
2941+ be considered as if a font was present but contained an empty character
2942+ map; matching a platform font with the same name must not occur in this
2943+ case.
29102944
29112945 < li > If a font family match occurs, the user agent assembles the set of
29122946 font faces in that family and then narrows the set to a single face using
@@ -3015,7 +3049,7 @@ <h3 id=font-style-matching><span class=secno>5.1 </span>Matching font
30153049 Font</ a > ) or using the missing character glyph from a default font.
30163050 </ ol >
30173051
3018- < h3 id =cluster-matching > < span class =secno > 5.2 </ span > Cluster matching</ h3 >
3052+ < h3 id =cluster-matching > < span class =secno > 5.3 </ span > Cluster matching</ h3 >
30193053
30203054 < p > When text contains characters such as combining diacritics, ideally the
30213055 base character should be rendered using the same font as the diacritic,
@@ -3077,7 +3111,7 @@ <h3 id=cluster-matching><span class=secno>5.2 </span>Cluster matching</h3>
30773111 separately using the rules for single characters.
30783112 </ ol >
30793113
3080- < h3 id =char-handling-issues > < span class =secno > 5.3 </ span > Character handling
3114+ < h3 id =char-handling-issues > < span class =secno > 5.4 </ span > Character handling
30813115 issues</ h3 >
30823116
30833117 < p > The procedure above is always performed on text runs containing Unicode
@@ -3118,7 +3152,7 @@ <h3 id=char-handling-issues><span class=secno>5.3 </span>Character handling
31183152 consistent as possible across user agents, given an identical set of
31193153 available fonts and rendering technology.
31203154
3121- < h3 id =font-matching-changes > < span class =secno > 5.4 </ span > Font matching
3155+ < h3 id =font-matching-changes > < span class =secno > 5.5 </ span > Font matching
31223156 changes since CSS 2.1</ h3 >
31233157
31243158 < p > The algorithm above is different from CSS 2.1 in a number of key places.
@@ -3140,7 +3174,7 @@ <h3 id=font-matching-changes><span class=secno>5.4 </span>Font matching
31403174 < li > Cluster sequences are matched as a unit.
31413175 </ ul >
31423176
3143- < h3 id =font-matching-examples > < span class =secno > 5.5 </ span > Font matching
3177+ < h3 id =font-matching-examples > < span class =secno > 5.6 </ span > Font matching
31443178 examples</ h3 >
31453179
31463180 < div class =example >
@@ -4241,14 +4275,11 @@ <h3 id=font-feature-values><span class=secno>6.9 </span>Defining font
42414275 class =property > font-variant</ code > </ a > ’ property are recognized,
42424276 definitions for other value names cause a syntax error and are ignored.
42434277 Each property value that is font specific is clearly marked as such.
4244- Feature value names follow the rules of CSS identifiers and are
4278+ Feature value names follow the rules of CSS user identifiers and are
42454279 case-sensitive. They are unique only for a given set of font families and
42464280 font-variant property value; the same identifier used with a different
42474281 font-variant property value is treated as a separate and distinct value.
42484282
4249- < p class =issue > Matching of feature value names is dependent on the
4250- resolution of matching for user-defined identifiers in CSS.
4251-
42524283 < p > Using a commonly named value allows authors to use a single style rule
42534284 to cover a set of fonts for which the underlying selector is different for
42544285 each font. If either font in the example below is found, a circled number
@@ -5598,6 +5629,8 @@ <h3 class=no-num id=recent-changes> Changes from the <a
55985629
55995630 < li > Added conformance section
56005631
5632+ < li > Added CORS cross-origin request algorithm parameters
5633+
56015634 < li > Minor editorial tweaks hither and thither
56025635 </ ul >
56035636
@@ -6128,7 +6161,7 @@ <h2 class=no-num id=index>Index</h2>
61286161 of "> < strong > #</ strong > </ a >
61296162
61306163 < li > default face, < a href ="#default-face " title ="default
6131- face "> < strong > 5.1 </ strong > </ a >
6164+ face "> < strong > 5.2 </ strong > </ a >
61326165
61336166 < li > diagonal-fractions, < a href ="#diagonal-fractions "
61346167 title =diagonal-fractions > < strong > 6.7</ strong > </ a >
0 commit comments