Font Object
This documentation for fontkit is created and provided by the Typogram team. It’s a third-party documentation intended to delve deeper into the fontkit API. For the most accurate information, refer to fontkit’s official documentation.
The Font object is central to Fontkit. It represents a font in your system or a font file.
Properties (Read-only)
font.postscriptName
:
font.postscriptName
:Description: The PostScript name of the font. This is a unique identifier, often used in CSS and other contexts.
Type: String
font.fullName
:
font.fullName
:Description: The full name of the font, typically including its weight or style.
Type: String
font.familyName
:
font.familyName
:Description: The name of the font family to which this font belongs.
Type: String
font.subfamilyName
:
font.subfamilyName
:Description: The specific style or weight of the font within its family (e.g., "Bold" or "Italic").
Type: String
font.copyright
:
font.copyright
:Description: The copyright statement associated with the font.
Type: String
font.version
:
font.version
:Description: The version string of the font.
Type: String
font.numGlyphs
:
font.numGlyphs
:Description: The total number of glyphs in the font.
Type: Number
font.characterSet
:
font.characterSet
:Description: A set of all Unicode characters covered by the font.
Type: Set of Numbers
font.availableFeatures
:
font.availableFeatures
:Description: A list of OpenType feature tags available in the font.
Type: Array of Strings
font.unitsPerEm
:
font.unitsPerEm
:Description: The number of font units per em. It's a foundational metric for a font, often set to values like 1000 or 2048.
Type: Number
font.ascent
:
font.ascent
:Description: The font's ascent, which is the distance from the baseline to the top of the font's bounding box.
Type: Number
font.descent
:
font.descent
:Description: The font's descent, which is the distance from the baseline to the bottom of the font's bounding box.
Type: Number
font.capHeight
:
font.capHeight
:Description: The height of capital letters from the baseline.
Type: Number
font.xHeight
:
font.xHeight
:Description: The height of lowercase letters, specifically the height of the letter 'x'.
Type: Number
font.lineGap
:
font.lineGap
:Description: The recommended line gap or spacing between lines of text for this font.
Type: Number
font.underlinePosition
:
font.underlinePosition
:Description: The position of the underline relative to the baseline.
Type: Number
font.underlineThickness
:
font.underlineThickness
:Description: The thickness of the underline.
Type: Number
font.italicAngle
:
font.italicAngle
:Description: The angle (in degrees) of the italic slant. Upright fonts have an italic angle of 0.
Type: Number
font.bbox
:
font.bbox
:Description: The font's bounding box, which encompasses all glyphs in the font. It's an object with
minX
,minY
,maxX
, andmaxY
properties.Type: Object
font.variationAxes
:
font.variationAxes
:Description: Information about variable font axes if the font is a variable font. Each axis has properties like
tag
,name
,min
,default
, andmax
.Type: Array of Objects
font.namedVariations
:
font.namedVariations
:Description: Named instances for variable fonts, such as predefined width or weight variations.
Type: Object
font._cmapProcessor
:
font._cmapProcessor
:Description: An internal processor for the font's character map. Typically used internally by Fontkit.
Type: Object
font._layoutEngine
:
font._layoutEngine
:Description: An internal engine for glyph layout. Typically used internally by Fontkit.
Type: Object
font._variationProcessor
:
font._variationProcessor
:Description: An internal processor for handling font variations. Typically used internally by Fontkit.
Type: Object
Other Properties
Basic properties:
.type
The type of the font, such as 'truetype', 'cff', etc.
.defaultLanguage
The default language for the font, used when retrieving names and other language-specific details.
.stream
The readable stream from which the font is being read. Useful for reading binary data directly from the font file.
.variationCoords
An object representing the coordinates for variable font instances. If the font is not variable, this property is null.
._directoryPos
(Internal) Position of the directory within the font stream. Typically used internally by Fontkit for navigation purposes.
._tables
(Internal) A cache of parsed tables. Used internally by Fontkit to store tables that have been parsed.
._glyphs
(Internal) A cache of parsed glyphs. Used internally by Fontkit to store glyphs that have been read from the font.
.directory
The font's directory table, which provides an index to the rest of the tables in the font.
Font tables as properties:
.GDEF
Glyph Definition Table: Contains glyph class definitions, ligature caret lists, and glyph attachment positioning.
.GPOS
Glyph Positioning Table: Contains information about positioning glyphs in complex scripts or ligature adjustments.
.GSUB
Glyph Substitution Table: Defines glyph substitutions, such as ligatures, contextual alternates, etc.
.OS/2
OS/2 and Windows Specific Table: Contains metrics, glyph index ranges, style flags, and other font metadata.
.cmap
Character to Glyph Index Mapping Table: Maps character codes to glyph indices.
.cvt
Control Value Table: Contains values used by the fpgm table and the glyf table for hinting.
.fpgm
Font Program: Contains hinting instructions for the font.
.gasp
Grid-fitting and Scan-conversion Procedure Table: Contains information for grid-fitting and anti-aliasing.
.glyf
Glyph Data Table: Contains the outlines of the glyphs in the font.
.head
Font Header Table: Contains global font information such as bounding box, version, etc.
.hhea
Horizontal Header Table: Contains horizontal metrics and settings.
.hmtx
Horizontal Metrics Table: Contains metrics for each glyph's horizontal layout.
.loca
Index to Location Table: Contains offsets to each glyph in the glyf
table.
.maxp
Maximum Profile Table: Contains the maximum values for various font-wide parameters.
.name
Naming Table: Contains names for various font attributes, including designer, copyright, etc.
.post
PostScript Table: Contains information used for emulating PostScript fonts.
.prep
Control Value Program: Contains hinting instructions executed before processing any glyph in the font.
Methods:
font.createSubset()
:
font.createSubset()
:Description: Creates a
Subset
object, allowing you to create a new font containing only specified glyphs.Returns:
Subset
object for further operations.
font.getAvailableFeatures()
:
font.getAvailableFeatures()
:Description: Lists the OpenType layout features available in the font.
Returns: Array of available feature tags.
font.getFont()
:
font.getFont()
:Description: If the font file contains multiple fonts, retrieves a specific one.
Parameters: Index or specific criteria for font selection.
Returns:
Font
object.
font.getGlyph()
:
font.getGlyph()
:Description: Retrieves a glyph by its ID.
Parameters: Glyph ID.
Returns: Corresponding
Glyph
object.
font.getVariation(variation)
:
font.getVariation(variation)
:Description: Returns a new Font object for the given variation.
Parameters: Variation criteria or name.
Returns: Variation data.
font.getVariation(variation)
:
font.getVariation(variation)
:Description: Returns a new Font object for the given variation. This method is used to obtain a specific variation of the font based on the provided variation criteria.
Parameters:
variation
(Object) - An object specifying the variation criteria. The format of this object includes key-value pairs representing the variation axes. For example,{ "wght": 400 }
sets the weight of the font to 400.Returns: Fontkit
Font
Object - A new font object that represents the specified variation of the original font.
Example:
font.glyphForCodePoint(codePoint)
:
font.glyphForCodePoint(codePoint)
:Description: Returns a
Glyph
object for a given Unicode code point.Parameters: Unicode code point.
Returns: Corresponding
Glyph
object.
font.glyphsForString(string)
:
font.glyphsForString(string)
:Description: Returns an array of
Glyph
objects for a given string.Parameters: A string of characters.
Returns: Array of
Glyph
objects.
font.hasGlyphForCodePoint(codePoint)
:
font.hasGlyphForCodePoint(codePoint)
:Description: Checks if the font has a glyph for the given Unicode code point.
Parameters: Unicode code point.
Returns: Boolean indicating presence of the glyph.
font.layout(text, features, script, language)
:
font.layout(text, features, script, language)
:Description: This is used to lay out a string of text, returning a
GlyphRun
object. Thefeatures
parameter is optional and can be used to turn on or off OpenType features. Thescript
andlanguage
parameters can be used to set the script and language for shaping.Parameters: A string of characters, and potentially additional layout parameters.
Returns:
GlyphRun
object.
font.getName()
:
font.getName()
:Description: Retrieves the human-readable name for a specific name ID in the font.
Parameters: Name ID.
Returns: String representing the name.
font.setDefaultLanguage()
:
font.setDefaultLanguage()
:Description: Sets the default language for the font, affecting layout operations.
Parameters: Language tag.
Returns: Void (changes are applied to the
Font
object).
font.stringsForGlyph()
:
font.stringsForGlyph()
:Description: Retrieves strings that map to a specific glyph.
Parameters: Glyph ID or
Glyph
object.Returns: Array of strings.
font._decodeDirectory()
:
font._decodeDirectory()
:Description: (Internal) Decodes the directory structure of the font, which is a key part of its binary data.
Parameters: Typically involves references or offsets from the font file.
Returns: Decoded directory structure.
font._decodeTable()
:
font._decodeTable()
:Description: (Internal) Decodes a specific table from the font's binary data.
Parameters: Table references or names from the font file.
Returns: Decoded table data.
font._getBaseGlyph()
:
font._getBaseGlyph()
:Description: (Internal) Retrieves the base glyph for a particular character or code point.
Parameters: Usually a character or code point.
Returns: Corresponding base
Glyph
object.
font._getTable()
:
font._getTable()
:Description: (Internal) Fetches a specific table from the font.
Parameters: Table name or reference.
Returns: Table data.
font._getTableStream()
:
font._getTableStream()
:Description: (Internal) Retrieves a stream for reading a specific table from the font's binary data.
Parameters: Table name or reference.
Returns: Data stream for the specified table.
Layout a String and Access Glyphs:
Last updated