Files
2026-06-19 18:45:55 +08:00

70 lines
1.8 KiB
TypeScript

import { ipcRenderer } from 'electron';
export interface FontInfo {
value: string;
label: string;
source: 'bundled' | 'system' | 'custom' | 'ziti';
category?: string;
languages?: string[];
path?: string;
}
/**
* 监听字体列表变更事件
*/
function onFontsChanged(callback: () => void): () => void {
const handler = () => callback();
ipcRenderer.on('fontManager:fontsChanged', handler);
// 返回取消监听的函数
return () => {
ipcRenderer.removeListener('fontManager:fontsChanged', handler);
};
}
export interface UploadFontParams {
fileName: string;
fileData?: number[]; // 保留兼容性
fileDataBase64?: string; // 新增Base64编码支持
displayName: string;
fontFamily: string;
category: string;
languages: string[];
fontType?: 'Chinese' | 'English' | 'Mixed';
}
/**
* 获取所有可用字体
*/
async function getAllFonts(): Promise<{ success: boolean; data?: FontInfo[]; message?: string }> {
return await ipcRenderer.invoke('fontManager:getAllFonts');
}
/**
* 上传自定义字体
*/
async function uploadFont(params: UploadFontParams): Promise<{ success: boolean; message?: string }> {
return await ipcRenderer.invoke('fontManager:uploadFont', params);
}
/**
* 删除自定义字体
*/
async function deleteFont(fontFamily: string): Promise<{ success: boolean; message?: string }> {
return await ipcRenderer.invoke('fontManager:deleteFont', fontFamily);
}
/**
* 查找字体文件路径
*/
async function findFontPath(fontFamily: string, fontWeight: number = 400): Promise<{ success: boolean; data?: string | null; message?: string }> {
return await ipcRenderer.invoke('fontManager:findFontPath', fontFamily, fontWeight);
}
export default {
getAllFonts,
uploadFont,
deleteFont,
findFontPath,
onFontsChanged,
};