Collections
A TrueType or OpenType collection (.ttc, .otc) stores several faces in one
file and lets them share tables, typically the glyph data of a CJK family.
Its signature is ttcf, and the package reports it as
FontFormat::TrueTypeCollection.
Reading
Select a zero-based face when loading:
<?php
use Alto\Font\Font;
$font = Font::fromFile(__DIR__.'/fonts/Collection.ttc', faceIndex: 1);
echo $font->face()->faceIndex;
echo $font->face()->faceCount;A collection that declares no faces, or an index outside 0 to
faceCount - 1, raises InvalidFontException. A collection nested inside a
collection raises UnsupportedFontException, and so does a selected face with
CFF outlines. Standalone files accept only index zero.
Finding searches the first face of each collection;
load another face explicitly with faceIndex.
Writing
A selected face is always written as a standalone font with a rebuilt table directory and checksums; the package does not write collections:
<?php
use Alto\Font\Font;
use Alto\Font\Writer\SfntWriter;
$font = Font::fromFile(__DIR__.'/fonts/Collection.ttc', faceIndex: 1);
new SfntWriter()->write($font, __DIR__.'/output/selected-face.ttf');Subsetting
Subsetting applies to the selected face only, and the result is a standalone font; see Subsetting.
Requirements and limits
- A TTC or OTC with
glyffaces: read one face, write it standalone, subset it. - A WOFF2 collection is rejected explicitly; use the TTC or OTC source.
- Writing a collection is not available.