///
///
import { FontType } from './utils/detectFormat';
import { WriteFileOptions } from 'fs-extra';
import type { Buffer } from 'buffer';
import type { ReplaceProps } from './useSubset/templateReplacer';
/** subset 切割完毕后的数据格式 */
export type SubsetResult = {
unicodeRange: string;
subset: Subset;
path: string;
size: number;
diff: number;
charLength: number;
}[];
/** unicode-range的数据表示格式 */
export type Subset = (number | [number, number])[];
/** unicode-range的数据数组 */
export type Subsets = Subset[];
/** 替换系统内部的文件输出方式 */
export type IOutputFile = (file: string, data: Uint8Array | string, options?: WriteFileOptions | undefined) => Promise;
import { ConvertManager } from './convert/convert.manager';
import { ISettingsParam } from 'tslog';
import { WorkerPoolOptions } from 'workerpool';
export type InputTemplate = {
/** 字体文件的相对地址,或者直接输入 buffer */
FontPath: string | Buffer | Uint8Array;
/** 切割后放置文件的文件夹,如果没有文件系统,调用 outputFile 参数 */
destFold: string;
/**
* 可选的CSS属性配置,用于自定义字体的样式和行为。
*/
css?: Partial<{
/**
* 定义字体的家族名称,这将影响文本的显示风格。
* @default 自动解析
*/
fontFamily: string;
/**
* 定义字体的重量,可以是数字、字符串或false。数字范围通常为100到900,字符串可以是预定义的值,如'normal'、'bold'。
* @default 自动解析
*/
fontWeight: number | string | false;
/**
* 定义字体的风格,如'normal'、'italic'等。
* @default 自动解析
*/
fontStyle: string;
/**
* 定义字体的显示方式,用于控制字体在加载过程中的行为。
* @default swag
*/
fontDisplay: string;
/**
* 定义字体的本地名称,如果浏览器支持该字体,则会优先使用本地安装的字体。
* @default 同 fontFamily
*/
/** 本地字体名称,优先级高于自动生成名称 */
localFamily: string | string[] | false;
/** 当 fontFamily 不支持一些 format 时,动用其它 format
* @dev
*/
polyfill: ({
name: string;
format?: string;
} | string)[];
/**
* 控制 css 字体相关的注释内容,用于调试和优化。
*/
comment: {
/**
* 基本的构建信息
* @default true
*/
base?: false;
/**
* 字体文件中的 name table,有字体证书相关的说明
* @default true
*/
nameTable?: false;
/**
* 显示每个字体包含有的 unicode range 的字符, debug 用
* @default false
*/
unicodes?: true;
} | false;
/**
* 控制是否对 CSS 文件进行压缩,以减小文件大小。
* @default true
*/
compress: boolean;
}>;
/** 输出的字体类型,
* @default woff2
*/
targetType?: FontType;
/**
* 控制分包内的 Unicode 字符,优先级高
*/
subsets?: Subsets;
/** 自动分包,如果使用了 subsets 参数,那么将会自动分包剩下的 Unicode 字符 */
autoChunk?: boolean;
unicodeRank?: number[][];
/** 配合 autoChunk 使用,预计每个包的大小,插件会尽量打包到这个大小
* @default 71680 (70 * 1024)
*/
chunkSize?: number;
/**
* 分包字符的容忍度,这个数值是基础值的倍数
* @default 1.7
*/
chunkSizeTolerance?: number;
/**
* 最大允许的分包输出字体文件数目,超过这个数目,程序报错退出
* @default 600
*/
maxAllowSubsetsCount?: number;
/**
* 输出的 css 文件的名称
* @default result.css
*/
cssFileName?: string;
/** 是否输出 HTML 测试文件
* @default: true
*/
testHTML?: boolean;
/** 是否输出报告文件
* @default true
*/
reporter?: boolean;
/**
* 是否输出预览图
*/
previewImage?: {
/**
* 图中需要显示的文本
* @default 中文网字计划\nThe Project For Web
*/
text?: string;
/**
* 预览图的文件名,不用带后缀名
* @default preview.svg
*/
name?: string;
};
/**
* 日志输出<副作用>
*/
log?: (...args: any[]) => void;
/**
* tslog 的日志配置
* @debugger
*/
logger?: {
settings?: ISettingsParam;
};
/**
* 重命名字体名称, 可以使用 webpack 的重命名字符串
* @default [hash][ext]
*/
renameOutputFont?: string | ((replaceProps: ReplaceProps) => string);
/**
* 输出文件的函数,
* @description 如果你需要在特定的平台使用,那么需要适配这个函数
*/
outputFile?: IOutputFile;
threads?: {
/**
* 服务对象,用于多线程处理
* @protected
*/
service?: ConvertManager;
split?: boolean;
options?: WorkerPoolOptions;
} | false;
/**
* 字体复杂字形等特性的支持
* @dev
*/
fontFeature?: boolean;
};