• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (Typeface)
2
3<!--Kit: ArkGraphics 2D-->
4<!--Subsystem: Graphics-->
5<!--Owner: @hangmengxin-->
6<!--Designer: @wangyanglan-->
7<!--Tester: @nobuggers-->
8<!--Adviser: @ge-yafang-->
9
10> **说明:**
11>
12> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
13>
14> - 本模块使用屏幕物理像素单位px。
15>
16> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。
17
18字体,如宋体、楷体等。
19
20## 导入模块
21
22```ts
23import { drawing } from '@kit.ArkGraphics2D';
24```
25
26## getFamilyName
27
28getFamilyName(): string
29
30获取字体的族名,即一套字体设计的名称。
31
32**系统能力:** SystemCapability.Graphics.Drawing
33
34**返回值:**
35
36| 类型   | 说明                 |
37| ------ | -------------------- |
38| string | 返回字体的族名。 |
39
40**示例:**
41
42```ts
43import { drawing } from '@kit.ArkGraphics2D';
44
45const font = new drawing.Font();
46let typeface = font.getTypeface();
47let familyName = typeface.getFamilyName();
48```
49
50## makeFromCurrent<sup>20+</sup>
51
52makeFromCurrent(typefaceArguments: TypefaceArguments): Typeface
53
54基于当前字体结合字体属性构造新的字体对象。
55
56**系统能力:** SystemCapability.Graphics.Drawing
57
58**参数:**
59| 参数名         | 类型                                       | 必填   | 说明                  |
60| ----------- | ---------------------------------------- | ---- | ------------------- |
61| typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md)           | 是   | 字体属性。 |
62
63**返回值:**
64
65| 类型   | 说明                  |
66| ------ | -------------------- |
67| [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 |
68
69**示例:**
70
71```ts
72import { RenderNode } from '@kit.ArkUI';
73import { drawing } from '@kit.ArkGraphics2D';
74
75class TextRenderNode extends RenderNode {
76  async draw(context: DrawContext) {
77    const canvas = context.canvas;
78    let typeArguments = new drawing.TypefaceArguments();
79    typeArguments.addVariation("wght", 100);
80    const myTypeFace = drawing.Typeface.makeFromFile("/system/fonts/HarmonyOS_Sans_SC.ttf");
81    const typeFace1 = myTypeFace.makeFromCurrent(typeArguments);
82    let font = new drawing.Font();
83    font.setTypeface(typeFace1);
84    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
85    canvas.drawTextBlob(textBlob, 60, 100);
86  }
87}
88```
89
90## makeFromFile<sup>12+</sup>
91
92static makeFromFile(filePath: string): Typeface
93
94从指定字体文件构造字体。
95
96**系统能力:** SystemCapability.Graphics.Drawing
97
98**参数:**
99
100| 参数名         | 类型                                       | 必填   | 说明                  |
101| ----------- | ---------------------------------------- | ---- | ------------------- |
102| filePath | string           | 是   | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 |
103
104**返回值:**
105
106| 类型   | 说明                 |
107| ------ | -------------------- |
108| [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回Typeface对象。 |
109
110**错误码:**
111
112以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
113
114| 错误码ID | 错误信息 |
115| ------- | --------------------------------------------|
116| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
117
118**示例:**
119
120```ts
121import { RenderNode } from '@kit.ArkUI';
122import { drawing } from '@kit.ArkGraphics2D';
123
124class TextRenderNode extends RenderNode {
125  async draw(context: DrawContext) {
126    const canvas = context.canvas;
127    let font = new drawing.Font();
128    let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf";
129    const mytypeface = drawing.Typeface.makeFromFile(str);
130    font.setTypeface(mytypeface);
131    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
132    canvas.drawTextBlob(textBlob, 60, 100);
133  }
134}
135```
136
137## makeFromRawFile<sup>18+</sup>
138
139static makeFromRawFile(rawfile: Resource): Typeface
140
141使用指定的字体文件构造字体,其中要求指定的字体文件需保存在应用资源文件夹的rawfile路径下。
142
143**系统能力:** SystemCapability.Graphics.Drawing
144
145**参数:**
146
147| 参数名         | 类型                                       | 必填   | 说明                  |
148| ----------- | ---------------------------------------- | ---- | ------------------- |
149| 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')``。 |
150
151**返回值:**
152
153| 类型   | 说明                 |
154| ------ | -------------------- |
155| [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回Typeface对象(异常情况下会返回空指针)。 |
156
157**示例:**
158
159```ts
160import { RenderNode } from '@kit.ArkUI';
161import { drawing } from '@kit.ArkGraphics2D';
162
163class TextRenderNode extends RenderNode {
164  async draw(context: DrawContext) {
165    const canvas = context.canvas;
166    let font = new drawing.Font();
167    const myTypeFace = drawing.Typeface.makeFromRawFile($rawfile('HarmonyOS_Sans_Bold.ttf'));
168    font.setTypeface(myTypeFace);
169    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
170    canvas.drawTextBlob(textBlob, 60, 100);
171  }
172}
173
174```
175## makeFromFileWithArguments<sup>20+</sup>
176
177static makeFromFileWithArguments(filePath: string, typefaceArguments: TypefaceArguments): Typeface
178
179根据字体文件路径和字体属性构造新的字体。
180
181**系统能力:** SystemCapability.Graphics.Drawing
182
183**参数:**
184
185| 参数名         | 类型                                       | 必填   | 说明                  |
186| ----------- | ---------------------------------------- | ---- | ------------------- |
187| filePath | string           | 是   | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 |
188| typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md) | 是  | 表示字体属性。 |
189
190**返回值:**
191
192| 类型   | 说明                  |
193| ------ | -------------------- |
194| [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 |
195
196**示例:**
197
198```ts
199import { RenderNode } from '@kit.ArkUI';
200import { drawing } from '@kit.ArkGraphics2D';
201
202class TextRenderNode extends RenderNode {
203  async draw(context: DrawContext) {
204    const canvas = context.canvas;
205    let font = new drawing.Font();
206    let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf";
207    let typeFaceArgument = new drawing.TypefaceArguments();
208    const myTypeFace = drawing.Typeface.makeFromFileWithArguments(str, typeFaceArgument);
209    font.setTypeface(myTypeFace);
210    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
211    canvas.drawTextBlob(textBlob, 60, 100);
212  }
213}
214```
215
216## makeFromRawFileWithArguments<sup>20+</sup>
217
218static makeFromRawFileWithArguments(rawfile: Resource, typefaceArguments: TypefaceArguments): Typeface
219
220使用指定的字体文件和字体属性构造字体,其中要求指定的字体文件需保存在应用资源文件夹的rawfile路径下。
221
222**系统能力:** SystemCapability.Graphics.Drawing
223
224**参数:**
225
226| 参数名         | 类型                                       | 必填   | 说明                  |
227| ----------- | ---------------------------------------- | ---- | ------------------- |
228| rawfile | [Resource](../apis-arkui/arkui-ts/ts-types.md#resource)           | 是   | 指定字体文件对应的资源对象。当前只支持``$rawfile``格式引用的资源对象,对应格式写为``$rawfile('filePath')``,其中filePath为指定字体文件相对于工程中resources/rawfile目录的相对路径。 |
229| typefaceArguments | [TypefaceArguments](arkts-apis-graphics-drawing-TypefaceArguments.md) | 是 | 表示字体属性。 |
230
231**返回值:**
232
233| 类型   | 说明                 |
234| ------ | ------------------- |
235| [Typeface](arkts-apis-graphics-drawing-Typeface.md) | 返回字体对象(异常情况下会返回空指针)。 |
236
237**示例:**
238
239```ts
240import { RenderNode } from '@kit.ArkUI';
241import { drawing } from '@kit.ArkGraphics2D';
242
243class TextRenderNode extends RenderNode {
244  async draw(context: DrawContext) {
245    const canvas = context.canvas;
246    let font = new drawing.Font();
247    let typeFaceArgument = new drawing.TypefaceArguments();
248    const myTypeFace = drawing.Typeface.makeFromRawFileWithArguments($rawfile('HarmonyOS_Sans_Bold.ttf'), typeFaceArgument);
249    font.setTypeface(myTypeFace);
250    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
251    canvas.drawTextBlob(textBlob, 60, 100);
252  }
253}
254```