- From: Adam Twardoch (List) <list.adam@twardoch.com>
- Date: Fri, 18 Oct 2013 18:52:37 +0200
- To: Chris Lilley <chris@w3.org>, public-webfonts-wg@w3.org
On 13-10-18 18:12, Chris Lilley wrote: >> Of course there's some caveats: since TTC is "one file" which stores >> several "subfonts", I believe @font-face might need to be modified >> somehow so that it allows selection of the subfonts. > Rather than modify @font-face, I suspect the correct approach would be > to define a fragment identifier syntax (the part of a url after the #) > that points into a TTC. I agree. We already use the fragment identified syntax for SVG fonts as used with @font-face: @font-face { font-family: 'MyFont Web'; src: url("MyFontWeb.woff") format("woff"), url("MyFontWeb.otf") format("opentype"), url("MyFontWeb.svg#myfont") format("svg"); } And in the May 2012 discussion on the CSS3 Fonts list, John Daggett proposed a similar syntax for TTC: @font-face { font-family: 'MyFont Web'; src: url("MyFontWeb.ttc#1"); /* use the first font in the set of fonts */ } > So a TTC is a single file containing multiple sfnt streams. What is > the official defining document? I just realized that TTC (called "TrueType Collections") is part of the OpenType font format spec, and the structure is documented as part of the main "The OpenType Font File" document: http://www.microsoft.com/typography/otspec/otff.htm "A TrueType Collection (TTC) is a means of delivering multiple OpenType fonts in a single file structure. TrueType Collections are most useful when the fonts to be delivered together share many glyphs in common. (...) The CFF rasterizer does not currently support TTC files." In the May 2012 thread, Vlad wrote: "In addition, TTC is a normative part of the OpenType specification, and there is an ongoing discussion about extending TTC concept to support CFF OT fonts (with OTC as a name for it). In fact, there is nothing in the current spec that would prohibit it, it's just the name itself ("TrueType Collection") implies that its use may be limited to TrueType-flavored fonts only. So, in light of these discussions taking place, it seems much more reasonable to extend the CSS to support TTC rather than restricting its use." The Working Draft of ISO/IEC 14496-22 3rd edition (Open Font Format, OFF) has been published on August 3rd, 2013: http://mpeg.chiariglione.org/standards/mpeg-4/open-font-format http://mpeg.chiariglione.org/sites/default/files/files/standards/parts/docs/w13673-v2-w13673.zip (The second link is a zipped Word document). Section 4.6 of the OFF 3rd ed WD spec states: "4.6 Font collections A Font Collection (either TTC or OTC, formerly known as TrueType Collection) is a means of delivering multiple OFF fonts in a single file structure. Font collections containing either TrueType or CFF outlines (TTC or OTC) are most useful when the fonts to be delivered together share many glyphs in common. (...) NOTE Even though the original definition of TrueType Collection (as part of the TrueType specification) was intended to be used with fonts containing TrueType outlines, this is no longer the case. TTC files may contain either TrueType or CFF outlines, regardless of whether or not fonts have layout tables present. For backward compatibility and simplicity, the description of the font collection file structure is using the term TrueType Collection though it should be understood that it is used for both CFF and TrueType outlines." So this is, indeed, a well-established and well-documented structure, and now works with both CFF and TT outlines. There is a simple Perl-based set of scripts for splitting and merging TTC: http://sourceforge.net/projects/ttf2ttc/ They're a bit old, and possibly don't work well with OTC files (with the CFF table). But they show that they're tiny and probably rather simple to re-implement in any other tool. The spirit of the May 2012 discussion was that it would be useful to support those. I guess 17 months ago was just not the right time to discuss this as there were other pressing matters at hand. But I believe now is the time. Especially in the wake of the color font ideas, because there can be many cool things that could be done with TTC. For example, a TTC could contain one "glyf" table which acts as one large container for glyphs, but there could be several subfonts which could have their own cmap tables (thus exposing different "encoded" portions of the same glyph set), could include a roman and an italic font in the same file, exposing the roman through one cmap and italic through another, but then allowing for example kerning between the roman and the italic glyphs (say an italic "f" followed by an upright ")"), or, for example, providing one font file with several subfonts where one utilizes the Microsoft COLR/CPAL table to perform automatic layering, but the other subfonts encoding the appropriate "layer" glyph sets directly (or even have different COLR tables), so the user could choose whether to get a layered font consisting of, say, one layer or two layers, or three layers etc. Further, the same mechanism could be used to provide font collections where the "glyf" table would be shared but each subfont would come with a different GSUB table implementing somewhat different OpenType Layout behavior. All kinds of clever stuff can be done using TTC. Best, Adam -- May success attend your efforts, -- Adam Twardoch (Remove "list." from e-mail address to contact me directly.)
Received on Friday, 18 October 2013 16:53:07 UTC