# Class (Typeface) > **说明:** > > - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > > - 本模块使用屏幕物理像素单位px。 > > - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。 字体,如宋体、楷体等。 ## 导入模块 ```ts import { drawing } from '@kit.ArkGraphics2D'; ``` ## getFamilyName getFamilyName(): string 获取字体的族名,即一套字体设计的名称。 **系统能力:** SystemCapability.Graphics.Drawing **返回值:** | 类型 | 说明 | | ------ | -------------------- | | string | 返回字体的族名。 | **示例:** ```ts import { drawing } from '@kit.ArkGraphics2D'; const font = new drawing.Font(); let typeface = font.getTypeface(); let familyName = typeface.getFamilyName(); ``` ## makeFromCurrent20+ makeFromCurrent(typefaceArguments: TypefaceArguments): Typeface 基于当前字体结合字体属性构造新的字体对象。 **系统能力:** SystemCapability.Graphics.Drawing **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ------------------- | | typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md) | 是 | 字体属性。 | **返回值:** | 类型 | 说明 | | ------ | -------------------- | | [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 | **示例:** ```ts import { RenderNode } from '@kit.ArkUI'; import { drawing } from '@kit.ArkGraphics2D'; class TextRenderNode extends RenderNode { async draw(context: DrawContext) { const canvas = context.canvas; let typeArguments = new drawing.TypefaceArguments(); typeArguments.addVariation("wght", 100); const myTypeFace = drawing.Typeface.makeFromFile("/system/fonts/HarmonyOS_Sans_SC.ttf"); const typeFace1 = myTypeFace.makeFromCurrent(typeArguments); let font = new drawing.Font(); font.setTypeface(typeFace1); const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); canvas.drawTextBlob(textBlob, 60, 100); } } ``` ## makeFromFile12+ static makeFromFile(filePath: string): Typeface 从指定字体文件构造字体。 **系统能力:** SystemCapability.Graphics.Drawing **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ------------------- | | filePath | string | 是 | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 | **返回值:** | 类型 | 说明 | | ------ | -------------------- | | [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回Typeface对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | **示例:** ```ts import { RenderNode } from '@kit.ArkUI'; import { drawing } from '@kit.ArkGraphics2D'; class TextRenderNode extends RenderNode { async draw(context: DrawContext) { const canvas = context.canvas; let font = new drawing.Font(); let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf"; const mytypeface = drawing.Typeface.makeFromFile(str); font.setTypeface(mytypeface); const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); canvas.drawTextBlob(textBlob, 60, 100); } } ``` ## makeFromRawFile18+ static makeFromRawFile(rawfile: Resource): Typeface 使用指定的字体文件构造字体,其中要求指定的字体文件需保存在应用资源文件夹的rawfile路径下。 **系统能力:** SystemCapability.Graphics.Drawing **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ------------------- | | rawfile | [Resource](../apis-arkui/arkui-ts/ts-types.md#resource) | 是 | 指定字体文件对应的资源对象。当前只支持``$rawfile``格式引用的资源对象,对应格式写为``$rawfile('filePath')``,其中filePath为指定字体文件相对于工程中resources/rawfile目录的相对路径。如将字体文件直接存放在resources/rawfile目录下,则引用格式应写为:``$rawfile('HarmonyOS_Sans_Bold.ttf')``;也可以创建子目录,将字体文件存放在resources/rawfile/ttf下,则引用格式应写为:``$rawfile('ttf/HarmonyOS_Sans_Bold.ttf')``。 | **返回值:** | 类型 | 说明 | | ------ | -------------------- | | [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回Typeface对象(异常情况下会返回空指针)。 | **示例:** ```ts import { RenderNode } from '@kit.ArkUI'; import { drawing } from '@kit.ArkGraphics2D'; class TextRenderNode extends RenderNode { async draw(context: DrawContext) { const canvas = context.canvas; let font = new drawing.Font(); const myTypeFace = drawing.Typeface.makeFromRawFile($rawfile('HarmonyOS_Sans_Bold.ttf')); font.setTypeface(myTypeFace); const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); canvas.drawTextBlob(textBlob, 60, 100); } } ``` ## makeFromFileWithArguments20+ static makeFromFileWithArguments(filePath: string, typefaceArguments: TypefaceArguments): Typeface 根据字体文件路径和字体属性构造新的字体。 **系统能力:** SystemCapability.Graphics.Drawing **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ------------------- | | filePath | string | 是 | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 | | typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md) | 是 | 表示字体属性。 | **返回值:** | 类型 | 说明 | | ------ | -------------------- | | [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 | **示例:** ```ts import { RenderNode } from '@kit.ArkUI'; import { drawing } from '@kit.ArkGraphics2D'; class TextRenderNode extends RenderNode { async draw(context: DrawContext) { const canvas = context.canvas; let font = new drawing.Font(); let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf"; let typeFaceArgument = new drawing.TypefaceArguments(); const myTypeFace = drawing.Typeface.makeFromFileWithArguments(str, typeFaceArgument); font.setTypeface(myTypeFace); const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); canvas.drawTextBlob(textBlob, 60, 100); } } ``` ## makeFromRawFileWithArguments20+ static makeFromRawFileWithArguments(rawfile: Resource, typefaceArguments: TypefaceArguments): Typeface 使用指定的字体文件和字体属性构造字体,其中要求指定的字体文件需保存在应用资源文件夹的rawfile路径下。 **系统能力:** SystemCapability.Graphics.Drawing **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ------------------- | | rawfile | [Resource](../apis-arkui/arkui-ts/ts-types.md#resource) | 是 | 指定字体文件对应的资源对象。当前只支持``$rawfile``格式引用的资源对象,对应格式写为``$rawfile('filePath')``,其中filePath为指定字体文件相对于工程中resources/rawfile目录的相对路径。 | | typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md) | 是 | 表示字体属性。 | **返回值:** | 类型 | 说明 | | ------ | ------------------- | | [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 | **示例:** ```ts import { RenderNode } from '@kit.ArkUI'; import { drawing } from '@kit.ArkGraphics2D'; class TextRenderNode extends RenderNode { async draw(context: DrawContext) { const canvas = context.canvas; let font = new drawing.Font(); let typeFaceArgument = new drawing.TypefaceArguments(); const myTypeFace = drawing.Typeface.makeFromRawFileWithArguments($rawfile('HarmonyOS_Sans_Bold.ttf'), typeFaceArgument); font.setTypeface(myTypeFace); const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); canvas.drawTextBlob(textBlob, 60, 100); } } ```