# @ohos.font (注册自定义å—体) æœ¬æ¨¡å—æä¾›æ³¨å†Œè‡ªå®šä¹‰å—体。 > **说明** > > 本模å—首批接å£ä»ŽAPI version 9开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„æ–°å¢žæŽ¥å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 > > 本模å—功能ä¾èµ–UI的执行上下文,ä¸å¯åœ¨UIä¸Šä¸‹æ–‡ä¸æ˜Žç¡®çš„地方使用,å‚è§[UIContext](./js-apis-arkui-UIContext.md#uicontext)说明。 > > 从API version 10开始,å¯ä»¥é€šè¿‡ä½¿ç”¨[UIContext](./js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getFont](./js-apis-arkui-UIContext.md#getfont)方法获å–当å‰UI上下文关è”çš„[Font](./js-apis-arkui-UIContext.md#font)对象。 ## å¯¼å…¥æ¨¡å— ```ts import { font } from '@kit.ArkUI' ``` ## font.registerFont registerFont(options: FontOptions): void 在å—体管ç†ä¸æ³¨å†Œè‡ªå®šä¹‰å—体。 **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | --------------------------- | ---- | ----------- | | options | [FontOptions](#fontoptions) | 是 | 注册的自定义å—体信æ¯ã€‚ | ## FontOptions **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | ---------- | ------ | ---- | ------------ | | familyName | string \| [Resource](arkui-ts/ts-types.md#resource)<sup>10+</sup> | 是 | 设置注册的å—体å称。 | | familySrc | string \| [Resource](arkui-ts/ts-types.md#resource)<sup>10+</sup> | 是 | 设置注册å—体文件的路径。 | **示例:** > **说明** > > 推è通过使用[UIContext](./js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getFont](./js-apis-arkui-UIContext.md#getfont)方法获å–当å‰UI上下文关è”çš„[Font](./js-apis-arkui-UIContext.md#font)对象。 ```ts // xxx.ets import { font } from '@kit.ArkUI'; @Entry @Component struct FontExample { @State message: string = 'Hello World'; // iconFont示例,å‡è®¾0000为指定iconçš„Unicode,实际需è¦å¼€å‘者从注册的iconFontçš„ttf文件里é¢èŽ·å–Unicode @State unicode: string = '\u0000'; @State codePoint: string = String.fromCharCode(0x0000); aboutToAppear() { // familyNameå’ŒfamilySrc都支æŒç³»ç»ŸResource font.registerFont({ // 建议使用 this.getUIContext().getFont().registerFont()æŽ¥å£ familyName: $r('app.string.font_name'), familySrc: $r('app.string.font_src') }) // familySrc支æŒRawFile font.registerFont({ familyName: 'mediumRawFile', familySrc: $rawfile('font/medium.ttf') }) // 注册iconFont font.registerFont({ familyName: 'iconFont', familySrc: '/font/iconFont.ttf' }) // familyNameå’ŒfamilySrc都支æŒstring 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'ç‰å·²æ³¨å†Œå—体也能æ£å¸¸ä½¿ç”¨ï¼‰ // 使用iconFontçš„ä¸¤ç§æ–¹å¼ Text(this.unicode) .align(Alignment.Center) .fontSize(20) .fontFamily('iconFont') Text(this.codePoint) .align(Alignment.Center) .fontSize(20) .fontFamily('iconFont') }.width('100%') } } ``` > **说明:** > > 应用若需全局使用自定义å—体,请在EntryAbility.ets文件的[onWindowStageCreate](../apis-ability-kit/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期ä¸ï¼Œé€šè¿‡[windowStage.loadContent](js-apis-window.md#loadcontent9)回调注册。 > > 在HSP工程ä¸ï¼Œä¸æŽ¨èé‡‡ç”¨ç›¸å¯¹è·¯å¾„çš„æ–¹å¼æ³¨å†Œè‡ªå®šä¹‰å—体,详è§[HSP资æºå¼•用](../../quick-start/in-app-hsp.md#通过r访问hspä¸çš„资æº)。 ## font.getSystemFontList<sup>10+</sup> getSystemFontList(): Array\<string> 获å–é£Žæ ¼å—体列表。 **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **返回值:** | 类型 | 说明 | | -------------------- | ----------------- | | Array\<string> | 系统的å—体å列表。 | > **说明:** > > 该接å£ä»…在2in1和移动设备上生效。 **示例:** > **说明** > > 推è通过使用[UIContext](./js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getFont](./js-apis-arkui-UIContext.md#getfont)方法获å–当å‰UI上下文关è”çš„[Font](./js-apis-arkui-UIContext.md#font)对象。 ```ts // xxx.ets import { font } from '@kit.ArkUI'; @Entry @Component struct FontExample { fontList: Array<string> = new Array<string>(); build() { Column() { Button("getSystemFontList") .width('60%') .height('6%') .onClick(() => { this.fontList = font.getSystemFontList() // 建议使用 this.getUIContext().getFont().getSystemFontList()æŽ¥å£ }) }.width('100%') } } ``` ## font.getFontByName<sup>10+</sup> getFontByName(fontName: string): FontInfo æ ¹æ®ä¼ 入的系统å—体å称获å–系统å—体的相关信æ¯ã€‚ **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | --------- | ------- | ------------ | | fontName | string | 是 | 系统的å—体å。 | **返回值:** | 类型 | 说明 | | ---------------- | ---------------------------- | | FontInfo | å—体的详细信æ¯ã€‚ | ## FontInfo<sup>10+</sup> **原å化æœåŠ¡API:** 从API version 11å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | path | string | 是 | 系统å—体的文件路径。 | | postScriptName | string | 是 | 系统å—体的postScriptå称。 | | fullName | string | 是 | 系统å—体的å称。 | | family | string | 是 | 系统å—体的å—体家æ—。 | | subfamily | string | 是 | 系统å—体的åå—体家æ—。 | | weight | number | 是 | 系统å—体的粗细程度,å•ä½px。 | | width | number | 是 | 系统å—ä½“çš„å®½çª„é£Žæ ¼å±žæ€§ï¼Œå•ä½px。 | | italic | boolean | 是 | 系统å—体是å¦å€¾æ–œã€‚ | | monoSpace | boolean | 是 | 系统å—体是å¦ç´§å‡‘。 | | symbolic | boolean | 是 | 系统å—ä½“æ˜¯å¦æ”¯æŒç¬¦å·å—体。 | **示例:** > **说明** > > 推è通过使用[UIContext](./js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getFont](./js-apis-arkui-UIContext.md#getfont)方法获å–当å‰UI上下文关è”çš„[Font](./js-apis-arkui-UIContext.md#font)对象。 ```ts // xxx.ets import { font } from '@kit.ArkUI'; @Entry @Component struct FontExample { fontList: Array<string> = new Array<string>(); fontInfo: font.FontInfo = font.getFontByName(''); build() { Column() { Button("getFontByName") .onClick(() => { this.fontInfo = font.getFontByName('HarmonyOS Sans Italic') // 建议使用 this.getUIContext().getFont().getFontByName()æŽ¥å£ console.log("getFontByName(): path = " + this.fontInfo.path) console.log("getFontByName(): postScriptName = " + this.fontInfo.postScriptName) console.log("getFontByName(): fullName = " + this.fontInfo.fullName) console.log("getFontByName(): Family = " + this.fontInfo.family) console.log("getFontByName(): Subfamily = " + this.fontInfo.subfamily) console.log("getFontByName(): weight = " + this.fontInfo.weight) console.log("getFontByName(): width = " + this.fontInfo.width) console.log("getFontByName(): italic = " + this.fontInfo.italic) console.log("getFontByName(): monoSpace = " + this.fontInfo.monoSpace) console.log("getFontByName(): symbolic = " + this.fontInfo.symbolic) }) }.width('100%') } } ``` ## font.getUIFontConfig<sup>11+</sup> getUIFontConfig() : UIFontConfig 获å–系统的UIå—体é…置。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **返回值:** | 类型 | 说明 | | ---------------- | ---------------------------- | | [UIFontConfig](#uifontconfig11) | 系统的UIå—体é…置信æ¯ã€‚ | ## UIFontConfig<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | fontDir | Array\<string> | 是 | 系统å—体文件所在的路径。 | | generic | Array\<[UIFontGenericInfo](#uifontgenericinfo11)> | 是 | 系统所支æŒçš„通用å—体集列表。 | | fallbackGroups | Array\<[UIFontFallbackGroupInfo](#uifontfallbackgroupinfo11)> | 是 | 备用å—体集。 | ## UIFontGenericInfo<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | family | string | 是 | å—体集å,å—ä½“æ–‡ä»¶ä¸æŒ‡å®šçš„"family"值。 | | alias | Array\<[UIFontAliasInfo](#uifontaliasinfo11)> | 是 | 别å列表。 | | adjust | Array\<[UIFontAdjustInfo](#uifontadjustinfo11)> | 是 | å—体原本的weight值对应需显示的值。 | ## UIFontFallbackGroupInfo<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | fontSetName | string | 是 | 备用å—体集所对应的å—体集å称。 | | fallback | Array\<[UIFontFallbackInfo](#uifontfallbackinfo11)> | 是 | 表示以下列表为该å—体集的备用å—体,如果fontSetName为"",表示å¯ä»¥ä½œä¸ºæ‰€æœ‰å—体集的备用å—体。 | ## UIFontAliasInfo<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | name | string | 是 | 别åå称。 | | weight | number | 是 | 当weight>0时表示æ¤å—体集åªåŒ…嫿‰€æŒ‡å®šweightçš„å—体,当weight=0时,表示æ¤å—ä½“é›†åŒ…å«æ‰€æœ‰å—体。 | ## UIFontAdjustInfo<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | weight | number | 是 | å—体原本的weight值。 | | to | number | 是 | å—ä½“åœ¨åº”ç”¨ä¸æ˜¾ç¤ºçš„weight值。 | ## UIFontFallbackInfo<sup>11+</sup> **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | åç§° | 类型 | å¿…å¡« | 说明 | | -------------- | ------- | ------------------------- | ------------------------- | | language | string | 是 | å—体集所支æŒçš„è¯è¨€ç±»åž‹ï¼Œè¯è¨€æ ¼å¼ä¸ºbcp47。 | | family | string | 是 | å—体集å,å—ä½“æ–‡ä»¶ä¸æŒ‡å®šçš„"family"值。 | **示例:** ```ts // xxx.ets import { font } from '@kit.ArkUI'; @Entry @Component struct FontExample { build() { Column() { Button("getUIFontConfig") .width('60%') .height('6%') .margin(50) .onClick(() => { let fontConfig = font.getUIFontConfig(); console.log("font-dir -----------" + String(fontConfig.fontDir.length)); for (let i = 0; i < fontConfig.fontDir.length; i++) { console.log(fontConfig.fontDir[i]); } console.log("generic-------------" + String(fontConfig.generic.length)); for (let i = 0; i < fontConfig.generic.length; i++) { console.log("family:" + fontConfig.generic[i].family); for (let j = 0; j < fontConfig.generic[i].alias.length; j++) { console.log(fontConfig.generic[i].alias[j].name + " " + fontConfig.generic[i].alias[j].weight); } for (let j = 0; j < fontConfig.generic[i].adjust.length; j++) { console.log(fontConfig.generic[i].adjust[j].weight + " " + fontConfig.generic[i].adjust[j].to); } } console.log("fallback------------" + String(fontConfig.fallbackGroups.length)); for (let i = 0; i < fontConfig.fallbackGroups.length; i++) { console.log("fontSetName:" + fontConfig.fallbackGroups[i].fontSetName); for (let j = 0; j < fontConfig.fallbackGroups[i].fallback.length; j++) { console.log("language:" + fontConfig.fallbackGroups[i].fallback[j].language + " family:" + fontConfig.fallbackGroups[i].fallback[j].family); } } }) }.width('100%') } } ``` <!--no_check-->