1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef C_INCLUDE_DRAWING_FONT_H
17 #define C_INCLUDE_DRAWING_FONT_H
18 
19 /**
20  * @addtogroup Drawing
21  * @{
22  *
23  * @brief Provides functions such as 2D graphics rendering, text drawing, and image display.
24  *
25  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
26  *
27  * @since 11
28  * @version 1.0
29  */
30 
31 /**
32  * @file drawing_font.h
33  *
34  * @brief Declares functions related to the <b>font</b> object in the drawing module.
35  *
36  * @kit ArkGraphics2D
37  * @library libnative_drawing.so
38  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
39  * @since 11
40  * @version 1.0
41  */
42 
43 #include "drawing_error_code.h"
44 #include "drawing_types.h"
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 /**
51  * @brief Creates an <b>OH_Drawing_Font</b> object.
52  *
53  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
54  * @return Returns the pointer to the <b>OH_Drawing_Font</b> object created.
55  * @since 11
56  * @version 1.0
57  */
58 OH_Drawing_Font* OH_Drawing_FontCreate(void);
59 
60 /**
61  * @brief Enumerates font hinting pattern.
62  *
63  * @since 12
64  * @version 1.0
65  */
66 typedef enum {
67     /** glyph outlines unchanged */
68     FONT_HINTING_NONE,
69     /** minimal modification to improve contrast */
70     FONT_HINTING_SLIGHT,
71     /** glyph outlines modified to improve contrast */
72     FONT_HINTING_NORMAL,
73     /** modifies glyph outlines for maximum contrast */
74     FONT_HINTING_FULL,
75 } OH_Drawing_FontHinting;
76 
77 /**
78  * @brief Enumerates font edging effect.
79  *
80  * @since 12
81  * @version 1.0
82  */
83 typedef enum {
84     /** no transparent pixels on glyph edges */
85     FONT_EDGING_ALIAS,
86     /** may have transparent pixels on glyph edges */
87     FONT_EDGING_ANTI_ALIAS,
88     /** glyph positioned in pixel using transparency */
89     FONT_EDGING_SUBPIXEL_ANTI_ALIAS,
90 } OH_Drawing_FontEdging;
91 
92 /**
93  * @brief Sets whether the font baselines and pixels alignment when the transformation matrix is ​​axis aligned.
94  *
95  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
96  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
97  * @param baselineSnap Indicates whether the font baselines and pixels alignment.
98  * @since 12
99  * @version 1.0
100  */
101 void OH_Drawing_FontSetBaselineSnap(OH_Drawing_Font*, bool baselineSnap);
102 
103 /**
104  * @brief Gets whether the font baselines and pixels alignment when the transformation matrix is ​​axis aligned.
105  *
106  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
107  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
108  * @return Returns <b>true</b> if the font baselines and pixels alignment; returns <b>false</b> otherwise.
109  * @since 12
110  * @version 1.0
111  */
112 bool OH_Drawing_FontIsBaselineSnap(const OH_Drawing_Font*);
113 
114 /**
115  * @brief Sets whether the font uses sub-pixel rendering.
116  *
117  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
118  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
119  * @param isSubpixel Indicates whether the font uses sub-pixel rendering.
120  * @since 12
121  * @version 1.0
122  */
123 void OH_Drawing_FontSetSubpixel(OH_Drawing_Font*, bool isSubpixel);
124 
125 /**
126  * @brief Gets whether the font uses sub-pixel rendering.
127  *
128  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
129  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
130  * @return Returns <b>true</b> if the font uses sub-pixel rendering; returns <b>false</b> otherwise.
131  * @since 12
132  * @version 1.0
133  */
134 bool OH_Drawing_FontIsSubpixel(const OH_Drawing_Font*);
135 
136 /**
137  * @brief Sets whether the font outline is automatically adjusted.
138  *
139  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
140  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
141  * @param isForceAutoHinting Indicates whether the font outline is automatically adjusted.
142  * @since 12
143  * @version 1.0
144  */
145 void OH_Drawing_FontSetForceAutoHinting(OH_Drawing_Font*, bool isForceAutoHinting);
146 
147 /**
148  * @brief Gets whether the font outline is automatically adjusted.
149  *
150  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
151  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
152  * @return Returns <b>true</b> if the font outline is automatically adjusted; returns <b>false</b> otherwise.
153  * @since 12
154  * @version 1.0
155  */
156 bool OH_Drawing_FontIsForceAutoHinting(const OH_Drawing_Font*);
157 
158 /**
159  * @brief Sets an <b>OH_Drawing_Typeface</b> object for an <b>OH_Drawing_Font</b> object.
160  *
161  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
162  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
163  * @param OH_Drawing_Typeface Indicates the pointer to an <b>OH_Drawing_Typeface</b> object.
164  * @since 11
165  * @version 1.0
166  */
167 void OH_Drawing_FontSetTypeface(OH_Drawing_Font*, OH_Drawing_Typeface*);
168 
169 /**
170  * @brief Gets an <b>OH_Drawing_Typeface</b> object from the <b>OH_Drawing_Typeface</b> object.
171  *
172  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
173  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
174  * @return OH_Drawing_Typeface Indicates the pointer to an <b>OH_Drawing_Typeface</b> object.
175  * @since 12
176  * @version 1.0
177  */
178 OH_Drawing_Typeface* OH_Drawing_FontGetTypeface(OH_Drawing_Font*);
179 
180 /**
181  * @brief Sets text size for an <b>OH_Drawing_Font</b> object.
182  *
183  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
184  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
185  * @param textSize Indicates the text size.
186  * @since 11
187  * @version 1.0
188  */
189 void OH_Drawing_FontSetTextSize(OH_Drawing_Font*, float textSize);
190 
191 /**
192  * @brief Gets text size for an <b>OH_Drawing_Font</b> object.
193  *
194  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
195  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
196  * @return Returns the size of text.
197  * @since 12
198  * @version 1.0
199  */
200 float OH_Drawing_FontGetTextSize(const OH_Drawing_Font*);
201 
202 /**
203  * @brief Calculate number of glyphs represented by text.
204  *
205  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
206  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
207  * @param text Indicates the character storage encoded with text encoding.
208  * @param byteLength Indicates the text length in bytes.
209  * @param encoding Indicates the text encoding.
210  * @since 12
211  * @version 1.0
212  */
213 int OH_Drawing_FontCountText(OH_Drawing_Font*, const void* text, size_t byteLength,
214     OH_Drawing_TextEncoding encoding);
215 
216 /**
217  * @brief Converts text into glyph indices.
218  *
219  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
220  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
221  * @param text Indicates the character storage encoded with text encoding.
222  * @param byteLength Indicates the text length in bytes.
223  * @param encoding Indicates the text encoding.
224  * @param glyphs Indicates the storage for glyph indices.
225  * @param maxGlyphCount Indicates the storage capacity.
226  * @return Returns the number of glyph indices represented by text.
227  * @since 12
228  * @version 1.0
229  */
230 uint32_t OH_Drawing_FontTextToGlyphs(const OH_Drawing_Font*, const void* text, uint32_t byteLength,
231     OH_Drawing_TextEncoding encoding, uint16_t* glyphs, int maxGlyphCount);
232 
233 /**
234  * @brief Retrieves the advance for each glyph in glyphs.
235  *
236  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
237  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
238  * @param glyphs Indicates the array of glyph indices to be measured.
239  * @param count Indicates the number of glyphs.
240  * @param widths Indicates the text advances for each glyph returned to the caller.
241  * @since 12
242  * @version 1.0
243  */
244 void OH_Drawing_FontGetWidths(const OH_Drawing_Font*, const uint16_t* glyphs, int count, float* widths);
245 
246 /**
247  * @brief Measures the width of a single character.
248  *
249  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
250  * @param font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
251  * @param str Indicates the single character encoded in UTF-8.
252  * @param textWidth Indicates the width of the single character.
253  * @return Returns the error code.
254  *         Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
255  *         Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, str
256  *                 and textWidth is nullptr or strlen(str) is 0.
257  * @since 12
258  * @version 1.0
259  */
260 OH_Drawing_ErrorCode OH_Drawing_FontMeasureSingleCharacter(const OH_Drawing_Font* font, const char* str,
261     float* textWidth);
262 
263 /**
264  * @brief Measures the width of text.
265  *
266  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
267  * @param font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
268  * @param text Indicates the character storage encoded with text encoding.
269  * @param byteLength Indicates the text length in bytes.
270  * @param encoding Indicates the text encoding.
271  * @param bounds Gets the bounding box relative to (0, 0) if not nullptr.
272  * @param textWidth Indicates the width of text.
273  * @return Returns the error code.
274  *         Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
275  *         Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, text
276  *                 and textWidth is nullptr or byteLength is 0.
277  * @since 12
278  * @version 1.0
279  */
280 OH_Drawing_ErrorCode OH_Drawing_FontMeasureText(const OH_Drawing_Font* font, const void* text, size_t byteLength,
281     OH_Drawing_TextEncoding encoding, OH_Drawing_Rect* bounds, float* textWidth);
282 
283 /**
284  * @brief Enables or disables linearly scalable font for an <b>OH_Drawing_Font</b> object.
285  *
286  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
287  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
288  * @param isLinearText Indicates whether to enable linearly scalable font.
289  * @since 11
290  * @version 1.0
291  */
292 void OH_Drawing_FontSetLinearText(OH_Drawing_Font*, bool isLinearText);
293 
294 /**
295  * @brief Gets whether the font is linearly scalable.
296  *
297  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
298  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
299  * @return Returns <b>true</b> if the font is linearly scalable; returns <b>false</b> otherwise.
300  * @since 12
301  * @version 1.0
302  */
303 bool OH_Drawing_FontIsLinearText(const OH_Drawing_Font*);
304 
305 /**
306  * @brief Sets text skew on x-axis for an <b>OH_Drawing_Font</b> object.
307  *
308  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
309  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
310  * @param skewX Indicates the additional shear on x-axis relative to y-axis.
311  * @since 11
312  * @version 1.0
313  */
314 void OH_Drawing_FontSetTextSkewX(OH_Drawing_Font*, float skewX);
315 
316 /**
317  * @brief Gets text skew on x-axis for an <b>OH_Drawing_Font</b> object.
318  *
319  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
320  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
321  * @return Returns additional skew on x-axis relative to y-axis.
322  * @since 12
323  * @version 1.0
324  */
325 float OH_Drawing_FontGetTextSkewX(const OH_Drawing_Font*);
326 
327 /**
328  * @brief Enables or disables to increase stroke width to approximate bold fonts for an <b>OH_Drawing_Font</b> object.
329  *
330  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
331  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
332  * @param isFakeBoldText Indicates whether to enable to increase stroke width.
333  * @since 11
334  * @version 1.0
335  */
336 void OH_Drawing_FontSetFakeBoldText(OH_Drawing_Font*, bool isFakeBoldText);
337 
338 /**
339  * @brief Gets whether to increase the stroke width to approximate bold fonts.
340  *
341  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
342  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
343  * @return Returns <b>true</b> to increase the stroke width to approximate bold fonts; returns <b>false</b> otherwise.
344  * @since 12
345  * @version 1.0
346  */
347 bool OH_Drawing_FontIsFakeBoldText(const OH_Drawing_Font*);
348 
349 /**
350  * @brief Sets text scale on x-axis for an <b>OH_Drawing_Font</b> object.
351  *
352  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
353  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
354  * @param scaleX Indicates the text horizontal scale.
355  * @since 12
356  * @version 1.0
357  */
358 void OH_Drawing_FontSetScaleX(OH_Drawing_Font*, float scaleX);
359 
360 /**
361  * @brief Gets text scale on x-axis from an <b>OH_Drawing_Font</b> object.
362  *
363  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
364  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
365  * @return Returns text horizontal scale on x-axis.
366  * @since 12
367  * @version 1.0
368  */
369 float OH_Drawing_FontGetScaleX(const OH_Drawing_Font*);
370 
371 /**
372  * @brief Sets hinting pattern for an <b>OH_Drawing_Font</b> object.
373  *
374  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
375  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
376  * @param OH_Drawing_FontHinting Indicates the font hinting pattern.
377  * @since 12
378  * @version 1.0
379  */
380 void OH_Drawing_FontSetHinting(OH_Drawing_Font*, OH_Drawing_FontHinting);
381 
382 /**
383  * @brief Gets hinting pattern from an <b>OH_Drawing_Font</b> object.
384  *
385  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
386  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
387  * @return Returns the font hinting pattern.
388  * @since 12
389  * @version 1.0
390  */
391 OH_Drawing_FontHinting OH_Drawing_FontGetHinting(const OH_Drawing_Font*);
392 
393 /**
394  * @brief Sets whether to use bitmaps instead of outlines in the <b>OH_Drawing_Font</b> object.
395  *
396  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
397  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
398  * @param isEmbeddedBitmaps Indicates whether to use bitmaps instead of outlines.
399  * @since 12
400  * @version 1.0
401  */
402 void OH_Drawing_FontSetEmbeddedBitmaps(OH_Drawing_Font*, bool isEmbeddedBitmaps);
403 
404 /**
405  * @brief Gets whether to use bitmaps instead of outlines in the <b>OH_Drawing_Font</b> object.
406  *
407  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
408  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
409  * @return Returns <b>true</b> if using bitmaps instead of outlines; returns <b>false</b> otherwise.
410  * @since 12
411  * @version 1.0
412  */
413 bool OH_Drawing_FontIsEmbeddedBitmaps(const OH_Drawing_Font*);
414 
415 /**
416  * @brief Sets the font edging effect for an <b>OH_Drawing_Font</b> object.
417  *
418  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
419  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
420  * @param OH_Drawing_FontEdging Indicates the font edging effect.
421  * @since 12
422  * @version 1.0
423  */
424 void OH_Drawing_FontSetEdging(OH_Drawing_Font*, OH_Drawing_FontEdging);
425 
426 /**
427  * @brief Gets the font edging effect from an <b>OH_Drawing_Font</b> object.
428  *
429  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
430  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
431  * @return Returns the font edging effect.
432  * @since 12
433  * @version 1.0
434  */
435 OH_Drawing_FontEdging OH_Drawing_FontGetEdging(const OH_Drawing_Font*);
436 
437 /**
438  * @brief Destroys an <b>OH_Drawing_Font</b> object and reclaims the memory occupied by the object.
439  *
440  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
441  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
442  * @since 11
443  * @version 1.0
444  */
445 void OH_Drawing_FontDestroy(OH_Drawing_Font*);
446 
447 /**
448  * @brief Defines a run, supplies storage for the metrics of an <b>OH_Drawing_Font</b>.
449  *
450  * @since 12
451  * @version 1.0
452  */
453 typedef struct OH_Drawing_Font_Metrics {
454     /** Indicating which metrics are valid */
455     uint32_t flags;
456     /** storage for top in font metrics */
457     float top;
458     /** storage for ascent in font metrics */
459     float ascent;
460     /** storage for descent in font metrics */
461     float descent;
462     /** storage for bottom in font metrics */
463     float bottom;
464     /** storage for leading in font metrics */
465     float leading;
466     /**  Average character width, zero if unknown */
467     float avgCharWidth;
468     /** Maximum character width, zero if unknown */
469     float maxCharWidth;
470     /** Greatest extent to left of origin of any glyph bounding box, typically negative; deprecated with variable fonts */
471     float xMin;
472     /** Greatest extent to right of origin of any glyph bounding box, typically positive; deprecated with variable fonts */
473     float xMax;
474     /** Height of lower-case letter, zero if unknown, typically negative */
475     float xHeight;
476     /** Height of an upper-case letter, zero if unknown, typically negative */
477     float capHeight;
478     /** @brief Underline thickness */
479     float underlineThickness;
480     /** Distance from baseline to top of stroke, typically positive */
481     float underlinePosition;
482     /** Strikeout thickness */
483     float strikeoutThickness;
484     /** Distance from baseline to bottom of stroke, typically negative */
485     float strikeoutPosition;
486 } OH_Drawing_Font_Metrics;
487 
488 /**
489  * @brief Obtains the metrics of a font.
490  *
491  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
492  * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
493  * @param OH_Drawing_Font_Metrics Indicates the pointer to an <b>OH_Drawing_Font_Metrics</b> object.
494  * @return Returns a float variable that recommended spacing between lines.
495  * @since 12
496  * @version 1.0
497  */
498 float OH_Drawing_FontGetMetrics(OH_Drawing_Font*, OH_Drawing_Font_Metrics*);
499 
500 /**
501  * @brief Retrieves the bound rect for each glyph in glyph array.
502  *
503  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
504  * @param font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
505  * @param glyphs Indicates the array of glyph indices to be measured.
506  * @param count Indicates the number of glyphs.
507  * @param bounds The bound rect array for each glyph, returned to the caller.
508  * @return Returns the error code.
509  *         Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
510  *         Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, glyphs
511  *                 and bounds is nullptr or count is 0.
512  * @since 14
513  * @version 1.0
514  */
515 OH_Drawing_ErrorCode OH_Drawing_FontGetBounds(const OH_Drawing_Font* font, const uint16_t* glyphs, uint32_t count,
516     OH_Drawing_Array* bounds);
517 
518 /**
519  * @brief Retrieves the path for specified Glyph.
520  *
521  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
522  * @param font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
523  * @param glyph glyph index to be obtained.
524  * @param path The path object, returned to the caller.
525  * @return Returns the error code.
526  *         Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
527  *         Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, path
528  *                 is nullptr or glyph not exist.
529  * @since 14
530  * @version 1.0
531  */
532 OH_Drawing_ErrorCode OH_Drawing_FontGetPathForGlyph(const OH_Drawing_Font* font, uint16_t glyph,
533     OH_Drawing_Path* path);
534 
535 /**
536  * @brief Get the text outline path.
537  *
538  * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
539  * @param font Indicates the pointer to an <b>OH_Drawing_Font</b> object.
540  * @param text Indicates the character storage encoded with text encoding.
541  * @param byteLength Indicates the text length in bytes.
542  * @param encoding <b>OH_Drawing_TextEncoding</b> Indicates the text encoding.
543  * @param x Indicates x coordinates of the text.
544  * @param y Indicates y coordinates of the text.
545  * @param path <b>OH_Drawing_Path</b> The path object, returned to the caller.
546  * @return Returns the error code.
547  *         Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
548  *         Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, text or path is nullptr.
549  * @since 14
550  */
551 OH_Drawing_ErrorCode OH_Drawing_FontGetTextPath(const OH_Drawing_Font* font, const void* text, size_t byteLength,
552     OH_Drawing_TextEncoding encoding, float x, float y, OH_Drawing_Path* path);
553 
554 #ifdef __cplusplus
555 }
556 #endif
557 /** @} */
558 #endif
559