summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8081.txt
blob: be904d0b903a652b2544ec7221ae2e7b03639232 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
Internet Engineering Task Force (IETF)                         C. Lilley
Request for Comments: 8081                                           W3C
Category: Standards Track                                  February 2017
ISSN: 2070-1721


                    The "font" Top-Level Media Type

Abstract

   This memo serves to register and document the "font" top-level media
   type, under which 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 in use, and currently registered
   under the "application" tree by their separate registrations.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc8081.

Copyright Notice

   Copyright (c) 2017 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
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.






Lilley                       Standards Track                    [Page 1]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Background and Justification  . . . . . . . . . . . . . . . .   3
   3.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
     4.1.  Definition and Encoding . . . . . . . . . . . . . . . . .   5
     4.2.  Fragment Identifiers for Font Collections . . . . . . . .   5
     4.3.  Registration Procedure  . . . . . . . . . . . . . . . . .   6
     4.4.  Subtype Registrations . . . . . . . . . . . . . . . . . .   6
       4.4.1.  Generic SFNT Font Type  . . . . . . . . . . . . . . .   6
       4.4.2.  TTF Font Type . . . . . . . . . . . . . . . . . . . .   9
       4.4.3.  OpenType Layout (OTF) Font Type . . . . . . . . . . .  10
       4.4.4.  Collection Font Type  . . . . . . . . . . . . . . . .  12
       4.4.5.  WOFF 1.0  . . . . . . . . . . . . . . . . . . . . . .  14
       4.4.6.  WOFF 2.0  . . . . . . . . . . . . . . . . . . . . . .  15
   5.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  16
     5.1.  Normative References  . . . . . . . . . . . . . . . . . .  16
     5.2.  Informative References  . . . . . . . . . . . . . . . . .  17
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  18

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.

   Over time, a number of standard formats for recording font
   descriptions have evolved.  Internet Media Types [RFC6838] are used
   to label content carried over Internet protocols.  This document
   defines a new top-level type "font" according to Section 4.2.7 of
   [RFC6838].  This top-level type indicates that the content specifies
   font data.  Under this top-level type, different representation
   formats of fonts may be registered.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].






Lilley                       Standards Track                    [Page 2]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


2.  Background and Justification

   Historically, there has not been a registration of formats for fonts.
   More recently, there have been several representation formats
   registered as media subtypes under the "application" top-level type
   (for example, "application/font-woff").  However, with the rapid
   adoption of web fonts (based on the data from HTTP Archive
   [HTTP-Archive-Trends] 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 [Font-Media-Type-Analysis] 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
   nonexistent (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 unregisterable types
   such as "application/x-font-ttf".

   Contrary to the expectations of the W3C WebFonts WG, which developed
   Web Open Font Format (WOFF), the officially defined media types such
   as "application/font-woff" and "application/font-sfnt" see a very
   limited use -- their adoption rates trail far behind as the actual
   use of web fonts continues to increase.  The members of the W3C
   WebFonts WG concluded that the use of the "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 parameters, 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 decided [WG-tlt] 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 conclude that it is the presence of
   simple and highly intuitive media types for images that caused their
   widespread adoption, where the correct usage of existing media types
   reaches over 97% for all subtypes in the "image" tree.  The WG
   considers that, keeping in mind 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 media types for fonts.




Lilley                       Standards Track                    [Page 3]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


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.  In particular, the hinting instructions for TrueType glyphs
   represent executable code that has the potential to be maliciously
   constructed (for example, intended to hang the interpreter).  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 font formats (TrueType [truetype-wiki], OpenType and OFF
   [opentype-wiki], SIL Graphite, WOFF, etc.) 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 an upward-compatible 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.

   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 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 that most (if not all)
   interpreters cannot be completely protected from malicious fonts
   without undue performance penalties.

   Widespread use of fonts as necessary components of visual content
   presentation warrants that 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




Lilley                       Standards Track                    [Page 4]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


   neither privacy nor confidentiality protection internally; if needed,
   such protection should be provided externally.

4.  IANA Considerations

   This specification registers a new top-level type, "font", in the
   standards tree, adds it as an alternative value of "Type Name" in the
   media types registration form [Media-Type-Registration], and
   registers several subtypes for it.

4.1.  Definition and Encoding

   The "font" as the primary media content type indicates that the
   content identified by it requires a certain graphic subsystem such as
   a font rendering engine (and, in some cases, a text layout and a
   shaping engine) to process it as font data, which in turn may require
   a 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 name the specific font formats.
   Unrecognized subtypes of "font" should be treated as "application/
   octet-stream".  Implementations may pass unrecognized subtypes to a
   common font-handling system, if such a system is available.

4.2.  Fragment Identifiers for Font Collections

   Fragment identifiers for font collections identify one font in the
   collection by the PostScript name (name ID=6) [ISO.14496-22.2015].
   This is a string, no longer than 63 characters and restricted to the
   printable ASCII subset, codes 33 ? 126, except for the 10 characters
   '[', ']', '(', ')', '{', '}', '<', '>', '/', '%', which are forbidden
   by [ISO.14496-22.2015].

   In addition, the following 6 characters could occur in the PostScript
   name but are forbidden in fragments by [RFC3986], and thus must be
   escaped: '"', '#', '\', '^', '`', '|'.

   If (following un-escaping) this string matches one of the PostScript
   names in the name table, that font is selected.  For example, "#Foo-
   Bold" refers to the font with PostScript name "Foo-Bold" and
   "#Caret%5Estick" refers to the font with PostScript name
   "Caret^stick".  If the name does not match, or if a fragment is not
   specified, the first font in the collection is matched.  Note that
   the order of fonts in collections may change as the font is revised,
   so relying on a particular font in a collection always being first is
   unwise.




Lilley                       Standards Track                    [Page 5]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


4.3.  Registration Procedure

   New font formats should be registered using the online form
   [Media-Type-Registration].  [RFC6838] should be consulted on
   registration procedures.  In particular, the font specification
   should preferably be freely available.  If the font format can
   contain multiple fonts, a fragment identifier syntax should also be
   defined.

   Note that new parameter sub-values may be defined in the future.  If
   an implementation does not recognize a sub-value in the comma-
   separated list, it should ignore the sub-value and continue
   processing the other sub-values in the list.

4.4.  Subtype Registrations

   In this section, the initial entries under the top-level 'font' media
   type are specified.  They also serve as examples for future
   registrations.

   For each subtype, an @font-face format identifier is listed.  This is
   for use with the @font-face src descriptor, defined by the Cascading
   Style Sheets Level 3 (CSS3) Fonts specification
   [W3C.CR-css-fonts-3-20131003].  That specification is normative; the
   identifiers here are informative.

4.4.1.  Generic SFNT Font Type

   Type name:  font

   Subtype name:  sfnt

   Required parameters:  None

   Optional parameters:

      1) Name: outlines

         Values: a comma-separated subset of True Type Font (TTF),
         Compact Font Format (CFF), and SVG

         This parameter can be used to specify the type of outlines
         provided by the font.  The value "TTF" shall be used when a
         font resource contains glyph outlines in TrueType format, the
         value "CFF" shall be used to identify fonts containing
         PostScript/CFF outlines [cff-wiki], and the value SVG
         [svg-wiki] shall be used to identify fonts that include SVG
         outlines.  TTF, CFF, or SVG outlines can be present in various



Lilley                       Standards Track                    [Page 6]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


         combinations in the same font file; therefore, this optional
         parameter is a list containing one or more items, separated by
         commas.  Order in the list is not significant.

      2) Name: layout

         Values: a comma-separated subset of OTL, Apple Advanced
         Typography (AAT), and SIL

         This parameter identifies the type of implemented support for
         advanced text layout features.  The predefined values "OTL",
         "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 provided by the
         same font file; therefore, this optional parameter is a list
         containing one or more items, separated by commas.  Order in
         the list is not significant.

   Encoding considerations:  Binary

   Interoperability considerations:  As it was noted in the first
      paragraph of the Security Considerations section, a single font
      file can contain encoding of the same glyphs using several
      different representations, e.g., both TrueType and 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 only an unsupported glyph data
      format would be futile.  Therefore, it is 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.  Similarly,
      another optional parameter identifies the type of text shaping and
      layout mechanism that is provided by a font.

   Published specification:  ISO/IEC 14496-22 "Open Font Format" (OFF)
      specification [ISO.14496-22.2015] being developed by ISO/IEC SC29/
      WG11.

   Applications that use this media type:  All applications that are
      able to create, edit, or display textual media content.

      Note that "font/sfnt" is an abstract type from which the (widely
      used in practice) "font/ttf" and "font/otf" types are conceptually
      derived.  Use of "font/sfnt" is likely to be rare in practice, and
      might be confined to:

         Uncommon combinations such as "font/sfnt; layout=sil" that do
         not have a shorter type



Lilley                       Standards Track                    [Page 7]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


         Cases where a new parameter value is registered

         Test cases, experimentation, etc.

   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 the 'sfnt' version number.

      File extension(s):  Font file extensions used for OFF / OpenType
         fonts: .ttf and .otf

         Typically, the .ttf extension is only used for fonts containing
         TrueType outlines, whereas the .otf extension can be used for
         any OpenType/OFF font, and either can be used with the TrueType
         or CFF outlines.

      Macintosh file type code(s):  (no code specified)

      Macintosh Universal Type Identifier code:  "public.font"

      @font-face Format:  None

      Fragment Identifiers:  None

      Deprecated Alias:  The existing registration "application/font-
         sfnt" is deprecated in favor of "font/sfnt".

   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                       Standards Track                    [Page 8]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


4.4.2.  TTF Font Type

   Type name:  font

   Subtype name:  ttf

   Required parameters:  None

   Optional parameters:

      Name: layout

      Values: a comma-separated subset of OTL, AAT, and SIL

         This parameter identifies the type of support mechanism for
         advanced text layout features.  The predefined values "OTL",
         "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 provided by the
         same font file; therefore, this optional parameter is a list
         containing one or more items, separated by commas.  Order in
         the list is not significant.

   Encoding considerations:  Binary

   Interoperability considerations:  As it was noted in the first
      paragraph of Section 3, a single font file can contain encoding of
      the same glyphs using several different representations, e.g.,
      both TrueType and 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 only an unsupported glyph data format would be futile.
      Therefore, it is 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.  Similarly, another optional
      parameter identifies the type of text shaping and layout mechanism
      that is provided by a font.

   Published specification:  ISO/IEC 14496-22 "Open Font Format" (OFF)
      specification [ISO.14496-22.2015] being developed by ISO/IEC SC29/
      WG11.

   Applications that use this media type:  All applications that are
      able to create, edit, or display textual media content.






Lilley                       Standards Track                    [Page 9]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


   Additional information:

      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 and .otf

         Typically, the .ttf extension is only used for fonts containing
         TrueType outlines, while the .otf extension may be used for any
         OpenType/OFF font, either with TrueType or CFF outlines.

      Macintosh file type code(s):  (no code specified)

      Macintosh Universal Type Identifier code:  "public.truetype-font"

      @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.

4.4.3.  OpenType Layout (OTF) Font Type

   Type name:  font

   Subtype name:  otf

   Required parameters:  None

   Optional parameters

      Name: outlines






Lilley                       Standards Track                   [Page 10]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


      Values: a comma-separated subset of TTF, CFF, and SVG

         This parameter can be used to specify the type of outlines
         provided by the font.  The value "TTF" shall be used when a
         font resource contains glyph outlines in TrueType format, the
         value "CFF" shall be used to identify fonts containing
         PostScript/CFF outlines, and the 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, this optional parameter is a list
         containing one or more items, separated by commas.  Order in
         the list is not significant.

   Encoding considerations:  Binary

   Interoperability considerations:  As it was noted in the first
      paragraph of the Security Considerations section, a single font
      file can contain encoding of the same glyphs using several
      different representations, e.g., both TrueType and 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 only unsupported glyph data format
      would be futile.  Therefore, it is 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.  Similarly, another
      optional parameter identifies the type of text shaping and layout
      mechanism that is provided by a font.

   Published specification:  ISO/IEC 14496-22 "Open Font Format" (OFF)
      specification [ISO.14496-22.2015] being developed by ISO/IEC SC29/
      WG11.

   Applications that use this media type:  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 outlines should use the
         tag 'OTTO' as the 'sfnt' version number.  There is no magic
         number for SVG outlines; these are always accompanied by either
         TrueType or CFF outlines, and thus use the corresponding magic
         number.




Lilley                       Standards Track                   [Page 11]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


      File extension(s):  Font file extensions used for OFF / OpenType
         fonts: .ttf and .otf

         Typically, the .ttf extension is only used for fonts containing
         TrueType outlines, while the .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)

      Macintosh Universal Type Identifier code:  "public.opentype-font"

      @font-face Format:  opentype

      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.

4.4.4.  Collection Font Type

   Type name:  font

   Subtype name:  collection

   Required parameters:  None

   Optional parameters

      Name: outlines

      Values: a comma-separated subset of TTF, CFF, and SVG

         This parameter can be used to specify the type of outlines
         provided by the font.  The value "TTF" shall be used when a
         font resource contains glyph outlines in TrueType format, the
         value "CFF" shall be used to identify fonts containing
         PostScript/CFF outlines, and the value SVG shall be used to
         identify fonts that include SVG outlines.  TTF, CFF, or SVG



Lilley                       Standards Track                   [Page 12]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


         outlines can be present in various combinations in the same
         font file; therefore, this optional parameter is a list
         containing one or more items, separated by commas.  Order in
         the list is not significant.

   Encoding considerations:  Binary

   Interoperability considerations:  As it was noted in the first
      paragraph of the Security Considerations section, a single font
      file can contain encoding of the same glyphs using several
      different representations, e.g., both TrueType and 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 only unsupported glyph data format
      would be futile.  Therefore, it is 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.  Similarly, another
      optional parameter identifies the type of text shaping and layout
      mechanism that is provided by a font.

   Published specification:  ISO/IEC 14496-22 "Open Font Format" (OFF)
      specification [ISO.14496-22.2015] being developed by ISO/IEC SC29/
      WG11.

   Applications that use this media type:  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 outlines should use the
         tag 'OTTO' as the 'sfnt' version number.  There is no magic
         number for SVG outlines; these are always accompanied by either
         TrueType or CFF outlines, and thus use the corresponding magic
         number.

      File extension(s):  Font file extensions used for OFF / TrueType
         and OpenType fonts: .ttc

      Macintosh file type code(s):  (no code specified)

      Macintosh Universal Type Identifier code:  "public.truetype-
         collection-font"




Lilley                       Standards Track                   [Page 13]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


      @font-face Format:  collection

      Fragment Identifiers:  See Section 4.2.

   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.

4.4.5.  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 updates the
      WOFF specification [W3C.REC-WOFF-20121213] 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 ('wOFF')

      File extension(s):  woff

      Macintosh file type code(s):  (no code specified)

      Macintosh Universal Type Identifier code:  "org.w3.woff"




Lilley                       Standards Track                   [Page 14]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


      @font-face Format:  woff

      Fragment Identifiers:  None

      Deprecated Alias:  The existing registration "application/font-
         woff" is deprecated in favor of "font/woff".

   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.

4.4.6.  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 and
      different @font-face formats, and they may be used in parallel.

   Published specification:  This media type registration is extracted
      from the WOFF 2.0 specification [W3C.CR-WOFF2-20150414] 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



Lilley                       Standards Track                   [Page 15]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


      Macintosh file type code(s):  (no code specified)

      Macintosh Universal Type Identifier code:  "org.w3.woff2"

      @font-face Format:  woff2

      Fragment Identifiers:  See Section 4.2.

   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.

5.  References

5.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, DOI 10.17487/RFC3986, January 2005,
              <http://www.rfc-editor.org/info/rfc3986>.

   [RFC6838]  Freed, N., Klensin, J., and T. Hansen, "Media Type
              Specifications and Registration Procedures", BCP 13,
              RFC 6838, DOI 10.17487/RFC6838, January 2013,
              <http://www.rfc-editor.org/info/rfc6838>.

   [W3C.CR-css-fonts-3-20131003]
              Daggett, J., "CSS Fonts Module Level 3", World Wide Web
              Consortium CR CR-css-fonts-3-20131003, October 2013,
              <http://www.w3.org/TR/2013/CR-css-fonts-3-20131003>.







Lilley                       Standards Track                   [Page 16]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


   [ISO.14496-22.2015]
              International Organization for Standardization, "Coding of
              audio-visual objects Part 22: Open Font Format",
              ISO Standard 14496-22, 10 2015,
              <http://standards.iso.org/ittf/PubliclyAvailableStandards/
              c066391_ISO_IEC_14496-22_2015.zip>.

   [W3C.REC-WOFF-20121213]
              Kew, J., Leming, T., and E. Blokland, "WOFF File Format
              1.0", World Wide Web Consortium Recommendation
              REC-WOFF-20121213, December 2012,
              <http://www.w3.org/TR/2012/REC-WOFF-20121213>.

   [W3C.CR-WOFF2-20150414]
              Levantovsky, V. and R. Levien, "WOFF File Format 2.0",
              World Wide Web Consortium WD CR-WOFF2-20150414, March
              2016, <https://www.w3.org/TR/2016/CR-WOFF2-20160315/>.

5.2.  Informative References

   [cff-wiki] Wikipedia, "Compact Font Format", November 2016,
              <https://en.wikipedia.org/w/
              index.php?title=PostScript_fonts&oldid=747740863>.

   [opentype-wiki]
              Wikipedia, "OpenType", February 2017,
              <https://en.wikipedia.org/w/
              index.php?title=OpenType&oldid=763528773>.

   [truetype-wiki]
              Wikipedia, "TrueType", January 2017,
              <https://en.wikipedia.org/w/
              index.php?title=TrueType&oldid=759367886>.

   [svg-wiki] Wikipedia, "Scalable Vector Graphics", February 2017,
              <https://en.wikipedia.org/w/
              index.php?title=Scalable_Vector_Graphics&oldid=763136508>.

   [HTTP-Archive-Trends]
              Kuetell, D., "HTTP Archive trend analysis", March 2015,
              <http://httparchive.org/trends.php?s=All&minlabel=Nov+15+2
              010&maxlabel=Feb+15+2015#perFonts>.

   [Font-Media-Type-Analysis]
              Kuetell, D., "Web Font Media Type (mime type) Analysis
              2015", 2015, <http://goo.gl/zbDhUN>.





Lilley                       Standards Track                   [Page 17]
^L
RFC 8081                The 'font' Top-Level Type          February 2017


   [WG-tlt]   W3C, "ACTION-164: Bring widely used top-level type to
              w3c-ietf liaison", 2015,
              <https://www.w3.org/Fonts/WG/track/actions/164>.

   [Media-Type-Registration]
              IANA, "Application for a Media Type",
              <http://www.iana.org/form/media-types>.

Author's Address

   Chris Lilley
   W3C
   2004 Route des Lucioles
   Sophia Antipolis  06902
   France

   Email: chris@w3.org


































Lilley                       Standards Track                   [Page 18]
^L