1 /* 2 * Copyright (c) 2020-2022 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 GRAPHIC_LITE_UI_FONT_HEADER_H 17 #define GRAPHIC_LITE_UI_FONT_HEADER_H 18 19 #include <string> 20 #include "graphic_config.h" 21 #include "gfx_utils/common_macros.h" 22 namespace OHOS { 23 #pragma pack(1) 24 #define BIT_TO_BYTE(x) (((x) + 0x7) >> 3) 25 26 enum UITextWildcardStaticType : uint8_t { TEXT_STATIC_STR1 = 0, TEXT_STATIC_STR2, TEXT_STATIC_STR3 }; 27 28 struct UITextLanguageTextParam { 29 uint16_t textId; 30 uint16_t fontId; 31 uint8_t align : 2; // UITextLanguageAlignment 32 uint8_t direct : 1; // UITextLanguageDirect 33 uint8_t shaping : 1; 34 uint8_t wildCard1 : 1; 35 uint8_t wildCard2 : 1; 36 uint8_t reserve : 2; 37 uint32_t strOff1; 38 uint16_t strLen1; 39 uint16_t strLen2; 40 uint16_t strLen3; 41 uint32_t codePointsOff; 42 uint16_t codePointsLen; 43 }; // UITextLanguageTextParam 44 45 // bin header 46 constexpr uint8_t FONT_VERSION_OFFSET = 0; 47 constexpr uint8_t FONT_VERSION_LEN = 10; 48 constexpr uint8_t FONT_MAGIC_NUM_OFFSET = FONT_VERSION_OFFSET + FONT_VERSION_LEN; 49 constexpr uint8_t FONT_MAGIC_NUM_LEN = 6; 50 constexpr uint8_t FONT_NUMBER_OFFSET = FONT_MAGIC_NUM_OFFSET + FONT_MAGIC_NUM_LEN; 51 constexpr uint8_t FONT_NUMBER_LEN = 2; 52 constexpr uint8_t BIN_HEAD_RES_OFFSET = FONT_NUMBER_OFFSET + FONT_NUMBER_LEN; 53 constexpr uint8_t BIN_HEAD_RES_LEN = 2; 54 constexpr uint8_t FONT_DATA_OFFSET = BIN_HEAD_RES_OFFSET + BIN_HEAD_RES_LEN; 55 constexpr uint8_t BIN_HEAD_TOTAL_LEN = FONT_VERSION_LEN + FONT_MAGIC_NUM_LEN + FONT_NUMBER_LEN + BIN_HEAD_RES_LEN; 56 57 // font header 58 constexpr uint8_t FONT_ID_OFFSET = 0; 59 constexpr uint8_t FONT_ID_LEN = 1; 60 constexpr uint8_t GLYPH_NUM_OFFSET = FONT_ID_OFFSET + FONT_ID_LEN; 61 constexpr uint8_t GLYPH_NUM_LEN = 2; 62 constexpr uint8_t FONT_HEIGHT_OFFSET = GLYPH_NUM_OFFSET + GLYPH_NUM_LEN; 63 constexpr uint8_t FONT_HEIGHT_LEN = 2; 64 constexpr uint8_t FONT_ASCEND_OFFSET = FONT_HEIGHT_OFFSET + FONT_HEIGHT_LEN; 65 constexpr uint8_t FONT_ASCEND_LEN = 2; 66 constexpr uint8_t FONT_DESCEND_OFFSET = FONT_ASCEND_OFFSET + FONT_ASCEND_LEN; 67 constexpr uint8_t FONT_DESCEND_LEN = 2; 68 constexpr uint8_t FONT_INDEX_OFF_OFFSET = FONT_DESCEND_OFFSET + FONT_DESCEND_LEN; 69 constexpr uint8_t FONT_INDEX_OFF_LEN = 4; 70 constexpr uint8_t FONT_INDEX_LEN_OFFSET = FONT_INDEX_OFF_OFFSET + FONT_INDEX_OFF_LEN; 71 constexpr uint8_t FONT_INDEX_LEN_LEN = 4; 72 constexpr uint8_t GLYPH_OFF_OFFSET = FONT_INDEX_LEN_OFFSET + FONT_INDEX_LEN_LEN; 73 constexpr uint8_t GLYPH_OFF_LEN = 4; 74 constexpr uint8_t GLYPH_LEN_OFFSET = GLYPH_OFF_OFFSET + GLYPH_OFF_LEN; 75 constexpr uint8_t GLYPH_LEN_LEN = 4; 76 constexpr uint8_t FONT_HEAD_RES_OFFSET = GLYPH_LEN_OFFSET + GLYPH_LEN_LEN; 77 constexpr uint8_t FONT_HEAD_RES_LEN = 2; 78 constexpr uint8_t FONT_HEAD_TOTAL_LEN = FONT_ID_LEN + GLYPH_NUM_LEN + FONT_HEIGHT_LEN + FONT_ASCEND_LEN + 79 FONT_DESCEND_LEN + GLYPH_OFF_LEN + GLYPH_LEN_LEN + FONT_HEAD_RES_LEN; 80 81 // glyph header, internal using, not write to bin file 82 constexpr uint8_t FONT_G_HEIGHT_OFFSET = 0; 83 constexpr uint8_t FONT_G_HEIGHT_LEN = 2; 84 constexpr uint8_t GLYPH_G_NUM_OFFSET = FONT_G_HEIGHT_OFFSET + FONT_G_HEIGHT_LEN; 85 constexpr uint8_t GLYPH_G_NUM_LEN = 2; 86 constexpr uint8_t GLYPH_G_ASCEND_OFFSET = GLYPH_G_NUM_OFFSET + GLYPH_G_NUM_LEN; 87 constexpr uint8_t GLYPH_G_ASCEND_LEN = 2; 88 constexpr uint8_t GLYPH_G_DESCEND_OFFSET = GLYPH_G_ASCEND_OFFSET + GLYPH_G_ASCEND_LEN; 89 constexpr uint8_t GLYPH_G_DESCEND_LEN = 2; 90 constexpr uint8_t GLYPH_G_INDEX_OFF_OFFSET = GLYPH_G_DESCEND_OFFSET + GLYPH_G_DESCEND_LEN; 91 constexpr uint8_t GLYPH_G_INDEX_OFF_LEN = 4; 92 constexpr uint8_t GLYPH_G_INDEX_LEN_OFFSET = GLYPH_G_INDEX_OFF_OFFSET + GLYPH_G_INDEX_OFF_LEN; 93 constexpr uint8_t GLYPH_G_INDEX_LEN_LEN = 4; 94 constexpr uint8_t GLYPH_G_OFF_OFFSET = GLYPH_G_INDEX_LEN_OFFSET + GLYPH_G_INDEX_LEN_LEN; 95 constexpr uint8_t GLYPH_G_OFF_LEN = 4; 96 constexpr uint8_t GLYPH_G_LEN_OFFSET = GLYPH_G_OFF_OFFSET + GLYPH_G_OFF_LEN; 97 constexpr uint8_t GLYPH_G_LEN_LEN = 4; 98 constexpr uint8_t FONT_G_HEAD_TOTAL_LEN = 99 FONT_G_HEIGHT_LEN + GLYPH_G_NUM_LEN + GLYPH_G_ASCEND_LEN + GLYPH_G_DESCEND_LEN + GLYPH_G_OFF_LEN + GLYPH_G_LEN_LEN; 100 101 // glyph node 102 constexpr uint8_t GLYPH_UNICODE_OFFSET = GLYPH_G_NUM_OFFSET + GLYPH_G_NUM_LEN; 103 constexpr uint8_t GLYPH_UNICODE_LEN = 4; 104 constexpr uint8_t GLYPH_LEFT_OFFSET = GLYPH_UNICODE_OFFSET + GLYPH_UNICODE_LEN; 105 constexpr uint8_t GLYPH_LEFT_LEN = 2; 106 constexpr uint8_t GLYPH_TOP_OFFSET = GLYPH_LEFT_OFFSET + GLYPH_LEFT_LEN; 107 constexpr uint8_t GLYPH_TOP_LEN = 2; 108 constexpr uint8_t GLYPH_ADVANCE_OFFSET = GLYPH_TOP_OFFSET + GLYPH_TOP_LEN; 109 constexpr uint8_t GLYPH_ADVANCE_LEN = 2; 110 constexpr uint8_t GLYPH_COLS_OFFSET = GLYPH_ADVANCE_OFFSET + GLYPH_ADVANCE_LEN; 111 constexpr uint8_t GLYPH_COLS_LEN = 2; 112 constexpr uint8_t GLYPH_ROWS_OFFSET = GLYPH_COLS_OFFSET + GLYPH_COLS_LEN; 113 constexpr uint8_t GLYPH_ROWS_LEN = 2; 114 constexpr uint8_t GLYPH_DATA_OFF_OFFSET = GLYPH_ROWS_OFFSET + GLYPH_ROWS_LEN; 115 constexpr uint8_t GLYPH_DATA_OFF_LEN = 4; 116 constexpr uint8_t GLYPH_KERN_OFF_OFFSET = GLYPH_DATA_OFF_OFFSET + GLYPH_DATA_OFF_LEN; 117 constexpr uint8_t GLYPH_KERN_OFF_LEN = 4; 118 constexpr uint8_t GLYPH_KERN_SIZE_OFFSET = GLYPH_KERN_OFF_OFFSET + GLYPH_KERN_OFF_LEN; 119 constexpr uint8_t GLYPH_KERN_SIZE_LEN = 2; 120 constexpr uint8_t GLYPH_HEAD_RES_OFFSET = GLYPH_KERN_SIZE_OFFSET + GLYPH_KERN_SIZE_LEN; 121 constexpr uint8_t GLYPH_HEAD_RES_LEN = 2; 122 constexpr uint8_t GLYPH_HEAD_TOTAL_LEN = GLYPH_UNICODE_LEN + GLYPH_LEFT_LEN + GLYPH_TOP_LEN + GLYPH_ADVANCE_LEN + 123 GLYPH_COLS_LEN + GLYPH_ROWS_LEN + GLYPH_DATA_OFF_LEN + GLYPH_KERN_OFF_LEN + 124 GLYPH_KERN_SIZE_LEN + GLYPH_HEAD_RES_LEN; 125 126 // language texts table header 127 constexpr uint8_t LANG_TEXTS_PARAM_OFF = 0; 128 constexpr uint8_t LANG_TEXTS_PARAM_LEN = 4; 129 constexpr uint8_t LANG_TEXTS_UTF8P_OFF = LANG_TEXTS_PARAM_OFF + LANG_TEXTS_PARAM_LEN; 130 constexpr uint8_t LANG_TEXTS_UTF8P_LEN = 4; 131 constexpr uint8_t LANG_TEXTS_UTF8_OFF = LANG_TEXTS_UTF8P_OFF + LANG_TEXTS_UTF8P_LEN; 132 constexpr uint8_t LANG_TEXTS_UTF8_LEN = 4; 133 constexpr uint8_t LANG_TEXTS_TOTAL_LEN = LANG_TEXTS_PARAM_LEN + LANG_TEXTS_UTF8P_LEN + LANG_TEXTS_UTF8_LEN; 134 135 // language texts utf-8 param header 136 constexpr uint8_t LANG_UTF8_PARAM_TOTAL_LEN = 8; // 4B offset + 4B len 137 138 // language bin header 139 constexpr uint8_t LANG_OFFSET_OFF = 0; 140 constexpr uint8_t LANG_OFFSET_LEN = 4; 141 constexpr uint8_t LANG_SIZE_OFF = LANG_OFFSET_OFF + LANG_OFFSET_LEN; 142 constexpr uint8_t LANG_SIZE_LEN = 4; 143 constexpr uint8_t LANG_HEAD_TOTAL_LEN = LANG_OFFSET_LEN + LANG_SIZE_LEN; 144 145 // dynamic font 146 constexpr uint32_t GLYPH_HEADER_LENGTH = 0xD7C00; // 860 K, almost 33870 glyph header 147 constexpr uint32_t FONT_HEADER_LENGTH = FONT_HEAD_TOTAL_LEN * 150; // 150 font, almost 3K 148 constexpr uint32_t DYNAMIC_FONT_HEADER_TOTAL_LENGTH = GLYPH_HEADER_LENGTH + FONT_HEADER_LENGTH; 149 150 // static font psram 151 constexpr uint32_t UTF8_PARAM_LENGTH = LANG_UTF8_PARAM_TOTAL_LEN * 100; // 100 lang, almost 1K 152 constexpr uint32_t STATIC_PARAM_LENGTH = sizeof(UITextLanguageTextParam) * 3218; // 3218 texts, 44K 153 constexpr uint32_t STATIC_UTF8_LENGTH = 0xC800; // 50 * 1024 = 50K 154 constexpr uint32_t STATIC_FONT_HEADER_LENGTH = FONT_HEAD_TOTAL_LEN * 150; // 150 font, almost 3K 155 constexpr uint32_t STATIC_GLYPH_HEADER_LENGTH = 0x15C00; // 87K, almost 26 * 3426 glyph header 156 constexpr uint32_t STATIC_FONT_HEADER_TOTAL_LENGTH = UTF8_PARAM_LENGTH + STATIC_PARAM_LENGTH + STATIC_UTF8_LENGTH + 157 STATIC_FONT_HEADER_LENGTH + STATIC_GLYPH_HEADER_LENGTH; 158 159 constexpr uint8_t MAX_CACHE_CHAR_NUMBER = 50; // cache 50 letters 160 constexpr uint32_t DYNAMIC_ONE_CHAR_LENGTH = 0x5000; // 20 K means w200:h200:bpp4, 200 x 200 / 2 161 162 // 50 * 20K = 1000K 163 constexpr uint32_t DYNAMIC_TEXT_CACHE_LENGTH = MAX_CACHE_CHAR_NUMBER * DYNAMIC_ONE_CHAR_LENGTH; 164 constexpr uint32_t MIN_FONT_PSRAM_LENGTH = 0x380000; 165 166 // text shaping psram 167 constexpr uint32_t SHAPING_TTF_TABLE_LENGTH = 0x4B000; // 307K 168 constexpr uint32_t SHAPING_WORD_DICT_LENGTH = 0xD000; // 53K 169 constexpr uint32_t SHAPING_CACHE_LENGTH = 0x50000; // 328K 170 constexpr uint32_t MIN_SHAPING_PSRAM_LENGTH = 171 SHAPING_TTF_TABLE_LENGTH + SHAPING_WORD_DICT_LENGTH + SHAPING_CACHE_LENGTH + HARFBUZ_CACHE_LENGTH; 172 173 // other definition 174 constexpr uint8_t FONT_DPI = 100; 175 constexpr uint8_t FONT_PIXEL_IN_POINT = 64; 176 constexpr uint8_t BPP_BIT_1 = 1; 177 constexpr uint8_t BPP_MASK_1 = 7; 178 constexpr uint8_t BPP_SHIFT_1 = 3; 179 constexpr uint8_t BPP_MASK_NUM_1 = 0x80; 180 constexpr uint8_t BPP_BIT_2 = 2; 181 constexpr uint8_t BPP_MASK_2 = 3; 182 constexpr uint8_t BPP_SHIFT_2 = 2; 183 constexpr uint8_t BPP_MASK_NUM_2 = 0xC0; 184 constexpr uint8_t BPP_BIT_4 = 4; 185 constexpr uint8_t BPP_MASK_4 = 1; 186 constexpr uint8_t BPP_SHIFT_4 = 1; 187 constexpr uint8_t BPP_MASK_NUM_4 = 0xF0; 188 constexpr uint8_t BPP_BIT_8 = 8; 189 constexpr uint8_t BPP_BIT_16 = 16; 190 constexpr uint8_t BPP_BIT_32 = 32; 191 constexpr uint32_t DEFAULT_FONT_SIZE = 10; 192 constexpr uint32_t MAX_CHAR_MB_LEN = 16; 193 constexpr uint32_t MAX_CHAR_NUM = 512; 194 constexpr uint8_t BITS_PER_BYTE = 8; 195 constexpr uint8_t BITS_MASK_IN_BYTE = 7; 196 constexpr uint32_t MAX_MONO_ADVANCE = 128; 197 constexpr uint8_t BIT0 = 0; 198 constexpr uint8_t BIT1 = 1; 199 constexpr uint8_t BIT2 = 2; 200 constexpr uint8_t BIT3 = 3; 201 constexpr uint8_t BIT4 = 4; 202 constexpr uint8_t BIT5 = 5; 203 constexpr uint8_t BIT6 = 6; 204 constexpr uint8_t BIT7 = 7; 205 constexpr uint8_t BIT8 = 8; 206 constexpr uint8_t BIT12 = 12; 207 constexpr uint8_t BIT18 = 18; 208 constexpr uint8_t GLYPH_KERN_ITEM_LEN = 2; 209 constexpr uint8_t UTF_TO_UNICODE_MASK1 = 0x80; 210 constexpr uint8_t UTF_TO_UNICODE_MASK2 = 0xC0; 211 constexpr uint8_t UTF_TO_UNICODE_MASK3 = 0xE0; 212 constexpr uint8_t UTF_TO_UNICODE_MASK4 = 0xF0; 213 constexpr uint8_t UTF_TO_UNICODE_MASK5 = 0xF8; 214 constexpr uint8_t UTF_TO_UNICODE_MASK6 = 0x3F; 215 constexpr uint8_t UTF_TO_UNICODE_MASK7 = 0x1F; 216 constexpr uint8_t UTF_TO_UNICODE_MASK8 = 0x07; 217 constexpr uint8_t UTF_TO_UNICODE_MASK9 = 0x0F; 218 constexpr uint8_t MAX_FILE_NAME_LEN = 255; 219 constexpr uint8_t GPU_FONT_ALIGN_BIT = 16; 220 constexpr uint8_t INVALID_UCHAR_ID = 0xFF; 221 constexpr uint16_t INVALID_USHORT_ID = 0xFFFF; 222 constexpr uint32_t INVALID_UINT_ID = 0xFFFFFFFF; 223 constexpr int8_t INVALID_RET_VALUE = -1; 224 constexpr int8_t RET_VALUE_OK = 0; 225 constexpr const char* FONT_MAGIC_NUMBER = const_cast<char *>("OHOS."); 226 227 /** 228 * @brief struct BinHeader for font 229 * refer to ui_font.h 230 */ 231 struct BinHeader { 232 char fontVersion[FONT_VERSION_LEN]; // FONT_VERSION_OFFSET 233 char fontMagic[FONT_MAGIC_NUM_LEN]; // FONT_MAGIC_NUM_OFFSET 234 uint16_t fontNum; // FONT_NUMBER_OFFSET 235 uint16_t reserve; // BIN_HEAD_RES_OFFSET 236 }; 237 238 /** 239 * @brief struct FontHeader 240 * refer to ui_font.h 241 */ 242 struct FontHeader { 243 uint16_t fontId; // FONT_ID_OFFSET 244 uint16_t glyphNum; // GLYPH_NUM_OFFSET 245 uint16_t fontHeight; // FONT_HEIGHT_OFFSET 246 int16_t ascender; // FONT_ASCEND_LEN 247 int16_t descender; // FONT_DESCEND_LEN 248 uint32_t indexOffset; 249 uint32_t indexLen; 250 uint32_t glyphOffset; // GLYPH_G_OFF_OFFSET 251 uint32_t glyphLen; // GLYPH_OFF_OFFSET 252 uint16_t reserve; // GLYPH_LEN_OFFSET 253 }; 254 255 /** 256 * @brief struct GlyphHeader for font, font tool using, not for bin file 257 * refer to ui_font.h 258 */ 259 struct GlyphHeader { 260 uint16_t fontHeight; // FONT_G_HEIGHT_OFFSET 261 uint16_t glyphNum; // GLYPH_G_NUM_OFFSET 262 int16_t ascender; // GLYPH_G_ASCEND_LEN 263 int16_t descender; // GLYPH_G_DESCEND_LEN 264 uint32_t indexOffset; 265 uint32_t indexLen; 266 uint32_t glyphOffset; // GLYPH_G_OFF_OFFSET 267 uint32_t glyphLen; // GLYPH_G_LEN_OFFSET 268 }; 269 270 enum TextStyle : uint8_t { 271 TEXT_STYLE_NORMAL = 0, // default value 272 TEXT_STYLE_ITALIC, // text style italic 273 TEXT_STYLE_BOLD, // text style bold 274 TEXT_STYLE_BOLD_ITALIC // text style bold and italic 275 }; 276 277 /** 278 * @brief struct GlyphNode for font 279 * refer to ui_font.h 280 * be careful about glyphNode struct's size, if ENABLE_TEXT_STYLE changes, glyphs.bin shall be reconstruct. 281 */ 282 struct GlyphNode { 283 uint32_t unicode; // GLYPH_UNICODE_OFFSET 284 int16_t left; // GLYPH_LEFT_OFFSET 285 int16_t top; // GLYPH_TOP_OFFSET 286 uint16_t advance; // GLYPH_ADVANCE_OFFSET 287 uint16_t cols; // GLYPH_COLS_OFFSET 288 uint16_t rows; // GLYPH_ROWS_OFFSET 289 uint32_t dataOff; // GLYPH_DATA_OFF_OFFSET 290 uint32_t kernOff; // GLYPH_KERN_OFF_OFFSET 291 uint16_t kernSize; // GLYPH_KERN_SIZE_OFFSET 292 uint16_t fontId; // GLYPH_FONT_ID 293 uint16_t dataFlag; // GLYPH_DATA_HEAD_FLAG 294 #if defined(ENABLE_TEXT_STYLE) && ENABLE_TEXT_STYLE 295 TextStyle textStyle; // GLYPH_TEXT_STYLE 296 #endif 297 }; 298 299 /** 300 * @brief struct GlyphCacheNode for font 301 * refer to ui_font.h 302 */ 303 struct GlyphCacheNode { 304 GlyphNode node; 305 uint16_t cacheType; 306 }; 307 308 enum GlyphCacheType : uint16_t { 309 CACHE_TYPE_NONE = 0, // default value 310 CACHE_TYPE_STATIC, // static font 311 CACHE_TYPE_DYNAMIC, // dynamic font 312 }; 313 314 /** 315 * @brief struct LangBinHeader for font 316 * refer to ui_font.h 317 */ 318 struct LangBinHeader { 319 char fontVersion[FONT_VERSION_LEN]; // FONT_VERSION_OFFSET 320 char fontMagic[FONT_MAGIC_NUM_LEN]; // FONT_MAGIC_NUM_OFFSET 321 }; 322 323 /** 324 * @brief struct LangFontBinHeader for font 325 * refer to ui_font.h 326 */ 327 struct LangFontBinHeader { 328 uint32_t offset; // LANG_OFFSET_LEN 329 uint32_t size; // LANG_SIZE_LEN 330 }; 331 332 /** 333 * @brief struct LangTexsTableHeader for font 334 * refer to ui_font.h 335 */ 336 struct LangTexsTableHeader { 337 uint32_t textParamStart; 338 uint32_t textParamLen; // LANG_TEXTS_PARAM_LEN 339 uint32_t textUtf8ParamStart; 340 uint32_t textUtf8ParamLen; // LANG_TEXTS_UTF8P_LEN 341 uint32_t textUtf8Start; 342 uint32_t textUtf8Len; // LANG_TEXTS_UTF8_LEN 343 uint32_t textUtf8MaxItemLen; 344 uint32_t textCodepointsStart; 345 uint32_t textCodepointsMaxItemLen; 346 uint32_t textCodepointsTotalLen; 347 }; 348 349 /** 350 * @brief struct LangTexsUtf8Param for font 351 * refer to ui_font.h 352 */ 353 struct LangTexsUtf8Param { 354 uint32_t offset; 355 uint32_t len; 356 uint32_t codePointOffset; 357 uint32_t codePointLen; 358 }; 359 360 /** 361 * @brief struct KernNode for kerning of font 362 * refer to ui_font.h 363 */ 364 struct KernNode { 365 uint32_t unicode; // GLYPH_UNICODE_LEN 366 int16_t kernValue; // GLYPH_KERN_SIZE_LEN 367 uint8_t found; // found the kerning or not 368 }; 369 370 /** 371 * @brief struct TtfHeader for header of ttftab.bin 372 * refer to ui_font.h 373 */ 374 struct TtfHeader { 375 uint8_t ttfId; 376 uint32_t offset; 377 uint32_t len; 378 }; 379 380 struct UITextLanguageFontParam { 381 uint8_t size; // Invalid value for vector font 382 uint8_t fontWeight; 383 uint8_t shaping; 384 uint8_t ttfId; // auto create during registration for vector font 385 const char* ttfName; 386 uint8_t ttfIndex; 387 uint8_t ttcIndex; 388 }; // UITextLanguageFontParam 389 390 struct TextIsoHeader { 391 uint16_t paramLen; 392 uint16_t strLen; 393 }; 394 395 struct TextIsoParam { 396 uint16_t offset; 397 uint16_t len; 398 }; 399 400 struct LangTextParam { 401 uint8_t fontDirect; // refer to UITextLanguageDirect 402 uint8_t fontSize; 403 const char* familyName; // such as "Roboto-Medium" 404 const char* langName; // such as "ar", "zh" 405 }; 406 407 struct FileCommonHeader { 408 const char magicWord[5]; // 5:file identifier's length is 5 409 uint32_t fileLength; 410 }; 411 412 struct TtfInfo { 413 const char* ttfName; 414 uint8_t shaping; 415 }; 416 417 struct UI_STRUCT_ALIGN Metric { 418 int left; 419 int top; 420 int cols; 421 int rows; 422 int advance; 423 uint8_t buf[0]; 424 }; 425 426 #pragma pack() 427 } // namespace OHOS 428 #endif /* UI_FONT_HEADER_H */ 429