Search by

alto / font

simonandre

Font file loading and discovery, font data inspection, format conversion, WOFF2 compression, and Unicode subsetting.

Package info

github.com/altophp/font

Homepage

Documentation

pkg:composer/alto/font

Fund package maintenance!

smnandre

Statistics

Installs: 168

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v0.8.0 2026-08-10 04:51 UTC

This package is auto-updated.

Last update: 2026-09-20 23:46:11 UTC


README

Inspect, convert, and subset font files from PHP. Read a font's family and style, find a matching face, or keep only the characters your application uses.

  PHP Version   CI   Packagist   License   GitHub Sponsors

Installation

composer require alto/font

Requires PHP 8.4+, Iconv, and Zlib. Reading WOFF2 also needs the Brotli PHP extension or executable; writing WOFF2 requires an explicit compressor. TTF and WOFF examples need no Brotli dependency.

Read a font

Save this as inspect.php, place your font at fonts/Inter-Regular.ttf, and run php inspect.php:

<?php

require __DIR__.'/vendor/autoload.php';

use Alto\Font\Font;

$font = Font::fromFile(__DIR__.'/fonts/Inter-Regular.ttf');

printf("%s %s\n", $font->metadata()->family, $font->metadata()->subfamily);

For Inter Regular, this prints Inter Regular. See Getting started to check which characters it contains.

Create a smaller font for your text

Create an output directory first. Run this as a separate script beside your vendor directory. The destination must not already exist.

<?php

require __DIR__.'/vendor/autoload.php';

use Alto\Font\Font;
use Alto\Font\Subset\SubsetOptions;
use Alto\Font\Subset\UnicodeSet;
use Alto\Font\Writer\WoffWriter;

$font = Font::fromFile(__DIR__.'/fonts/Inter-Regular.ttf');
$result = $font->subset(new SubsetOptions(
    UnicodeSet::fromText('ALTO Font 0123456789'),
));

$destination = __DIR__.'/output/inter-subset.woff';
new WoffWriter()->write($result->font, $destination);

printf("Saved inter-subset.woff (%d bytes)\n", filesize($destination));

This creates a WOFF file containing the requested characters available in the source, plus required glyph dependencies. The original file is unchanged. Use the full text your application needs: later text may contain characters excluded from this subset. Read Create a subset for missing-character checks, output sizes, and options.

Source and subset character grids for Inter, with WOFF sizes measured in the same format.

The illustrated subset uses the text above and default options. The exact size depends on the source font and the selected characters.

Choose a task

I want to... Guide
Understand files, faces, characters, and glyphs Font concepts
Read a font's family, style, or license fields Read metadata
Check whether a font contains my characters Getting started
Inspect files, metadata, glyphs, and variations Inspect fonts
Convert a font to TTF, WOFF, or WOFF2 Convert a font
Reduce a font to the text I use Create a subset
Find a font by family, weight, and style Find a font
Inspect variable-font axes and glyph measurements Variable fonts
Check supported containers and outline formats Font formats

The documentation index lists every main guide.

Supported fonts

ALTO Font supports TrueType outlines in TTF/OpenType, WOFF, and WOFF2 files, and individual faces from TTC/OTC collections. CFF/CFF2 outlines, color glyphs, and WOFF2 collections are unsupported. See Formats for operation-specific limits.

Variable fonts can retain their axes during conversion and subsetting. Exporting a fixed weight from a variable font is not supported. ALTO Font reads and transforms font data; text shaping and rendering are handled by the application or browser using the output.

Contributing

Contributions of all kinds are welcome. Visit the project on GitHub to report a bug, suggest a feature, or open a pull request.

Before submitting code, run:

# Runs PHP CS Fixer, PHPStan, and PHPUnit
composer qa

Changes to public behavior should include tests and documentation.

Support

ALTO Font is open source and independently maintained by Simon André. If it is useful to your work, you can support its continued development through GitHub Sponsors.

Sharing the package or starring it on GitHub also helps.

License

ALTO Font is released by ALTO PHP under the MIT License.