HarmonyOS 自定义字体绘制

问题1:

在这个库里面的这个getGlobalInstance的接口无法调用到,参照例子写直接报错,是否文档有误?

import { text } from "@kit.ArkGraphics2D"

function Text() {
  let fontCollection = text.FontCollection.getGlobalInstance();
  fontCollection.loadFontSync('test', 'File://');
}

问题2:如何通过fontCollection使用不同的系统内置字体查看效果,系统内置字体如下:

declare type FontFamily = 'sans-serif' | 'serif' | 'monospace' 

请举例说明,show code,

HarmonyOS
22h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

1:升到最新版本

2:设置TextStyle的fontFamilies

fontFamilies设置字体对应的家族名称

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkgraphics2d/js-apis-graphics-text.md#textstyle

import { font } from '@kit.ArkUI';

interface FontInfo {
  familyName: string;
  path: string | undefined;
}

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  @State genericFonts: Array<FontInfo> = [];
  @State fallbackFonts: Array<FontInfo> = [];

  aboutToAppear(): void {
    let fontInfo = font.getUIFontConfig();
    console.log(`systest ${JSON.stringify(fontInfo)}`);

    for (let f of fontInfo.generic) {
      let info = font.getFontByName(f.family);
      this.genericFonts.push({
        familyName: f.family,
        path: info?.path,
      });
      console.log(`systest generic ${f.family}, ${info?.path}`);
    }

    for (let group of fontInfo.fallbackGroups) {
      for (let fallback of group.fallback) {
        let info = font.getFontByName(fallback.family);
        this.fallbackFonts.push({
          familyName: fallback.family,
          path: info?.path,
        });
        console.log(`systest fallback ${fallback.family}, ${fallback.language}, ${info?.path}`);
      }
    }
  }

  build() {
    Scroll() {
      Column({space: 5}) {
        Text('genericFonts')
        ForEach(this.genericFonts, (item: FontInfo, index: number) => {
          Text(`123 abcd 中文 - ${item.familyName}`)
            .fontSize(15)
            .fontFamily(item.familyName)
        })
        Text('fallbackFonts')
        ForEach(this.fallbackFonts, (item: FontInfo, index: number) => {
          Text(`123 abcd 中文 - ${item.familyName}`)
            .fontSize(15)
            .fontFamily(item.familyName)
        })
      }
    }
    .width('100%')
    .height('100%')
  }
}

获取系统字体信息用font.getUIFontConfig和font.getFontByName,可以获取到path

分享
微博
QQ
微信
回复
19h前
相关问题
HarmonyOS 全局自定义字体
21浏览 • 1回复 待解决
HarmonyOS 全局自定义字体
32浏览 • 1回复 待解决
HarmonyOS 使用自定义字体
269浏览 • 1回复 待解决
HarmonyOS 如何设置自定义字体
893浏览 • 1回复 待解决
如何自定义字体替换系统字体
466浏览 • 1回复 待解决
鸿蒙中如何自定义字体文件
19553浏览 • 1回复 待解决
如何使用和加载自定义字体
2233浏览 • 1回复 待解决
ArkUI中如何使用自定义字体
868浏览 • 2回复 待解决
HarmonyOS 全局设置自定义字体的方法
45浏览 • 1回复 待解决
Ark UI是否如何使用自定义字体
3296浏览 • 1回复 待解决
注册的自定义字体在 webview 中无效
2371浏览 • 1回复 待解决