$ npm i electron-font-manager
This native Node.js module allows you to manipulate fonts on different OSes.
Here there be (some) dragons - this is a work in progress. Please try out with caution.
params
Object (optional)traits
Array - An array of strings specifying what traits to filter the available system fonts for; must be one of: 'bold', 'compressed', 'condensed', 'expanded', 'fixedPitch', 'italic', 'narrow', 'nonStandardCharacterSet', 'poster', 'smallCaps', 'unbold', 'unitalic'.
Returns the names of the fonts available in the system.
These pairs of traits are mutually exclusive:
- 'condensed' and 'expanded'
- 'bold' and 'unbold'
- 'italic' and 'unitalic'
const { getAvailableFonts } = require('electron-font-manager')
const availableFonts = getAvailableFonts({
traits: ['bold', 'italic', 'condensed']
})
console.log(availableFonts)
/* prints:
[
'AvenirNextCondensed-DemiBoldItalic',
'AvenirNextCondensed-BoldItalic',
'AvenirNextCondensed-HeavyItalic'
]
*/
Returns Array - the names of the font families available in the system.
const { getAvailableFontFamilies } = require('electron-font-manager')
const availableFontFamilies = getAvailableFontFamilies()
console.log(availableFontFamilies)
/* prints:
[
'Al Bayan',
'Al Nile',
'Al Tarikh',
'American Typewriter',
'Andale Mono',
'Arial',
... 241 more items
]
*/
family
String - The name of a font family, like one returned inavailableFontFamilies()
.
Returns Array - an array with one array entry for each available member of a font family.
Each entry of the returned array is another array with three members, as follows:
- The font name, as a string.
- The part of the font name used in the font panel that’s not the font name, as a string. This value is not localized—for example, 'Roman', 'Italic', or 'Bold'.
- The font’s weight, as a number.
const fontManager = require('electron-font-manager')
const members = fontManager.getAvailableMembersOfFontFamily('Times')
console.log(members)
/* prints:
[
['Times-Roman', 'Roman', 5],
['Times-Italic', 'Italic', 6],
['Times-Bold', 'Bold', 9],
['Times-BoldItalic', 'Bold Italic', 9]
]
*/
showStyles
Boolean (macOS) - whether to open the font styles panel or the regular font panel.
const fontManager = require('electron-font-manager')
// shows the font styles panel
fontManager.showFontPanel(true)