font-carrier 字体处理工具 API 详解
font-carrier 是一个功能强大的字体处理工具,它允许开发者以编程方式创建、修改和导出字体文件。本文将深入解析 font-carrier 的核心 API,帮助开发者更好地理解和使用这个工具。
字体创建与解析
font-carrier 提供了两种创建字体对象的方式:
-
创建空白字体:使用
fontCarrier.create(options)
方法可以创建一个全新的空白字体对象。options 参数用于设置字体的基本属性。 -
解析现有字体:使用
fontCarrier.transfer(path, options)
方法可以解析已有的字体文件,支持 SVG 和 TTF 格式。path 参数既可以是文件路径,也可以是文件内容的 Buffer 对象。
// 创建空白字体示例
const blankFont = fontCarrier.create({
id: 'my-font',
horizAdvX: 1024,
vertAdvY: 1024
});
// 解析现有字体示例
const existingFont = fontCarrier.transfer('./path/to/font.ttf');
字体导出功能
创建或修改字体后,可以使用 font.output(options)
方法导出字体文件。该方法支持多种字体格式:
- 支持格式:SVG、TTF、WOFF、WOFF2、EOT
- 可指定导出路径(无需文件扩展名)
- 可自定义导出的字体格式类型
// 导出字体示例
font.output({
path: './output/iconfont', // 输出路径(不含扩展名)
types: ['ttf', 'woff'] // 指定导出格式
});
核心对象模型
font-carrier 的核心由三个对象组成:Font(字体)、FontFace(字体样式)和 Glyph(字形)。每个对象都有各自的属性和方法。
Font 对象
Font 对象代表整个字体文件,包含以下主要属性和方法:
构造参数:
id
: 字体的 PostScript 名称horizAdvX
: 水平画布大小(默认1024)vertAdvY
: 垂直画布大小(默认1024)
关键方法:
getFontface()
/setFontface()
: 获取/设置字体样式信息getSvg()
/setSvg()
: 获取/设置字符的SVG图形getGlyph()
/setGlyph()
: 获取/设置字形对象allGlyph()
: 获取所有字形集合min()
: 精简字体,只保留指定字符output()
: 导出字体文件
FontFace 对象
FontFace 对象包含字体的元信息:
构造参数:
fontFamily
: 字体家族名称unitsPerEm
: 字体单位(默认1024)ascent
: 上偏移量(默认812)descent
: 下偏移量(默认-212)
Glyph 对象
Glyph 对象代表单个字符的形状信息:
构造参数:
unicode
: 字符的Unicode编码glyphName
: 字形名称(默认使用Unicode)d
: 字形的路径数据(建议使用SVG替代)horizAdvX
: 水平画布大小(默认1024)vertAdvY
: 垂直画布大小(默认1024)
关键方法:
getFont()
/setFont()
: 获取/设置关联的字体对象toSvg()
: 导出字形为SVG格式
实用技巧
-
字形处理:建议使用SVG设置字形而非直接操作路径数据(d),工具会自动完成SVG到路径的转换。
-
字体优化:使用
min()
方法可以精简字体文件,只保留需要的字符,减小文件体积。 -
批量操作:
setSvg()
和setGlyph()
方法支持对象参数形式,可以一次性设置多个字符。 -
跨字体操作:通过
glyph.setFont()
可以将字形应用到不同字体,工具会自动处理必要的转换。
font-carrier 的这些API设计使得字体处理变得简单而强大,无论是创建新字体、修改现有字体,还是进行字体格式转换,都能轻松实现。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考