Skip to content

Commit 602ded3

Browse files
committed
[css-font-loading] Specify that changing @font-face/src must create a new FontFace.
1 parent 3c590ef commit 602ded3

File tree

2 files changed

+31
-19
lines changed

2 files changed

+31
-19
lines changed

css-font-loading/Overview.bs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Editor: Tab Atkins Jr., Google, http://xanthir.com/contact/
1212
Former Editor: John Daggett, Mozilla, jdaggett@mozilla.com
1313
Abstract: This CSS module describes events and interfaces used for dynamically loading font resources.
1414
Link Defaults: css-fonts-3 (descriptor) src, dom-core-ls (interface) event
15-
Ignored Terms: domstring, eventinit, cssfontfacerule, eventtarget, workerglobalscope, document, canvasproxy, iterator, unsigned long, set
15+
Ignored Terms: domstring, eventinit, cssfontfacerule, eventtarget, workerglobalscope, document, canvasproxy, iterator, unsigned long, set, src
1616
</pre>
1717

1818
<h2 id="introduction">
@@ -370,6 +370,12 @@ Interaction with CSS’s ''@font-face'' Rule</h3>
370370
The connection is not restorable by any means
371371
(but adding the ''@font-face'' back to the stylesheet will create a brand new {{FontFace}} object which <em>is</em> <a>CSS-connected</a>).
372372

373+
If a ''@font-face'' rule has its '@font-face/src' descriptor changed to a new value,
374+
the original connected {{FontFace}} object must stop being <a>CSS-connected</a>.
375+
A new {{FontFace}} reflecting its new '@font-face/src' must be created
376+
and <a>CSS-connected</a> to the ''@font-face''.
377+
(This will also remove the old and add the new {{FontFaces}} objects from any <a>font sources</a> they appear in.)
378+
373379
<!--
374380
████████ ███████ ██ ██ ████████ ████████ ███ ██████ ████████ ██████ ████████ ████████
375381
██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██

css-font-loading/Overview.html

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
</p>
5555
<h1 class="p-name no-ref" id=title>CSS Font Loading Module Level 3</h1>
5656
<h2 class="no-num no-toc no-ref heading settled" id=subtitle><span class=content>Editor’s Draft,
57-
<span class=dt-updated><span class=value-title title=20140929>29 September 2014</span></span></span></h2>
57+
<span class=dt-updated><span class=value-title title=20141002>2 October 2014</span></span></span></h2>
5858
<div data-fill-with=spec-metadata><dl><dt>This version:<dd><a class=u-url href=http://dev.w3.org/csswg/css-font-loading/>http://dev.w3.org/csswg/css-font-loading/</a><dt>Latest version:<dd><a href=http://w3.org/TR/css-font-loading/>http://w3.org/TR/css-font-loading/</a><dt>Previous Versions:<dd><a href=http://www.w3.org/TR/2014/WD-css-font-loading-3-20140522/ rel=previous>http://www.w3.org/TR/2014/WD-css-font-loading-3-20140522/</a><dt>Feedback:<dd><span><a href="mailto:www-style@w3.org?subject=[css-font-loading] feedback">www-style@w3.org</a> with subject line “<kbd>[css-font-loading] <var>… message topic …</var></kbd>” (<a href=http://lists.w3.org/Archives/Public/www-style/ rel=discussion>archives</a>)</span><dt>Editor:<dd><div class="p-author h-card vcard"><a class="p-name fn u-url url" href=http://xanthir.com/contact/>Tab Atkins Jr.</a> (<span class="p-org org">Google</span>)</div><dt>Former Editor:<dd><div class="p-author h-card vcard"><a class="p-name fn u-email email" href=mailto:jdaggett@mozilla.com>John Daggett</a> (<span class="p-org org">Mozilla</span>)</div></dl></div>
5959
<div data-fill-with=warning></div>
6060
<p class=copyright data-fill-with=copyright><a href=http://www.w3.org/Consortium/Legal/ipr-notice#Copyright>Copyright</a> © 2014 <a href=http://www.w3.org/><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href=http://www.csail.mit.edu/><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href=http://www.ercim.eu/><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href=http://www.keio.ac.jp/>Keio</a>, <a href=http://ev.buaa.edu.cn/>Beihang</a>), All Rights Reserved. W3C <a href=http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer>liability</a>, <a href=http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks>trademark</a> and <a href=http://www.w3.org/Consortium/Legal/copyright-documents>document use</a> rules apply.
@@ -130,7 +130,7 @@ <h2 class="no-num no-toc no-ref heading settled" id=contents><span class=content
130130

131131

132132

133-
<h2 class="heading settled" data-level=1 id=introduction><span class=secno>1 </span><span class=content>
133+
<h2 class="heading settled" data-level=1 id=introduction><span class=secno>1. </span><span class=content>
134134
Introduction</span><a class=self-link href=#introduction></a></h2>
135135

136136
<p>CSS allows authors to load custom fonts from the web via the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> rule.
@@ -157,22 +157,22 @@ <h2 class="heading settled" data-level=1 id=introduction><span class=secno>1 </s
157157
Is this a good intention?
158158
If so, how should I indicate this in the spec?</p>
159159

160-
<h3 class="heading settled" data-level=1.1 id=values><span class=secno>1.1 </span><span class=content>
160+
<h3 class="heading settled" data-level=1.1 id=values><span class=secno>1.1. </span><span class=content>
161161
Values</span><a class=self-link href=#values></a></h3>
162162

163163
<p>This specification uses <dfn class=idl-code data-dfn-type=interface data-export="" id=dom-promise title=Promise>Promises<a class=self-link href=#dom-promise></a></dfn>,
164164
which are defined in <a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts">ECMAScript 6</a>.
165165
HTML5Rocks has some <a href=http://www.html5rocks.com/en/tutorials/es6/promises/>good tutorial material introducing Promises</a>.</p>
166166

167-
<h3 class="heading settled" data-level=1.2 id=task-source><span class=secno>1.2 </span><span class=content>
167+
<h3 class="heading settled" data-level=1.2 id=task-source><span class=secno>1.2. </span><span class=content>
168168
Task Sources</span><a class=self-link href=#task-source></a></h3>
169169

170170
<p>Whenever this specification queues a task,
171171
it queues it onto the "font loading" task source.</p>
172172

173173

174174

175-
<h2 class="heading settled" data-level=2 id=fontface-interface><span class=secno>2 </span><span class=content>
175+
<h2 class="heading settled" data-level=2 id=fontface-interface><span class=secno>2. </span><span class=content>
176176
The <code>FontFace</code> Interface</span><a class=self-link href=#fontface-interface></a></h2>
177177

178178
<p>The <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> interface represents a single usable font face.
@@ -282,7 +282,7 @@ <h2 class="heading settled" data-level=2 id=fontface-interface><span class=secno
282282

283283

284284

285-
<h3 class="heading settled" data-level=2.1 id=font-face-constructor><span class=secno>2.1 </span><span class=content>
285+
<h3 class="heading settled" data-level=2.1 id=font-face-constructor><span class=secno>2.1. </span><span class=content>
286286
The Constructor</span><a class=self-link href=#font-face-constructor></a></h3>
287287

288288
<p>A <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> can be constructed either
@@ -363,7 +363,7 @@ <h3 class="heading settled" data-level=2.1 id=font-face-constructor><span class=
363363

364364

365365

366-
<h3 class="heading settled" data-level=2.2 id=font-face-load><span class=secno>2.2 </span><span class=content>
366+
<h3 class="heading settled" data-level=2.2 id=font-face-load><span class=secno>2.2. </span><span class=content>
367367
The <code>load()</code> method</span><a class=self-link href=#font-face-load></a></h3>
368368

369369
<p>The <code class=idl><a data-link-for=FontFace data-link-type=idl href=#dom-fontface-load title=load()>load()</a></code> method of <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code>
@@ -431,7 +431,7 @@ <h3 class="heading settled" data-level=2.2 id=font-face-load><span class=secno>2
431431
(perhaps on a different page entirely!)
432432
has been loaded.</p>
433433

434-
<h3 class="heading settled" data-level=2.3 id=font-face-css-connection><span class=secno>2.3 </span><span class=content>
434+
<h3 class="heading settled" data-level=2.3 id=font-face-css-connection><span class=secno>2.3. </span><span class=content>
435435
Interaction with CSS’s <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> Rule</span><a class=self-link href=#font-face-css-connection></a></h3>
436436

437437
<p>A CSS <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> rule automatically defines a corresponding <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> object,
@@ -455,9 +455,15 @@ <h3 class="heading settled" data-level=2.3 id=font-face-css-connection><span cla
455455
The connection is not restorable by any means
456456
(but adding the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> back to the stylesheet will create a brand new <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> object which <em>is</em> <a data-link-type=dfn href=#css-connected title=CSS-connected>CSS-connected</a>).</p>
457457

458+
<p>If a <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> rule has its <a class=property data-link-for=@font-face data-link-type=propdesc title=src>src</a> descriptor changed to a new value,
459+
the original connected <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> object must stop being <a data-link-type=dfn href=#css-connected title=CSS-connected>CSS-connected</a>.
460+
A new <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> reflecting its new <a class=property data-link-for=@font-face data-link-type=propdesc title=src>src</a> must be created
461+
and <a data-link-type=dfn href=#css-connected title=CSS-connected>CSS-connected</a> to the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a>.
462+
(This will also remove the old and add the new <code class=idl><a data-link-type=idl href=#dom-fontfacesetloadeventinit-fontfaces title=FontFaces>FontFaces</a></code> objects from any <a data-link-type=dfn href=#font-source title="font sources">font sources</a> they appear in.)</p>
458463

459464

460-
<h2 class="heading settled" data-level=3 id=FontFaceSet-interface><span class=secno>3 </span><span class=content>
465+
466+
<h2 class="heading settled" data-level=3 id=FontFaceSet-interface><span class=secno>3. </span><span class=content>
461467
The <code>FontFaceSet</code> Interface</span><a class=self-link href=#FontFaceSet-interface></a></h2>
462468

463469
<pre class=idl>dictionary <dfn class=idl-code data-dfn-type=dictionary data-export="" data-global-name="" id=dictdef-fontfacesetloadeventinit>FontFaceSetLoadEventInit<a class=self-link href=#dictdef-fontfacesetloadeventinit></a></dfn> : <a data-link-type=idl href=http://dom.spec.whatwg.org/#eventinit title=EventInit>EventInit</a> {
@@ -597,7 +603,7 @@ <h2 class="heading settled" data-level=3 id=FontFaceSet-interface><span class=se
597603

598604

599605

600-
<h3 class="heading settled" data-level=3.1 id=FontFaceSet-events><span class=secno>3.1 </span><span class=content>
606+
<h3 class="heading settled" data-level=3.1 id=FontFaceSet-events><span class=secno>3.1. </span><span class=content>
601607
Events</span><a class=self-link href=#FontFaceSet-events></a></h3>
602608

603609
<p>Font load events make it easy to respond to the font-loading behavior of the entire document,
@@ -766,7 +772,7 @@ <h3 class="heading settled" data-level=3.1 id=FontFaceSet-events><span class=sec
766772

767773

768774

769-
<h3 class="heading settled" data-level=3.2 id=font-face-set-load><span class=secno>3.2 </span><span class=content>
775+
<h3 class="heading settled" data-level=3.2 id=font-face-set-load><span class=secno>3.2. </span><span class=content>
770776
The <code>load()</code> method</span><a class=self-link href=#font-face-set-load></a></h3>
771777

772778
<p>The {{FontFaceSet/load() method of <code class=idl><a data-link-type=idl href=#dom-fontfaceset title=FontFaceSet>FontFaceSet</a></code> will determine whether all fonts in the given font list
@@ -813,7 +819,7 @@ <h3 class="heading settled" data-level=3.2 id=font-face-set-load><span class=sec
813819

814820

815821

816-
<h3 class="heading settled" data-level=3.3 id=font-face-set-check><span class=secno>3.3 </span><span class=content>
822+
<h3 class="heading settled" data-level=3.3 id=font-face-set-check><span class=secno>3.3. </span><span class=content>
817823
The <code>check()</code> method</span><a class=self-link href=#font-face-set-check></a></h3>
818824

819825
<p>The <code class=idl><a data-link-type=idl href=#dom-fontfaceset-check title=check()>check()</a></code> method of <code class=idl><a data-link-type=idl href=#dom-fontfaceset title=FontFaceSet>FontFaceSet</a></code> will determine whether all fonts in the given font list
@@ -851,7 +857,7 @@ <h3 class="heading settled" data-level=3.3 id=font-face-set-check><span class=se
851857

852858

853859

854-
<h3 class="heading settled" data-level=3.4 id=font-face-set-ready><span class=secno>3.4 </span><span class=content>
860+
<h3 class="heading settled" data-level=3.4 id=font-face-set-ready><span class=secno>3.4. </span><span class=content>
855861
The <code>ready</code> attribute</span><a class=self-link href=#font-face-set-ready></a></h3>
856862

857863
<p>Because the number of fonts loaded depends on the how many fonts are used for a given piece of text,
@@ -880,7 +886,7 @@ <h3 class="heading settled" data-level=3.4 id=font-face-set-ready><span class=se
880886
never rejected,
881887
unlike the Promise returned by the <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> <code class=idl><a data-link-for=FontFace data-link-type=idl href=#dom-fontface-load title=load()>load()</a></code> method.</p>
882888

883-
<h3 class="heading settled" data-level=3.5 id=font-face-set-css><span class=secno>3.5 </span><span class=content>
889+
<h3 class="heading settled" data-level=3.5 id=font-face-set-css><span class=secno>3.5. </span><span class=content>
884890
Interaction with CSS Font Loading and Matching</span><a class=self-link href=#font-face-set-css></a></h3>
885891

886892
<p>When the font matching algorithm in <a data-biblio-type=informative data-link-type=biblio href=#biblio-css3-fonts title=CSS3-FONTS>[CSS3-FONTS]</a> is run automatically by the user-agent,
@@ -945,7 +951,7 @@ <h3 class="heading settled" data-level=3.5 id=font-face-set-css><span class=secn
945951

946952

947953

948-
<h2 class="heading settled" data-level=4 id=font-face-source><span class=secno>4 </span><span class=content>
954+
<h2 class="heading settled" data-level=4 id=font-face-source><span class=secno>4. </span><span class=content>
949955
The <code>FontFaceSource</code> interface</span><a class=self-link href=#font-face-source></a></h2>
950956

951957
<pre class=idl>[NoInterfaceObject]
@@ -965,7 +971,7 @@ <h2 class="heading settled" data-level=4 id=font-face-source><span class=secno>4
965971
<p>For any font-related operation that takes place within one of these contexts,
966972
the <code class=idl><a data-link-type=idl href=#dom-fontface title=FontFace>FontFace</a></code> objects within the <a data-link-type=dfn href=#font-source title="font source">font source</a> are its <dfn data-dfn-type=dfn data-noexport="" id=available-font-faces>available font faces<a class=self-link href=#available-font-faces></a></dfn>.</p>
967973

968-
<h3 class="heading settled" data-level=4.1 id=fontfacesource-workers><span class=secno>4.1 </span><span class=content>
974+
<h3 class="heading settled" data-level=4.1 id=fontfacesource-workers><span class=secno>4.1. </span><span class=content>
969975
Worker FontFaceSources</span><a class=self-link href=#fontfacesource-workers></a></h3>
970976

971977
<p>Within a Worker document, the <a data-link-type=dfn href=#font-source title="font source">font source</a> is initially empty.</p>
@@ -974,7 +980,7 @@ <h3 class="heading settled" data-level=4.1 id=fontfacesource-workers><span class
974980
which affects CSS font-matching within the worker
975981
(such as, for example, drawing text into a <code class=idl><a data-link-type=idl title=CanvasProxy>CanvasProxy</a></code>).</p>
976982

977-
<h3 class="heading settled" data-level=4.2 id=document-font-face-set><span class=secno>4.2 </span><span class=content>
983+
<h3 class="heading settled" data-level=4.2 id=document-font-face-set><span class=secno>4.2. </span><span class=content>
978984
Interaction with CSS’s <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-fonts-3/#at-font-face-rule title=@font-face>@font-face</a> Rule</span><a class=self-link href=#document-font-face-set></a></h3>
979985

980986
<p>The set entries for a document’s <a data-link-type=dfn href=#font-source title="font source">font source</a>
@@ -1001,7 +1007,7 @@ <h3 class="heading settled" data-level=4.2 id=document-font-face-set><span class
10011007

10021008

10031009

1004-
<h2 class="heading settled" data-level=5 id=font-load-event-examples><span class=secno>5 </span><span class=content>
1010+
<h2 class="heading settled" data-level=5 id=font-load-event-examples><span class=secno>5. </span><span class=content>
10051011
API Examples</span><a class=self-link href=#font-load-event-examples></a></h2>
10061012

10071013
<div class=example>

0 commit comments

Comments
 (0)