@capsizecss/unpack
Version:
Unpack capsize font metrics from fonts
109 lines (73 loc) • 6.14 kB
Markdown
<img src="https://raw.githubusercontent.com/seek-oss/capsize/HEAD/images/capsize-header.png" alt="Capsize" title="Capsize" width="443px" />
<br/>
Unpack the capsize font metrics directly from a font file.
```bash
npm install @capsizecss/unpack
```
- [Usage](
- [fromBuffer](
- [fromBlob](
- [fromUrl](
- [fromFile](
- [Options](
- [postscriptName](
- [Font Metrics](
Takes a buffer and returns the resolved [font metrics](
```ts
import { fromBuffer } from '@capsizecss/unpack';
const metrics = await fromBuffer(buffer);
```
Takes a file blob and returns the resolved [font metrics](
```ts
import { fromBlob } from '@capsizecss/unpack';
const metrics = await fromBlob(file);
```
Takes a url string and returns the resolved [font metrics](
```ts
import { fromUrl } from '@capsizecss/unpack';
const metrics = await fromUrl(url);
```
Takes a file path string and returns the resolved [font metrics](
```ts
import { fromFile } from '@capsizecss/unpack/fs';
const metrics = await fromFile(filePath);
```
All of the above APIs accept an optional second parameter with the following options:
Capsize can extract the metrics for a single font from a TrueType Collection (TTC) file by providing the `postscriptName`.
```ts
import { fromFile } from '@capsizecss/unpack';
const metrics = await fromFile('AvenirNext.ttc', {
postscriptName: 'AvenirNext-Bold',
});
```
The font metrics object returned contains the following properties:
| Property | Type | Description |
| -------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| familyName | string | The font’s family name as authored by font creator |
| fullName | string | The font’s full name as authored by font creator |
| postscriptName | string | The font’s unique PostScript name as authored by font creator |
| category | string | The style of the font: serif, sans-serif, monospace, display, or handwriting. |
| capHeight | number | The height of capital letters above the baseline |
| ascent | number | The height of the ascenders above baseline |
| descent | number | The descent of the descenders below baseline |
| lineGap | number | The amount of space included between lines |
| unitsPerEm | number | The size of the font’s internal coordinate grid |
| xHeight | number | The height of the main body of lower case letters above baseline |
| xWidthAvg | number | The average width of character glyphs in the font for the selected unicode subset. Calculated [based on character frequencies in written text], falling back to the built in `xAvgCharWidth` from the OS/2 table. |
| subsets | {<br/>[subset]: { xWidthAvg: number }<br/>} | A lookup of the `xWidthAvg` metric by subset (see [supported subsets]) |
[based on character frequencies in written text]: ../metrics/README.md#how-xwidthavg-is-calculated
[supported subsets]: ../metrics/README.md#subsets
## Thanks
- [Devon Govett](https://github.com/devongovett) for creating [Fontkit](https://github.com/foliojs/fontkit). A [fork of Fontkit](https://github.com/delucis/fontkitten) does all the heavy lifting of extracting the font metrics under the covers.
- [SEEK](https://www.seek.com.au) for giving us the space to do interesting work.
## License
MIT.