已合并
fontDescriptor接口支持可变字体信息 #3157
wanxiajing创建于 3月2日
fontDescriptor接口支持可变字体信息 #3157
已合并
共 2 个文件变更+220-0
| @@ -165,6 +165,22 @@ typedef struct OH_Drawing_Run OH_Drawing_Run; | |||
| 165 | */ | 165 | */ |
| 166 | typedef struct OH_Drawing_FontFullDescriptor OH_Drawing_FontFullDescriptor; | 166 | typedef struct OH_Drawing_FontFullDescriptor OH_Drawing_FontFullDescriptor; |
| 167 | 167 | ||
| 168 | +/** | ||
| 169 | +* @brief 用于描述字体可变轴。 | ||
| 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 __cplusplus | 184 | #ifdef __cplusplus |
| 169 | } | 185 | } |
| 170 | #endif | 186 | #endif |
| @@ -141,6 +141,16 @@ typedef enum { | |||
| 141 | * @since 23 | 141 | * @since 23 |
| 142 | */ | 142 | */ |
| 143 | FULL_DESCRIPTOR_ATTR_S_LICENSE = 18, | 143 | FULL_DESCRIPTOR_ATTR_S_LICENSE = 18, |
| 144 | + /** | ||
这个文件怎么没写 ![]() ![]() | |||
| 145 | + * @brief 字体可变轴数组。 | ||
| 146 | + * @since 24 | ||
| 147 | + */ | ||
| 148 | + FULL_DESCRIPTOR_ATTR_O_VARIATION_AXIS = 19, | ||
统一下名称 ![]() ![]() | |||
| 149 | + /** | ||
| 150 | + * @brief 字体可变实例数组。 | ||
| 151 | + * @since 24 | ||
| 152 | + */ | ||
| 153 | + FULL_DESCRIPTOR_ATTR_O_VARIATION_INSTANCE = 20, | ||
| 144 | /** | 154 | /** |
| 145 | * @brief 字体索引。 | 155 | * @brief 字体索引。 |
| 146 | * @since 23 | 156 | * @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, | ||
标志位在ArkTS侧看写了为0或者1,那么0和1分别代表啥含义? ![]() ![]() | |||
| 177 | + /** 字体可变轴的英文名称。 */ | ||
| 178 | + FONT_VARIATION_AXIS_ATTR_S_NAME = 5, | ||
不再一一批注 ![]() ![]() | |||
| 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字段不作为有效的匹配字段,其余字段不是默认值时生效。\n | 208 | * @brief 获取与指定字体描述符匹配的所有系统字体描述符,其中{@link OH_Drawing_FontDescriptor}的path字段不作为有效的匹配字段,其余字段不是默认值时生效。\n |
| 153 | * 如果参数desc的所有字段都是默认值,则获取所有系统字体描述符。\n | 209 | * 如果参数desc的所有字段都是默认值,则获取所有系统字体描述符。\n |
| @@ -313,6 +369,154 @@ OH_Drawing_ErrorCode OH_Drawing_GetFontFullDescriptorAttributeBool(const OH_Draw | |||
| 313 | OH_Drawing_ErrorCode OH_Drawing_GetFontFullDescriptorAttributeString(const OH_Drawing_FontFullDescriptor* descriptor, | 369 | OH_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 | * |




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