diff --git a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_canvas.h b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_canvas.h index 77d3c3e5a3145abf6fc8e8f59e7c8df9c47a8cab..e7299a195735a92ea4d470a1982711a473d7ed39 100644 --- a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_canvas.h +++ b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_canvas.h @@ -561,6 +561,25 @@ OH_Drawing_ErrorCode OH_Drawing_CanvasDrawNestedRoundRect(OH_Drawing_Canvas* can OH_Drawing_ErrorCode OH_Drawing_CanvasDrawSingleCharacter(OH_Drawing_Canvas* canvas, const char* str, const OH_Drawing_Font* font, float x, float y); +/** + * @brief 绘制单个字符,字符带有字体特征。当前字型中的字体不支持待绘制字符时,退化到使用系统字体绘制字符。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param canvas 指向画布对象{@link OH_Drawing_Canvas}的指针。 + * @param str 待绘制的单个字符。可以传入字符串,但只会以UTF-8编码解析并绘制字符串中的首个字符。 + * @param font 指向字型对象{@link OH_Drawing_Font}的指针。 + * @param x 字符对象基线左端点(靠近字符左下角)的横坐标。 + * @param y 字符对象基线左端点(靠近字符左下角)的纵坐标。 + * @param fontFeatures 指向字体特征容器对象{@link OH_Drawing_FontFeatures}的指针。 + * @return 函数返回执行错误码。\n + * 返回OH_DRAWING_SUCCESS,表示执行成功。\n + * 返回OH_DRAWING_ERROR_INVALID_PARAMETER,表示参数canvas、str、font、fontFeatures任意一个为NULL或者str的长度为0。 + * @since 20 + * @version 1.0 + */ +OH_Drawing_ErrorCode OH_Drawing_CanvasDrawSingleCharacterWithFeatures(OH_Drawing_Canvas* canvas, const char* str, + const OH_Drawing_Font* font, float x, float y, OH_Drawing_FontFeatures* fontFeatures); + /** * @brief 用于画一段文字。若构造OH_Drawing_TextBlob的字体不支持待绘制字符,则该部分字符无法绘制。\n * diff --git a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_font.h b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_font.h index 6a089bc68a64bdbd99d3af1cfde1f19b770ddcce..f7791c7b77d7cf44ddb1c0b2b314d506f9859c16 100644 --- a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_font.h +++ b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_font.h @@ -299,6 +299,23 @@ void OH_Drawing_FontGetWidths(const OH_Drawing_Font* font, const uint16_t* glyph OH_Drawing_ErrorCode OH_Drawing_FontMeasureSingleCharacter(const OH_Drawing_Font* font, const char* str, float* textWidth); +/** + * @brief 用于测量单个字符的宽度,字符带有字体特征。当前字型中的字体不支持待测量字符时,退化到使用系统字体测量字符宽度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param font 指向字型对象{@link OH_Drawing_Font}的指针。 + * @param str 待测量的单个字符。可以传入字符串,但只会以UTF-8编码解析并测量字符串中的首个字符。 + * @param fontFeatures 指向字体特征容器对象{@link OH_Drawing_FontFeatures}的指针。 + * @param textWidth 用于存储得到的字符宽度。 + * @return 函数返回执行错误码。\n + * 返回OH_DRAWING_SUCCESS,表示执行成功。\n + * 返回OH_DRAWING_ERROR_INVALID_PARAMETER,表示参数font、str、fontFeatures、textWidth任意一个为为空指针或者str的长度为0。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_ErrorCode OH_Drawing_FontMeasureSingleCharacterWithFeatures(const OH_Drawing_Font* font, const char* str, + const OH_Drawing_FontFeatures* fontFeatures, float* textWidth); + /** * @brief 用于获取文本的宽度和边界框。 * @@ -711,6 +728,46 @@ OH_Drawing_ErrorCode OH_Drawing_FontGetPathForGlyph(const OH_Drawing_Font* font, OH_Drawing_ErrorCode OH_Drawing_FontGetTextPath(const OH_Drawing_Font* font, const void* text, size_t byteLength, OH_Drawing_TextEncoding encoding, float x, float y, OH_Drawing_Path* path); +/** + * @brief 用于创建一个字体特征容器对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指向创建的字体特征容器对象{@link OH_Drawing_FontFeatures}。\n + * 如果返回的对象指针为空,则表示字体特征容器对象创建失败。失败的原因可能为:没有可用的内存。 + * @since 20 + * @version 1.0 + */ +OH_Drawing_FontFeatures* OH_Drawing_FontFeaturesCreate(void); + +/** + * @brief 向字体特征容器对象中添加一个字体特征。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param fontFeatures 指向字体特征容器对象{@link OH_Drawing_FontFeatures}的指针。 + * @param name 字体特征的名称。 + * @param value 字体特征的数值。 + * @return 函数返回执行错误码。\n + * 返回OH_DRAWING_SUCCESS,表示执行成功。\n + * 返回OH_DRAWING_ERROR_INVALID_PARAMETER,表示参数fontFeatures或name为空指针。 + * @since 20 + * @version 1.0 + */ +OH_Drawing_ErrorCode OH_Drawing_FontFeaturesAddFeature(OH_Drawing_FontFeatures* fontFeatures, + const char* name, float value); + +/** + * @brief 用于销毁字体特征容器对象并回收该对象占有的内存。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param fontFeatures 指向字体特征容器对象{@link OH_Drawing_FontFeatures}的指针。 + * @return 函数返回执行错误码。\n + * 返回OH_DRAWING_SUCCESS,表示执行成功。\n + * 返回OH_DRAWING_ERROR_INVALID_PARAMETER,表示参数fontFeatures为空指针。 + * @since 20 + * @version 1.0 + */ +OH_Drawing_ErrorCode OH_Drawing_FontFeaturesDestroy(OH_Drawing_FontFeatures* fontFeatures); + /** * @brief 设置字型中的字体是否跟随主题字体。设置跟随主题字体后,若系统启用主题字体并且字型未被设置字体,字型会使用该主题字体。 * diff --git a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_types.h b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_types.h index 3dcafe6e11cfa64e1bb507993b923fcc4ab6331c..25fcf7a4433e0d445e431e51d4c361a3ddaefc44 100644 --- a/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_types.h +++ b/zh-cn/native_sdk/graphic/graphic_2d/native_drawing/drawing_types.h @@ -237,6 +237,14 @@ typedef struct OH_Drawing_ColorFilter OH_Drawing_ColorFilter; */ typedef struct OH_Drawing_Font OH_Drawing_Font; +/** + * @brief 用于描述字体特征容器。字体特征是字体内置的排版规则,控制字形显示。例如:连字、替代字形、上下标等。 + * + * @since 20 + * @version 1.0 + */ +typedef struct OH_Drawing_FontFeatures OH_Drawing_FontFeatures; + /** * @brief 用于描述内存流。 *