# Class (Font) 注册自定义字体的信息。 > **说明:** > > - 本模块首批接口从API version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 > > - 本Class首批接口从API version 10开始支持。 > > - 以下API需先使用UIContext中的[getFont()](./arkts-apis-uicontext-uicontext.md#getfont)方法获取到Font对象,再通过该对象调用对应方法。 > > - 推荐使用字体引擎的[loadFontSync](../apis-arkgraphics2d/js-apis-graphics-text.md#loadfontsync)接口注册自定义字体。 ## registerFont registerFont(options: font.FontOptions): void 在字体管理中注册自定义字体。 该接口为异步接口,不支持并发调用。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ---------------------------------------- | ---- | ----------- | | options | [font.FontOptions](js-apis-font.md#fontoptions) | 是 | 注册的自定义字体信息。
**说明:**
设置注册字体文件的路径,读取系统沙箱路径内的资源时,建议使用file://路径前缀的字符串,需要确保沙箱目录路径下的文件存在并且有可读权限。 | **示例:** ```ts // xxx.ets import { Font } from '@kit.ArkUI'; @Entry @Component struct Index { @State message: string = 'Hello World'; private uiContext: UIContext = this.getUIContext(); private font: Font = this.uiContext.getFont(); aboutToAppear() { this.font.registerFont({ familyName: 'medium', familySrc: '/font/medium.ttf' // font文件夹与pages目录同级 }) } build() { Column() { Text(this.message) .align(Alignment.Center) .fontSize(20) .fontFamily('medium') // medium:注册自定义字体的名字($r('app.string.mediumFamilyName')、'mediumRawFile'等已注册字体也能正常使用) }.width('100%') } } ``` ## getSystemFontList getSystemFontList(): Array\ 获取系统支持的字体名称列表。 该接口仅在PC/2in1设备上生效,在其他设备上返回空数组。 推荐使用[getSystemFontFullNamesByType](../apis-arkgraphics2d/js-apis-graphics-text.md#textgetsystemfontfullnamesbytype14)接口获取系统最新支持的字体列表数据。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **返回值:** | 类型 | 说明 | | -------------- | --------- | | Array\ | 系统的字体名列表。 | **示例:** ```ts // xxx.ets import { Font } from '@kit.ArkUI'; @Entry @Component struct Index { private uiContext: UIContext = this.getUIContext(); private font: Font = this.uiContext.getFont(); fontList: Array = new Array(); build() { Column() { Button("getSystemFontList") .width('60%') .height('6%') .onClick(() => { this.fontList = this.font.getSystemFontList(); console.info('getSystemFontList', JSON.stringify(this.fontList)) }) }.width('100%') } } ``` ## getFontByName getFontByName(fontName: string): font.FontInfo 根据传入的系统字体名称获取系统字体的相关信息。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------ | ---- | ------- | | fontName | string | 是 | 系统的字体名。 | **返回值:** | 类型 | 说明 | | ----------------------------------------- | -------------- | | [font.FontInfo](js-apis-font.md#fontinfo10) | 字体的详细信息。 | **示例:** ```ts // xxx.ets import { Font, font } from '@kit.ArkUI'; @Entry @Component struct Index { private uiContext: UIContext = this.getUIContext(); private font: Font = this.uiContext.getFont(); fontInfo: font.FontInfo = this.font.getFontByName(''); build() { Column() { Button("getFontByName") .width('60%') .height('6%') .onClick(() => { this.fontInfo = this.font.getFontByName('HarmonyOS Sans Italic'); console.info("getFontByName(): path = " + this.fontInfo.path); console.info("getFontByName(): postScriptName = " + this.fontInfo.postScriptName); console.info("getFontByName(): fullName = " + this.fontInfo.fullName); console.info("getFontByName(): family = " + this.fontInfo.family); console.info("getFontByName(): subfamily = " + this.fontInfo.subfamily); console.info("getFontByName(): weight = " + this.fontInfo.weight); console.info("getFontByName(): width = " + this.fontInfo.width); console.info("getFontByName(): italic = " + this.fontInfo.italic); console.info("getFontByName(): monoSpace = " + this.fontInfo.monoSpace); console.info("getFontByName(): symbolic = " + this.fontInfo.symbolic); }) }.width('100%') } } ```