Capsize
# @capsizecss/unpack Unpack the capsize font metrics directly from a font file. ```bash npm install @capsizecss/unpack ``` - [Usage](#usage) - [fromBuffer](#frombuffer) - [fromBlob](#fromblob) - [fromUrl](#fromurl) - [fromFile](#fromfile) - [Options](#options) - [postscriptName](#postscriptname) - [Font Metrics](#font-metrics) ## Usage ### `fromBuffer` Takes a buffer and returns the resolved [font metrics](#font-metrics). ```ts import { fromBuffer } from '@capsizecss/unpack'; const metrics = await fromBuffer(buffer); ``` ### `fromBlob` Takes a file blob and returns the resolved [font metrics](#font-metrics). ```ts import { fromBlob } from '@capsizecss/unpack'; const metrics = await fromBlob(file); ``` ### `fromUrl` Takes a url string and returns the resolved [font metrics](#font-metrics). ```ts import { fromUrl } from '@capsizecss/unpack'; const metrics = await fromUrl(url); ``` ### `fromFile` Takes a file path string and returns the resolved [font metrics](#font-metrics). ```ts import { fromFile } from '@capsizecss/unpack'; const metrics = await fromFile(filePath); ``` ## Options All of the above APIs accept an optional second parameter with the following options: #### `postscriptName` 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', }); ``` ## Font metrics 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 | {
[subset]: { xWidthAvg: number }
} | 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), which 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.