已合并
fontDescriptor接口支持可变字体信息 #3157
fontDescriptor接口支持可变字体信息 #3157
已合并
wanxiajing创建于 3月2日
共 2 个文件变更+220-0
@@ -165,6 +165,22 @@ typedef struct OH_Drawing_Run OH_Drawing_Run;
165 */165 */
166typedef struct OH_Drawing_FontFullDescriptor OH_Drawing_FontFullDescriptor;166typedef struct OH_Drawing_FontFullDescriptor OH_Drawing_FontFullDescriptor;
167 167 
168+/**
169+* @brief 用于描述字体可变轴。
葛亚芳
葛亚芳葛亚芳3月20日

字体可变轴是啥?干啥的?有啥用,话说全

likedislike
wanxiajing
wanxiajing
3月23日 评论:
170+*
171+* @since 24
172+* @version 1.0
173+*/
174+typedef struct OH_Drawing_FontVariationAxis OH_Drawing_FontVariationAxis;
175+ 
176+/**
177+* @brief 用于描述字体可变实例,存放预设的可变字体样式信息。
178+*
179+* @since 24
180+* @version 1.0
181+*/
182+typedef struct OH_Drawing_FontVariationInstance OH_Drawing_FontVariationInstance;
183+ 
168#ifdef __cplusplus184#ifdef __cplusplus
169}185}
170#endif186#endif
@@ -141,6 +141,16 @@ typedef enum {
141 * @since 23141 * @since 23
142 */142 */
143 FULL_DESCRIPTOR_ATTR_S_LICENSE = 18,143 FULL_DESCRIPTOR_ATTR_S_LICENSE = 18,
144+ /**
李珍
李珍李珍3月18日

image.png

这个文件怎么没写

likedislike
wanxiajing
wanxiajing
3月19日 评论:
145+ * @brief 字体可变轴数组。
146+ * @since 24
147+ */
148+ FULL_DESCRIPTOR_ATTR_O_VARIATION_AXIS = 19,
wangxiaolong
wangxiaolongwangxiaolong3月16日

统一下名称

likedislike
wanxiajing
wanxiajing
3月18日 评论:
149+ /**
150+ * @brief 字体可变实例数组。
151+ * @since 24
152+ */
153+ FULL_DESCRIPTOR_ATTR_O_VARIATION_INSTANCE = 20,
144 /**154 /**
145 * @brief 字体索引。155 * @brief 字体索引。
146 * @since 23156 * @since 23
@@ -148,6 +158,52 @@ typedef enum {
148 FULL_DESCRIPTOR_ATTR_I_INDEX = 21,158 FULL_DESCRIPTOR_ATTR_I_INDEX = 21,
149} OH_Drawing_FontFullDescriptorAttributeId;159} OH_Drawing_FontFullDescriptorAttributeId;
150 160 
161+/**
162+ * @brief 字体可变轴属性的枚举。
163+ *
164+ * @since 24
165+ */
166+typedef enum {
167+ /** 字体可变轴的关键字标识。 */
168+ FONT_VARIATION_AXIS_ATTR_S_KEY = 0,
169+ /** 字体可变轴的最小值。 */
170+ FONT_VARIATION_AXIS_ATTR_D_MIN_VALUE = 1,
171+ /** 字体可变轴的最大值。 */
172+ FONT_VARIATION_AXIS_ATTR_D_MAX_VALUE = 2,
173+ /** 字体可变轴的默认值。 */
174+ FONT_VARIATION_AXIS_ATTR_D_DEFAULT_VALUE = 3,
175+ /** 字体可变轴的标志位。值为0时表示该轴对用户可见,值为1时表示该轴应隐藏。 */
176+ FONT_VARIATION_AXIS_ATTR_I_FLAGS = 4,
葛亚芳
葛亚芳葛亚芳3月23日

标志位在ArkTS侧看写了为0或者1,那么0和1分别代表啥含义?

likedislike
177+ /** 字体可变轴的英文名称。 */
178+ FONT_VARIATION_AXIS_ATTR_S_NAME = 5,
葛亚芳
葛亚芳葛亚芳3月20日
  1. FONT_VARIATION_AXIS_ATTR_S_NAME --- 名称?还是英文名称?

  2. 同ArkTS侧一样,有些能明确取值范围的、边界值的等等信息,该提供的提供,不要让开发者猜和试

image.png

不再一一批注

likedislike
wanxiajing
wanxiajing
3月23日 评论:
179+ /** 字体可变轴的本地化名称。 */
180+ FONT_VARIATION_AXIS_ATTR_S_LOCAL_NAME = 6,
181+} OH_Drawing_FontVariationAxisAttributeId;
182+ 
183+/**
184+ * @brief 字体可变实例属性的枚举。
185+ *
186+ * @since 24
187+ */
188+typedef enum {
189+ /** 字体可变实例的英文名称。 */
190+ FONT_VARIATION_INSTANCE_ATTR_S_NAME = 0,
191+ /** 字体可变实例的本地化名称。 */
192+ FONT_VARIATION_INSTANCE_ATTR_S_LOCAL_NAME = 1,
193+} OH_Drawing_FontVariationInstanceAttributeId;
194+ 
195+/**
196+ * @brief 可变字体属性键值对。
197+ *
198+ * @since 24
199+ */
200+typedef struct {
201+ /** 可变字体属性键值对中的关键字标识的字符串。 */
202+ char* axisKey;
203+ /** 可变字体属性键值对的值。 */
204+ double value;
205+} OH_Drawing_FontVariationInstanceCoordinate;
206+ 
151/**207/**
152 * @brief 获取与指定字体描述符匹配的所有系统字体描述符,其中{@link OH_Drawing_FontDescriptor}的path字段不作为有效的匹配字段,其余字段不是默认值时生效。\n208 * @brief 获取与指定字体描述符匹配的所有系统字体描述符,其中{@link OH_Drawing_FontDescriptor}的path字段不作为有效的匹配字段,其余字段不是默认值时生效。\n
153 * 如果参数desc的所有字段都是默认值,则获取所有系统字体描述符。\n209 * 如果参数desc的所有字段都是默认值,则获取所有系统字体描述符。\n
@@ -313,6 +369,154 @@ OH_Drawing_ErrorCode OH_Drawing_GetFontFullDescriptorAttributeBool(const OH_Draw
313OH_Drawing_ErrorCode OH_Drawing_GetFontFullDescriptorAttributeString(const OH_Drawing_FontFullDescriptor* descriptor,369OH_Drawing_ErrorCode OH_Drawing_GetFontFullDescriptorAttributeString(const OH_Drawing_FontFullDescriptor* descriptor,
314 OH_Drawing_FontFullDescriptorAttributeId id, OH_Drawing_String* str);370 OH_Drawing_FontFullDescriptorAttributeId id, OH_Drawing_String* str);
315 371 
372+/**
373+ * @brief 获取字体描述符的对象数组属性。
374+ *
375+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
376+ * @param descriptor 指向字体描述符对象{@link OH_Drawing_FontFullDescriptor}的指针。
377+ * @param id 字体描述符属性id。从{@link OH_Drawing_FontFullDescriptorAttributeId}中可获取字体描述符属性。
378+ * @return 返回对象数组。
379+ * @since 24
380+ */
381+OH_Drawing_Array* OH_Drawing_GetFontFullDescriptorAttributeArray(const OH_Drawing_FontFullDescriptor* descriptor,
382+ OH_Drawing_FontFullDescriptorAttributeId id);
383+ 
384+/**
385+ * @brief 在字体可变轴数组中通过索引获取对应的字体可变轴。
386+ *
387+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
388+ * @param array 指向字体可变轴数组{@link OH_Drawing_Array}的指针。
389+ * @param index 数组的索引,索引值从0开始。
390+ * @return 返回指向指定索引处字体可变轴对象{@link OH_Drawing_FontVariationAxis}的指针。\n
391+ * 如果索引超出范围或数组无效,则返回NULL。
392+ * @since 24
393+ */
394+OH_Drawing_FontVariationAxis* OH_Drawing_GetFontVariationAxisByIndex(OH_Drawing_Array* array, size_t index);
395+ 
396+/**
397+ * @brief 释放字体可变轴数组占用的内存。
398+ *
399+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
400+ * @param fontVariaAxisArray 指向字体可变轴数组对象{@link OH_Drawing_Array}的指针。
401+ * @since 24
402+ */
403+void OH_Drawing_DestroyFontVariationAxis(OH_Drawing_Array* fontVariaAxisArray);
404+ 
405+/**
406+ * @brief 获取double类型字体可变轴的属性。
407+ *
408+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
409+ * @param variationAxis 指向字体可变轴对象{@link OH_Drawing_FontVariationAxis}的指针。
410+ * @param id 字体可变轴属性id。从{@link OH_Drawing_FontVariationAxisAttributeId}中可获取字体可变轴的属性。
411+ * @param value 指向double类型属性的指针。作为出参使用。
412+ * @return 函数执行结果。\n
413+ * 返回OH_DRAWING_SUCCESS,表示执行成功。\n
414+ * 返回OH_DRAWING_ERROR_INCORRECT_PARAMETER,表示参数variationAxis或者value为空指针。\n
415+ * 返回OH_DRAWING_ERROR_ATTRIBUTE_ID_MISMATCH,表示传入属性id与调用函数不匹配。
416+ * @since 24
417+ */
418+OH_Drawing_ErrorCode OH_Drawing_GetFontVariationAxisAttributeDouble(OH_Drawing_FontVariationAxis* variationAxis,
419+ OH_Drawing_FontVariationAxisAttributeId id, double *value);
420+ 
421+/**
422+ * @brief 获取int类型字体可变轴的属性。
423+ *
424+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
425+ * @param variationAxis 指向字体可变轴对象{@link OH_Drawing_FontVariationAxis}的指针。
426+ * @param id 字体可变轴属性id。从{@link OH_Drawing_FontVariationAxisAttributeId}中可获取字体可变轴的属性。
427+ * @param value 指向int类型属性的指针。作为出参使用。
428+ * @return 函数执行结果。\n
429+ * 返回OH_DRAWING_SUCCESS,表示执行成功。\n
430+ * 返回OH_DRAWING_ERROR_INCORRECT_PARAMETER,表示参数variationAxis或者value为空指针。\n
431+ * 返回OH_DRAWING_ERROR_ATTRIBUTE_ID_MISMATCH,表示传入属性id与调用函数不匹配。
432+ * @since 24
433+ */
434+OH_Drawing_ErrorCode OH_Drawing_GetFontVariationAxisAttributeInt(OH_Drawing_FontVariationAxis* variationAxis,
435+ OH_Drawing_FontVariationAxisAttributeId id, int *value);
436+ 
437+/**
438+ * @brief 获取{@link OH_Drawing_String}类型字体可变轴的属性。
439+ *
440+ * @note 如果不再需要OH_Drawing_String时,调用方需要手动释放OH_Drawing_String结构体内部的strData成员。
441+ *
442+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
443+ * @param variationAxis 指向字体可变轴对象{@link OH_Drawing_FontVariationAxis}的指针。
444+ * @param id 字体可变轴属性id。从{@link OH_Drawing_FontVariationAxisAttributeId}中可获取字体可变轴的属性。
445+ * @param str 指向OH_Drawing_String类型属性的指针。作为出参使用。
446+ * @return 函数执行结果。\n
447+ * 返回OH_DRAWING_SUCCESS,表示执行成功。\n
448+ * 返回OH_DRAWING_ERROR_INCORRECT_PARAMETER,表示参数variationAxis或者str为空指针。\n
449+ * 返回OH_DRAWING_ERROR_ATTRIBUTE_ID_MISMATCH,表示传入属性id与调用函数不匹配。
450+ * @since 24
451+ */
452+OH_Drawing_ErrorCode OH_Drawing_GetFontVariationAxisAttributeStr(OH_Drawing_FontVariationAxis* variationAxis,
453+ OH_Drawing_FontVariationAxisAttributeId id, OH_Drawing_String *str);
454+ 
455+/**
456+ * @brief 在字体可变实例数组中通过索引获取对应的字体可变实例。
457+ *
458+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
459+ * @param array 指向字体可变实例数组{@link OH_Drawing_Array}的指针。
460+ * @param index 数组的索引,索引值从0开始。
461+ * @return 返回指向指定索引处字体可变实例对象{@link OH_Drawing_FontVariationInstance}的指针。\n
462+ * 如果索引超出范围或数组无效,则返回NULL。
463+ * @since 24
464+ */
465+OH_Drawing_FontVariationInstance* OH_Drawing_GetFontVariationInstanceByIndex(OH_Drawing_Array* array, size_t index);
466+ 
467+/**
468+ * @brief 释放字体可变实例数组占用的内存。
469+ *
470+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
471+ * @param fontVariaAxisInstance 指向字体可变实例数组对象{@link OH_Drawing_Array}的指针。
472+ * @since 24
473+ */
474+void OH_Drawing_DestroyFontVariationInstance(OH_Drawing_Array* fontVariaAxisInstance);
475+ 
476+/**
477+ * @brief 获取{@link OH_Drawing_String}类型字体可变实例的属性。
478+ *
479+ * @note 如果不再需要OH_Drawing_String时,调用方需要手动释放OH_Drawing_String结构体内部的strData成员。
480+ *
481+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
482+ * @param variationInstance 指向字体可变实例对象{@link OH_Drawing_FontVariationInstance}的指针。
483+ * @param id 字体可变实例属性id。从{@link OH_Drawing_FontVariationInstanceAttributeId}中可获取字体可变实例属性。
484+ * @param str 指向OH_Drawing_String类型属性的指针。作为出参使用。
485+ * @return 函数执行结果。\n
486+ * 返回OH_DRAWING_SUCCESS,表示执行成功。\n
487+ * 返回OH_DRAWING_ERROR_INCORRECT_PARAMETER,表示参数variationInstance或者str为空指针。\n
488+ * 返回OH_DRAWING_ERROR_ATTRIBUTE_ID_MISMATCH,表示传入属性id与调用函数不匹配。
489+ * @since 24
490+ */
491+OH_Drawing_ErrorCode OH_Drawing_GetFontVariationInstanceAttributeStr(
492+ OH_Drawing_FontVariationInstance* variationInstance,
493+ OH_Drawing_FontVariationInstanceAttributeId id,
494+ OH_Drawing_String* str);
495+ 
496+/**
497+ * @brief 获取字体可变实例的可变字体属性对象。
498+ *
499+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
500+ * @param variationInstance 指向字体可变实例的指针。
501+ * @param arrayLength 指向OH_Drawing_FontVariationInstanceCoordinate列表长度的指针。
502+ * @return 返回指向可变字体属性列表的指针。
503+ * @since 24
504+ */
505+OH_Drawing_FontVariationInstanceCoordinate* OH_Drawing_GetFontVariationInstanceCoordinate(
506+ OH_Drawing_FontVariationInstance* variationInstance, size_t* arrayLength);
507+ 
508+/**
509+ * @brief 根据字体名称和字体类型获取字体完整描述符对象。
510+ *
511+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
512+ * @param fullName 指向字体名称对象{@link OH_Drawing_String}的指针。
513+ * @param fontType 系统字体类型对象{@link OH_Drawing_SystemFontType}的枚举值。
514+ * @return 返回指向字体完整描述符对象{@link OH_Drawing_FontFullDescriptor}的指针。不再需要OH_Drawing_FontFullDescriptor时,请使用{@link OH_Drawing_DestroyFontFullDescriptor}接口释放该对象的指针。
515+ * @since 24
516+ */
517+const OH_Drawing_FontFullDescriptor* OH_Drawing_GetFontFullDescriptorByFullName(const OH_Drawing_String* fullName,
518+ OH_Drawing_SystemFontType fontType);
519+ 
316/**520/**
317 * @brief 从字体文件中获取unicode码。521 * @brief 从字体文件中获取unicode码。
318 *522 *